Search code examples
smalltalkcallstackcontinuationsstack-frame

How does Smalltalk manipulate call stack frames (thisContext)?


The Smalltalk object thisContext look strange and marvelous. I can't understand what it is and how it works. And even how it enables continuations.

For C's call-stack, I can easily imagine how is it implemented and working. But for this... I can't. Please help me to understand it.


Solution

  • I think it is not an easy question. The stack is reified in the image with instances of MethodContext. A MethodContext can have a sender, which is another MethodContext. That one can have another one...generating a whole stack. MethodContext are instantiated by the VM while executing CompiledMethod (which are also reified in the language).

    How MethodContext are mapped to C stack, that depends on the VM. StackVM (CogVM is on top of StackVM) is exactly a VM that better maps MethodContext con C stack.

    Apart from the BlueBook that Lukas said, check

    http://www.mirandabanda.org/cogblog/ check on the left the posts...

    I recommend you to ask in http://lists.squeakfoundation.org/mailman/listinfo/vm-dev