[发明专利]将程序执行从编译代码变换到解释代码有效
申请号: | 201380008460.2 | 申请日: | 2013-01-31 |
公开(公告)号: | CN104115120A | 公开(公告)日: | 2014-10-22 |
发明(设计)人: | L·拉弗里尼尔;C·曼 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45;G06F9/30 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 顾嘉运 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 执行 编译 代码 变换 解释 | ||
背景
动态编程语言是一种在运行时执行静态语言通常在编译期间执行或根本不执行的行为的语言。在运行时由动态语言执行的行为可以包括通过添加新代码、通过扩展对象和定义或通过修改类型系统对程序的扩展。在动态编程语言中,在编译时不可用的信息可以显著地改变程序如何执行。例如,在静态程序中,当在源代码中声明变量时,该声明指定了所述变量的类型。变量x是整数或变量x是字符串等。如果变量x是整数,则将x加到整数常量将执行算术加法。如果变量x是字符串,则将x加到是字符串的常量将执行常量和x的串联。在动态编程语言中,变量的类型直到该程序执行时才知道,因此,需要额外的代码路径来处理不同类型的操作,这会出现为程序执行增加开销。
通常被认为是动态语言的语言示例包括但不局限于:ActionScript、BASIC、BeanShell、ColdFusion、Common Lisp和一些其它Lisp语言、Groovy、E编程语言;JavaScript、VBScript、MATLAB、Lua、Objective-C、Perl、PHP、Powershell、Python、Ruby、Smalltalk、Tcl以及Dolphin Smalltalk。
概述
通过动态语言,可以做出关于不太可能静态确定的类型信息的假设。随后可以使用这种不精确的信息来应用优化。可以提供通过优化假设的无效所触发的后退或跳出机制。可以从源自以动态语言(例如但不局限于JavaScript)编写的程序的字节代码来生成经优化的编译代码。优化可以基于关于数据的特性的一种或多种假设。在经优化的编译的代码的执行期间,所述优化所基于的所述一种或多种假设可以被检查有效性。响应于确定所述优化是基于无效的一种或多种假设,经优化的代码的执行可以停止,解释器所使用的对应的变量的状态可以被还原并且程序的执行可以在解释器中使用源自程序的未经优化的字节代码来恢复。程序的继续可以在字节代码中的一个点处恢复,所述点类似于在经优化的编译的代码中的所述一种或多种假设被确定为假的那点。
在经优化的编译的代码中的优化可以包括对变量类型操作的优化。可以将传递给解释器的跳出信息量最小化。非活动的编译的代码不需要被复活用于解释器。
可以在经优化的编译的代码中预先确定的点处设定一个或多个跳出点。在每个跳出点处,可以捕捉未经优化的字节代码中的变量位置和对应的位置。当在执行期间到达跳出点时,可以检查与该跳出点相关联的一种或多种假设的有效性,并且变量状态可以被还原用于对应的解释器的变量。可以将变量的状态和在未经优化的字节代码中的对应位置发送给解释器。解释器可以在未经优化的字节代码中的所接收的对应位置处恢复未经优化的字节代码的执行。
提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
在附图中:
图1a示出根据在此所述的主题的各方面的包括被配置为呈现来自所接收的文档中的页的浏览器应用的系统100的示例;
图1b示出根据在此所述的主题的各方面的包括被配置为从编译的代码变换到字节代码的执行的运行时引擎的系统200的示例;
图1c示出根据在此所述的主题的各方面的包括被配置为从编译的代码变换到字节代码的执行的运行时引擎的系统300的示例;
图1d示出根据在此所述的主题的各方面的程序源代码、对应的字节代码、编译的代码和跳出表格的示例150;
图1e示出根据在此所述的主题的各方面的具有跳出信息的编译的代码的示例170;
图1f示出根据在此所述的主题的各方面的程序源代码、以及具有跳出信息的编译的代码的示例171;
图1g示出根据在此所述的主题的各方面的程序源代码、对应的字节代码、以及具有跳出信息的编译的代码的示例180;
图2示出根据在此所述的主题的各方面的将程序执行从经优化的编译的代码变换到解释的代码的方法250的示例;
图3是根据本文公开的主题的各方面的计算环境的示例的框图。
详细描述
概览
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380008460.2/2.html,转载请声明来源钻瓜专利网。