[发明专利]字节码的优化方法、装置、存储介质、处理器及终端有效
| 申请号: | 201711433389.9 | 申请日: | 2017-12-26 |
| 公开(公告)号: | CN108037926B | 公开(公告)日: | 2020-05-05 |
| 发明(设计)人: | 白墨琛 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 北京博浩百睿知识产权代理有限责任公司 11134 | 代理人: | 宋子良 |
| 地址: | 310000 浙江省杭州*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 字节 优化 方法 装置 存储 介质 处理器 终端 | ||
1.一种字节码的优化方法,其特征在于,包括:
获取待优化函数;
解析所述待优化函数,得到函数字节码;
分析所述函数字节码,得到首次访问全局变量的第一字节码段,其中,所述全局变量在所述待优化函数执行过程中被多次访问;
采用访问局部变量的第二字节码段替换重复出现的所述第一字节码段;
其中,在采用访问所述局部变量的所述第二字节码段替换重复出现的所述第一字节码段之后,还包括:确定在所述函数字节码中存在跳转指令字节码;根据所述第二字节码段以及上下文空间所占据的字节位置调整所述跳转指令字节码重新指向的字节位置。
2.根据权利要求1所述的方法,其特征在于,分析所述函数字节码,得到所述第一字节码段包括:
从所述函数字节码中查找首次出现的全局变量访问指令;
根据所述全局变量访问指令确定所述第一字节码段。
3.根据权利要求2所述的方法,其特征在于,采用访问所述局部变量的所述第二字节码段替换重复出现的所述第一字节码段包括:
确定所述全局变量访问指令未出现在所述待优化函数的循环逻辑中;
将按照所述全局变量访问指令读取到的所述全局变量缓存为局部变量以及通过局部变量访问指令访问所述局部变量,生成所述第二字节码段;
采用所述第二字节码段替换重复出现的所述第一字节码段。
4.根据权利要求2所述的方法,其特征在于,采用访问所述局部变量的所述第二字节码段替换重复出现的所述第一字节码段包括:
确定所述全局变量访问指令出现在所述待优化函数的循环逻辑中;
在所述循环逻辑之外将按照所述全局变量访问指令读取到的所述全局变量缓存为局部变量以及在所述循环逻辑内通过局部变量访问指令访问所述局部变量,生成所述第二字节码段;
采用所述第二字节码段替换重复出现的所述第一字节码段。
5.一种字节码的优化装置,其特征在于,包括:
获取模块,用于获取待优化函数;
解析模块,用于解析所述待优化函数,得到函数字节码;
分析模块,用于分析所述函数字节码,得到首次访问全局变量的第一字节码段,其中,所述全局变量在所述待优化函数执行过程中被多次访问;
优化模块,用于采用访问局部变量的第二字节码段替换重复出现的所述第一字节码段;
其中,所述装置还包括:确定模块,用于确定在所述函数字节码中存在跳转指令字节码;调整模块,用于根据所述第二字节码段以及上下文空间所占据的字节位置调整所述跳转指令字节码重新指向的字节位置。
6.根据权利要求5所述的装置,其特征在于,所述分析模块包括:
查找单元,用于从所述函数字节码中查找首次出现的全局变量访问指令;
第一确定单元,用于根据所述全局变量访问指令确定所述第一字节码段。
7.根据权利要求6所述的装置,其特征在于,所述优化模块包括:
第二确定单元,用于确定所述全局变量访问指令未出现在所述待优化函数的循环逻辑中;
第一处理单元,用于将按照所述全局变量访问指令读取到的所述全局变量缓存为局部变量以及通过局部变量访问指令访问所述局部变量,生成所述第二字节码段;
第一替换单元,用于采用所述第二字节码段替换重复出现的所述第一字节码段。
8.根据权利要求6所述的装置,其特征在于,所述优化模块包括:
第三确定单元,用于确定所述全局变量访问指令出现在所述待优化函数的循环逻辑中;
第二处理单元,用于在所述循环逻辑之外将按照所述全局变量访问指令读取到的所述全局变量缓存为局部变量以及在所述循环逻辑内通过局部变量访问指令访问所述局部变量,生成所述第二字节码段;
第二替换单元,用于采用所述第二字节码段替换重复出现的所述第一字节码段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711433389.9/1.html,转载请声明来源钻瓜专利网。





