5

Smalltalk 对象thisContext看起来奇怪而奇妙。我无法理解它是什么以及它是如何工作的。甚至它是如何实现延续的。

对于 C 的调用堆栈,我可以很容易地想象它是如何实现和工作的。但是对于这个……我不能。请帮助我理解它。

4

3 回答 3

5

我认为这不是一个简单的问题。堆栈通过 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中询问

于 2011-06-14T19:08:11.593 回答
4

您可以在Smalltalk-80: The Language and its Implementation中找到最好的解释,第 26 到 30 章。堆栈帧(上下文)在第 580 页进行了解释。

于 2011-06-14T18:02:37.473 回答
3

说这thisContext 一个延续更正确——尤其是当前的延续。

想象一个变量c,就在 aMethodContext激活之前,被设置为指向该上下文。那就是thisContext

于 2011-06-15T07:51:35.663 回答