Jacek Caban (@jacek) commented about dlls/jscript/jscript.h:
- if(op == GC_TRAVERSE_UNLINK) {
jsval_t val = *link;*link = jsval_undefined();jsval_release(val);return S_OK;- }
- if(!is_object_instance(*link) || !(jsdisp = to_jsdisp(get_object(*link))) || jsdisp->ctx != obj->ctx)
return S_OK;- if(op == GC_TRAVERSE_SPECULATIVELY)
jsdisp->ref--;- else if(jsdisp->gc_marked)
return heap_stack_push(arg, jsdisp);- return S_OK;
+}
It doesn't make sense to have those as inlines, IMHO. I'd suggest to move those to move those to GC code and use an opaque gc_ctx struct here instead of void * here.