在Pharo中,我如何找到当前评估的堆栈?如何找到当前的堆栈?
1
A
回答
1
那么,事实上,这个问题很简单:thisContext
可能是一个相当昂贵的操作,而不像消息发送。
在Smalltalk中VisualWorks中,栈接入是extermly昂贵,因为它使用的天然C-栈,从而thisContext
任何访问都必须具体化整个C堆栈成因果关系 Smalltalk的对象。也就是说,对于每个C堆栈帧,要创建一个Smalltalk对象(包括可能的JIT去最优化),并且对这些对象的所有更改都必须反射回C堆栈。
在Pharo(和Squeak,对于这个问题)它不那么笨拙,因为它使用Smalltalk对象作为堆栈。但每次调用时仍然会缓存堆栈帧的对象池。 (是的,除了例如在Java中,池化对象确实提高了Squeak中的性能...欢迎回到90年代:)
1
相关问题
- 1. 如何获得当前堆栈级别
- 2. 如何在没有堆栈指针的情况下找到堆栈的当前位置?
- 3. 如何在堆栈溢出发生之前看到堆栈?
- 4. 如何检索当前运行的函数堆栈的堆栈跟踪?
- 5. 如何将当前活动添加到活动堆栈
- 6. 如何找到最大堆栈大小?
- 7. 退出当前调用堆栈的Javascript
- 8. 找到堆栈溢出
- 9. 如何在.net中查找当前线程的最大堆栈大小?
- 10. 如何获得使用C#的堆栈中的当前索引#
- 11. 如何在只有损坏的堆栈文件时找到调用堆栈?
- 12. 获取当前调用堆栈
- 13. madExcept,获得当前堆栈顶部
- 14. 如何清除堆栈中的当前活动?
- 15. 如何在OpenGL中获取矩阵堆栈的当前大小?
- 16. 如何计算导航堆栈中当前VC的数量?
- 17. 如何检查线程堆栈的当前状态
- 18. 如何获取Python解释器堆栈的当前深度?
- 19. 如何从UINavigationController获取堆栈的当前顶端?
- 20. 如何检查导航堆栈上的当前UIViewController
- 21. 我如何获得所有当前堆栈帧的f_globals属性
- 22. 如何找到堆/堆栈在运行时
- 23. 如何清除当前活动堆栈当启动另一个活动属于另一个堆栈
- 24. 如何从Acrtivities中清除背堆栈(当前任务)
- 25. 如何创建一个将当前类静态添加到堆栈的ASM LdcInsnNode?
- 26. 如何将视图推送到导航堆栈并删除当前的?
- 27. 前缀中的堆栈
- 28. 如何查找堆栈深度?
- 29. Android:处理通知时导航到当前后退堆栈
- 30. 在macOS当前进程中识别堆栈和堆段
fyi,如果你问一个非常简单的问题,一分钟后一个非常简单的答案。 – geowa4 2009-11-20 14:10:02
这是谷歌查询无法找到的东西... – nes1983 2009-11-20 14:28:39