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.