[發(fā)明專利]一種嵌入式瀏覽器引擎動態(tài)編譯執(zhí)行方法有效
| 申請?zhí)枺?/td> | 201210191993.6 | 申請日: | 2012-06-12 |
| 公開(公告)號: | CN102736943A | 公開(公告)日: | 2012-10-17 |
| 發(fā)明(設計)人: | 郭文生;桑楠;郭小福;余啟洋 | 申請(專利權)人: | 電子科技大學 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 電子科技大學專利中心 51203 | 代理人: | 詹福五 |
| 地址: | 611731 四川省成*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 嵌入式 瀏覽器 引擎 動態(tài) 編譯 執(zhí)行 方法 | ||
技術領域
本發(fā)明屬于嵌入式瀏覽器技術領域,特別就一種嵌入式瀏覽器的JavaScript引擎動態(tài)編譯及執(zhí)行JavaScript腳本的處理方法,采用該方法可有效提高JavaScript引擎動態(tài)編譯與JavaScript腳本執(zhí)行的同步性和效率。
背景技術
瀏覽器是一種基于超文本傳輸協議的客戶端軟件,它的主要功能是從網絡服務器下載網頁文檔、圖片、層疊樣式表等網頁元素,影響瀏覽器性能的因素有很多,腳本引擎的性能是決定瀏覽器性能的關鍵因素之一。瀏覽器的性能競爭在某種意義上說,就是腳本引擎的性能之爭。腳本引擎主要需要處理的事務就是解析動態(tài)網頁、處理相關的客戶端Web應用程序。這些應用常用的腳本語言是JavaScript語言;JavaScript語言因為其特有的基于對象性、事件驅動性、安全性,得到廣泛的應用。由于JavaScript語言本身是解釋性語言,所以JavaScript引擎執(zhí)行腳本的方式主要有解釋執(zhí)行方式、JIT(即時編譯器)即時編譯方式、動態(tài)編譯方式。解釋執(zhí)行方式的優(yōu)點是進行腳本執(zhí)行的延遲短,缺點是執(zhí)行反復執(zhí)行的循環(huán)腳本時效率低(解釋一句后、執(zhí)行一句,因源程序中出現循環(huán)、解釋程序也得重復地解釋后并運行這一組語句,運行速度很慢),應對復雜的腳本操作時就顯得力不從心;JIT即時編譯方式將整體的腳本編譯成目標碼再執(zhí)行,相對解釋執(zhí)行方式其效率有極大的提高,但是JIT即時編譯方式是對整體腳本進行編譯后再執(zhí)行,因而前后編譯的間隔時間長、從而造成較長的延遲,為了降低這種延遲、提高運行效率,在編譯產生目標碼時不能進行充分的編譯優(yōu)化處理;動態(tài)編譯方式是在JIT即時編譯方式的基礎上,研究影響腳本執(zhí)行效率的關鍵區(qū)域,并只針對這些關鍵區(qū)域進行JIT即時編譯(選擇性即時編譯),這種方式較合理地使用了JIT(即時編譯器),而且相對傳統(tǒng)的JIT即時編譯,其編譯更靈活、延遲也較短,但該動態(tài)編譯方式在執(zhí)行之前需將JavaScript腳本全部翻譯成中間碼、然后在中間碼執(zhí)行之前和執(zhí)行過程中進行關鍵區(qū)域探測,導致其關鍵區(qū)域探測時機不當,對關鍵區(qū)域的編譯滯后性較長;同時,掃描和記錄循環(huán)代碼需耗費大量時間,進而影響JavaScript腳本的執(zhí)行的即時性、效率和用戶使用效果。
發(fā)明內容
本發(fā)明的目的是針對背景技術存在的缺陷,提出一種嵌入式瀏覽器引擎動態(tài)編譯執(zhí)行方法;以進一步縮短動態(tài)編譯與執(zhí)行之間的延遲時間、有效提高嵌入式瀏覽器JavaScript引擎動態(tài)編譯與JavaScript腳本運行的同步性和效率,達到快速執(zhí)行Javascript腳本,更新網頁Javascript腳本所顯示的信息及時,以及有效改善用戶的使用效果等目的。從而克服背景技術嵌入式瀏覽器JavaScript引擎動態(tài)編譯存在的當前網頁頁面JavaScript腳本執(zhí)行的即時性和效率差,延遲性仍較長,用戶使用效果差等缺陷。
本發(fā)明的解決方案是在背景技術嵌入式瀏覽器的JavaScript引擎中采用動態(tài)編譯的基礎上,將掃描(探測)熱點的時機提前到引擎將抽象語法樹轉換為字節(jié)碼的過程中,這樣讓引擎對熱點的處理更早、更充分,也避免了熱點的中間碼的產生,而將熱點直接編譯成目標碼、節(jié)約了引擎處理時間;并充分結合解釋執(zhí)行和JIT執(zhí)行的優(yōu)點,即通過將普通節(jié)點編譯成字節(jié)碼、熱點(循環(huán)結構)編譯成目標碼,引擎則對前者使用解釋執(zhí)行、以提高腳本執(zhí)行的響應速度,引擎對后者通過跳轉標記找到對應的目標碼、以有效提高熱點執(zhí)行的效率;同時在引擎的解釋執(zhí)行過程中進一步探測循環(huán)結構以外的熱點區(qū)域,并將其編譯成目標碼,以提高熱點區(qū)域的執(zhí)行效率;此外,將背景技術所采用的連續(xù)存儲(整體)式大緩沖區(qū),改為采用多個小緩沖區(qū)組合成邏輯大緩存區(qū)、以實現快速的跳轉連接和目標碼的存儲,避免大量數據拷貝所帶來的開銷;本發(fā)明即以此實現其發(fā)明目的。因此,本發(fā)明方法包括:
A.組合式緩沖區(qū)的建立及其擴展:采用小緩沖區(qū)的方式存儲目標碼和字節(jié)碼,使用組合式緩沖區(qū)的管理機制通過跳轉連接的方式將各小緩沖區(qū)組合形成一個具有邏輯關系的大緩沖區(qū);在擴展緩沖區(qū)時只需在已有的小緩沖區(qū)基礎上增加一個或多個相應的小緩沖區(qū)即可;
B.腳本熱點及編譯抽象語法樹,掃描抽象語法樹及字節(jié)碼、目標碼的編譯:
B1.編譯抽象語法樹及熱點的確定:在引擎按背景技術(背景技術常規(guī)方法)將JavaScript腳本編譯成抽象語法樹后,將抽象語法樹中的循環(huán)結構抽象語法子樹作為熱點,轉步驟B2;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于電子科技大學,未經電子科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210191993.6/2.html,轉載請聲明來源鉆瓜專利網。





