【技术实现步骤摘要】
代码生成方法、装置、电子设备及计算机存储介质
本专利技术实施例涉及计算机
,尤其涉及一种代码生成方法、装置、电子设备及计算机存储介质。
技术介绍
随着网络技术的发展,通过浏览器网页获取信息已成为人们生活和工作的常态。浏览器网页内容的可以通过诸如超文本标记语言HTML等来编辑实现,但HTML不易编辑动态或互动的网页,因此,JavaScript语言应运而生。为了更好地服务于网页,一种使用JavaScript引擎对JavaScript代码进行处理的方式又被提出。JavaScript引擎是执行JavaScript代码的解释器,其可以实现为标准解释器或即时编译器。其中,Google公司提供的V8引擎是当前被广泛使用的一种JavaScript引擎。与常规JavaScript引擎不同的是,V8引擎引入了JIT编译(Just-In-Timecompilation)方式,在运行时把JavaScript代码转换为高效的机器码,而不再依赖于解释器去执行。由此,提高了JavaScript代码的执行性能。虽然V8引擎在一定程度上提升了JavaScript代码的执行性能,但在实际应用中技术人员在想要实现某种功能时却可能采用其它编程语言如,C语言、C++语言、Java语言等等,再将其转换为JavaScript代码通过V8引擎实现。这种情况下,因这些其它编程语言并不能直接与JavaScript语言进行完全地转换和对接,一方面,造成编译项目整体性能较差;另一方面,也对技术人员提出了更高的不同代码间的转换能力要求。 ...
【技术保护点】
1.一种代码生成方法,包括:/n获取待进行语言转换的第一中间代码;/n对所述第一中间代码进行检测,获取所述第一中间代码中待进行安全点调用的调用点和/或待进行异常处理的调用点;/n对所述调用点进行标记,以将所述第一中间代码转换生成包括所述标记的第二中间代码。/n
【技术特征摘要】
1.一种代码生成方法,包括:
获取待进行语言转换的第一中间代码;
对所述第一中间代码进行检测,获取所述第一中间代码中待进行安全点调用的调用点和/或待进行异常处理的调用点;
对所述调用点进行标记,以将所述第一中间代码转换生成包括所述标记的第二中间代码。
2.根据权利要求1所述的方法,其中,所述对所述调用点进行标记,以将所述第一中间代码转换生成包括所述标记的第二中间代码,包括:
对所述调用点进行标记,并获取被标记的调用点的位置信息;
根据所述标记和所述位置信息,将所述第一中间代码转换生成所述第二中间代码。
3.根据权利要求1或2所述的方法,其中,所述对所述调用点进行标记,以将所述第一中间代码转换生成包括所述标记的第二中间代码,包括:
对所述调用点进行标记,并调用代码生成函数对包括所述标记的第一中间代码进行生成所述第二中间代码的处理,其中,所述代码生成函数中包括至少一个执行函数;
在所述处理过程中,判断当前执行函数中是否存在预设的用于指示尾调用的操作数;
若存在,则获取当前执行函数的执行结果,并根据所述执行结果生成所述第二中间代码。
4.根据权利要求3所述的方法,其中,所述操作数具有调用属性和返回属性。
5.根据权利要求1所述的方法,其中,在所述以将所述第一中间代码转换生成包括所述标记的第二中间代码之前,所述方法还包括:
获取未被存储数据的至少一个寄存器的信息,并从中选择一个寄存器用于存储从所述第一中间代码到所述第二中间代码的转换过程中的参数。
6.根据权利要求5所述的方法,其中,所述方法还包括:
在所述转换过程中,获取需要进行存储的参数,并根据所述参数的获取顺序将所述参数压栈至选择的所述寄存器的堆栈中。
7.根据权利要求1-6任一项所述的方法,其中,所述方法还包括:
将所述第二中间代码输出至编译器,通过所述编译器预输出本地代码和预输出的本地代码的元数据,其中,所述元数据中包含所述标记的信息。
8.根据权利要求7所述的方法,其中,所述方法还包括:
根据预输出的所述本地代码和所述元数据,进行代码组合;
根据代码组合结果,生成可执行本地代码、安全点表、和异常处理表。
9.根据权利要求8所述的方法,其中,所述编译器为LLVM,所述方法还包括:
将所述可执行本地代码、安全点表和异常处理表输出至V8引擎。
10.根据权利要求9所述的方法,其中,所述对所述调用点进行标记,包括:
使用statepoint或者patchpoint对所述调用点进行标记。
11.一种代码生成装置,包括:
第一获取模块,用于获取待进行语言转换的第一中间代码;
第二获取模块,用于对所述第一中间代码进行检测,获取所述第一中间代码中待进行安全点调用和/或待进行异常...
【专利技术属性】
技术研发人员:林作健,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。