CN115309405A - 一种代码链接优化方法 - Google Patents

一种代码链接优化方法 Download PDF

Info

Publication number
CN115309405A
CN115309405A CN202211020379.3A CN202211020379A CN115309405A CN 115309405 A CN115309405 A CN 115309405A CN 202211020379 A CN202211020379 A CN 202211020379A CN 115309405 A CN115309405 A CN 115309405A
Authority
CN
China
Prior art keywords
index
virtual
class
installation file
program
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.)
Granted
Application number
CN202211020379.3A
Other languages
English (en)
Other versions
CN115309405B (zh
Inventor
沈英哲
庹凌云
王文东
陈远建
吕彦辉
彭文凭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Entropy Nuclear Technology Co ltd
Original Assignee
Beijing Entropy Nuclear Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Entropy Nuclear Technology Co ltd filed Critical Beijing Entropy Nuclear Technology Co ltd
Priority to CN202211020379.3A priority Critical patent/CN115309405B/zh
Publication of CN115309405A publication Critical patent/CN115309405A/zh
Application granted granted Critical
Publication of CN115309405B publication Critical patent/CN115309405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种代码链接优化方法,所述方法包括:获取程序的安装文件,所述安装文件中包含至少一个类;将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。

Description

一种代码链接优化方法
技术领域
本发明涉及代码编译领域,尤其涉及一种代码链接优化方法。
背景技术
基于符号的代码链接(symbol-based linking)被广泛应用于各种编程语言中,Java虚拟机(JVM)中也采用了此项技术,用于方法调用、数据域(field)访问以及其他操作。基于JVM的Java Card虚拟机(JCVM)因其运行在资源受限的智能卡上,对JVM中原有的代码链接方法进行优化,在代码转换时使用一种特殊的符号,即基于整数的令牌(token),作为Java代码中类(class)、方法(method)和域(field)的标识,从而移除在代码链接和代码运行过程中对常量池(constant pool)的依赖和符号解析,最终既减少程序所需安装空间又减少程序运行时间。但作为代价,JCVM为满足向后兼容性,对API的后续修改施加更为严格的限制,比如不能在一个外部可见类或接口中添加新的方法。
基于符号的代码链接,其核心内容是符号分配和符号解析,前者影响编译速度,后者影响运行效率。同时为满足符号在一定范围(scope)内具有唯一性的要求,符号的长度都会比较长。对于智能卡等资源受限的嵌入式设备,因为程序大多是在台式机上编译,然后再下载到智能卡上,所以符号解析的影响更大。符号解析的主要工作就是通过比较符号获得被引用类、方法或域的地址。符号越长,比较就越耗时,进而导致指令的执行时间也相应变长。
发明内容
本发明的目的是提供一种代码链接优化方法,旨在通过在程序安装过程中将符号转换成一个索引(比如1字节整数或其他可以快速比较的数据类型),并在指令执行过程中通过比较该索引,而不是原来比较长的符号来减少符号解析的时间,进而减少指令的执行时间。
第一方面,提供了一种代码链接优化方法,包括:
获取程序的安装文件,所述安装文件中包含至少一个类;
将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。
在一种可能的实施方式中,所述索引为整数。
在一种可能的实施方式中,所述将安装文件安装到目标设备上,得到程序镜像,还包括:
对于每个引用实例域的指令,使用分配给它的索引替换指令中原有的操作数;对于每个调用虚方法的指令,使用分配给它的索引替换指令中原有的操作数。
在一种可能的实施方式中,所述程序镜像包括第一数据结构和第二数据结构,所述第一数据结构用于保存为所述实例域分配的索引,所述第二数据结构用于保存为所述虚方法分配的索引。
在一种可能的实施方式中,所述获取程序的安装文件,包括:
获取程序的源代码,将源代码进行编译和转换,得到程序的安装文件,其中,将程序的类、方法和域的符号保存到安装文件中,其中,所述域包括实例域,所述方法包括虚方法。
在一种可能的实施方式中,所述安装文件包括第三数据结构和第四数据结构,所述第三数据结构用于保存所述域的符号,所述第四数据结构用于保存所述方法的符号。
在一种可能的实施方式中,所述实例域的索引与实例域的符号一一对应;所述虚方法的索引与虚方法的符号一一对应。
在一种可能的实施方式中,在将安装文件安装到目标设备上,得到程序镜像之后,所述方法还包括:
运行程序,对于访问实例域的指令,使用操作数中的索引直接访问对应的实例域;对于调用虚方法的指令,使用操作数中的索引和类的元数据中的虚方法表进行比较,获得实际调用虚方法的地址,并调用该虚方法。
本发明提出的一种代码链接优化方法,通过在程序安装过程中将符号转换成一个索引,并在指令执行过程中通过比较该索引,而不是原来比较长的符号来减少符号解析的时间,进而减少指令的执行时间。同JCVM中采用的基于令牌的代码链接相比,虽然本发明需要更多的安装空间用来保存符号和符号与索引之间的映射关系,但因为在安装过程中仍使用符号进行链接,所以拥有更宽松的兼容性要求,在后续使用过程中更容易修改API来满足不断变化的需求。而且随着芯片制造技术的不断发展,片上存储的容量不断提升,需要更多安装空间的这一短处几乎可以忽略。
附图说明
图1为本发明实施例公开的程序执行的流程示意图;
图2为本发明实施例公开的一种代码链接优化方法的流程图;
图3为本发明实施例公开的一种接口的转换和链接的代码的示意图;
图4为本发明实施例公开的一种类的转换和链接的代码的示意图;
图5为本发明实施例公开的一种对虚函数调用指令和实例域访问指令的转换的代码的示意图;
图6为本发明实施例公开的一种对虚函数调用指令和域访问指令引进行链接的代码的示意图;
图7为本发明实施例公开的一种添加虚方法后并不影响程序的兼容性的代码的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
图1为本发明实施例公开的程序执行的流程示意图。
如图1所示,当前源程序经过编译和转换操作,得到安装文件;安装文件经过安装和链接操作,安装到设备上,得到程序镜像;运行程序镜像中的程序。
图2为本发明实施例公开的一种代码链接优化方法的流程图。
在步骤S202,获取程序的安装文件,所述安装文件中包含至少一个类,每个类里包含零个或多个实例域(instance field),以及包含零个或多个虚方法(virtual method)或虚函数。
可以理解,方法和函数为实质相同的概念,代表一段具有输入和输出的相对独立的子程序,区别仅在于在不同的编程语言中使用的名称不同。例如,在C语言中称为函数,在Java语言中则称为方法。为便于表述,以下涉及到方法或函数的表述中,统一使用方法一词。
在步骤S203,将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写(override)了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。
在一些可能的实施方式中,程序的安装,代表将转换时生成的安装文件下载到智能卡等设备上。
在一些可能的实施方式中,索引为整数,用于进行快速比较。
在一些可能的实施方式中,步骤S203还包括:对于每个引用实例域的指令,使用分配给它的索引替换指令中原有的操作数;对于每个调用虚方法的指令,使用分配给它的索引替换指令中原有的操作数。
在一些可能的实施方式中,程序镜像还包括第一数据结构和第二数据结构,所述第一数据结构用于保存为所述实例域分配的索引,所述第二数据结构用于保存为所述虚方法分配的索引。
在一些可能的实施方式中,在步骤S202之前还存在步骤S201:获取程序的源代码,将源代码进行编译和转换,得到程序的安装文件,其中,将程序的类、方法和域的符号保存到安装文件中,其中,所述域包括实例域,所述方法包括虚方法。
进一步地,所述安装文件包括第三数据结构和第四数据结构,所述第三数据结构用于保存所述域的符号,所述第四数据结构用于保存所述方法的符号。
进一步地,所述实例域的索引与实例域的符号一一对应;所述虚方法的索引与虚方法的符号一一对应。
在一些可能的实施方式中,在步骤S203之后还存在步骤S204:运行程序,对于访问实例域的指令,使用操作数中的索引直接访问对应的实例域;对于调用虚方法的指令,使用操作数中的索引和类的元数据(class metadata)中的虚方法表进行比较,获得实际调用虚方法的地址,并调用该虚方法。
在一些可能的实施方式中,所述访问实例域的指令,可以包括getfield、putfield;所述访问虚方法的指令,可以包括invokevirtual、invokeinterface。
在一个具体的实施例中,使用本发明中的方法对Java程序进行代码的链接,具体如图3至图7所示。可以理解,本发明的方法同样也适用于其它面向对象的编程语言,例如C++、C#;本实施例中使用的类名、方法原型和域原型作为符号,但在其他实施例中也可以使用其他数据作为符号;本实施例中使用整形(int)作为方法和域的索引,但在其他实施例中可以使用其他数据作为索引;图3至图7中只包含了与本发明相关的信息和数据结构,其他无关信息都已省略(使用“//......”代替);method_indexes、field_indexes、export_info等数据结构,可以像实施例中那样在生成程序镜像时添加,也可在安装文件中添加,然后在安装时进行初始化。
图3为本发明实施例公开的一种接口的转换和链接的代码的示意图。在包package1中,有一个公共访问权限的接口I,接口中有一个虚方法func_i1()。
在转换后得到的安装文件中,每个接口都会生成一个interface_info数据结构,其中method_symbols记录每个方法的符号。虚方法func_i1()对应的符号为func_I1()v。
在程序安装和链接过程中,会在程序镜像中添加一个数据结构method_indexes,其中保存为每个方法分配的索引。虚方法func_i1()的索引为0。method_indexes中的索引和method_symbols中的符号为一一对应的关系。同时因为接口I是外部可见的,所以将其符号和interface_info对应的地址添加到export_info中,从而在安装其他引用I的接口或类时能够通过I的符号访问interface_info并获取链接所需的信息。接口I的符号为package1.I,地址为0x1010。
图4为本发明实施例公开的一种类的转换和链接的代码的示意图。在包package2中,有一个实现了接口I的类A,类A中有两个新定义的虚方法func1()和func2(),同时重写了接口I中的虚方法func_i1(),还有一个新定义的int类型的实例域fieldA。
在转换后的安装文件中,每个类都会生成一个class_info数据结构。其中的第三数据结构declared_field_symbols只保存当前类中新定义的域的符号,即不包含父类中定义的域,第四数据结构virtual_method_symbols保存当前类中新定义和重写的方法的符号。如图4所示,第三数据结构declared_field_symbols保存了实例域fieldA的符号,第四数据结构virtual_method_symbols保存了当前类中新定义和重写的方法的符号func1()v、func2()v和func_I1()v。
在安装和链接后生成的程序镜像中,为每个新定义的域分配一个索引并保存在第一数据结构declared_field_indexes中。如果父类中域的总数为n,则新索引从n+1开始;如果父类中没有定义过域,则新索引从0开始。如图4所示,实例域fieldA的索引为0,保存在第一数据结构declared_field_indexes中。
对于每个虚方法,如果其是对祖先类中某个虚方法的重写,则使用其在祖先类中的索引,否则为其分配一个新的索引。如果父类中虚方法的总数为m,则新索引从m+1开始分配;如果父类中没有虚方法,则新索引从0开始。如图4所示,类A并没有继承任何类,于是func1()v、func2()v、func_I1()v的索引分别是0、1、2,保存在第二数据结构virtual_method_indexes中。同时,祖先接口I中的虚方法func_i1()对应的索引2保存在InterfaceMethodMap的method_index_map中。
同接口一样,对于外部可见的类,也要将其符号和class_info的地址添加在export_info中,用于安装和链接引用了当前类的其他类。此外在安装过程中还需要将保存在virtual_method_addresses中每个虚方法的逻辑地址替换为真实的物理地址。
图5为本发明实施例公开的一种对虚函数调用指令和实例域访问指令的转换的代码的示意图。在包package3中,声明了一个类B,类B中有一个方法foo(),在foo()中,首先声明并初始化了类A的一个对象a1,然后调用了a1中的虚函数func2(),然后使a1中的实例域fieldA自增1。
在转换后的安装文件中,虚函数调用指令和域访问指令需要通过常量池间接指向要访问的虚方法和域,因此在常量池中需要保存虚方法和域的符号,即类符号+虚方法/域符号,指令操作数中保存被调用方法或被访问域在常量池中的索引。
如图5所示,代码a1.func2()对应指令aload_1和invokevirtual 0,其中0即为常量池索引,而常量池中表项0即对应类package2.A中的虚方法func2。含有实例域访问的代码a1.fieldA+=1对应后6条指令,其中对域的访问也采用相同的方法。指令getfield_s 1和putfield_s 1中的操作数1也是常量池索引,其指向的常量池表项对应package2.A中的域fieldA。
图6为本发明实施例公开的一种对虚函数调用指令和域访问指令引进行链接的代码的示意图。步骤1-3为虚函数链接的过程,步骤4-6为实例域链接的过程。
对于虚函数链接,第1步,使用类的符号package2.A在package2程序镜像的export_info中获得类A的class_info的地址0x2020。第2步,在类A的class_info的第四数据结构virtual_method_symbols中查找虚方法符号“func2()v”,并获得其位置,然后使用该位置从第二数据结构virtual_method_indexes中获得“func2()v”的方法索引1。第3步,用方法索引1替换package3程序镜像中虚方法调用指令invokevirtual中的操作数0,得到invokevirtual 1。
对于实例域链接,第4步,使用类的符号“package2.A”在package2程序镜像的export_info中获得类A的class_info的地址。第5步,在类A的class_info的第三数据结构declared_field_symbols中查找域符号“fieldA”,并获得其位置,然后使用该位置从第一数据结构declared_field_indexes中获得“fieldA”的域索引0。第6步,用域索引0替换package3程序镜像中域访问指令getfield_s,putfield_s中的操作数1,得到getfield_s 0和putfield_s 0。
图7为本发明实施例公开的一种添加虚方法后并不影响程序的兼容性的代码的示意图。如图7所示,假设当前设备上安装的是新版的类A,其中添加了一个新的虚方法func3,如代码块(A)所示,相应地package2程序镜像中A所对应的class_info,func2对应的方法索引由1变成了2,如代码块(B)所示。此时在设备上安装使用旧版本类A编译的类B时,如代码块(C)所示,仍然可以通过符号“package2.A.func2()v”链接到正确的方法上,invokevirtual指令中的操作数也变成了func2的新索引2,如代码块(E)所示。由此可见,添加新的虚方法后并不影响程序的兼容性。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种代码链接优化方法,其特征在于,所述方法包括:
获取程序的安装文件,所述安装文件中包含至少一个类;
将安装文件安装到目标设备上,得到程序镜像,其中,对于安装文件中类的每个实例域,分配一个唯一的索引;对于安装文件中类的每个虚方法,如果其重写了祖先类中的虚方法,则使用祖先类中的虚方法的索引作为该虚方法的索引,否则,为其分配一个新的索引。
2.根据权利要求1所述的方法,其特征在于,所述索引为整数。
3.根据权利要求1所述的方法,其特征在于,所述将安装文件安装到目标设备上,得到程序镜像,还包括:
对于每个引用实例域的指令,使用分配给它的索引替换指令中原有的操作数;对于每个调用虚方法的指令,使用分配给它的索引替换指令中原有的操作数。
4.根据权利要求1所述的方法,其特征在于,所述程序镜像包括第一数据结构和第二数据结构,所述第一数据结构用于保存为所述实例域分配的索引,所述第二数据结构用于保存为所述虚方法分配的索引。
5.根据权利要求1所述的方法,其特征在于,所述获取程序的安装文件,包括:
获取程序的源代码,将源代码进行编译和转换,得到程序的安装文件,其中,将程序的类、方法和域的符号保存到安装文件中,其中,所述域包括实例域,所述方法包括虚方法。
6.根据权利要求5所述的方法,其特征在于,所述安装文件包括第三数据结构和第四数据结构,所述第三数据结构用于保存所述域的符号,所述第四数据结构用于保存所述方法的符号。
7.根据权利要求6所述的方法,其特征在于,所述实例域的索引与实例域的符号一一对应;所述虚方法的索引与虚方法的符号一一对应。
8.根据权利要求1所述的方法,其特征在于,在将安装文件安装到目标设备上,得到程序镜像之后,所述方法还包括:
运行程序,对于访问实例域的指令,使用操作数中的索引直接访问对应的实例域;对于调用虚方法的指令,使用操作数中的索引和类的元数据中的虚方法表进行比较,获得实际调用虚方法的地址,并调用该虚方法。
CN202211020379.3A 2022-08-24 2022-08-24 一种代码链接优化方法 Active CN115309405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211020379.3A CN115309405B (zh) 2022-08-24 2022-08-24 一种代码链接优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211020379.3A CN115309405B (zh) 2022-08-24 2022-08-24 一种代码链接优化方法

Publications (2)

Publication Number Publication Date
CN115309405A true CN115309405A (zh) 2022-11-08
CN115309405B CN115309405B (zh) 2023-08-04

Family

ID=83864388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211020379.3A Active CN115309405B (zh) 2022-08-24 2022-08-24 一种代码链接优化方法

Country Status (1)

Country Link
CN (1) CN115309405B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020059475A1 (en) * 2000-11-15 2002-05-16 International Business Machines Corporation Java run-time system with modified linking identifiers
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US20040015912A1 (en) * 2000-11-20 2004-01-22 Bottomley Thomas Mark Walter Method of byte code quickening: quick instructions for method invocation
KR20060000194A (ko) * 2004-06-28 2006-01-06 정민수 자바가상기계 성능 개선을 위한 전처리기 기술
US20120117550A1 (en) * 2010-11-10 2012-05-10 Oberthur Technologies Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
CN102830965A (zh) * 2012-07-26 2012-12-19 复旦大学 一种Java虚拟机中位置无关代码的缓存与复用方法
CN103677778A (zh) * 2012-09-18 2014-03-26 北京中电华大电子设计有限责任公司 一种CAP文件Classref常量的解析方法
CN105005497A (zh) * 2014-04-18 2015-10-28 中钞信用卡产业发展有限公司 一种Java卡虚拟机中本地函数的调用方法及装置
CN105653351A (zh) * 2015-12-30 2016-06-08 北京博思汇众科技股份有限公司 java卡虚拟机的优化方法及系统
CN106020920A (zh) * 2016-05-11 2016-10-12 广州新诚芯信息科技有限公司 一种jcvm解释器的预处理方法及系统
US20180060043A1 (en) * 2016-08-25 2018-03-01 Oracle International Corporation Preservation of backward compatibility for java card cap files
CN108153518A (zh) * 2017-12-25 2018-06-12 厦门市美亚柏科信息股份有限公司 一种java程序反混淆方法及终端
CN111736839A (zh) * 2019-03-25 2020-10-02 华为技术有限公司 一种编译链接方法及装置
CN113419734A (zh) * 2021-06-17 2021-09-21 网易(杭州)网络有限公司 应用程序加固的方法、装置及电子设备

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020059475A1 (en) * 2000-11-15 2002-05-16 International Business Machines Corporation Java run-time system with modified linking identifiers
US20040015912A1 (en) * 2000-11-20 2004-01-22 Bottomley Thomas Mark Walter Method of byte code quickening: quick instructions for method invocation
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
KR20060000194A (ko) * 2004-06-28 2006-01-06 정민수 자바가상기계 성능 개선을 위한 전처리기 기술
US20120117550A1 (en) * 2010-11-10 2012-05-10 Oberthur Technologies Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
CN102830965A (zh) * 2012-07-26 2012-12-19 复旦大学 一种Java虚拟机中位置无关代码的缓存与复用方法
CN103677778A (zh) * 2012-09-18 2014-03-26 北京中电华大电子设计有限责任公司 一种CAP文件Classref常量的解析方法
CN105005497A (zh) * 2014-04-18 2015-10-28 中钞信用卡产业发展有限公司 一种Java卡虚拟机中本地函数的调用方法及装置
CN105653351A (zh) * 2015-12-30 2016-06-08 北京博思汇众科技股份有限公司 java卡虚拟机的优化方法及系统
CN106020920A (zh) * 2016-05-11 2016-10-12 广州新诚芯信息科技有限公司 一种jcvm解释器的预处理方法及系统
US20180060043A1 (en) * 2016-08-25 2018-03-01 Oracle International Corporation Preservation of backward compatibility for java card cap files
CN108153518A (zh) * 2017-12-25 2018-06-12 厦门市美亚柏科信息股份有限公司 一种java程序反混淆方法及终端
CN111736839A (zh) * 2019-03-25 2020-10-02 华为技术有限公司 一种编译链接方法及装置
CN113419734A (zh) * 2021-06-17 2021-09-21 网易(杭州)网络有限公司 应用程序加固的方法、装置及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
REDNAXELAFX: "JVM里的符号引用如何存储", Retrieved from the Internet <URL:《https://www.zhihu.com/question/30300585/answer/51335493》> *
李晓伟;熊焰;: "基于Harmony的提前编译技术", 计算机工程, no. 20 *
马旭等: "新一代 Java 智能卡技术研究", 《中国科技论文在线HTTP://WWW.PAPER/EDU.CN/RELEASEPAPER/CONTENT/200802-104》, pages 125 - 128 *

Also Published As

Publication number Publication date
CN115309405B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
US11599346B2 (en) Accessing a migrated member in an updated type
US5920720A (en) Efficient computer based virtual machine object structure
US10853096B2 (en) Container-based language runtime loading an isolated method
US10789047B2 (en) Returning a runtime type loaded from an archive in a module system
WO2022033229A1 (zh) 一种软件代码编译方法及系统
US10417024B2 (en) Generating verification metadata and verifying a runtime type based on verification metadata
US20080005728A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity in an execution environment
US20090319554A1 (en) Unified metadata for external components
US20080005727A1 (en) Methods, systems, and computer program products for enabling cross language access to an addressable entity
WO2000017747A1 (en) Opimizing symbol table lookups in platform-independent virtual machines
JP2002508544A (ja) 変更定数プールを備えたJavaランタイム・システム
US7406687B1 (en) Sharing runtime representation of software component methods across component loaders
US11693719B2 (en) Implementing a type restriction that restricts to a non-polymorphic layout type or a maximum value
CN115309405B (zh) 一种代码链接优化方法
US11030097B2 (en) Verifying the validity of a transition from a current tail template to a new tail template for a fused object
CN113760193A (zh) 用于资源受限制装置的数据读写方法、装置及指令集
US11243876B2 (en) Techniques for accessing off-heap memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant