jit编译器如何在JAVASCRIPT中工作

jit编译器如何在JAVASCRIPT中工作,javascript,Javascript,jit编译器在JAVASCRIPT中是如何工作的??? 当我们只有一个1编译阶段,它声明了我们所有的变量和函数(在创建glbal执行上下文的过程中) …当我们只有一个1编译阶段来声明所有变量和函数时 这就是问题所在。:-)现代JavaScript引擎没有单一的编译阶段。取而代之的是,他们使用非常快的方法对代码进行初始传递,然后对于重用到值得使用的代码,他们应用优化器使用更快的代码就地重写代码 在Chrome的V8中,第一个阶段过去是编译器(称为Full codegen),第二个阶段(在需要时)是

jit编译器在JAVASCRIPT中是如何工作的??? 当我们只有一个1编译阶段,它声明了我们所有的变量和函数(在创建glbal执行上下文的过程中)

…当我们只有一个1编译阶段来声明所有变量和函数时

这就是问题所在。:-)现代JavaScript引擎没有单一的编译阶段。取而代之的是,他们使用非常快的方法对代码进行初始传递,然后对于重用到值得使用的代码,他们应用优化器使用更快的代码就地重写代码


在Chrome的V8中,第一个阶段过去是编译器(称为Full codegen),第二个阶段(在需要时)是优化编译器(称为Crankle),但对于称为Ignition的解释器来说,第一个阶段是解析代码、生成字节码并执行,然后是值得的代码,他们将名为TurboFan的优化编译器应用于字节码。(详情请参见该博客帖子。)这原本是为了尽量减少一次性设置代码对内存的影响,但结果证明生成字节码比生成机器代码更快,启动性能实际上也得到了提高。

你能推荐一本书或一门课程吗,因为我刚开始学习,不同的资源让我迷路了,据我所知,源代码===>解析器==>AST===>字节码===>编译器/解释器(jit),jit创建全局执行上下文(这个+作用域链+声明所有声明),然后执行GEC,对于每一个函数调用,都需要再次进行jit编译或类似的操作,从而创建一个新的执行上下文,然后执行;;我不知道有哪本好书、哪门课程或类似的东西能告诉你。上面链接的V8博客很有用。但您将两件事混为一谈:解析/字节码/机器码生成,以及运行代码(创建执行上下文,包括全局上下文,等等)。这些是不同的事情。如果JavaScript引擎决定对某个函数进行优化,它完全可以完全替换该函数。除非引擎中有错误,否则无法知道代码中发生了什么。非常感谢,我只是用谷歌搜索了你告诉我的内容,我知道了,非常感谢