The invention provides an integer multiplication optimization method based on the JIT engine of the Flying Platform Firefox browser, which in turn includes the following steps: S110: starting to optimize the JIT compilation process; S120: MIR generation; S130: performing the optimization run; S140: MIR degradation; S150: code generation, including: A. integer multiplication code generation; B. reading the right of the LMulI object Operands, perform the corresponding operations according to the type of the right operand; S160: end. The invention has the beneficial effect of type inference and data analysis according to the type data collected by JS engine, replacing the floating-point multiplication instruction with other equivalent instructions in the process of optimizing JIT code generation, realizing the multiplication operation within an instruction cycle, thereby achieving the purpose of optimizing the efficiency of integer multiplication.
【技术实现步骤摘要】
基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法
本专利技术属于通讯
,尤其是涉及一种基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法。
技术介绍
伴随着互联网的快速发展,浏览器成为了桌面终端用户主要的互联网入口。现在的网站内容越来越丰富,功能也越来越复杂,为了快速渲染页面提升用户体验,大部分的动态页面渲染和数据处理工作会在浏览器端进行。这对浏览器的性能,尤其是JS引擎的性能提出了更高的要求。早期的JS引擎都是基于解释器实现,解释器具有代码加载执行延时短的优点,但是对于反复执行的代码每次需要重新解释,导致了运行效率的降低。为了提升JS引擎执行性能,浏览器厂商开发出了适用于JS等动态语言的JIT优化技术。JIT:即时编译(Just-in-timecompilation),动态编译的一种形式,是一种提高程序运行效率的方法。在火狐浏览器中,有两个JIT编译器:基线JIT编译器和优化JIT编译器。Bailout:也叫“去优化”(Deoptimize),在高优化层级JIT做了很激进的优化(例如假设某个类不会有别的子类、某个引用一定不是null、某个引用所指向的对象一定是某个具体类型,等),而这个激进的假设假如失效了的话,就必须退回到没有做这些优化的“安全”的低优化层级JIT去继续执行。JIT编译器根据解释器记录的代码运行信息,将热点代码通过编译优化手段编译成本地机器代码,下一次运行到相应代码时直接执行对应的JIT代码,从而可以大幅提升JS引擎性能。目前火狐浏览器内部有两个JIT编译器:基线编译器和优化编译器。基线编译器会将“热点“代码编译成本地机器代码,但 ...
【技术保护点】
1.基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:依次包括如下步骤:S110:开始优化JIT编译过程;S120:MIR生成;S130:执行优化趟;S140:MIR降级;S150:代码生成,包括:a.整数乘法代码生成;b.读取LMulI对象中右操作数,根据右操作数的类型执行对应的操作;S160:结束。
【技术特征摘要】
1.基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:依次包括如下步骤:S110:开始优化JIT编译过程;S120:MIR生成;S130:执行优化趟;S140:MIR降级;S150:代码生成,包括:a.整数乘法代码生成;b.读取LMulI对象中右操作数,根据右操作数的类型执行对应的操作;S160:结束。2.根据权利要求1所述的基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:所述读取LMulI对象中右操作数,根据右操作数的类型执行对应的操作,包括判断右操作数是否为常量,若为常量,则执行步骤S151;若否,则执行步骤S152;S151:执行右操作数为常量的代码生成子过程;S152:执行右操作数为寄存器的代码生成子过程。3.根据权利要求2所述的基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:所述执行右操作数为常量的代码生成子过程,包括如下步骤:S1511:生成左操作数和0比较的指令;S1512:判断右操作数是否为0。4.根据权利要求3所述的基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:所述生成左操作数和0比较的指令,包括:判断MulI中canBeNegativeZero标志是否被设置;如果MulI中canBeNegativeZero标志被设置,则生成指令检查整数乘法运算结果是否为-0。5.根据权利要求3所述的基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,其特征在于:所述判断右操作数是否为0,包括:如果右操作数为0,则生成LessThan标志被设置时跳转到Bailout入口的指令;否则生成Equal标志被设置时跳转到Bailout入口的指令。6.根据权利要求5所述的基于飞腾平台...
【专利技术属性】
技术研发人员:孙科,张铎,何明武,唐晓东,魏立峰,孔金珠,吴庆波,
申请(专利权)人:天津麒麟信息技术有限公司,
类型:发明
国别省市:天津,12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。