[发明专利]字节码优化方法及装置有效
| 申请号: | 201611235713.1 | 申请日: | 2016-12-28 |
| 公开(公告)号: | CN108614702B | 公开(公告)日: | 2022-02-11 |
| 发明(设计)人: | 肖浩龙 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 北京清源汇知识产权代理事务所(特殊普通合伙) 11644 | 代理人: | 冯德魁 |
| 地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 字节 优化 方法 装置 | ||
1.一种字节码优化方法,其特征在于,包括:
解析字节码文件,生成关于类及类中的属性和方法的信息;
从所述方法中选取待裁剪的成员访问方法,并构造相应的直接访问指令;
将所述信息中对所述待裁剪的成员访问方法的调用指令,替换为相应的直接访问指令,并针对相应被访问成员的访问权限描述符进行处理;以及,
从所述信息中删除所述待裁剪的成员访问方法,并根据执行删除操作后的所述信息生成作为优化结果的字节码文件。
2.根据权利要求1所述的方法,其特征在于,所述从所述方法中选取待裁剪的成员访问方法,包括:从所述方法中选取属于预设类别的待裁剪的成员访问方法。
3.根据权利要求2所述的方法,其特征在于,所述预设类别包括以下类别之一或者任意组合:
来自源代码的属性值读取方法;
来自源代码的属性值写入方法;
由编译器生成的供内部类访问宿主类私有属性或私有方法的方法。
4.根据权利要求3所述的方法,其特征在于,当所述预设类别包括来自源代码的属性值读取方法时,所述从所述方法中选取待裁剪的成员访问方法,并构造相应的直接访问指令,包括:
针对所述信息中的每个属性,执行下述操作:
至少根据该属性所属类以及属性名称和数据类型确定与该属性对应的属性值读取方法的名称、参数列表和返回值类型;
若通过对上述方法名称、参数列表和返回值类型的匹配判定所述信息中包括与该属性对应的属性值读取方法,则将所述属性值读取方法选取为待裁剪的成员访问方法,并构造相应的直接访问指令。
5.根据权利要求3所述的方法,其特征在于,当所述预设类别包括来自源代码的属性值写入方法时,所述从所述方法中选取待裁剪的成员访问方法,并构造相应的直接访问指令,包括:
针对所述信息中的每个属性,执行下述操作:
至少根据该属性所属类以及属性名称和数据类型确定与该属性对应的属性值写入方法的名称、参数列表和返回值类型;
若通过对上述方法名称、参数列表和返回值类型的匹配判定所述信息中包括与该属性对应的属性值写入方法,则将所述属性值写入方法选取为待裁剪的成员访问方法,并构造相应的直接访问指令。
6.根据权利要求4或5所述的方法,其特征在于,在判定所述信息中包括与该属性对应的属性值读取方法或者属性值写入方法之后、在将所述属性值读取方法或者所述属性值写入方法选取为待裁剪的成员访问方法之前,还包括:
对所述属性值读取方法或者所述属性值写入方法进行校验,并将通过校验的所述属性值读取方法或者所述属性值写入方法选取为待裁剪的成员访问方法。
7.根据权利要求6所述的方法,其特征在于,对所述属性值读取方法或者所述属性值写入方法进行的校验,包括:
白名单校验、同步方法校验、指令序列校验、属性名校验、子类重载校验、和/或、继承父类或接口校验。
8.根据权利要求3所述的方法,其特征在于,当所述预设类别包括由编译器生成的供内部类访问宿主类私有属性或私有方法的方法时,所述从所述方法中选取待裁剪的成员访问方法,并构造相应的直接访问指令,包括:
针对所述信息中的每个方法,执行下述操作:
判断该方法的名称是否包含预设字符串,所述预设字符串是编译器生成的、用于标识供内部类访问宿主类私有属性或私有方法的方法的字符串;
若是,将该方法选取为待裁剪的成员访问方法,并构造相应的直接访问指令。
9.根据权利要求1所述的方法,其特征在于,所述构造相应的直接访问指令,包括:根据所选待裁剪的成员访问方法所属类别以及所述成员访问方法所执行访问操作的相关信息,构造相应的直接访问指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611235713.1/1.html,转载请声明来源钻瓜专利网。





