This article is in need of a technical review.
JSTraceOp is the type of the
typedef void (* JSTraceOp)(JSTracer *trc, JSObject *obj);
||The tracer visiting
||The object being visited.|
JSTraceOp is the function type for trace operation of the class called to enumerate all traceable things reachable from
obj's private data structure. For each such thing, a trace implementation must call one of the
JS_Call*Tracer variants on the thing.
JSTraceOp implementation can assume that no other threads mutates object state. It must not change state of the object or corresponding native structures. The only exception for this rule is the case when the embedding needs a tight integration with GC. In that case the embedding can check if the traversal is a part of the marking phase through calling
JS_IsGCMarkingTracer and apply a special code like emptying caches or marking its native structures.
JSClass offers the following hook:
JSClass.tracecallback is called to enumerate all traceable things reachable.