[發明專利]Java虛擬機的編譯方法和Java虛擬機在審
| 申請號: | 201310722834.9 | 申請日: | 2013-12-24 |
| 公開(公告)號: | CN103729235A | 公開(公告)日: | 2014-04-16 |
| 發明(設計)人: | 鮑翀;王彥茹 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F9/45 |
| 代理公司: | 北京龍雙利達知識產權代理有限公司 11329 | 代理人: | 王君;肖鸝 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | java 虛擬機 編譯 方法 | ||
1.一種Java虛擬機的編譯方法,其特征在于,包括:
在Java虛擬機啟動對第一Java方法的編譯后根據所述Java虛擬機的方法計數器總表獲取多個方法,所述多個方法包括所述第一Java方法,所述方法計數器總表用于記錄所述Java虛擬機的所有Java方法的方法計數器的當前值;
并行啟動多個任務對所述多個方法進行編譯,所述多個任務中的每一個任務通過即時JIT編譯器編譯所述多個方法之一;
在所述多個任務的編譯完成后刷新所述方法計數器總表,并用所述多個方法編譯后的本地代碼的指針替換所述多個方法對應的方法入口。
2.如權利要求1所述的方法,其特征在于,所述根據所述Java虛擬機的方法計數器總表獲取多個方法包括:獲取所述方法計數器總表中的所有方法。
3.如權利要求1所述的方法,其特征在于,所述根據所述Java虛擬機的方法計數器總表獲取多個方法包括:獲取所述方法計數器總表的所有方法中的前N個熱點方法,N大于1,且N小于所述方法計數器總表的所有方法的個數。
4.如權利要求1至3任一項所述的方法,其特征在于,所述并行啟動多個任務對所述多個方法進行編譯包括:將所述多個方法中的每一個方法的字節碼程序壓入所述Java虛擬機所在主機的圖形處理器GPU的一個內核Kernel中,以使得所述Kernel執行的JIT編譯器對壓入所述Kernel的方法進行編譯,其中所述Kernel在創建時被設置為執行所述Java虛擬機的JIT編譯器。
5.如權利要求1至3任一項所述的方法,其特征在于,所述并行啟動多個任務對所述多個方法進行編譯包括:根據所述多個方法,將所述多個方法中每一個方法的字節碼作為參數開啟所述Java虛擬機所在主機的中央處理器CPU的一個新線程,所述新線程用于調用JIT編譯器編譯方法。
6.如權利要求1至5任一項所述的方法,其特征在于,所述方法還包括:在所述并行啟動多個任務對所述多個方法進行編譯的過程中,并行以解釋方式執行所述第一Java方法。
7.如權利要求1至5任一項所述的方法,其特征在于,所述方法還包括:在所述并行啟動多個任務對所述多個方法進行編譯的過程中,停止以解釋方式執行所述第一Java方法。
8.如權利要求1至7任一項所述的方法,其特征在于,在所述多個任務的編譯完成后刷新所述方法計數器總表,并用所述多個方法編譯后的本地代碼的指針替換所述多個方法對應的方法入口之前,所述方法還包括:
對所述多個任務進行同步操作,所述同步操作用于控制所述多個任務的編譯操作都完成后再執行以后的步驟。
9.一種Java虛擬機,包括解釋器、編譯器和運行期系統,所述編譯器包括即時JIT編譯器,其特征在于,所述Java虛擬機還包括并行編譯單元,獲取單元和更新單元,其中:
所述獲取單元用于在所述Java虛擬機啟動對第一Java方法的編譯后,根據所述Java虛擬機的方法計數器總表獲取多個方法,所述多個方法包括所述第一Java方法,所述方法計數器總表用于記錄所述Java虛擬機的所有Java方法的方法計數器的當前值;
所述并行編譯單元用于并行啟動多個任務對所述多個方法進行編譯,所述多個任務中的每一個任務通過JIT編譯器編譯所述多個方法之一;
所述更新單元用于在所述多個任務的編譯完成后刷新所述方法計數器總表,并用所述多個方法編譯后的本地代碼的指針替換所述多個方法對應的方法入口。
10.如權利要求9所述的Java虛擬機,其特征在于,所述獲取單元具體用于獲取所述方法計數器總表中的所有方法。
11.如權利要求9所述的Java虛擬機,其特征在于,所述獲取單元具體用于獲取所述方法計數器總表的所有方法中的前N個熱點方法,N大于1,且N小于所述方法計數器總表的所有方法的個數。
12.如權利要求9至11任一項所述的Java虛擬機,其特征在于,所述并行編譯單元具體用于將所述多個方法中的每一個方法的字節碼程序壓入所述Java虛擬機所在主機的圖形處理器GPU的一個內核Kernel中,以使得所述Kernel執行的JIT編譯器對壓入所述Kernel的方法進行編譯,其中所述Kernel在創建時被設置為執行所述Java虛擬機的JIT編譯器。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310722834.9/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:應急多功能汽輪機電動盤車裝置
- 下一篇:一種用于汽輪機排汽缸的導流環





