[发明专利]基于树型程序分支的计算机程序即时编译方法有效
申请号: | 201410078456.X | 申请日: | 2014-03-05 |
公开(公告)号: | CN103838616B | 公开(公告)日: | 2017-04-05 |
发明(设计)人: | 廖湖声;武辰之;于成龙;高红雨;苏航 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京思海天达知识产权代理有限公司11203 | 代理人: | 纪佳 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于树型程序分支的计算机程序即时编译方法,属于编译方法技术领域。本发明中结构化基本块流图的程序执行中按照控制流的指示,依次解释执行每个基本块,遇到循环结构时则统计程序分支的出现次数。在出现次数大于给定的阈值,将当前分支设置为热点分支;对其中每个基本块进行编译处理,生成并保存目标程序分支。如果当前分支中包含其他热点分支、分支入口属于其他热点分支或部分基本块属于其他热点分支,则按照不同的策略,将当前分支与其他热点分支进行合并。本方法编译处理粒度较小,具有良好的动态可扩展性,减少了在运行时刻频繁地切换执行方式所带来的额外负担,可以大幅度提高基本块制流图的运行效率。 | ||
搜索关键词: | 基于 程序 分支 计算机 即时 编译 方法 | ||
【主权项】:
基于树型程序分支的计算机程序即时编译方法,其特征在于:计算机程序是按照结构化基本块流图的表示,实现步骤如下:步骤S1按照控制流的指示,依次解释执行每个基本块,遇到循环结构时则记录程序分支的起点;步骤S2如果再次遇到相同循环结构的起点时,则记录程序分支信息,累计该分支的出现次数;步骤S3如果当前分支路径的出现次数大于给定的阈值,则按照以下步骤对当前分支进行编译处理:步骤S3.1为当前分支设置编译标记,表示为热点分支;步骤S3.2按照以下步骤,对当前分支中的每个基本块进行编译处理:步骤S3.2.1将当前基本块翻译为目标代码模块;步骤S3.2.2遇到其他分支入口,则生成出口指令;步骤S3.2.3将步骤S3.2.1和S3.2.2生成的代码合并为目标程序分支;步骤S3.3保存步骤S3.2所生成的目标程序分支;步骤S3.4如果当前分支和其他分支有包含关系,则按照以下步骤进行处理:步骤S3.4.1如果当前分支中包含了其他热点分支,则将其他热点分支作为当前分支的子分支,合并为树型的程序分支;步骤S3.4.2如果当前分支入口属于其他热点分支,则将当前分支作为其他热点分支的子分支,合并为树型的程序分支;步骤S3.4.3如果当前分支中部分基本块属于其他热点分支,且分支入口相同,则将其他热点分支作为当前分支的子分支,合并为树型的程序分支;步骤S4每当再次执行循环结构时,如果该循环已经具有编译标记,则将解释执行方式切换为编译执行方式,按照以下步骤进行执行目标程序中的每条指令:步骤S4.1将解释执行环境的上下文信息转换为目标程序的上下文信息,并保留返回地址;步骤S4.2按照控制指令顺序执行目标程序中的指令序列;步骤S4.3如果遇到了出口指令,则将编译执行方式切换为解释执行方式,按照目标程序的上下文信息恢复解释执行环境的上下文信息,随后按照出口指令的指示继续程序的解释执行;步骤S4.4如果目标程序执行结束,则将编译执行方式切换为解释执行方式,按照目标程序的上下文信息恢复解释执行环境的上下文信息,随后按照预留的返回地址,继续下一基本块的解释执行。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410078456.X/,转载请声明来源钻瓜专利网。