CN105988854B - 动态编译方法及装置 - Google Patents
动态编译方法及装置 Download PDFInfo
- Publication number
- CN105988854B CN105988854B CN201510076426.XA CN201510076426A CN105988854B CN 105988854 B CN105988854 B CN 105988854B CN 201510076426 A CN201510076426 A CN 201510076426A CN 105988854 B CN105988854 B CN 105988854B
- Authority
- CN
- China
- Prior art keywords
- code
- predicted value
- compiled
- value
- optimization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供一种动态编译方法及装置,其中,所述方法包括:从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值;若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;在将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;对所述替换后的中间代码进行优化,并将优化后的中间代码转化为待执行的本地目标代码。本发明实施例提供的动态编译方法及装置,可以降低编译生成的代码规模,提升虚拟机的系统性能。
Description
技术领域
本发明实施例涉及虚拟机技术,尤其涉及一种动态编译方法及装置。
背景技术
虚拟机是构建在指令集架构(ISA)或者应用二进制接口(ABI)间的转换层,虚拟机为上层的操作系统或应用程序提供不同于底层机器的虚拟执行环境。Java虚拟机是虚拟机的一种,它具有自己完善的体系架构及相应的指令系统,屏蔽与具体平台相关的信息,使Java程序只需生成虚拟机上运行的目标代码,就可在多种平台上不加修改地运行。
虚拟机依托于本地的物理机,通过其执行引擎对给定的虚拟机指令序列(即目标程序)在本地机器上模拟执行。虚拟机的执行引擎一般包括解释器和编译器两种类型:解释器以单一目标指令为单位进行取指令、分析、执行;但是,解释器的单纯解释执行过程带来大量重复的取指令和译码操作,导致解释执行的性能低下。编译器以一组连续的目标指令(基本块、函数或方法)为单位整体编译成本地CPU指令集(也称为本地方法),然后由硬件直接执行本地方法;编译器避免了大量重复的取指令和译码的过程,同时又在编译时进行了大量卓有成效的优化,因而编译器性能可以达到解释器性能的10倍以上。和传统C/C++等静态编译不同,编译器是在虚拟机运行过程中进行动态编译的,故又称为即时编译器(Just-in-time Compiler,简称JIT),即时编译器会对检测到的执行频度较高的方法(也称为热点方法,或程序热点)进行编译。即时编译器的编译过程包括生成中间代码、优化中间代码及生成本地目标代码等阶段。
现有技术编译输出的本地目标代码的冗余指令较多,影响了虚拟机的系统性能。
发明内容
本发明实施例提供一种动态编译方法及装置,以降低编译生成的代码规模,提升虚拟机的系统性能。
第一方面,本发明实施例提供一种动态编译方法,其中,所述方法包括:
从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值;
若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;
在将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;
对所述替换后的中间代码进行优化,并将优化后的中间代码转化为待执行的本地目标代码。
根据第一方面,在第一方面的第一种可能的实现方式中,还包括:
若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。
根据第一方面,在第一方面的第二种可能的实现方式中,所述将优化后的中间代码转化为待执行的本地目标代码之后,还包括:
在所述代码缓存中存储所述待执行的本地目标代码。
根据第一方面、第一方面的第一种至第二种可能的实现方式中的任意一种,在第一方面的第三种可能的实现方式中,所述对所述替换后的中间代码进行优化,包括:
在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
根据第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述对所述预测值所在的代码片段进行优化,包括:
采用常量合并和传播的优化方法对所述预测值所在的代码片段进行优化;或者,
采用无用代码消除的优化方法对所述预测值所在的代码片段进行优化。
第二方面,本发明实施例提供一种动态编译装置,其中,所述装置包括:
获取模块,用于从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值;
更新模块,用于若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;
转化模块,用于将所述待编译的热点方法转化为中间代码;
替换模块,用于所述转化模块将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;
优化模块,用于对所述替换后的中间代码进行优化;
所述转化模块,还用于将所述优化模块优化后的中间代码转化为待执行的本地目标代码。
根据第二方面,在第二方面的第一种可能的实现方式中,还包括:
确定模块,用于若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。
根据第二方面,在第二方面的第二种可能的实现方式中,还包括:
存储模块,用于在所述转化模块将优化后的中间代码转化为待执行的本地目标代码之后,在所述代码缓存中存储所述生成的本地目标代码。
根据第二方面、第二方面的第一种至第二种可能的实现方式中的任意一种,在第二方面的第三种可能的实现方式中,所述优化模块,具体用于在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
根据第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述优化模块,具体用于:采用常量合并和传播的优化方法对所述预测值所在的代码片段进行优化;或者,采用无用代码消除的优化方法对所述预测值所在的代码片段进行优化。
本发明实施例提供的动态编译方法及装置,若确定待编译的热点方法的参数的当前值与其预测值不同,则在将待编译的热点方法转化为中间代码之后,使用所述预测值替换所述中间代码中对应的变量,将方法的参数对应的变量转化为常数,使得在对替换后的中间代码进行优化时,也能够对所述预测值(该预测值与所述待编译的热点方法的参数对应)所在的代码片段进行优化处理,从而生成精简的本地目标代码,相比于现有技术,本发明实施例提供的动态编译方法能够减少生成后的本地目标代码中的指令条数,降低编译生成的代码规模,缩小编译后代码的空间开销,也可以提升本地目标代码的执行性能,提升虚拟机的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的动态编译方法的流程图;
图2为本发明实施例提供的动态编译方法的另一流程图;
图3为本发明实施例提供的动态编译装置的结构示意图;
图4为本发明实施例提供的动态编译装置的另一结构示意图;
图5为本发明实施例提供的动态编译装置的又一结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的动态编译方法的流程图。如图1所示,本发明实施例提供的动态编译方法,包括:
101、从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值。
102、若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值。
即相当于在为参数输入传入值时,若该传入值与缓存的预测值不同,则使预测值等于传入值。
103、在将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量。
热点方法中的参数是与编译后的中间代码中的变量一一对应的,因此用预测值替换中间代码中的变量,即相当于是将参数由不确定的变量转换为固定的常数值,并用该常数值替换中间代码中的对应变量。
104、对所述替换后的中间代码进行优化,并将优化后的中间代码转化为待执行的本地目标代码。
本发明实施例提供的动态编译方法的执行主体为动态编译装置,所述动态编译装置可以是即时编译器或虚拟机。所述中间代码中的变量与所述待编译的热点方法的参数对应,即在编译器将待编译的热点方法转化为中间代码后,所述待编译的热点方法的参数以变量的形式存在于所述中间代码中。对于每个热点方法,虚拟机预先将该热点方法的参数的预测值,存储在虚拟机的代码缓存的内存空间中。可选的,在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
现有技术中,Java虚拟机类库中的大量方法在实际程序运行时被调用多次时传入的数值均为相同的固定值。由于热点方法中的参数的取值,通常在执行热点方法对应的本地目标代码时才能确定,因而,在对热点方法进行编译的阶段,热点方法中的参数仅被视为变量,在对热点方法进行编译时,通常不对热点方法中的参数所在的代码片段进行处理,而是直接编译为本地目标代码,从而使得编译输出的本地目标代码的冗余指令较多,严重影响了虚拟机的系统性能。
本发明实施例提供的动态编译方法,若确定待编译的热点方法的参数的传入值与其预测值不同,则在将待编译的热点方法转化为中间代码之后,使用所述预测值替换所述中间代码中对应的变量,将方法的参数对应的变量转化为常数,使得在对替换后的中间代码进行优化时,也能够对所述预测值(该预测值与所述待编译的热点方法的参数对应)所在的代码片段进行优化处理,从而生成精简的本地目标代码(例如代码中包括很多if语句,这些条件语句通常至少有两个分支,当参数由变量替换为固定的预测值常量后,就可以根据常量值直接确定到底是需要执行哪个分支,那么优化过程中直接对该分支进行编译生成代码即可,对于其他分支可以不用处理,因此减少了代码的生成规则),相比于现有技术,本发明实施例提供的动态编译方法能够减少生成后的本地目标代码中的指令条数,降低编译生成的代码规模,缩小编译后代码的空间开销,也可以提升本地目标代码的执行性能,提升虚拟机的性能。
在本发明的另一实施例中,将优化后的中间代码转化为待执行的本地目标代码之后,将所述本地目标代码存储至代码缓存中。本发明实施例中,在虚拟机的代码缓存中同时存储了待编译的热点方法的参数的预测值,及与待编译的热点方法对应的本地目标代码。
在上述实施例的基础上,本实施例提供的方法还可包括:
若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。本发明实施例可以应用于被调用多次时传入的数值均为相同的固定值的方法,基于该热点方法的当前值(即在实际调用时为该参数传入的传入值,以下将该传入值成为当前值)的确定性,直接将代码缓存中存储的与该热点方法对应的本地目标代码,作为待执行的本地目标代码,省去对该热点方法的编译过程,从而可以提升虚拟机的性能。
下面通过一个具体的实施例对本发明实施例提供的动态编译方法的实现过程进行说明。图2为本发明实施例提供的动态编译方法的另一流程图。如图2所示,虚拟机在对待编译的热点方法进行编译时,包括如下步骤:
1、虚拟机即时编译器以方法为单位,取待编译的热点方法。
2、判断待编译的热点方法是否初次被编译:若确定待编译的热点方法是初次被编译,则执行步骤5;否则执行步骤3。
3、从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值。
4、判断待编译的热点方法的参数的当前值与预测值是否相同:若确定待编译的热点方法的参数的当前值与预测值不相同,则执行步骤5;若判定待编译的热点方法的当前值与预测值相同,则从代码缓存中获取与待编译的热点方法对应的本地目标代码,并执行步骤10。
5、更新预测值:将所述当前值作为所述待编译的热点方法的参数的预测值。
6、将待编译的热点方法转化为中间代码,其中,所述参数与所述中间代码中的变量对应。
7、使用所述预测值替换所述中间代码中的变量;进一步,也可以将待编译的热点方法的参数对应的变量类型转化为常量类型。
8、对中间代码进行优化,并对预测值所在的代码片段进行优化。
9、生成本地目标代码:将优化后的中间代码转化为待执行的本地目标代码。
10、执行本地目标代码。
本发明实施例,针对虚拟机类库中被调用多次时传入的数值均为相同值的方法,预先在代码缓存中存储该方法中参数的固定值作为预测值,并将最近一次对该方法进行编译后生成的本地目标代码,存储到代码缓存中。虚拟机在对该方法进行非首次编译时,若判定该方法的参数的当前值与代码缓存中存储的预测值相同,则直接从代码缓存中获取该方法对应的最近一次生成的本地目标代码并执行。相比于现有技术,采用本发明实施例提供的动态编译方法,提升了编译后代码的质量,生成的本地目标代码具有更少的指令条数,能够缩小编译后代码的空间开销,提升本地目标代码的执行性能。
在上述实施例的基础上,虚拟机在使用所述预测值替换所述中间代码中的变量之后,对所述中间代码进行优化的实现方法可以包括:机器无关优化、全局代码转移和调度、窥孔优化等。实际中,对预测值所在的代码片段进行优化的实现方法可以包括:常量合并和传播优化、无用代码消除优化等;其中,所述常量合并与传播的优化方法,是指编译器在编译期间直接计算出表达式的结果,在生成的代码中直接用计算结果替换表达式,并进一步利用计算结果确定更多表达式的值。所述无用代码消除的优化方法,是指编译器在编译期间根据程序控制流和数据流识别出不可能执行的代码,并将不可达代码删除的优化方法。本发明实施例通过对预测值所在的代码片段进行优化,能有效减少生成后的本地目标代码中的指令条数,降低编译生成的代码规模。
本领域技术人员可以理解,上述列举的对中间代码进行优化的方法,只是示例,其并不对本发明的保护范围构成限定。
图3为本发明实施例提供的动态编译装置的结构示意图。如图3所示,本发明实施例提供的动态编译装置300,包括:
获取模块301,用于从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值;
更新模块302,用于若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;
转化模块303,用于将所述待编译的热点方法转化为中间代码;
替换模块304,用于所述转化模块303将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;
优化模块305,用于对所述替换后的中间代码进行优化;
所述转化模块303,还用于将所述优化模块305优化后的中间代码转化为待执行的本地目标代码。
本发明实施例提供的动态编译装置,若确定待编译的热点方法的参数的当前值与其预测值不同,则在将待编译的热点方法转化为中间代码之后,使用所述预测值替换所述中间代码中对应的变量,将方法的参数对应的变量转化为常数,使得在对替换后的中间代码进行优化时,也能够对所述预测值(该预测值与所述待编译的热点方法的参数对应)所在的代码片段进行优化处理,从而生成精简的本地目标代码,相比于现有技术,本发明实施例提供的动态编译方法能够减少生成后的本地目标代码中的指令条数,降低编译生成的代码规模,缩小编译后代码的空间开销,也可以提升本地目标代码的执行性能,提升虚拟机的性能。
图4为本发明实施例提供的动态编译装置的另一结构示意图。如图4所示,在上述实施例的基础上,本发明实施例提供的动态编译装置400,也包括:获取模块301、更新模块302、转化模块303、替换模块304、优化模块305;进一步,所述动态编译装置400还包括:
确定模块401,用于若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。
本发明实施例可以应用于被调用多次时传入的数值均为相同的固定值的方法,基于该热点方法的当前值(即在实际调用时传入的参数值)的确定性,直接将代码缓存中存储的与该热点方法对应的本地目标代码,作为待执行的本地目标代码,省去对该热点方法的编译过程,从而可以提升虚拟机的性能。
图5为本发明实施例提供的动态编译装置的又一结构示意图。如图5所示,在上述实施例的基础上,本发明实施例提供的动态编译装置500,也包括:获取模块301、更新模块302、转化模块303、替换模块304、优化模块305;进一步,所述动态编译装置500还包括:
存储模块501,用于在所述转化模块303将所述优化模块305优化后的中间代码转化为待执行的本地目标代码之后,在所述代码缓存中存储所述生成的本地目标代码。
在上述实施例的基础上,在本发明一实施例中,所述优化模块305,具体用于在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
进一步的,在本发明另一实施例中,所述优化模块305具体用于:采用常量合并和传播的优化方法对所述预测值所在的代码片段进行优化;或者,采用无用代码消除的优化方法对所述预测值所在的代码片段进行优化。本发明实施例通过对预测值所在的代码片段进行优化,能有效减少生成后的本地目标代码中的指令条数,降低编译生成的代码规模。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种动态编译方法,其特征在于,包括:
从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值,所述热点方法为执行频度较高的方法;
若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;
在将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;
对所述替换后的中间代码进行优化,并将优化后的中间代码转化为待执行的本地目标代码。
2.根据权利要求1所述的方法,其特征在于,还包括:
若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。
3.根据权利要求1所述的方法,其特征在于,所述将优化后的中间代码转化为待执行的本地目标代码之后,还包括:
在所述代码缓存中存储所述待执行的本地目标代码。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述对所述替换后的中间代码进行优化,包括:
在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
5.根据权利要求4所述的方法,其特征在于,所述对所述预测值所在的代码片段进行优化,包括:
采用常量合并和传播的优化方法对所述预测值所在的代码片段进行优化;或者,
采用无用代码消除的优化方法对所述预测值所在的代码片段进行优化。
6.一种动态编译装置,其特征在于,包括:
获取模块,用于从虚拟机的代码缓存中获取待编译的热点方法的参数的预测值,所述热点方法为执行频度较高的方法;
更新模块,用于若确定为所述参数传入的传入值与所述预测值不同,则将所述预测值更新为所述传入值;
转化模块,用于将所述待编译的热点方法转化为中间代码;
替换模块,用于所述转化模块将所述待编译的热点方法转化为中间代码后,使用所述预测值替换所述中间代码中的相应变量;
优化模块,用于对所述替换后的中间代码进行优化;
所述转化模块,还用于将所述优化模块优化后的中间代码转化为待执行的本地目标代码。
7.根据权利要求6所述的装置,其特征在于,还包括:
确定模块,用于若确定为所述参数传入的传入值与所述预测值相同,则将所述代码缓存中存储的与所述待编译的热点方法对应的本地目标代码,作为待执行的本地目标代码。
8.根据权利要求6所述的装置,其特征在于,还包括:
存储模块,用于在所述转化模块将优化后的中间代码转化为待执行的本地目标代码之后,在所述代码缓存中存储所述待执行的本地目标代码。
9.根据权利要求6-8中任意一项所述的装置,其特征在于,所述优化模块,具体用于在所述对所述替换后的中间代码进行优化时,对所述预测值所在的代码片段进行优化。
10.根据权利要求9所述的装置,其特征在于,所述优化模块,具体用于:
采用常量合并和传播的优化方法对所述预测值所在的代码片段进行优化;或者,
采用无用代码消除的优化方法对所述预测值所在的代码片段进行优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510076426.XA CN105988854B (zh) | 2015-02-12 | 2015-02-12 | 动态编译方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510076426.XA CN105988854B (zh) | 2015-02-12 | 2015-02-12 | 动态编译方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988854A CN105988854A (zh) | 2016-10-05 |
CN105988854B true CN105988854B (zh) | 2019-05-07 |
Family
ID=57041268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510076426.XA Active CN105988854B (zh) | 2015-02-12 | 2015-02-12 | 动态编译方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105988854B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941431A (zh) * | 2018-09-21 | 2020-03-31 | 北京奇虎科技有限公司 | 混淆代码的优化方法及装置、计算设备、存储介质 |
CN110442347B (zh) * | 2019-08-12 | 2023-06-30 | 广州虎牙科技有限公司 | 安装包编译方法、装置、电子设备及可读存储介质 |
CN113031952A (zh) * | 2019-12-25 | 2021-06-25 | 上海高德威智能交通系统有限公司 | 深度学习模型的执行代码的确定方法、装置及存储介质 |
CN112394941A (zh) * | 2020-11-18 | 2021-02-23 | 京东数字科技控股股份有限公司 | 代码预热方法、装置、电子设备及存储介质 |
CN115167868B (zh) * | 2022-07-29 | 2022-12-09 | 阿里巴巴(中国)有限公司 | 代码编译方法、装置、设备及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101317156A (zh) * | 2005-11-29 | 2008-12-03 | 英特尔公司 | 基于编译器的用户级线程调度优化 |
CN101510115A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 使用动态编译器控制程序运行时处理器频率的方法 |
CN103713933A (zh) * | 2013-12-31 | 2014-04-09 | 华为技术有限公司 | 计算机程序中热点函数、变量的汇聚方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853934B2 (en) * | 2005-06-23 | 2010-12-14 | Hewlett-Packard Development Company, L.P. | Hot-swapping a dynamic code generator |
-
2015
- 2015-02-12 CN CN201510076426.XA patent/CN105988854B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101317156A (zh) * | 2005-11-29 | 2008-12-03 | 英特尔公司 | 基于编译器的用户级线程调度优化 |
CN101510115A (zh) * | 2009-03-26 | 2009-08-19 | 浙江大学 | 使用动态编译器控制程序运行时处理器频率的方法 |
CN103713933A (zh) * | 2013-12-31 | 2014-04-09 | 华为技术有限公司 | 计算机程序中热点函数、变量的汇聚方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105988854A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105988854B (zh) | 动态编译方法及装置 | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
US6973644B2 (en) | Program interpreter | |
CN113722218B (zh) | 一种基于编译器中间表示的软件缺陷预测模型构建方法 | |
CN105224452A (zh) | 一种针对科学计算程序静态分析性能的预测代价优化方法 | |
CN109933327A (zh) | 基于代码融合编译框架的OpenCL编译器设计方法和系统 | |
JP2016081501A (ja) | コンパイルプログラム、コンパイル方法およびコンパイラ装置 | |
US11599478B2 (en) | Reduced instructions to generate global variable addresses | |
CA2684441C (en) | May-constant propagation | |
US20090019431A1 (en) | Optimised compilation method during conditional branching | |
CN112540767A (zh) | 程序代码的生成方法、装置、电子设备及存储介质 | |
CN103838616B (zh) | 基于树型程序分支的计算机程序即时编译方法 | |
US10146565B2 (en) | Method for executing a computer program with a parameterised function | |
CN103559069B (zh) | 一种基于代数系统的跨文件过程间优化方法 | |
CN110929850A (zh) | 基于申威处理器的深度学习算子自动优化系统及方法 | |
CN113934431A (zh) | 一种量子程序编译方法、装置及电子设备 | |
CN109753281B (zh) | 一种基于图形化编程的微电网能量管理策略可视化开发工具 | |
CN112527304B (zh) | 基于异构平台的自适应节点融合编译优化方法 | |
CN115048184A (zh) | 一种解释器指令的优化执行方法和装置 | |
CN112540750B (zh) | 自适应内建函数与指令操作选择翻译方法 | |
US9141414B2 (en) | Preferred compilation | |
US9417872B2 (en) | Recording medium storing address management program, address management method, and apparatus | |
US10140135B2 (en) | Method for executing a computer program with a parameterised function | |
JP2004326760A (ja) | コンパイラ、記録媒体、コンパイル装置、通信端末装置及びコンパイル方法 | |
JP3276479B2 (ja) | コンパイル方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |