專利名稱:一種提高靜態(tài)域訪問指令執(zhí)行效率的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Java智能卡領(lǐng)域,特別是一種提高Java卡虛擬機(jī)中靜態(tài)域訪問指令 執(zhí)行效率的方法,通過優(yōu)化靜態(tài)域物理地址的解析過程,來提高靜態(tài)域訪問指令的執(zhí)行效 率,從而提高Java卡虛擬機(jī)的運(yùn)行時(shí)性能。
背景技術(shù):
Java卡是一種可以運(yùn)行Java程序的接觸式微處理器智能卡,它的基本思想就是 在智能卡的ROM中保持一個(gè)Java虛擬機(jī)(JCVM),在這個(gè)JCVM上運(yùn)行Java小應(yīng)用程序(Java Applet)。Java卡虛擬機(jī)是Java卡的核心部分,主要負(fù)責(zé)解釋執(zhí)行Java卡應(yīng)用程序字節(jié) 碼、控制內(nèi)存分配、對象創(chuàng)建以及保證Java卡安全運(yùn)行等。字節(jié)碼解析的速度對Java卡虛 擬機(jī)的運(yùn)行性能有著重要的影響。Java卡虛擬機(jī)的指令集中有一類指令是靜態(tài)域訪問指 令,如putstatic指令和getstatic指令。提高這些靜態(tài)域訪問指令的執(zhí)行效率是一個(gè)重 要的Java卡虛擬機(jī)優(yōu)化途徑。在傳統(tǒng)的靜態(tài)域訪問指令的實(shí)現(xiàn)方法中,包含了靜態(tài)域物理 地址解析過程,通過解析獲得靜態(tài)域的物理地址后,才能對該靜態(tài)域進(jìn)行操作。Java智能卡應(yīng)用程序經(jīng)過編譯、轉(zhuǎn)化,生成可以下載到Java卡內(nèi)的安裝文件,簡 稱為CAP (Converted Applet)文件。每個(gè)CAP文件都由多個(gè)組件構(gòu)成,如導(dǎo)入組件(Import Component)、方法組件(Method Component)、常量池組件(Constant Pool Component)』 用位置組件(Reference Location Component)等。其中常量池組件包含了所有由CAP文 件中的方法組件所引用的類、方法和域信息,并將之存儲(chǔ)在常量池?cái)?shù)組中。方法代碼中任何 對類、方法和域的引用都是通過其對應(yīng)的常量池?cái)?shù)組索引完成的。靜態(tài)域訪問指令的格式為
權(quán)利要求
1.一種提高靜態(tài)域訪問指令執(zhí)行效率的方法,包括如下步驟(1)在CAP文件下載時(shí)完成靜態(tài)域物理地址的解析,即在下載CAP文件的常量池組件 時(shí),將靜態(tài)域在常量池中對應(yīng)條目的內(nèi)容替換成了靜態(tài)域的物理地址;(2)在解析引用位置組件時(shí),將靜態(tài)域的物理地址保存在指令中;即對于所有的靜態(tài)域 訪問指令,對將它們的操作碼進(jìn)行擴(kuò)展,形成擴(kuò)展的操作碼;(3)Java卡虛擬機(jī)運(yùn)行時(shí),靜態(tài)域訪問指令直接獲得靜態(tài)域的物理地址;通過上述步驟,即可以實(shí)現(xiàn)提高Java卡虛擬機(jī)運(yùn)行中靜態(tài)域訪問指令的執(zhí)行效率。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟(1)中靜態(tài)域物理地址的解析 過程具體包括(1)如果靜態(tài)域訪問指令所訪問的是包內(nèi)的靜態(tài)域,則根據(jù)常量池對應(yīng)條目中的偏移 與當(dāng)前包靜態(tài)域鏡像的存儲(chǔ)地址獲得靜態(tài)域的物理地址,并存儲(chǔ)到常量池對應(yīng)的條目中;(2)如果靜態(tài)域訪問指令所訪問的是包外的靜態(tài)域,首先,通過常量池對應(yīng)條目 中的packagejoken,找到其對應(yīng)的包的靜態(tài)域地址,作為基址;然后,將此基址同 staticfield_token相加,得到的該靜態(tài)域的物理地址,并存儲(chǔ)到常量池對應(yīng)條目中。
全文摘要
本發(fā)明公開了一種在Java卡虛擬機(jī)運(yùn)行中提高靜態(tài)域訪問指令執(zhí)行效率的方法,包括如下步驟(1)在CAP文件下載時(shí)完成靜態(tài)域物理地址的解析,即在下載CAP文件的常量池組件時(shí),將靜態(tài)域在常量池中對應(yīng)條目的內(nèi)容替換成了靜態(tài)域的物理地址;(2)在解析引用位置組件時(shí),將靜態(tài)域的物理地址保存在指令中;(3)Java卡虛擬機(jī)運(yùn)行時(shí),靜態(tài)域訪問指令直接獲得靜態(tài)域的物理地址。本發(fā)明在Java卡虛擬機(jī)運(yùn)行時(shí)可以直接訪問靜態(tài)域的物理地址,提高了靜態(tài)域訪問指令的執(zhí)行效率,提高了Java卡虛擬機(jī)的運(yùn)行速度。
文檔編號(hào)G06F9/318GK102103489SQ201110031969
公開日2011年6月22日 申請日期2011年1月28日 優(yōu)先權(quán)日2011年1月28日
發(fā)明者李紀(jì)賽, 熊傳光 申請人:武漢天喻信息產(chǎn)業(yè)股份有限公司