The utility model relates to a computer program immediate compiling method based on a tree type program branch, belonging to the technical field of compiling methods. In the program execution of a structured block stream diagram in the present invention, each basic block is interpreted in accordance with the instructions of a control flow, and the number of occurrences of a program branch is calculated when a cyclic structure is encountered. When the number of occurrences is greater than the given threshold, the current branch is set as a hot branch; each of the base blocks is compiled, and the target program branch is generated and saved. If the current branch contains other hot branches and other hot branch or part of entrance to basic blocks belonging to other hot branch, according to different strategies, the current branch and other hot branch merger. The compilation of the particle size is small, has good scalability, reducing the frequent switching burden brought by at run time, can greatly improve the efficiency of the basic block flow graph system.
【技术实现步骤摘要】
基于树型程序分支的计算机程序即时编译方法
本专利技术涉及计算机系统中运行程序的编译优化方法,属于计算机语言技术,用于在程序运行的过程中适时地改变程序的执行方式以其整体性能。
技术介绍
计算机程序设计语言的实现通常采用编译实现方法。通过编译系统事先将高级程序设计语言描述的程序翻译等价的、执行效率更高的目标语言程序,避免逐句解释高级语言程序所需要的解释负担,能够十分有效地提高程序的执行效率。然而,对于网络环境下使用的众多程序设计语言,描述计算功能的实用程序可能构造于未知的其他站点,或者是动态生成,无法预先采用编译技术进行优化处理。为了利用编译技术带来的性能改善,此类程序设计语言的有效实现常采用某种即时编译技术。例如,著名的Java虚拟机系统中,采用了这种即时编译技术,设法在程序解释执行的过程中,统计各个程序片段的执行频度,识别出执行频度较高的程序片段,进行编译处理;以编译产生的目标程序的执行代替原程序的解释执行,以求获得程序执行效率的整体提升。鉴于计算机程序设计语言的多样性,以及程序片段的复杂性,现有的即时编译技术通常采用程序中的函数或子例程作为即时编译处理的基本单元,进而在程序执行中统计各个函数和子例程的执行次数,获得执行频度较高的热点函数,进行编译处理。然而,即时编译处理的程序粒度越大,则编译处理的开销越大,有可能在很大程度上抵消编译优化所带来的好处。为此,本专利技术提出一种基于执行路径的即时编译方法,允许以程序分支等更小粒度的热点程序片段作为即时编译的处理对象,能够更准确地识别出执行频度较高的程序分支,更有效地利用编译技术来提高程序的执行效率。和其他基于 ...
【技术保护点】
基于树型程序分支的计算机程序即时编译方法,其特征在于:计算机程序是按照结构化基本块流图的表示,实现步骤如下:步骤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如果当前分支入口属于其他热点分支,则将当前分支作为其他热点分支的子分支,合并为树型的程序分支;步 ...
【技术特征摘要】
1.基于树型程序分支的计算机程序即时编译方法,其特征在于:计算机程序是按照结构化基本块流图的表示,实现步骤如下:步骤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如果当前分支中部分基本块属于其他热点分支,且...
【专利技术属性】
技术研发人员:廖湖声,武辰之,于成龙,高红雨,苏航,
申请(专利权)人:北京工业大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。