【技术实现步骤摘要】
【国外来华专利技术】动态编程语言的基于跟踪器的运行时优化相关专利申请的交叉引用本申请与由Filip Pizlo等人于2012年2月3日提交的名称为“RUNHMECOMPILATION FOR DYNAMIC PROGRAMMING LANGUAGES”的美国临时专利申请号 61/594,983、由Filip Pizlo等人于2012年2月 15 日提交的名称为“RUNTIME COMPILATION FOR DYNAMICPROGRAMMING LANGUAGES”的美国临时专利申请号61/599,309相关并要求其权益,这两个专利据此全文以引用方式并入本文。
本专利技术整体涉及运行时编译。更具体地,本专利技术涉及基于动态语言的源代码的运行时编译。
技术介绍
不含任何种类的类型注释的动态语言越来越普遍。例如,JavaScript已经成为万维网的通用语言,而Ruby、Python、Perl和PHP已经成为服务器端基础架构的标准语言。然而,当可能未提供优化编译策略以编译代码时,基于动态语言的代码的运行时可能需要显著开销。 例如,JavaScript不允许程序指定变量的类型。因此,在运行时期间,变量可被动态转换为不同执行路径中的独立类型。此类转换可能在计算上开销大,使整体性能受到重大影响。另外,动态创建的数据类型可能需要索引数据结构例如字典间大量的查找或搜索操作,以将类型分配到数据或访问特定类型数据的属性。 此外,需要现代JavaScript引擎来非常快速地执行非可信代码,并且由于这个原因,通过诸如即时(JIT)编译的机制使用运行时代码生成,攻击者可利用 ...
【技术保护点】
一种其内具有指令的机器可读非暂态存储介质,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括:在编译代码的运行时期间在遇到值时,根据跟踪器代码随机地且不频繁地生成跟踪器数据,所述编译代码编译自插入有所述跟踪器代码的源代码,所述跟踪器数据指示所述源代码中的所述值的起源;在所述运行时期间在所述源代码中的所述值的目标处加载所述值的所述跟踪器数据;以及优化所述编译代码以根据运行时信息减少所述值的所述起源和所述目标之间的处理资源,所述运行时信息包括所述值的所述起源和所述目标。
【技术特征摘要】
【国外来华专利技术】2012.02.03 US 61/594,983;2012.02.15 US 61/599,309;1.一种其内具有指令的机器可读非暂态存储介质,所述指令在被机器执行时使得所述机器执行一种方法,所述方法包括: 在编译代码的运行时期间在遇到值时,根据跟踪器代码随机地且不频繁地生成跟踪器数据,所述编译代码编译自插入有所述跟踪器代码的源代码,所述跟踪器数据指示所述源代码中的所述值的起源; 在所述运行时期间在所述源代码中的所述值的目标处加载所述值的所述跟踪器数据;以及 优化所述编译代码以根据运行时信息减少所述值的所述起源和所述目标之间的处理资源,所述运行时信息包括所述值的所述起源和所述目标。2.根据权利要求1所述的介质,其中所述跟踪器代码在所述源代码的运行时编译期间插入所述源代码中。3.根据权利要求1所述的介质,其中所述跟踪器代码包括求值器,并且其中所述生成包括: 根据所述求值器确定是否在遇到所述值时生成所述跟踪器数据,其中所述求值器配置有用于以随机且不频繁方式生成所述跟踪器数据的所述确定的概率。4.根据权利要求3所述的介质,其中所述求值器对全局计数器进行计数,其中所述求值器返回真以基于所 述全局计数器和根据所述求值器的所述配置的值的比较来生成所述跟踪器数据。5.根据权利要求1所述的介质,其中针对所述值中的一个生成所述跟踪器数据中的一个,并且其中所述一个跟踪器数据包括所述一个值和所述一个值的代码信息,所述代码信息从所述源代码的配置文件记录。6.根据权利要求5所述的介质,其中所述源的所述配置文件指定所述源代码中的所述值的起源。7.根据权利要求5所述的介质,其中所述编译代码包括到所述一个值的链接,并且其中所述跟踪数据的生成包括: 利用对所述跟踪器数据的引用来更新所述链接,所述一个值能够通过所述引用从所述跟踪器数据访问。8.根据权利要求7所述的介质,其中所述编译代码包括所述跟踪器数据的处理程序,并且其中所述引用允许调用所述处理程序以使所述一个值从所述一个跟踪器数据解包。9.根据权利要求1所述的介质,其中所述运行时信息包括数据流记录,还包括: 保持所述数据流记录,所述数据流记录指示所述运行时期间的所述值的轨迹,所述轨迹包括所述值的所述起源和所述目标,其中所述数据流记录包括所述轨迹的出现统计值。10.根据权利要求9所述的介质,其中所述轨迹的出现统计值包括所述起源已被执行的次数。11.根据权利要求9所述的介质,其中所述数据流记录包括流程图,其中所述流程图的每个节点与所述源代码的代码位置相关联,其中所述流程图的每个边从所述流程图的源节点被导向到所述流程图的目标节点,所述源节点与所述源代码的所述起源中的一个相关联,所述目标节点与所述源代码的所述目标中的一个相关联,其中所述边指示在所述运行时期间在所述一个起源处创建和在所述一个目标处引用的所述值中的至少一个。12.根据权利要求11所述的介质,其中所述边与所述统计值中的一个相关联,所述统计值指示所述至少一个值的出现次数,所述至少一个值与所述一个源位置和所述一个目标位置相关联。13.根据权利要求9所述的介质,其中所述加载包括: 用所述轨迹更新所述数据流记录,其中基于所述跟踪器数据来更新所述轨迹的所述值的起源。14.根据权利要求13所述的介质,其中所述跟踪器数据中的一个包括所述值中的一个,所述一个值在所述目标的一个中引用,所述一个跟踪器数据包括所述一个值的所述起源中的一个,所述更新包括: 确定对应于所述一个起源和所述一个目标的所述轨迹中的一个是否存在于所述数据流记录中;以及 如果所述一个轨迹尚未存在于所述数据流记录中,则用所述一个轨迹更新所述数据流记录。15.根据权利要求14所述的...
【专利技术属性】
技术研发人员:F·J·皮茨罗,G·巴瑞克罗,
申请(专利权)人:苹果公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。