[发明专利]使用动态编程语言的元数据的运行时优化方法和系统有效

专利信息
申请号: 201380007185.2 申请日: 2013-01-31
公开(公告)号: CN104081350B 公开(公告)日: 2017-06-23
发明(设计)人: G·巴瑞克罗;F·J·皮茨罗 申请(专利权)人: 苹果公司
主分类号: G06F9/455 分类号: G06F9/455
代理公司: 中国国际贸易促进委员会专利商标事务所11038 代理人: 冯玉清
地址: 美国加*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 使用 动态 编程 语言 数据 运行 优化
【说明书】:

技术领域

发明整体涉及运行时编译。更具体地,本发明涉及基于动态语言的源代码的基于元数据的运行时优化。

背景技术

不含任何种类类型注释的动态语言越来越普遍。例如,JavaScript已经成为万维网的通用语言,而Ruby、Python、Perl和PHP已经成为服务器端基础架构的标准语言。然而,当可能未提供优化编译策略以编译代码时,基于动态语言的代码的运行时可能需要显著开销。

例如,JavaScript不允许程序指定变量的类型。因此,在运行时期间,变量可被动态转换为不同执行路径中的独立类型。此类转换可能在计算上开销大,使整体性能受到重大影响。另外,动态创建的数据类型可能需要索引数据结构(例如字典)间大量的查找或搜索操作,以将类型分配到数据或访问特定类型数据的属性。

此外,需要现代JavaScript引擎来非常快速地执行非可信代码,并且由于这个原因,通过诸如即时(JIT)编译的机制而使用运行时代码生成,攻击者可利用这一点绕过操作系统/硬件保护。现有保护技术例如常量盲化可用于阻止此类攻击。然而,这些技术可在存储器使用和处理器执行时间两方面引发目标代码的性能成本,无论所执行的目标代码是否具有风险。

因此,传统的动态运行时编译方法往往是昂贵、低效和未优化的。

发明内容

可随机地且不频繁地分配跟踪器数据(例如,堆分配单元或跟踪弹(tracer bullet))以分析从起源代码位置和目标代码位置流出的值以便优化编译代码。跟踪器数据可包括或装箱某个值以及该值在源代码或程序中的相应起源(或来源)。值的起源可指示值在源代码中的生成位置。在一个实施例中,可在运行时期间将值存储在存储器中时创建跟踪器数据。来源可以是标识用于存储该值的代码位置(例如行号)的指针宽度字。可将特定的类型或标签与跟踪器数据相关联以迫使使用(或访问、标引)跟踪器数据的代码执行或操作采用慢速路径,因为可能无法在源代码中对跟踪器数据进行现有类型检查。所述慢速路径可记录跟踪器数据中的值的起源(或源)代码位置和正在使用跟踪器数据的接收(或目标)代码位置之间的链接。该链接可分配有权重以指示值传递(或跟踪)通过链接的次数。

在一个实施例中,可基于运行时期间在值的起源代码位置和目标代码位置之间记录的链接来生成概率数据流程图。可对图形的每个边加权以对应于占用边的值流的相对概率。值如何流过程序以及使用那些值的不同操作执行频率有多高可从概率数据流程图识别。因此,概率数据流程图可提供执行程序的运行时概率视图以揭示运行时编译的优化机会。

在一个实施例中,可根据概率数据流程图来执行运行时编译器上的优化操作。例如,如果流过整数路径的值更可能用于浮点运算,则整数路径可被转化为浮点路径。同样,如果以浮点格式存储的整数极有可能(例如,基于概率数据流程图)在以后用于整数运算,则可将其转换为整数格式。作为另外一种选择,如果整数堆存储(例如,整数格式的值)具有流入浮点加载中的高概率,则可优化编译器而替代地以浮点数据的形式堆存储,但要进行另外的类型检查操作以确保可靠性。

在一个实施例中,可使用相对于数据结构集合描述了键的属性的元数据,对使用键索引数据结构(例如字典、哈希表、关联数组等)集合中的键的操作进行优化。元数据可对应于动态更新的高速缓存以指示不变量,该不变量对于处于数据结构集合的当前状态的键而言为真。可避免用于在键的数据结构集合上进行搜索的昂贵计算。例如,如果已知键始终(或从不)标引某些特定的值,或者由于这些值具有在处于当前状态的系统的全局范围内的任何数据结构集合中的某些元属性,则可能根本无需在数据结构(或字典)集合上进行昂贵的查找操作。

在另一个实施例中,运行时编译器可以发射实现快速路径(例如,无负载和分支结构)的编译代码,以基于对与通过源代码识别的键相关联的元数据的假设来执行源代码的指令。编译代码可包括保护符,例如条件检查代码,以基于与键相关联的元数据进入慢速路径并防止进入快速路径。在运行时执行编译代码期间,可保持包括对象的运行时状态,所述对象具有通过键散列的属性。可动态更新键的元数据以反映运行时状态的变化(例如,在对象中)。可执行保护符以执行廉价的检查操作(例如,标引键的元数据而不在运行时状态下的对象上执行昂贵的查找),从而更新已发射编译代码以在运行时期间需要时包括慢速路径。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苹果公司,未经苹果公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201380007185.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top