[发明专利]一种跨语言编译方法及设备在审
申请号: | 201910228528.7 | 申请日: | 2019-03-25 |
公开(公告)号: | CN111736838A | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 蒋奕;陈永健;张超;赵俊民;张雁 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F8/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 语言 编译 方法 设备 | ||
本申请提供了一种跨语言编译的方法和装置。可用于本地语言和非本地语言,例如Java和C++之间的跨语言混合编译。通过获取包含本地语言和非本地语言的源程序代码,生成中间语言,中间语言中包含了基于本地语言和非本地语言的方法所生成的方法。在中间语言中生成调用方法,这些调用方法用于实现基于本地语言和非本地语言的方法所生成的方法之间的相互调用。降低编译后的可执行程序在运行时本地语言和非本地语言方法之间相互调用的开销。
技术领域
本申请涉及计算机代码编译技术,尤其涉及一种跨语言的混合编译技术。
背景技术
为了平衡开发效率和程序性能,本地语言和非本地语言混合编程成为一种趋势。例如:非本地语言Java,JavaScript,Python等都支持和C/C++混合编程。当编译混合编程的源代码时,由于在编译过程中,本地语言代码和非本地语言代码互相不可见。在这种情况下,跨函数的编译优化只能在同语言函数范围内进行。在Java虚拟机(Java VirtualMachine,JVM)中,Java程序被编译成与机器和操作系统无关的字节码。C/C++程序编译成目标机器相关的二进制可执行程序。在编译阶段,Java程序和C/C++程序互相不可见。在执行阶段,Java字节码首先通过解释器解释执行。当同一段代码被执行的次数达到某个阈值时,会被编译成机器相关的二进制代码,进而执行编译后的二进制代码。
在混合编程中,为了实现本地语言和非本地语言之间的函数调用,Java函数通过JNI调用C/C++函数,C/C++函数通过反射机制调用Java代码以及访问Java对象/Java类对象。由于要兼容不同的VM,并且Java代码和C/C++代码互相不可见,导致Java本地接口(JavaNative Interface,JNI)和反射机制都必须采用最保守的实现方式。因此,JNI和反射机制的开销巨大。
发明内容
本申请提供一种编译方法和装置,降低编译后的可执行程序在运行时本地语言和非本地语言方法之间相互调用的开销。
第一方面,本申请提供了一种编译方法,该方法包括:获取源程序代码,源程序代码包括第一语言代码和第二语言代码,所述第一语言代码中包括第一方法,所述第二语言代码中包括第二方法,其中,所述第一语言代码为本地语言,所述第二语言代码为非本地语言。根据源程序代码生成第三语言代码,所述第三语言代码中包含第三方法和第四方法,所述第三方法根据所述第一方法所生成,所述第四方法根据第二方法所生成,所述第三语言代码还包括第五方法,所述第五方法根据所述第一方法和所述第二方法所生成或者根据所述第三方法和所述第四方法所生成,所述第五方法用于所述第三方法通过所述第五方法调用所述第四方法或者所述第四方法通过所述第五方法调用所述第三方法。
第三方法可以是一种中间语言,即将包含了本地语言和非本地语言的源程序代码转化为同一种中间语言。该中间语言中包含了可以用于在本地语言和非本地语言所对应的方法之间进行相互调用的方法。由于编译器通过中间语言可以同时获知本地语言和非本地语言的方法信息,因此在生成本地语言与非本地语言之间的调用方法时,可以根据本地语言和非本地语言的方法信息对调用方法进行优化,从而降低了本地语言和非本地语言方法之间在运行时相互调用的开销。
在一些实现方式中,中间语言的方法中会带有一个函数属性标识,该标识用于指示中间语言的方法是由本地语言转化得到还是由非本地语言转化的倒的。该标识可以在在运行过程中出现异常时快速退栈时使用。
在一些实现方式中,中间语言中的调用方法用于在运行时结合非本地语言所转化的方法与本地语言所转化的方法,共同完成非本地语言所转化的方法与本地语言所转化的方法之间的调用。
在另一些实现方式中,在生成中间语言的调用方法时,非本地语言所转化的方法与本地语言所转化的方法可以通过内联的方式集成到调用方法中,从而在运行时,调用方法可以独立的实现非本地语言所转化的方法与本地语言所转化的方法之间的相互调用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910228528.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种便于调节气压大小的气压开关
- 下一篇:音频输出方法、移动终端及可穿戴设备