[发明专利]一种虚方法的调用方法、电子设备及计算机可读存储介质有效
申请号: | 202110878229.5 | 申请日: | 2021-08-02 |
公开(公告)号: | CN113326041B | 公开(公告)日: | 2021-11-02 |
发明(设计)人: | 陆舟;于华章 | 申请(专利权)人: | 飞天诚信科技股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F9/455 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 方法 调用 电子设备 计算机 可读 存储 介质 | ||
1.一种虚方法的调用方法,适用于Java卡,其特征在于,包括如下步骤:
步骤101:Java卡根据虚方法调用指令在常量池中获取拟被调用虚方法,从所述拟被调用虚方法中获取拟被调用虚方法当前所属的类的引用和拟被调用虚方法的索引,根据所述拟被调用虚方法当前所属的类的引用确定拟被调用虚方法当前所属的类的地址;
步骤102:所述Java卡从虚拟机运行栈中获取对象引用,以所述对象引用为索引在保存的对象表中获取对象数据,从所述对象数据中获取对象实际类所属的包的标识和对象实际类的引用,根据所述对象实际类所属的包的标识和所述对象实际类的引用得到对象实际类的地址;
步骤103:所述Java卡判断拟被调用虚方法当前所属的类的地址与对象实际类的地址是否相同,如果是,执行步骤109,否则,根据拟被调用虚方法当前所属的类的地址和对象实际类的地址建立链表,执行步骤104;
步骤104:所述 Java卡判断所述链表中是否存在拟被调用虚方法当前所属的类的直接子类的地址,如果是,执行步骤105,否则,执行步骤107;
步骤105:所述Java卡判断拟被调用虚方法当前所属的类的直接子类的虚方法映射表中是否存在拟被调用虚方法的索引,如果是,执行步骤106,否则,执行步骤107;
步骤106:所述Java卡将拟被调用虚方法当前所属的类的地址设置为所述拟被调用虚方法当前所属的类的直接子类的地址,将拟被调用虚方法的索引设置为拟被调用虚方法在拟被调用虚方法当前所属的类的直接子类的虚方法映射表中的索引,返回步骤104;
步骤107:所述Java卡判断拟被调用虚方法当前所属的类的虚方法表中是否存在所述拟被调用虚方法的索引,如果是,执行步骤109,否则,执行步骤108;
步骤108:所述Java卡从拟被调用虚方法当前所属的类中获取拟被调用虚方法当前所属的类的父类的引用,根据拟被调用虚方法当前所属的类的父类的引用确定所述拟被调用虚方法当前所属的类的地址,根据所述拟被调用虚方法当前所属的类的地址获取所述拟被调用虚方法当前所属的类,返回步骤107;
步骤109:所述Java卡根据所述拟被调用虚方法的索引从所述拟被调用虚方法当前所属的类的虚方法表中获取实际被调用虚方法的地址;
所述虚方法映射表中包括所述虚方法映射表所属的类从所述虚方法映射表所属的类的父类继承的虚方法的索引,还包括所述虚方法映射表所属的类包含的虚方法的索引。
2.如权利要求1所述的方法,其特征在于,所述Java卡根据虚方法调用指令在常量池中获取拟被调用虚方法,具体为:所述Java卡从所述虚方法调用指令中获取指令操作数,以所述指令操作数为索引在常量池中获取拟被调用虚方法。
3.如权利要求2所述的方法,其特征在于,所述以所述指令操作数为索引在常量池中获取拟被调用虚方法,具体包括:
步骤A1:所述Java卡从内存的全局变量中获取包信息地址列表的地址和拟被调用虚方法所属的包的标识,根据所述包信息地址列表的地址和所述拟被调用虚方法所属的包的标识获取所述拟被调用虚方法所属的包的常量池组件信息;
步骤A2:所述Java卡解析所述拟被调用虚方法所属的包的常量池组件信息得到常量池地址,获取所述常量池地址对应的数据得到常量池组件,以所述指令操作数为索引在所述常量池组件中获取所述拟被调用虚方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于飞天诚信科技股份有限公司,未经飞天诚信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110878229.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种脉动钻井液振动筛
- 下一篇:一种基于最大比合并的多级数据融合方法及系统