Smalltalk对象thisContext
看起来奇怪而奇妙。我无法理解它是什么以及它是如何工作的。甚至它如何实现延续。
对于C的调用堆栈,我可以很容易地想象它是如何实现和工作的。但为此......我做不到。请帮我理解。
答案 0 :(得分:5)
我认为这不是一个简单的问题。使用MethodContext实例在图像中实现堆栈。 MethodContext可以有一个发送者,它是另一个MethodContext。那个人可以有另一个......产生一整堆。在执行CompiledMethod(它们也在语言中实现)时,VM会实例化MethodContext。
MethodContext如何映射到C堆栈,这取决于VM。 StackVM(CogVM位于StackVM之上)正是一个可以更好地映射MethodContext con C堆栈的虚拟机。
除了Lukas所说的BlueBook,请检查
http://www.mirandabanda.org/cogblog/检查左侧的帖子......
我建议您在http://lists.squeakfoundation.org/mailman/listinfo/vm-dev
中提问答案 1 :(得分:4)
您可以在Smalltalk-80: The Language and its Implementation中找到最佳解释,第26至30页。堆栈帧(上下文)将在第580页进行说明。
答案 2 :(得分:3)
更恰当的说法thisContext
是一个延续 - 特别是当前的延续。
想象一个变量c
,在MethodContext
激活之前,设置为指向该上下文。那是thisContext
。