From 0718d809180b1bff9c83f4475be4cb918a8564e2 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Tue, 4 Dec 2012 18:15:14 +0000 Subject: abstract out GC root manipulation for js values --- javascript/jsapi.c | 4 ++-- javascript/jsapi.h | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/javascript/jsapi.c b/javascript/jsapi.c index eebb33fee..73153fe09 100644 --- a/javascript/jsapi.c +++ b/javascript/jsapi.c @@ -315,14 +315,14 @@ js_dom_event_add_listener(jscontext *ctx, JSLOG("adding %p to listener", private); - JS_AddValueRoot(cx, &private->funcval); + JSAPI_ADD_VALUE_ROOT(cx, &private->funcval); exc = dom_event_target_add_event_listener(private->node, private->type, private->listener, true); if (exc != DOM_NO_ERR) { JSLOG("failed to add listener"); - JS_RemoveValueRoot(cx, &private->funcval); + JSAPI_REMOVE_VALUE_ROOT(cx, &private->funcval); } return true; diff --git a/javascript/jsapi.h b/javascript/jsapi.h index 6b0f1124d..04932905e 100644 --- a/javascript/jsapi.h +++ b/javascript/jsapi.h @@ -150,6 +150,9 @@ JS_NewCompartmentAndGlobalObject(JSContext *cx, #define JSAPI_ADD_OBJECT_ROOT(cx, obj) JS_AddRoot(cx, obj) #define JSAPI_REMOVE_OBJECT_ROOT(cx, obj) JS_RemoveRoot(cx, obj) +#define JSAPI_ADD_VALUE_ROOT(cx, obj) JS_AddRoot(cx, obj) +#define JSAPI_REMOVE_VALUE_ROOT(cx, obj) JS_RemoveRoot(cx, obj) + #elif JS_VERSION == 180 /************************** Spidermonkey 1.8.0 **************************/ @@ -263,6 +266,9 @@ JS_NewCompartmentAndGlobalObject(JSContext *cx, #define JSAPI_ADD_OBJECT_ROOT(cx, obj) JS_AddRoot(cx, obj) #define JSAPI_REMOVE_OBJECT_ROOT(cx, obj) JS_RemoveRoot(cx, obj) +#define JSAPI_ADD_VALUE_ROOT(cx, obj) JS_AddRoot(cx, obj) +#define JSAPI_REMOVE_VALUE_ROOT(cx, obj) JS_RemoveRoot(cx, obj) + #else /* #if JS_VERSION == 180 */ @@ -365,6 +371,9 @@ JS_NewCompartmentAndGlobalObject(JSContext *cx, #define JSAPI_ADD_OBJECT_ROOT(cx, obj) JS_AddObjectRoot(cx, obj) #define JSAPI_REMOVE_OBJECT_ROOT(cx, obj) JS_RemoveObjectRoot(cx, obj) +#define JSAPI_ADD_VALUE_ROOT(cx, val) JS_AddValueRoot(cx, val) +#define JSAPI_REMOVE_VALUE_ROOT(cx, val) JS_RemoveValueRoot(cx, val) + #endif #define JSLOG(args...) LOG((args)) -- cgit v1.2.3