void MarkValueRoot(JSTracer *trc, Value *v, const char *name) { JS_ROOT_MARKING_ASSERT(trc); JS_SET_TRACING_NAME(trc, name); MarkValueInternal(trc, v); }
void MarkIdRoot(JSTracer *trc, jsid *id, const char *name) { JS_ROOT_MARKING_ASSERT(trc); JS_SET_TRACING_NAME(trc, name); MarkIdInternal(trc, id); }
static void MarkRoot(JSTracer *trc, T **thingp, const char *name) { JS_ROOT_MARKING_ASSERT(trc); JS_SET_TRACING_NAME(trc, name); MarkInternal(trc, thingp); }
void MarkValueRootRange(JSTracer *trc, size_t len, Value *vec, const char *name) { JS_ROOT_MARKING_ASSERT(trc); for (size_t i = 0; i < len; ++i) { JS_SET_TRACING_INDEX(trc, name, i); MarkValueInternal(trc, &vec[i]); } }
void MarkGCThingRoot(JSTracer *trc, void *thing, const char *name) { JS_ROOT_MARKING_ASSERT(trc); JS_SET_TRACING_NAME(trc, name); if (!thing) return; MarkKind(trc, thing, GetGCThingTraceKind(thing)); }
void MarkTypeRoot(JSTracer *trc, types::Type *v, const char *name) { JS_ROOT_MARKING_ASSERT(trc); JS_SET_TRACING_NAME(trc, name); if (v->isSingleObject()) { JSObject *obj = v->singleObject(); MarkInternal(trc, &obj); *v = types::Type::ObjectType(obj); } else if (v->isTypeObject()) { types::TypeObject *typeObj = v->typeObject(); MarkInternal(trc, &typeObj); *v = types::Type::ObjectType(typeObj); } }
void MarkGCThingRoot(JSTracer *trc, void **thingp, const char *name) { JS_ROOT_MARKING_ASSERT(trc); MarkGCThingInternal(trc, thingp, name); }