if(!JS_AddRoot(cx, &jsdval->string))
if(!JS_AddNamedRoot(cx, &jsdval->string, "ValueString"))
jsd_GetValueString(JSDContext* jsdc, JSDValue* jsdval){    JSContext* cx = jsdc->dumbContext;    JSExceptionState* exceptionState;    if(!jsdval->string)    {        /* if the jsval is a string, then we don't need to double root it */        if(JSVAL_IS_STRING(jsdval->val))            jsdval->string = JSVAL_TO_STRING(jsdval->val);        else        {            exceptionState = JS_SaveExceptionState(cx);            jsdval->string = JS_ValueToString(cx, jsdval->val);            JS_RestoreExceptionState(cx, exceptionState);            if(jsdval->string)            {                if(!JS_AddRoot(cx, &jsdval->string))                    jsdval->string = NULL;            }        }    }    return jsdval->string;}