Smalltalk 对象thisContext
看起来奇怪而奇妙。我无法理解它是什么以及它是如何工作的。甚至它是如何实现延续的。
对于 C 的调用堆栈,我可以很容易地想象它是如何实现和工作的。但是对于这个……我不能。请帮助我理解它。
Smalltalk 对象thisContext
看起来奇怪而奇妙。我无法理解它是什么以及它是如何工作的。甚至它是如何实现延续的。
对于 C 的调用堆栈,我可以很容易地想象它是如何实现和工作的。但是对于这个……我不能。请帮助我理解它。
我认为这不是一个简单的问题。堆栈通过 MethodContext 的实例在图像中具体化。一个 MethodContext 可以有一个发送者,它是另一个 MethodContext。那个可以有另一个……生成一个完整的堆栈。MethodContext 在执行 CompiledMethod 时由 VM 实例化(也在语言中具体化)。
MethodContext 如何映射到 C 堆栈,这取决于 VM。StackVM(CogVM 在 StackVM 之上)正是一个更好地映射 MethodContext 和 C 堆栈的 VM。
除了卢卡斯说的蓝皮书,检查
http://www.mirandabanda.org/cogblog/ 检查左边的帖子......
我建议您在http://lists.squeakfoundation.org/mailman/listinfo/vm-dev中询问
您可以在Smalltalk-80: The Language and its Implementation中找到最好的解释,第 26 到 30 章。堆栈帧(上下文)在第 580 页进行了解释。
说这thisContext
是一个延续更正确——尤其是当前的延续。
想象一个变量c
,就在 aMethodContext
激活之前,被设置为指向该上下文。那就是thisContext
。