void TraceHeap(JSTracer* tracer, JS::Heap<JS::Value>* val, const char* parentName, const char* name) { if (val != NULL) { __android_log_print(ANDROID_LOG_DEBUG, LOG_COMPONENT, " Trace: %s %s\n", parentName, name); JS_CallValueTracer(tracer, val, name); __android_log_print(ANDROID_LOG_DEBUG, LOG_COMPONENT, " Traced: %s %s\n", parentName, name); } }
static void trace_foreach(void *key, void *value, void *data) { Child *child = (Child *) value; JSTracer *tracer = (JSTracer *) data; if (child->child != NULL) { JS::Value val; val = JS::ObjectValue(*(child->child)); JS_CallValueTracer(tracer, &val, "keep-alive::val"); } }
static void trace_foreach(void *key, void *value, void *data) { Child *child = (Child *) value; JSTracer *tracer = (JSTracer *) data; if (child->child != NULL) { jsval val; JS_SET_TRACING_DETAILS(tracer, NULL, "keep-alive", 0); val = OBJECT_TO_JSVAL(child->child); g_assert (JSVAL_TO_TRACEABLE (val)); JS_CallValueTracer(tracer, &val, "keep-alive::val"); } }