static inline void MarkValueInternal(JSTracer *trc, Value *v) { if (v->isMarkable()) { JS_ASSERT(v->toGCThing()); return MarkKind(trc, v->toGCThing(), v->gcKind()); } }
void MarkGCThingInternal(JSTracer *trc, void **thingp, const char *name) { JS_SET_TRACING_NAME(trc, name); JS_ASSERT(thingp); if (!*thingp) return; MarkKind(trc, thingp, GetGCThingTraceKind(*thingp)); }
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)); }
static inline void MarkValueInternal(JSTracer *trc, Value *v) { if (v->isMarkable()) { JS_ASSERT(v->toGCThing()); void *thing = v->toGCThing(); MarkKind(trc, &thing, v->gcKind()); if (v->isString()) v->setString((JSString *)thing); else v->setObjectOrNull((JSObject *)thing); } }
static inline void MarkValueInternal(JSTracer *trc, Value *v) { if (v->isMarkable()) { JS_ASSERT(v->toGCThing()); void *thing = v->toGCThing(); JS_SET_TRACING_LOCATION(trc, (void *)v); MarkKind(trc, &thing, v->gcKind()); if (v->isString()) v->setString((JSString *)thing); else v->setObjectOrNull((JSObject *)thing); } else { /* Unset realLocation manually if we do not call MarkInternal. */ JS_UNSET_TRACING_LOCATION(trc); } }