gpt4 book ai didi

javascript - 不同进程虚拟机的 JIT 编译器如何实现事件窥视?

转载 作者:搜寻专家 更新时间:2023-11-01 02:42:06 26 4
gpt4 key购买 nike

注意:这个问题是针对 Smalltalk、Self、Javascript、Java、C# 等语言的 VM 实现者提出的。

JIT 编译器带来的一个常见功能是自动查看系统事件。这用于处理 UI 事件和触发 GC。

通常,此事件窥视包括在框架构建(调用方法时)和循环回跳时进行检查。我想知道,

what are the different ways of implementing this check? What are their advantages and disadvantages? Do you know of any paper describing these techniques?

Could you tell how it is implemented in a specific VM? (Pharo, HPS, HotSpot, V8, SpiderMonkey, CLR)

最佳答案

从我读到的内容来看,我猜每个实现都会做以下一些变化:

  • 分配一个专门用于计数的硬件寄存器,并在达到某个阈值时进行窥视。 优点:检查速度非常快。缺点:您失去了一个可以更好地使用的寄存器,计数可能不精确/没有意义。

  • 有一个定期发出信号的计时器(如何实现?),然后:

    • 移动一个 stack_limit 变量,然后在构建框架和回跳时检查该变量
    • 将堆栈标记为只读或在硬件级别不可访问(即分页),以便框架构建失败并在回跳之前向堆栈添加写入。 编辑:优点:由于数据依赖性,写入内存比读取更快。缺点:如果计数器被频繁触发,检查会变慢,因为页面错误捕获很慢。安全点被污染:任何在页面被标记后使用堆栈的指令都会触发检查,并且该指令可能是也可能不是安全点

关于javascript - 不同进程虚拟机的 JIT 编译器如何实现事件窥视?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31125309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com