On Sun, Jun 09, 2013 at 08:25:34AM +0200, Holger Hans Peter Freyther wrote:
> d.) Mark the OOP when it is put into the context?
>
> But then again, why is the CompiledMethod GCed? It should be reachable
> from the Method Dictionary of the method?
if UNCOMMON (oop->flags & F_CONTEXT)
{
gst_method_context ctx;
intptr_t methodSP;
ctx = (gst_method_context) object;
methodSP = TO_INT (ctx->spOffset);
/* printf("setting up for loop on context %x, sp = %d\n",
ctx, methodSP); */
TAIL_MARK_OOPRANGE (&ctx->objClass,
ctx->contextStack + methodSP + 1);
}
The code is already "walking" the context (if it is present). Now the
code is doing a tail recursion and just doing ctx->method->flags |= for
the F_REACHABLE attribute made more harm than it fixed but I think this
is what should happen (or we put the method OOP onto the stack as well)?
what do you think?
holger
_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk