Callbacks vs. GC
Lee Salzman
lsalzman1 at cox.net
Sun Jan 9 15:42:16 PST 2005
I said the root stack, not the mark stack. You are apparently confusing
the two.
Also, think marshalling.
Lee
On Sun, Jan 09, 2005 at 04:08:33AM -0500, Todd Fleming wrote:
> Ok, say I want to just pass a signal with the appropriate window handle
> to Slate, and have Slate handle all the details. The procedure that
> handles the details is a block; I'll call it block A. How do I pass the
> Windows message to Slate? I create a Lexical Context and invoke the
> interpreter with block A. How do I get block A? I have to store a
> pointer to it somewhere.
>
> The problem with the root stack is that it's, well, a stack. Slate calls
> a C function, which stores the pointer to the block. The C function then
> calls markStackPush and returns. Problem: another function calls
> markStackPop to clean up after itself and my entry is gone. My pointer
> no longer gets updated when the GC moves the block around.
>
> Todd
>
> Lee Salzman wrote:
>
> >You are looking at this the wrong way. You don't need to prevent the
> >object in question from moving. You need the reference to the object to
> >be updated to the new location. Coincidentally, there is already a
> >mechanism in place for this: the root stack.
> >
> >Then again, I don't even really see a specific need for any of this,
> >given that you could just pass a signal with the appropriate window
> >handle to Slate, and let it handle all the details from there.
> >
> >Overengineering is evil.
> >
> >Lee
> >
> >
>
More information about the Slate
mailing list