-
21-09-2019 - |
题
在菲罗,我怎样才能找到目前正在评估栈?
解决方案
唉,其实,AINT这么简单的问题:thisContext
可以是相当昂贵的操作,比较喜欢一个消息发送。
在VisualWorks中Smalltalk中,栈接入是 extermly 昂贵的,因为它使用的天然C-栈,从而thisContext
任何访问都必须具体化整个C堆栈成因果关系 Smalltalk的对象。也就是说,对于每个C堆栈帧一个Smalltalk的目的是要创建(包括可能的JIT去最佳化),并进一步对这些对象的所有更改都必须被反射回C堆栈。
在菲罗(和佳乐,就此而言)它不太别扭,因为它使用的Smalltalk对象为堆栈。不过还是用于缓存堆栈帧中的对象池在每次调用刷新。 (是的,比如JAVA等,汇集对象确实提高佳乐性能...欢迎回到90ies:)
其他提示
您评估
thisContext contextStack
下面,thisContext
确实指向当前有效的堆栈帧的特殊变量。然后,contextStack
返回与整个堆叠阵列。
不隶属于 StackOverflow