cap包 的方法偏移量回填到constant_pool;
[0071 ] 具体的constant_pool修改包括: C0NSTA+NT-StaticMethodref-info { ul tag (D6) union { {.
[0072] nl padding u2 offset } internal ref { ul package-token lil el ass-token ul token
[0073] } external ref } static-method-ref }
[0074] 修改为: CONSTANT StaticMethodref-info { CAPREF ref
[0075] u;2 offset }
[0076] 在预操作中定位引用包CAPREF以及方法偏移量,并回填常量池 constant_pool。虚 拟机使用新的结构不再需要跳转和遍历,可以直接索引到目标的方法信息。
[0077] (2)外部引用关系为属性信息时,回填模块4将目标cap包的对象引用信息、目标 cap包关联静态对象的属性在静态对象中的偏移量回填到constant_pool; CONSTANT Stat icFieIdref^infο { ul tag union { { ul padding CQ5) ti2 offset: } internal-ref
[0078] - { ul package_tofcen ul classtoken ul token } external-ref } s tat i c_f i e 1 d_re:f }
[0079] 修改为: C〇NStANT_Stat icFieldref:?nfo {
[0080] QBJREF image u2 offset
[0081] }
[0082] 在预操作中定位引用包所关联的静态对象0BJREF,以及属性在静态对象中的偏移 量,回填至常量池组件constant_p 〇〇l。虚拟机使用新的结构不再需要跳转和遍历,可以直 接索引到目标的属性信息。
[0083] (3)外部引用关系为类信息时,回填模块4将目标cap包引用信息、目标cap包的类 信息的偏移量回填到cons tan t_pool。 COmmjClassrefjinfo { ul tag(01) union { u2 i n t e rna J _c 1 a s s _r e f { ul package-token
[0084] - ul class_token } ext emal e 1 as:s_ref } elass_ref ul padding }
[0085] 修改为: CONSTANT-Classref-info { GAPRBF ref
[0086] u2 offset }
[0087]在预操作中定位引用包CAPREF以及类信息的偏移量,并回填至常量池组件 C〇nstant_p〇〇l。虚拟机使用新的结构不再需要跳转和遍历,可以直接索引到目标的类信 息。
[0088]根据本发明实施例的java卡虚拟机的优化系统,可以省去java卡应用程序在运行 时为定位目标进行的大量内部跳转以及外部遍历等性能低下问题,直接定位到目标信息, 提高了 java卡的运行效率,在不改变硬件设备的情况下,有效提升了 java卡虚拟机的运行 效率。
[0089] 在本说明书的描述中,参考术语"一个实施例"、"一些实施例"、"示例"、"具体示 例"、或"一些示例"等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特 点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不 一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何 的一个或多个实施例或示例中以合适的方式结合。
[0090] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例 性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨 的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围 由所附权利要求极其等同限定。
【主权项】
1. 一种java卡虚拟机的优化方法,其特征在于,包括如下步骤: 步骤S1,下载java卡应用程序,该java卡应用程序为一个cap包,其中,所述cap包中包 括有多个用于虚拟机解析执行的组件component,以及用来索引所述component组件的常量 池组件constant pool,所述常量池组件constant_pool包括对内部和外部应用操作数据的 索引; 步骤S2,在java卡应用程序的下载过程中,通过对所述cap包中的常量池组件 C〇nstant_p〇〇l进行遍历,以获取对组件的外部引用关系,作为引用信息,再通过预操作获 取所述引用信息所对应的目标信息; 步骤S3,将引用信息所相应的目标信息以扩展的类型结构回填到所述常量池组件 constant_pool 中; 步骤S4, java卡应用程序解释器在运行态可以直接在所述常量池组件constant_pool 中通过修改后的结构索引到目标信息。2. 如权利要求1所述的java卡虚拟机的优化方法,其特征在于,在所述步骤S2中,所述 引用信息包括:目标cap包引用信息、目标cap包的类、方法、属性引用信息。3. 如权利要求2所述的java卡虚拟机的优化方法,其特征在于,在所述步骤S3中, (1) 当所述外部引用关系为方法信息时,将目标cap包引用信息、目标cap包的方法偏移 ^[hI j4|i|J cons tan t_pool ; (2) 外部引用关系为属性信息时,将目标cap包的对象引用信息、目标cap包关联静态对 象的属性在静态对象中的偏移量回填到cons tan t_pool; (3) 外部引用关系为类信息时,将目标cap包引用信息、目标cap包的类信息的偏移量回 j^|^lJconstant_pool〇4. 一种java卡虚拟机的优化系统,其特征在于,包括: 下载模块,用于下载java卡应用程序,该java卡应用程序为一个cap包,其中,所述cap 包中包括有多个用于虚拟机解析执行的组件component,以及用来索引所述component组件 的常量池组件constant pool,所述常量池组件constant_pool包括对内部和外部应用操作 数据的索引; 遍历模块,所述遍历模块与所述下载模块相连,用于在所述下载模块下载java卡应用 程序的过程中,通过对所述cap包中的常量池组件constant_pool进行遍历,以获取对组件 的外部引用关系,作为引用信息; 预操作模块,所述预操作模块与所述遍历模块相连,用于通过预操作获取所述引用信 息所对应的目标信息; 回填模块,所述回填模块与所述预操作模块相连,用于将引用信息所相应的目标信息 以扩展的类型结构回填到所述常量池组件c〇nstant_p〇〇l中,则java卡应用程序解释器在 运行态可以直接在所述常量池组件cons tant_p〇〇 1中通过修改后的结构索引到目标信息。5. 如权利要求4所述的java卡虚拟机的优化系统,其特征在于,所述引用信息包括:目 标cap包引用信息、目标cap包的类、方法、属性引用信息。6. 如权利要求5所述的java卡虚拟机的优化系统,其特征在于, (1)当所述外部引用关系为方法信息时,所述回填模块将目标cap包引用信息、目标cap 包的方法偏移量回填到(30118七3111:_口0〇1; (2) 外部引用关系为属性信息时,所述回填模块将目标cap包的对象引用信息、目标cap 包关联静态对象的属性在静态对象中的偏移量回填到constant_pool; (3) 外部引用关系为类信息时,所述回填模块将目标cap包引用信息、目标cap包的类信 息的偏移量回填到constant_pool。
【专利摘要】本发明提出了一种java卡虚拟机的优化方法及系统,包括:下载java卡应用程序,该java卡应用程序为一个cap包,其中,cap包中包括组件component,用来索引组件的常量池组件constant?pool;在java卡应用程序的下载过程中,通过对cap包中的常量池组件进行遍历,再通过预操作获取引用信息所对应的目标信息;将引用信息所相应的目标信息以扩展的类型结构回填到常量池组件中;java卡应用程序解释器在运行态可以直接在常量池组件constant_pool中通过修改后的结构索引到目标信息。本发明不需要再经过原有方法进行大量内部跳转和外部遍历提高了java卡的运行效率。
【IPC分类】G06F9/455
【公开号】CN105653351
【申请号】
【发明人】邹德强
【申请人】北京博思汇众科技股份有限公司
【公开日】2016年6月8日
【申请日】2015年12月30日