Steve Fink wrote:

I'm confused by nci.pmc's mark() routine. It calls pobject_lives() on
the ->cache.struct_val pointer. But in set_string_keyed(), that seems
to be set to a pointer to a function, which is definitely not a PObj*.

Yes, that's right.


The ->data field, on the other hand, appears to be a PObj*.

No the data field is either the statically built native calling thunk from nci.c:build_call_func() or a malloced thunk from JITs equivalent.


... Is the below patch correct?

Almost :-) No, we don't have a PMC to mark finally, the line
PObj_custom_mark_SET(SELF);
is wrong (and makes the mark obsolete)

Thanks for that analysis,

leo



Reply via email to