[發明專利]字節碼優化方法及裝置有效
| 申請號: | 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.szxzyx.cn/pat/books/201611235713.1/1.html,轉載請聲明來源鉆瓜專利網。





