一种异常处理执行的优化方法和系统与流程

文档序号:31348798发布日期:2022-08-31 12:16阅读:来源:国知局

技术特征:
1.一种异常处理执行的优化方法,其特征在于,所述方法应用于虚拟机中,所述方法用于对虚拟机执行程序安装包的异常处理过程进行优化,执行寄存器指令的所述虚拟机的栈帧由寄存器区及帧栈数据区组成,执行操作数栈指令的虚拟机的栈帧由局部变量区,操作数栈和帧栈数据区组成,所述帧栈数据区用于保存所调用方法的状态信息、方法的异常处理信息表位置,所述方法包括以下步骤:通过预置的转换程序将程序包中编译的多个类文件转换为一个可在资源受限装置安装执行的初始文件;所述程序包为待安装的程序安装包;所述初始文件中包括与异常有关的段及子段,所述与异常有关的段及子段包括动态绑定段、代码段、常量池子段、代码常量池索引位置子段;通过执行方法调用指令以执行所述初始文件中的每一方法,并在执行过程中判断每一方法是否有异常处理器;方法调用时,创建的方法栈帧包括所述方法的异常处理信息表的位置信息;若所述方法有异常处理器,将所述方法中异常处理信息表的位置信息添加至所述栈帧对应的字段中;当虚拟机抛出异常时,根据当前所述方法的栈帧获取异常处理信息,如果存在,通过获取的异常处理信息表的位置读取异常处理信息表,并对所述方法中的异常进行处理。2.如权利要求1所述的一种异常处理执行的优化方法,其特征在于;所述动态绑定段,获取所述程序包定义的异常处理类的信息;所述异常类的信息表示为finally子句、本包定义的异常类和导入包的异常类,本包定义的异常类采用动态绑定段的偏移表示,导入包的异常类采用常量池索引的方式表示;所述常量池子段,获取所述程序包中异常类的引用信息;所述常量池子段引用导入所述程序包中的异常类;所述代码常量池索引位置子段,用于安装所述程序包时对常量池索引进行解析时使用;获取所述程序包中所有类的方法组成所述代码段,每一所述方法均包括方法头、可选的异常处理信息表,以及对应的字节码。3.如权利要求2所述的一种异常处理执行的优化方法,其特征在于,所述方法的字节码中包括正常执行的字节码,以及可选的异常处理器的字节码,每个方法包括:所述方法的方法头以及可选异常处理信息表,以及所述方法的字节码;所述的方法头包括标记字段,所述标记字段指示所述方法中是否包括异常处理信息表。4.如权利要求3所述的一种异常处理执行的优化方法,其特征在于,所述异常处理信息表包括一个指示异常入口项个数的字段以及异常处理信息表,所述根据当前所述方法的栈帧获取异常处理信息表的位置并对所述方法中的异常进行处理,包括:执行抛出异常时,根据当前所述方法的栈帧获取异常处理信息表的位置;其中,所述异常处理信息表包括开始地址、长度、异常类信息以及异常处理器的偏移地址;判断所述方法是否存在异常处理信息表;读取异常处理信息表进行异常处理器的匹配处理,以对所述方法中的异常进行处理。5.如权利要求1所述的一种异常处理执行的优化方法,其特征在于,所述通过执行方法
调用指令以执行所述初始文件中的每一方法,并在执行过程中判断每一方法是否有异常处理器之后,还包括:若所述方法没有异常处理器,将标识无异常的特殊值添加至所述帧栈对应的字段中;所述特殊值与有效的方法字段位置信息不相同。6.一种异常处理执行的优化系统,其特征在于,所述系统配置于虚拟机中,所述虚拟机执行异常处理执行的优化方法以对虚拟机执行程序安装包的异常处理过程进行优化,执行寄存器指令的所述虚拟机的栈帧由寄存器区及帧栈数据区组成,执行操作数栈指令的虚拟机的栈帧由局部变量区,操作数栈和帧栈数据区组成,所述帧栈数据区用于保存所调用方法的状态信息、方法的异常处理信息表位置,所述系统包括以下装置:初始文件获取装置,用于通过预置的转换程序将程序包中编译的多个类文件转换为一个可在资源受限装置安装执行的初始文件;所述程序包为待安装的程序安装包;所述初始文件中包括与异常有关的段及子段,所述与异常有关的段及子段包括动态绑定段、代码段、常量池子段、代码常量池索引位置子段;异常处理器判断装置,用于通过执行方法调用指令以执行所述初始文件中的每一方法,并在执行过程中判断每一方法是否有异常处理器;方法调用时,创建的方法栈帧包括所述方法的异常处理信息表的位置信息;位置信息添加装置,用于若所述方法有异常处理器,将所述方法中异常处理信息表的位置信息添加至所述栈帧对应的字段中;异常处理装置,用于当虚拟机抛出异常时,根据当前所述方法的栈帧获取异常处理信息表的位置并对所述方法中的异常进行处理。7.如权利要求6所述的一种异常处理执行的优化系统,其特征在于;所述动态绑定段,获取所述程序包定义的异常类的信息;所述异常类的信息表示为finally子句、本包定义的异常类和导入包的异常类,所述程序安装包定义的异常类采用动态绑定段的偏移表示,导入包的异常类采用常量池索引的方式表示;所述常量池子段,获取所述程序包中异常类的引用信息;所述常量池子段引用导入所述程序包中的异常类;所述代码常量池索引位置子段,用于安装所述程序包时对常量池索引进行解析时使用;获取所述程序包中所有类的方法组成所述代码段,每一所述方法均包括方法头、对应的字节码,以及可选的异常处理信息表。8.如权利要求7所述的一种异常处理执行的优化系统,其特征在于,所述方法的字节码中包括正常执行的字节码,以及可选的异常处理器的字节码,每个方法包括:所述方法的方法头以及可选异常处理信息表,以及所述方法的字节码;所述的方法头包括标记字段,所述标记字段指示所述方法中是否包括异常处理信息表。9.如权利要求8所述的一种异常处理执行的优化系统,其特征在于,所述异常处理信息表包括一个指示异常入口项个数的字段以及异常处理信息表,所述异常处理装置包括单元:位置获取单元,用于执行抛出异常时,根据当前所述方法的栈帧获取异常处理信息表
的位置;其中,所述异常处理信息表包括开始地址、长度、异常类信息以及异常处理器的偏移地址;判断单元,用于判断所述方法是否存在异常处理信息表;匹配处理单元,用于读取异常处理信息表进行异常处理器的匹配处理,以对所述方法中的异常进行处理。10.如权利要求6所述的一种异常处理执行的优化系统,其特征在于,所述系统,还包括:特殊值添加装置,用于若所述方法没有异常处理器,将标识无异常的特殊值添加至所述帧栈对应的字段中;所述特殊值与有效的方法字段位置信息不相同。

技术总结
本发明涉及一种异常处理执行的优化方法和系统,属于计算机软件的技术领域。本发明的方法中将程序包中编译的多个类文件转换为一个可加载执行文件,执行方法调用指令以执行可加载文件中的方法并判断每一方法是否有异常处理器,若有,则将方法中异常处理信息表的位置信息添加至栈帧对应的字段中,当虚拟机抛出异常时,根据当前方法的栈帧获取异常处理信息表的位置并对异常进行处理。采用本发明所述的方法,虚拟机实现异常处理功能时无需维护全局的异常处理信息表链接列表,可以提高程序包的安装和删除速度,并且可以提升虚拟机处理异常时的处理效率,从而提升虚拟机对程序包进行执行的执行性能。行的执行性能。行的执行性能。


技术研发人员:石玉平 徐俊江 郑江东 王幼君
受保护的技术使用者:北京握奇智能科技有限公司
技术研发日:2022.05.20
技术公布日:2022/8/30
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1