发明名称 |
将程序执行从编译代码变换到解释代码 |
摘要 |
可以从源自以动态语言(例如JavaScript)编写的程序的字节代码来生成经优化的编译的代码。优化可以基于一种或多种假设。在经优化的编译的代码的执行期间,所述优化所基于的所述一种或多种假设可以被检查有效性。响应于确定所述优化是基于无效的一种或多种假设,经优化的代码的执行可以停止,解释器所使用的变量的状态可以被还原并且程序的执行可以在解释器中使用源自程序的未经优化的字节代码来恢复。程序的继续可以在字节代码中的一个点处恢复,所述点类似于在经优化的编译的代码中的所述一种或多种假设被确定为假的那点。 |
申请公布号 |
CN104115120A |
申请公布日期 |
2014.10.22 |
申请号 |
CN201380008460.2 |
申请日期 |
2013.01.31 |
申请人 |
微软公司 |
发明人 |
L·拉弗里尼尔;C·曼 |
分类号 |
G06F9/45(2006.01)I;G06F9/30(2006.01)I |
主分类号 |
G06F9/45(2006.01)I |
代理机构 |
上海专利商标事务所有限公司 31100 |
代理人 |
顾嘉运 |
主权项 |
一种系统,包括:计算设备的至少一个处理器;所述计算设备的存储器;以及包括加载到所述存储器中的至少一个模块的跳出引擎,所述至少一个模块使所述至少一个处理器:响应于检测到关于程序在其上操作的数据的特性的至少一种假设的无效性,将以动态语言编写的程序的执行从机器代码执行器执行的经编译的代码变换到由解释器解释的经解释的字节代码,所述经编译的代码基于所述至少一种假设被优化,所述经解释的字节代码没有基于所述至少一种假设被优化;在所述经解释的字节代码中的一个点处恢复在解释器中的所述程序的执行,所述点对应于在经优化的编译的代码中检测到无效性处的点。 |
地址 |
美国华盛顿州 |