欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于改進(jìn)java方法調(diào)用速度的方法和裝置的制作方法

文檔序號(hào):6417533閱讀:236來源:國(guó)知局
專利名稱:用于改進(jìn)java方法調(diào)用速度的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明概括地涉及一改進(jìn)的數(shù)據(jù)處理系統(tǒng),特別涉及改進(jìn)數(shù)據(jù)處理系統(tǒng)中執(zhí)行指令的方法和裝置,更具體的說,本發(fā)明涉及的方法和裝置用于改進(jìn)數(shù)據(jù)處理系統(tǒng)中Java方法的調(diào)用速度。
Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言和環(huán)境,其焦點(diǎn)是定為作為對(duì)象的數(shù)據(jù)以及可用于那些對(duì)象上的方法?!癑ava”是Sun Microsystems公司的注冊(cè)商標(biāo)。Java只支持單一繼承,這意味著在任意給定時(shí)間內(nèi),每個(gè)類只能繼承一個(gè)其它類。Java亦可用來創(chuàng)建稱為接口的完全抽象類,它允許定義的方法,可不必考慮其它類是如何操縱這些方法而為幾種類共享。Java提供對(duì)不同計(jì)算機(jī)平臺(tái)分配軟件的機(jī)制。
Java能支持許多類型數(shù)據(jù)處理系統(tǒng)的應(yīng)用,可以包括各種中央處理單元和操作系統(tǒng)結(jié)構(gòu)。Java虛擬機(jī)(JVM)是僅常駐在存貯器中的虛擬計(jì)算機(jī)部件。JVM允許Java程序在不同平臺(tái)上執(zhí)行,這與只對(duì)一種代碼曾為之進(jìn)行編譯的平臺(tái)相反。Java程序?yàn)镴VM被編譯。按這樣的方式,使Java能支持許多種數(shù)據(jù)處理系統(tǒng)的應(yīng)用,可以包括各種中央處理單元和操作系統(tǒng)結(jié)構(gòu)。為了使Java應(yīng)用在不同類數(shù)據(jù)處理系統(tǒng)上執(zhí)行,典型地編釋器產(chǎn)生一中間結(jié)構(gòu)的文件格式。被編譯的代碼在給定的Java運(yùn)行時(shí)間系統(tǒng)情況下,在許多處理器上可執(zhí)行。Java編譯器產(chǎn)生字節(jié)碼指令并不專門針對(duì)具體的計(jì)算機(jī)結(jié)構(gòu),一字節(jié)碼是由Java編譯器產(chǎn)生和由Java解釋器執(zhí)行的機(jī)器獨(dú)立碼。Java解釋器是JVM中的一模件,它交替地解碼和執(zhí)行一個(gè)字節(jié)碼或多個(gè)字節(jié)碼。這些字節(jié)碼指令設(shè)計(jì)或在任何機(jī)器上容易被解釋,并在工作中容易轉(zhuǎn)換成本地機(jī)器碼。
一開發(fā)環(huán)境,例如Java開發(fā)工具(JDK)可以從Sun Microsystems公司得到根據(jù)Java語(yǔ)言源代碼和庫(kù),可用來建立Java字節(jié)碼,該Java字節(jié)碼可被存貯。成為web服務(wù)器上的Java應(yīng)用或小應(yīng)用程序(applet),它可以在網(wǎng)絡(luò)上被下載到用戶的機(jī)器上,并在本地JVM上執(zhí)行。
當(dāng)需要更快速度執(zhí)行Java程序時(shí),JIT(Just In Time)編譯器可用來把方法或類的字節(jié)碼,在執(zhí)行它們之前轉(zhuǎn)換成本地機(jī)器指令,典型地,這種編譯對(duì)每種方法只發(fā)生一次,某些JIT編譯器可編譯全部類,而不是一次編譯一個(gè)方法。
當(dāng)JVM解釋器遇到一調(diào)用字節(jié)碼時(shí),JVM解釋器定位要被訪問的合適的方法,然后訪問該方法。該訪問的方法可通過定位方法塊,并轉(zhuǎn)到方法的調(diào)用程序而被執(zhí)行,方法塊標(biāo)識(shí)了調(diào)用程序及是一按照方法的數(shù)據(jù)結(jié)構(gòu)。調(diào)用程序?qū)崿F(xiàn)函數(shù)的激活,及為目標(biāo)方法產(chǎn)生一??蚣?,由調(diào)用程序?qū)崿F(xiàn)的這種處理包括確保參數(shù)被合適地傳到目標(biāo)方法。如果方法是同步的,監(jiān)控器,也稱為鎖(Lock)被調(diào)用程序得到。其它的內(nèi)務(wù)操作事務(wù)可根據(jù)具體目標(biāo)方法被包含。
當(dāng)JVM解釋器遇到一返回字節(jié)碼,通知方法完成時(shí),內(nèi)務(wù)操作事務(wù)的一客套集(commplimentaryset)必須執(zhí)行函數(shù)的去激活,釋放??蚣?,如果曾獲得則釋放監(jiān)控器,并正確地把結(jié)果返回給調(diào)用程序。來自Sun Microsystems公司的標(biāo)準(zhǔn)JVM工具提供同步或非同步方法的調(diào)用程序,而且,返回到這些調(diào)用程序中訪問方法的返回字節(jié)碼無這些特殊性,且必須檢查方法的特性,以合適地完成返回。而且,調(diào)用程序可被要求設(shè)定標(biāo)志,依次由當(dāng)前可得到的JVM工具中的返回字節(jié)碼檢驗(yàn)。
當(dāng)前的JVM工具僅利用具有有限特殊性的調(diào)用程序,和通用化的返回字節(jié)碼,它必須實(shí)行運(yùn)行時(shí)檢查,以確定哪個(gè)任務(wù)在函數(shù)激活/去激活期間必須被執(zhí)行。函數(shù)激活是所有步驟所必須的,以合適地訪問一方法。這包括傳遞棧上的參數(shù),用方法需要的任何值設(shè)置??蚣?如,為訪問方法指向方法塊的一指針),存貯返回地址,當(dāng)方法完成時(shí)控制將轉(zhuǎn)移到這返回地址,及還包括如果方法是同步的,去獲得對(duì)象的監(jiān)控器。棧上的這種數(shù)據(jù)結(jié)構(gòu)被稱為函數(shù)激活記錄,函數(shù)去激活是所有步驟所必須的以終止方法的訪問。它包括釋放方法訪問棧框架,如果方法是同步的則釋放對(duì)象監(jiān)控器,從棧上除去被傳遞的參數(shù)及在訪問方法的棧上,如果有的話放入訪問方法的返回值。當(dāng)函數(shù)去激活被完成時(shí),為了訪問方法的函數(shù)激活記錄已從棧上被去除。這個(gè)過程具有負(fù)面性能影響。
因此,有這樣的為調(diào)用方法的方法和裝置將是有利的,在這種方式中免去了根據(jù)方法特性進(jìn)行運(yùn)行時(shí)決定的需要。
本發(fā)明為執(zhí)行一方法提供方法和裝置,調(diào)用一方法的字節(jié)碼被檢測(cè)出。方法塊與方法有關(guān)被定位。其中方法塊包括調(diào)用程序的標(biāo)識(shí)符。調(diào)用程序被訪問,在那里調(diào)用程序?yàn)榉椒ǖ膱?zhí)行進(jìn)行設(shè)置。由調(diào)用程序?qū)崿F(xiàn)的設(shè)置對(duì)方法是特別簡(jiǎn)單的。方法的完成被檢測(cè)且把控制返回給調(diào)用程序,在那時(shí)調(diào)用程序完成方法的處理。
本發(fā)明的可信性能的新特點(diǎn)在所附的權(quán)利要求書中被陳述。而本發(fā)明本身以及使用的優(yōu)選方式,其進(jìn)一步的目標(biāo)及優(yōu)點(diǎn)參考下面連同附圖讀出的描述實(shí)施例的詳細(xì)說明,將被最好地理解,其中

圖1是方框圖,說明了一數(shù)據(jù)處理系統(tǒng),本發(fā)明可以在該數(shù)據(jù)處理系統(tǒng)中實(shí)現(xiàn);圖2是根據(jù)本發(fā)明的優(yōu)選實(shí)施例用于處理方法的部件的方框圖;圖3是根據(jù)本發(fā)明的優(yōu)選實(shí)施例的方法塊的說明;圖4是一處理的高級(jí)流程圖,用于根據(jù)本發(fā)明的優(yōu)選實(shí)施例選擇專門的調(diào)用程序;圖5A-5E是一處理的流程圖,用于根據(jù)本發(fā)明的優(yōu)選實(shí)施例選擇專門的調(diào)用程序。
圖6是一方法的流程圖,說明了根據(jù)本發(fā)明的優(yōu)選實(shí)施例,使用專門的調(diào)用程序調(diào)用一方法;圖7A-7C是任務(wù)或步驟的流程圖,這是根據(jù)本發(fā)明的優(yōu)選實(shí)施例,在準(zhǔn)備訪問一目標(biāo)方法時(shí),由專門的調(diào)用程序?qū)崿F(xiàn)的;圖8A-8C是處理的更詳細(xì)的流程圖,通過用專門的調(diào)用程序,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,以實(shí)現(xiàn)解決從訪問到一目標(biāo)方法所需任務(wù);及圖9A-9C是一流程圖,說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例,在調(diào)用方法的Java棧上,目標(biāo)方法結(jié)果的位置。
現(xiàn)在根據(jù)圖1,一方框圖說明了本發(fā)明可以在其上實(shí)現(xiàn)的數(shù)據(jù)處理系統(tǒng)。數(shù)據(jù)處理系統(tǒng)100是一客戶計(jì)算機(jī)的例子。數(shù)據(jù)處理系統(tǒng)100利用一外圍部件互連(PCI)局部總線結(jié)構(gòu)。雖然,所描述的例子使用PCI總線,其它總線結(jié)構(gòu)如微通道和ISA總線亦可作用。處理器102和主存104通過PCI橋108被連到PCI局部總線106。PCI橋108亦可以包括處理器102用的集成的存貯器控制器和高速緩沖存貯器。連到PCI局部總線106的附加連結(jié)器可以通過直接部件互連或通過附加板實(shí)現(xiàn)。在所描述的例子中,局域網(wǎng)(LAN)適配器110,小型計(jì)算機(jī)系統(tǒng)接口(SCSI)主機(jī)總線適配器112,及擴(kuò)展總線接口114通過直接部件連接器被連到PCI局部總線106。相反,音頻適配器116,圖形適配器118及音頻/視頻適配器(A/V)119通過插到擴(kuò)展槽中的附加板被連到PCI局部總線106。擴(kuò)展總線接口114為鍵盤和鼠標(biāo)適配器120,調(diào)制解調(diào)器122及附加存貯器124提供連結(jié)。SCSI主機(jī)總線適配器132為硬盤驅(qū)動(dòng)器126,磁帶驅(qū)動(dòng)器128及CD-ROM驅(qū)動(dòng)器130提供連結(jié)。典型情況PCI局部總線器具將支持3或4種PCI擴(kuò)展槽或附加的連結(jié)器。
一操作系統(tǒng)在處理器102上運(yùn)行,用于為圖1中數(shù)據(jù)處理系統(tǒng)100內(nèi)的各種部件配合和提供控制。操作系統(tǒng)可以是一商業(yè)上可買到的操作系統(tǒng),如OS/2,這可從IBM公司買到。“OS/2”是IBM公司的注冊(cè)商標(biāo),面向?qū)ο蟮木幊滔到y(tǒng)如Java可以同操作系統(tǒng)一起運(yùn)行,并從數(shù)據(jù)處理系統(tǒng)100上執(zhí)行的Java程序或應(yīng)用提供對(duì)操作系統(tǒng)的訪問,“Java”是Sun Microsystem公司的注冊(cè)商標(biāo)。操作系統(tǒng)的指令,面向?qū)ο蟮牟僮飨到y(tǒng)以及應(yīng)用或程序被放置在存貯裝置上,例如硬盤驅(qū)動(dòng)器126,并且可以裝載到主存104,通過處理器102執(zhí)行。
在本領(lǐng)域中具有一般技能的人將知道圖1中的硬件可以隨裝備而變化。其它內(nèi)部硬件或外圍設(shè)備,例如閃速存貯器ROM(或類似的不揮發(fā)存貯器)或光盤驅(qū)動(dòng)器之類可以附加或替代圖1中所描述的硬件。還有,本發(fā)明的處理過程可以用于多處理器數(shù)據(jù)處理系統(tǒng)。
例如,數(shù)據(jù)處理系統(tǒng)100,如果選擇的配置用作網(wǎng)絡(luò)計(jì)算機(jī),可以不包括SCSI主機(jī)總線適配器112,硬盤驅(qū)動(dòng)器126,磁帶機(jī)128和CD-ROM130,如圖1中表示可選物的虛線框132所示。在那種情況下,被合適地稱做客戶計(jì)算機(jī)的計(jì)算機(jī)必須包括某些類型的網(wǎng)絡(luò)通信接口,例如局域網(wǎng)(LAN)適配器110,調(diào)制解調(diào)器122之類。作為另一例子,數(shù)據(jù)處理系統(tǒng)100可以是一獨(dú)立系統(tǒng),不依靠某些類型的網(wǎng)絡(luò)通信接口被配置成可引導(dǎo)。不管怎樣數(shù)據(jù)處理系統(tǒng)100包括某些類型的網(wǎng)絡(luò)通信接口。還有一例子,數(shù)據(jù)處理系統(tǒng)100可以是一個(gè)人數(shù)字助理(PPA)設(shè)備,用ROM和/或閃速ROM被配置,以便提供不揮發(fā)存貯器,存貯操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)。
圖1沖描述的例子及上面所述的例子并不意味著關(guān)于本發(fā)明包含的結(jié)構(gòu)上的限制。
本發(fā)明提供一方法,裝置和指令,用以只要向JVM附加極小的代碼就可為JVM解釋器提供性能的提高。本發(fā)明特別能用于小型計(jì)算設(shè)備,其中JIM縮譯器增加性能的額外開銷性能是太大了。本發(fā)明利用許多不同調(diào)用程序,它們對(duì)方法的特殊需要作了專門處理。此外,本發(fā)明利用返回字節(jié)碼返回控制調(diào)用程序,而不是控制方法。合適的調(diào)用程序在類裝入時(shí)間根據(jù)方法的特性被選擇。該調(diào)用程序?qū)崿F(xiàn)需要的步驟或函數(shù)。調(diào)用程序?qū)Ψ椒愋偷男薷拿獬烁鶕?jù)方法特性作運(yùn)行時(shí)決定的需要。
現(xiàn)參照?qǐng)D2,其中按照本發(fā)明優(yōu)選實(shí)施例的處理方法所用部件的方塊圖作了說明。在所描述的例子中,JVM 200包括類裝入器202,解釋器204和編譯器206。通過調(diào)用專門的類方法,JVM 200將開始執(zhí)行過程。在所述例子中,方法例如可以是一主程序main。此方法可被當(dāng)做單個(gè)參數(shù)以串陳列的形式通過。這就造成專門的類被裝入,被鏈接到使用的其它類型上,并且被初始化、類的裝入包括尋找二進(jìn)制形式的類或特定名字的接口類型。
在所描述的例子中,裝入過程通過類裝入器202來實(shí)現(xiàn),在本例中類裝入器包含ClassLoader類,它包括裝入新的類到Java運(yùn)行時(shí)間環(huán)境的方法。類裝入器應(yīng)對(duì)裝入類的對(duì)象負(fù)責(zé)。給定類的名字,類裝入器將力圖定位或產(chǎn)生構(gòu)成類的定義的數(shù)據(jù)。通常,類裝入器將類的名字轉(zhuǎn)為文件名,然后從文件系統(tǒng)讀出此名字的“類文件”。解釋器204是一程序,它使用字節(jié)碼,在實(shí)現(xiàn)字節(jié)碼功能的解釋器中標(biāo)識(shí)本地指令序列,并執(zhí)行本地指令序列從而實(shí)現(xiàn)字節(jié)碼的功能。在此情況下,解釋器204包含用以解釋在數(shù)據(jù)處理系統(tǒng)中執(zhí)行的方法208中的字節(jié)碼的處理和數(shù)據(jù)結(jié)構(gòu)。解釋器由字節(jié)碼指引以執(zhí)行本地碼,實(shí)現(xiàn)由字節(jié)碼所表明的功能。
編譯器206結(jié)合編譯類,它包含在執(zhí)行之前將方法編譯成本地指令的方法。編譯器206是JVM 200中的可選件。在許多情況下其中JVM200用小型計(jì)算設(shè)備來實(shí)現(xiàn),JIT編譯器的開銷過大,所以JVM 200不包括編譯器206。本發(fā)明中用的處理器可以有,也可以沒有編譯器206。
當(dāng)解釋器204遇到調(diào)用的字節(jié)碼,解釋器204將定位一合適的方法,例如方法208。另外,由編譯器206產(chǎn)生的本地指令試圖訪問方法時(shí),這些本地指令也將定位一合適的方法,例如方法208。此后,處理將轉(zhuǎn)移到調(diào)用者210,它將完成為執(zhí)行方法208所必要的設(shè)置。調(diào)用程序210是把控制傳遞到方法208之前完成實(shí)際設(shè)置的程序。
現(xiàn)在參看圖3,按照本發(fā)明的優(yōu)選實(shí)施例一方法塊的示意圖被描述。方法塊300包含調(diào)用程序指針302、調(diào)用程序指針302是指向調(diào)用程序的指針,它是一程序用以完成執(zhí)行方法所要求的設(shè)置,然后通過轉(zhuǎn)移到編譯代碼,或?qū)τ诜蔷幾g代碼通過把控制傳遞到解釋器,以使方法執(zhí)行。
方法塊300還包含由JVM 200用以執(zhí)行圖2的方法208所用的其它信息。例如,方法塊還包含參數(shù)的數(shù)目,本地變量,棧的最大容量,以及用于處理或執(zhí)行方法的其它信息。方法的描述,查錯(cuò)信息以及異常表定義是亦可被包含在方法塊300中的其它信息例子。
按照本發(fā)明的優(yōu)選實(shí)施例,調(diào)用程序指針302可能是專門的調(diào)用程序指針,它指向根據(jù)該方法的特性為特定的方法,執(zhí)行各種步驟或其它設(shè)置工作的代碼或程序,這種代碼或程序也稱作調(diào)用程序,它履行執(zhí)行方法所必須的步驟和函數(shù),并專門的執(zhí)行與調(diào)用程序有關(guān)的特定方法的設(shè)置。按這種方式,可避免在運(yùn)行期間檢查方法的特性。代之以在類裝入和初始化期間,根據(jù)方法的特性,調(diào)用程序被分配一方法。按此方法式,排除了運(yùn)行時(shí)根據(jù)方法特性進(jìn)行判定的必要。
在分配或關(guān)聯(lián)方法與調(diào)用程序時(shí)用到的某些特性例如包括是否方法被同步,方法的返回類型,是否方法使用影響函數(shù)激活的字節(jié)碼,以及是否方法可以采用某些參數(shù)類型,這些類型在方法訪問期間要求特別的控制。當(dāng)然,在本發(fā)明中使用的調(diào)用程序也可以滿足特定的其它類型的方法特性。方法的返回結(jié)果或返回類型可能包括例如byte(8位帶符號(hào)整數(shù)),char(16位無符號(hào)整數(shù)),short(16位帶符號(hào)整數(shù)),int(32位帶符號(hào)整數(shù)),long(64位帶符號(hào)整數(shù)),float(32位IEEE 754浮點(diǎn)數(shù)),double(64位IEEE 754浮點(diǎn)數(shù)),boolean(真值,真或假),以及Object(稱作對(duì)象)。Java方法可被表明返回上述數(shù)據(jù)類型之一的值或者是空白(void),空白表示該方法沒有任何值返回。對(duì)于本發(fā)明的優(yōu)選實(shí)施例(注意本實(shí)施例和這些示例是專門針對(duì)Intel IA32結(jié)構(gòu),即X86的32位JVM,它與其它的32位結(jié)構(gòu)或?qū)τ?4位的JVM的略有不同),這些數(shù)據(jù)類型可按如下分組以作為傳遞的參數(shù)和返回值32位整數(shù)(byte,char,short,int,boolean,object),64位整數(shù)(long),32位浮點(diǎn)(float),和64位浮點(diǎn)(double)。正是這些分組對(duì)特殊目的的調(diào)用程序很重要。此分組可根據(jù)基于CPU結(jié)構(gòu)(在此情況下是Intel IA32)的自然數(shù)據(jù)類型而得到,這些將作為返回給訪問方法的結(jié)果。
影響函數(shù)激活的字節(jié)碼包括,例如訪問常數(shù)池的字節(jié)碼。常數(shù)池是在Java類文件中常數(shù)池表per-類或per-接口的運(yùn)行表示。常數(shù)池可能包括幾種常數(shù),范圍從編譯時(shí)已知的數(shù)字字母到運(yùn)行時(shí)決定的方法和字段依據(jù)。常數(shù)池從事的功能類似于通常編程語(yǔ)言中的符號(hào)表,盡管它比通常的符號(hào)表包含更寬的數(shù)據(jù)范圍。因?yàn)橛辛舜鎯?chǔ)在函數(shù)激活記錄中的常數(shù)池指針,也稱作“框架(frame)”而能獲得好處。JVM中的框架用來支持?jǐn)?shù)據(jù)和部分結(jié)果,同時(shí)執(zhí)行動(dòng)態(tài)連接,支持方法的返回值,以及處理異常。Java方法每次被調(diào)用就產(chǎn)生一新的框架。當(dāng)方法完成,不論正常或非正常完成,框架就被毀掉??蚣軓漠a(chǎn)生框架的線程的Java堆棧中分配。
基于這些和其它可能的特性,專門調(diào)用程序?yàn)檫@些類型的方法可被寫入。在類裝入和初始化期間,每個(gè)方法被檢查,而合適的專門調(diào)用程序通過正要存儲(chǔ)到該方法的方法塊中的調(diào)用程序的地址而被選擇。在運(yùn)行時(shí),解釋器應(yīng)轉(zhuǎn)移到專門的調(diào)用程序,并且只有合適訪問此方法的必要的指令才會(huì)被執(zhí)行。結(jié)果,運(yùn)行時(shí)的方法檢查是不必要的。
專門的調(diào)用程序的某些例子包括Java Syncint,它是一調(diào)用程序,專門把控制從Java方法轉(zhuǎn)為同步Java方法,同步Java方法返回32位整型或浮點(diǎn)值給訪問程序,此調(diào)用程序沒有必要執(zhí)行目標(biāo)方法的運(yùn)行檢查,以確定是否此方法已被同步,不必設(shè)置一標(biāo)志以表示要求釋放監(jiān)控器。在類裝入時(shí)間當(dāng)此方法的調(diào)用程序已選中時(shí),方法的檢查就被執(zhí)行,調(diào)用程序知道此方法被同步,并且在方法啟動(dòng)之前獲取監(jiān)控器。因方法的返回重新取得控制的調(diào)用程序還知道,當(dāng)方法完成以及方法的返回結(jié)果是32位整型或浮點(diǎn)值時(shí),釋放監(jiān)控器,并且將目標(biāo)方法的結(jié)果,在去消函數(shù)激活記錄以后,放到調(diào)用程序的堆棧中。
NativeLong是一調(diào)用程序,它專門把控制從Java方法轉(zhuǎn)為非同步的本地方法,它返回-64位整型值給訪問程序。此調(diào)用程序?qū)楸镜胤椒ㄔL問合適地準(zhǔn)備參數(shù),由于方法不是同步的,既不需要獲取監(jiān)控器,也不需要設(shè)置標(biāo)志以表示由于返回而不必釋放監(jiān)控器。當(dāng)本地方法返回時(shí),調(diào)用程序?qū)⑷コ瘮?shù)激活記錄,并將64位整型值的返回結(jié)果放入堆棧中。
本發(fā)明免除了運(yùn)行時(shí)要檢查以確定在函數(shù)激活/去激活期間哪些任務(wù)必需執(zhí)行,代之以根據(jù)裝入或初始化檢查選擇專門的調(diào)用程序。在所描述的例子中調(diào)用程序根據(jù)執(zhí)行方法的方法特性,僅執(zhí)行特定方法所必需的指令。
現(xiàn)轉(zhuǎn)到圖4,圖中按照本發(fā)明的優(yōu)選實(shí)施例,對(duì)選擇的專門調(diào)用程序的高層處理流程做了描述。在所描述的例子中,此處理在類裝入期間被JVM所使用。此處理開始于檢查方法的特性(步400),根據(jù)上述特性為特定方法,關(guān)于專門調(diào)用程序是否存在或可以得到的判斷被做出(步402)。如果專門調(diào)用程序存在,指向?qū)iT調(diào)用程序的指針被放入特定方法的方法塊中(步404)。接著做出判斷是否存在用以處理的更多的方法(步406)。如果存在用于處理的更多的方法,則處理獲得下一個(gè)方法(步408)并返回到步400,以檢查此方法的特性。否則,此處理則結(jié)束。
再參看步402,如果沒有支持該方法的專門調(diào)用程序存在,指向一般調(diào)用程序的指針放置到方法塊中(步410)并如上所述,處理進(jìn)入到步406。一般調(diào)用程序是一調(diào)用程序,它不專門針對(duì)方法的特性,它執(zhí)行運(yùn)行檢查,在方法的函數(shù)激活和非激活期間合適地確定哪些任務(wù)必需執(zhí)行。
現(xiàn)參照?qǐng)D5A-5E,圖中按照本發(fā)明的優(yōu)選實(shí)施例,描述了選定的專門調(diào)用程序的處理流程圖。此處理在類裝入和/或初始化期間由JVM執(zhí)行,它用于根據(jù)方法的特性選擇為該方法的專門的調(diào)用程序。處理開始于確定此方法是否為本地方法(步500)。本地方法是以平臺(tái)有關(guān)代碼實(shí)現(xiàn)的方法。本地方法通常是用其它編程語(yǔ)言,例如象C,C++,F(xiàn)ortran或匯編語(yǔ)言寫成。如果方法是本地方法,則處理確定方法是否為同步方法(步501)。同步方法是一方法,一般地要求與一對(duì)象相關(guān)的鎖。鎖也稱作“監(jiān)控器”,該機(jī)制用于同步由JVM執(zhí)行的同時(shí)激活的各個(gè)線程,JVM在同一時(shí)間可以支持許多線程的執(zhí)行。
如果方法是一同步方法,則要作出判斷是否方法采用64位參數(shù)(步502)。如果方法采用64位參數(shù),則還要判斷該方法有無返回值(步503)。換句話說,沒有值被函數(shù)返回。如果方法沒有返回值,此方法的調(diào)用程序被設(shè)置等于NativeSyncQwordVoid(步504)。NativeSyncQwordViod是一調(diào)用程序,以把控制從Java方法轉(zhuǎn)為同步的本地方法,它至少采用一個(gè)64位參數(shù)并且無返回值。否則,判斷此方法是否返回“float”(步505),如果方法是返回“float”,調(diào)用程序被設(shè)置等于NativeSyncQwordFloat(步506)。NativeSyncQwordFloat是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它采用至少一個(gè)64位參數(shù)及返回一32位浮點(diǎn)值。如果方法不返回“float”,則確定方法的返回是否為“l(fā)ong”(步507),如果方法返回“l(fā)ong”,調(diào)用程序被設(shè)置等于NativeSyncQwordLong(步508)。NativeSyncQwordLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它采用至少一個(gè)64位參數(shù)并返回一64位整型值。否則,就要判斷方法是否返回“double”(步509)。如果方法返回“double”,調(diào)用程序被設(shè)置等于NativeSyncQwordBouble(步510)。NativeSyncQwordBouble是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它采用至少一個(gè)64位參數(shù)并且返回一64位浮點(diǎn)值。不然,此調(diào)用程序被設(shè)置等于NativeSyneQwordInt(步511)。NativeSyncQwordInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它采用至少一個(gè)64位參數(shù)并返回一32位整型值。
再參看步502,如果方法不采用64位參數(shù),則判斷是否方法沒有返回值(步512)。如果方法沒有返回值,則調(diào)用程序被設(shè)置等于NativeSyncVoid(步513)。NativeSyncVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它不用64位參數(shù)也沒有返回值。不然,判斷是否方法返回“float”(步514)。如果方法返回“float”,調(diào)用程序被設(shè)置等于NativeSyncFloat(步515)。NativeSyncFloat是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它不取用64位參數(shù)但返回一32位浮點(diǎn)值。
如果方法不返回“float”,則要確定方法是否返回“l(fā)ong”(步516)。如果是返回“l(fā)ong”,調(diào)用程序被設(shè)置等于NativeSyncLong(步517)。NativeSyncLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它不取用64位參數(shù)但返回64位整型值。否則,確定是否方法返回“double”(步518),如果方法返回“double”,調(diào)用程序被設(shè)置等于NativeSyncDouble(步519)。NativeSyncDouble是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它不取用64位參數(shù)但返回64位浮點(diǎn)值。如果在步518不返回“double”,則調(diào)用程序被設(shè)置等于NativeSyncInc(步520)。NativeSyncInc是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的本地方法,它不取用64位參數(shù)但返回32位整型值。
再參照步501,如果方法不是同步方法,則判斷方法是否是64位參數(shù)(步521)。如果方法取64位參數(shù),則判斷是否方法無返回值(步522)。如方法無返回值,調(diào)用程序設(shè)置等于NativeQwordVoid(步523),NativeQwordVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它取至少一個(gè)64位參數(shù)但無返回值。否則,確定是否方法返回“float”(步524)。如果是返回“float”,調(diào)用程序設(shè)置等于NativeQwordFloat(步525)。NativeQwordFloat是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法的調(diào)用程序,它取用至少一個(gè)64位參數(shù)并且返回32位浮點(diǎn)值。
不然,要做出判斷方法是否返回“l(fā)ong”(步526)。如果其答案是肯定,調(diào)用程序設(shè)置等于NativeQwordLong(步527)。NativeQwordLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它取用至少一個(gè)64位參數(shù)并返回64位整型值。否則,確定是否方法返回“double”(步528)。如果是返回“Double”,調(diào)用程序設(shè)置等于NativeQwordDouble(步529)。NativeQwordDouble是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它取用至少一個(gè)64位參數(shù)并且返回64位浮點(diǎn)值。如果不是返回“double”,則調(diào)用程序被設(shè)置等于NativeQWordInt(步530),NativeQwordInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它取用至少一個(gè)64位參數(shù)并且返回32位整型位。
再看步521,如果方法不取用64位參數(shù),處理過程則確定方法是否無返回值(步531)。如果調(diào)用程序無返回值,此調(diào)用程序被設(shè)置等于NativeVoid(步532)。NativeVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它不用64位參數(shù)也沒有返回值。不然,判斷是否方法返回“float”(步533)。如果返回“float”,調(diào)用程序被設(shè)置等于NativeFloat(步534)。NativeFloat是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它不用64位參數(shù)且返回32位浮點(diǎn)值。
再參看步533,如果不是返回“float”,則判斷是否方法返回“l(fā)ong”(步535),如是返回“l(fā)ong”,調(diào)用程序被設(shè)置等于NativeLong(步536)。NativeLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它不用64位參數(shù),但返回64位整型值。否則,確定是否方法返回“double”(步537)。如方法返回“double”,調(diào)用程序被設(shè)置等于NativeDouble(步538),NativeDouble是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它不同64位參數(shù)但返回64位浮點(diǎn)值。不然,則調(diào)用程序被設(shè)置等于NativeInt(步539)。NativeInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步本地方法,它不同64位參數(shù)并返回32位整型值。
再返回到步500,如果方法不是本地方法,則判斷是否方法為同步方法(步540),如果方法是同步方法,則判斷方法是否要求框架中的常數(shù)池指針(步541),框架這個(gè)述語(yǔ)是函數(shù)激活記錄的同義詞。如果方法要求框架中的常數(shù)池指計(jì),則確定是否方法無返回值(步542)。如果方法沒有返回值,調(diào)用程序被設(shè)置等于JavaSyncCPoolVoid(步543)。JavaSyncCPoolVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步Java方法,它要求函數(shù)激活記錄中的常數(shù)池指針并且沒有返回值。否則,判斷是否方法返回“l(fā)ong”(步544)。如果方法是返回“l(fā)ong”,調(diào)用程序被設(shè)置等于JavaSyncCPoolLong(步545)。JavaSyncCPoolLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的Java方法,它要求函數(shù)激活記錄中的常數(shù)池指針并返回64位整型或浮點(diǎn)值。否則確定是否方法返回“double”(步546)。如果方法確是返回“double”,處理過程也進(jìn)到如上所說的步545。不然,調(diào)用程序被設(shè)置等于JavaSyncCPoolInt(步547)。JavaSyncCPoolInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的Java方法,它要求函數(shù)激活記錄中的常數(shù)池指針并返回32位整型或浮點(diǎn)值。
返回到步541,如果方法不要求框架中的常數(shù)池指針,則判斷是否方法沒有返回值(步548)。如果回答是肯定,調(diào)用程序被設(shè)置等于JavaSyncVoid(步549)。JavaSyncVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針也沒有返回值。不然則確定方法的返回是否為“l(fā)ong”(步550)。如果“l(fā)ong”被返回,調(diào)用程序被設(shè)置為JavaSyncLong(步551)。JavaSynCLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針,并且返回64位整型或浮點(diǎn)值。否則,確定是否方法返回“double”(步552)。如果是返回“double”,過程也進(jìn)入到上面所說的步551。不然,調(diào)用程序被設(shè)置等于JavaSyncInc(步553)。JavaSyncInc是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為同步的Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針,但返回32位整型或浮點(diǎn)值。
再次參看步540,如果方法不是同步方法,則判斷是否方法要求框架中的常數(shù)池指針(步554)。如果方法確實(shí)要框架中的常數(shù)池指針,則判斷是否方法無返回值(步555)。如果回答是肯定,調(diào)用程序則被設(shè)置等于JavaCPoolVoid(步556)。JavaCPoolVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它要求函數(shù)激活記錄中的常數(shù)地指針并且無返回值。不然,確定方法是否返回“l(fā)ong”(步557),如果是返回“l(fā)ong”,調(diào)用程序被置為等于JavaCPoolLong(步558)。JavaCPoolLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它要求函數(shù)激活記錄中的常數(shù)池指針,并且返回64位整型或浮點(diǎn)值。否則,確定是否方法返回“double”(步559)。如果方法是返回“double”,過程也進(jìn)入上面所說的步558。不然,調(diào)用程序被設(shè)為等于JavaCPoolInt(步560),JavaCPoolInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它要求函數(shù)激活記錄中的常數(shù)池指針,并且返回32位整型或浮點(diǎn)值。
再參看步554,如果方法不要求框架中的常數(shù)池指針,則判斷是否方法無返回值(步561)。如果方法沒有返回值,調(diào)用程序設(shè)為等于JavaVoid(步562)。JavaVoid是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針而且無返回值。否則,判斷是否方法返回“l(fā)ong”(步563)。如果方法是返回“l(fā)ong”,調(diào)用程序被設(shè)置等于JavaLong(步564)。JavaLong是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針。并且返回64位整型或浮點(diǎn)值。不然則確定是否方法返回“double”(步565)。如果方法返回“double”,過程也進(jìn)入上面所說的步564。否則,調(diào)用程序被設(shè)為等于JavaInt(步566)。JavaInt是一調(diào)用程序,用于把控制從Java方法轉(zhuǎn)為非同步Java方法,它不要求函數(shù)激活記錄中的常數(shù)池指針并且返回32位整型或浮點(diǎn)值。
現(xiàn)轉(zhuǎn)到圖6,圖中給出了按照本發(fā)明的優(yōu)選實(shí)施例,使用專門調(diào)用程序的方法調(diào)用的方法流程圖。圖6的處理過程包括方法的調(diào)用,其中的方法與專門的調(diào)用程序有關(guān)或已經(jīng)賦予了專門的調(diào)用程序,以便考慮方法的特性而執(zhí)行特定的函數(shù)。調(diào)用程序被標(biāo)識(shí)在與方法關(guān)聯(lián)的方法塊中,所描述的例子中的方法塊包括指向?qū)iT調(diào)用程序的指針。
圖6中的處理過程從調(diào)入用以執(zhí)行調(diào)用的字節(jié)碼的方法開始(步600),此后,目標(biāo)方法的方法塊被定位(步602)。處理過程轉(zhuǎn)移到方法塊中專門的調(diào)用程序(步604)。專門的調(diào)用程序執(zhí)行必要的任務(wù)準(zhǔn)備訪問目標(biāo)方法(步606),然后調(diào)用程序則調(diào)用目標(biāo)方法(步608),此目標(biāo)方法運(yùn)行(步610),以后,目標(biāo)方法執(zhí)行一返回字節(jié)碼(步612),返回字節(jié)碼返回到調(diào)用目標(biāo)方法的專門調(diào)用程序(步614)。此調(diào)用程序現(xiàn)在執(zhí)行必要的任務(wù)以清理從調(diào)用到目標(biāo)方法(步616)。目標(biāo)方法的結(jié)果放在調(diào)用方法的Java堆棧中(步618)。調(diào)用方法則再去執(zhí)行下一字節(jié)碼(步620),然后過程結(jié)束。
現(xiàn)在參看圖7A-7C,由專門調(diào)用程序在準(zhǔn)備調(diào)用目標(biāo)方法時(shí)執(zhí)行的任務(wù)流程或步驟,按照本發(fā)明的優(yōu)選實(shí)施例作了說明。流程圖中所示的處理過程在圖6的步606做了更詳細(xì)的描述。
在圖7A中,JavaInt調(diào)用程序生成函數(shù)激活記錄(步700)此步驟是當(dāng)作準(zhǔn)備調(diào)用目標(biāo)方法的部分而被執(zhí)行。
在圖7B中,JavaSyncCPoolVoid調(diào)用程序生成包含用于常數(shù)池指針的空間的函數(shù)激活記錄(步702)。此后,常數(shù)池指針被存放在函數(shù)激活記錄中(步704)。接著,獲得對(duì)象監(jiān)控器然后過程結(jié)束。
對(duì)于JavaSyncCPoolVoid調(diào)用程序,圖7B中的步驟更詳細(xì)地描述了圖6中的步606。關(guān)于NativeDouble調(diào)用程序,在圖7C中,所描述的步驟更詳細(xì)地描述了圖6中對(duì)調(diào)的步606。處理過程開始于逆序復(fù)制參數(shù)(步708)。此后,函數(shù)激活記錄生成(步710),接著處理過程結(jié)束。
下面在圖8A-8C中,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,說明了由專門調(diào)用程序從調(diào)用到目標(biāo)方法的清理時(shí)執(zhí)行的必要任務(wù)的更詳細(xì)處理流程。在這些流程中的處理更詳盡地描述了圖6中的步616。
在圖8A,JavaInt調(diào)用程序,在目標(biāo)方法只完全執(zhí)行后毀掉函數(shù)激活記錄(步800)。在圖8B,JavaSyncCPoolViod調(diào)用程序毀掉函數(shù)激活記錄(步802),此后,對(duì)象監(jiān)控器被釋放(步804)而后過程結(jié)束。在圖8C,NativeDouble調(diào)用程序毀掉函數(shù)激活記錄(步806)而后過程結(jié)束。
下面轉(zhuǎn)到圖9A-9C,放置目標(biāo)方法的結(jié)果到調(diào)用方法的Java棧的流程圖,按照本發(fā)明的優(yōu)選實(shí)施例作了描述,示于這些流程中的步驟更詳細(xì)的說明了圖6中步618。
在圖9A,JavaInt調(diào)用程序放置返回的32位整型或浮點(diǎn)值到調(diào)用方法和Java棧(步900)。在圖9B,JavaSyncCPoolVoid沒有返回值(步902)。在圖9c,NativeDouble調(diào)用程序存儲(chǔ)從浮點(diǎn)部件(FPU)返回的浮點(diǎn)值到調(diào)用程序的Java棧作為64位的浮點(diǎn)值(步904)。
指出以下一點(diǎn)是重要的在本發(fā)明對(duì)整個(gè)操作數(shù)字處理系統(tǒng)情況已被說明的同時(shí),熟悉本專業(yè)的一般人都會(huì)了解。本發(fā)明的處理過程可按計(jì)算機(jī)可讀介質(zhì)指令形式以及多樣化的形式被分發(fā),并且不管信號(hào)的具體類型,本發(fā)明合適地應(yīng)用實(shí)際習(xí)慣實(shí)現(xiàn)分發(fā)的承載介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括可重寫類介質(zhì)如軟盤,硬盤驅(qū)動(dòng)器,RAM,CD-ROM及傳輸類介質(zhì)如數(shù)字的或模擬的通信鏈路。
為例證和說明的目的已經(jīng)給出了本發(fā)明的描述,但并不打算包羅無遺或限制于本發(fā)明公開的形式,許多修改和改變對(duì)于在本領(lǐng)域具有一般技能的人將是明顯的。例如,盡管所描述的實(shí)施例是直接針對(duì)Java中處理字節(jié)碼,本發(fā)明的處理過程可被用于其它的編程語(yǔ)言和處理指令的環(huán)境,這些都不是專門針對(duì)在上執(zhí)行指令的-計(jì)算機(jī)的。在這種情況下,計(jì)算機(jī)中的虛擬機(jī)可以解釋這些指令,或?qū)⒅噶钏偷骄幾g器以產(chǎn)生適合于虛擬機(jī)所處的計(jì)算機(jī)執(zhí)行的代碼。被選取和描述的實(shí)施例為的是更好地解釋本發(fā)明的原理,其實(shí)際應(yīng)用,以及讓非熟悉本領(lǐng)域技術(shù)的人懂得本發(fā)明,帶有各種修改的各種實(shí)施例可滿足所注視的具體應(yīng)用。
權(quán)利要求
1.一種用于執(zhí)行一個(gè)方法的過程,該過程包括檢測(cè)調(diào)用一方法的字節(jié)碼;確定與方法有關(guān)的方法塊,其中方法塊包括調(diào)用程序的標(biāo)識(shí)符;調(diào)用調(diào)用程序,其中調(diào)用程序?yàn)榉椒ǖ膱?zhí)行進(jìn)行設(shè)置;檢測(cè)該方法的完成;及返回控制到調(diào)用程序,其中調(diào)用程序完成方法的處理。
2.權(quán)利要求1的過程,其中為執(zhí)行方法的設(shè)置被完成以后,調(diào)用程序訪問該方法。
3.權(quán)利要求1的過程,其中方法的完成通過返回字節(jié)碼的執(zhí)行而被檢測(cè)出。
4.權(quán)利要求1的過程,其中方法是一被訪問的方法,及其中調(diào)用程序通過調(diào)用的方法,在調(diào)用方法棧中放置返回的結(jié)果。
5.權(quán)利要求1的過程,其中方法是一被訪問的方法,還包括由調(diào)用程序負(fù)責(zé)方法處理的完成,重新啟動(dòng)訪問過被訪問方法的調(diào)用方法垢執(zhí)行。
6.權(quán)利要求1的過程,其中方法包括大量Java字節(jié)碼。
7.一種用來執(zhí)行非具體針對(duì)一數(shù)據(jù)處理系統(tǒng)的一組指令的過程,該方法包括負(fù)責(zé)檢測(cè)指令組的調(diào)用,標(biāo)識(shí)與指令組有關(guān)的調(diào)用程序;調(diào)用調(diào)用程序,其中調(diào)用程序?yàn)橹噶罱M的執(zhí)行進(jìn)行設(shè)置;及執(zhí)行指令組,其中在指令組的執(zhí)行完成以后,控制返回到調(diào)用程序。
8.權(quán)利要求7的過程,其中指令組是一字節(jié)碼組。
9.權(quán)利要求8的過程,其中字節(jié)碼組形成一方法。
10.權(quán)利要求9的過程,其中方法包括一返回字節(jié)碼,在方法的執(zhí)行完成以后,把控制返回給調(diào)用程序。
11.一種執(zhí)行一個(gè)方法的過程,該過程包括計(jì)算機(jī)實(shí)現(xiàn)的步驟為檢測(cè)方法的裝入和初始化;及選擇性地把專門的調(diào)用程序同方法聯(lián)系起來,其中專門的調(diào)用程序在運(yùn)行時(shí)期間被使用。
12.權(quán)利要求11的過程,其中方法是與方法塊有關(guān),及其中選擇的有關(guān)步驟包括在方法塊中存貯調(diào)用程序的標(biāo)識(shí)符。
13.權(quán)利要求12的過程,其中標(biāo)識(shí)符是調(diào)用程序的地址。
14.權(quán)利要求11的過程,其中調(diào)用程序被用于執(zhí)行訪問方法所需的指令。
15.一數(shù)據(jù)處理系統(tǒng),用于執(zhí)行一方法,該數(shù)據(jù)處理系統(tǒng)包括第一檢測(cè)裝置,用來檢測(cè)調(diào)用一方法的字節(jié)碼;定位裝置,用來定位同方法有關(guān)的方法塊,其中方法塊包括調(diào)用程序的標(biāo)識(shí)符;調(diào)用裝置,用來調(diào)用調(diào)用程序,其中調(diào)用程序?yàn)榉椒ǖ膱?zhí)行進(jìn)行設(shè)置;第二檢測(cè)裝置,用于檢測(cè)一方法的完成;及返回裝置,用于把控制返回給調(diào)用程序,其中調(diào)用程序完成方法的處理。
16.權(quán)利要求15的數(shù)據(jù)處理系統(tǒng),其中為方法的執(zhí)行進(jìn)行的設(shè)置完成以后,調(diào)用程序訪問該方法;
17.權(quán)利要求15的數(shù)據(jù)處理系統(tǒng),其中方法的完成,通過返回字節(jié)碼的執(zhí)行而被檢測(cè)。
18.權(quán)利要求15的數(shù)據(jù)處理系統(tǒng),其中方法是一被訪問的方法,及其中調(diào)用程序通過調(diào)用的方法在調(diào)用方法棧中放置返回的結(jié)果。
19.權(quán)利要求15的數(shù)據(jù)處理系統(tǒng),其中方法是一被訪問的方法,還包括由調(diào)用程序負(fù)責(zé)方法處理的完成,重新啟動(dòng)訪問過被訪問方法的調(diào)用方法的執(zhí)行。
20.權(quán)利要求15的數(shù)據(jù)處理系統(tǒng),其中該方法包括大量Java字節(jié)碼。
21.一數(shù)據(jù)處理系統(tǒng),用來執(zhí)行非具體針對(duì)一數(shù)據(jù)處理系統(tǒng)的一組指令,該數(shù)據(jù)處理系統(tǒng)包括標(biāo)識(shí)裝置,負(fù)責(zé)檢測(cè)指令組的調(diào)用,以便標(biāo)識(shí)同指令組相關(guān)的調(diào)用程序;調(diào)用裝置,用來調(diào)用調(diào)用程序,調(diào)用程序?qū)χ噶罱M的執(zhí)行進(jìn)行設(shè)置;及執(zhí)行裝置,用來執(zhí)行指令組,其中在指令組的執(zhí)行完成以后,控制被返回給調(diào)用程序。
22.權(quán)利要求21的數(shù)據(jù)處理系統(tǒng),其中指令組是一組字節(jié)碼。
23.權(quán)利要求22的數(shù)據(jù)處理系統(tǒng),其中字節(jié)碼組形成一方法。
24.權(quán)利要求23的數(shù)據(jù)處理系統(tǒng),其中,方法包括一返回字節(jié)碼,在方法的執(zhí)行完成以后,它返回控制給調(diào)用程序。
25.一種用于執(zhí)行一個(gè)方法的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括檢測(cè)調(diào)用一方法的字節(jié)碼;定位與方法有關(guān)的方法塊,其中方法塊包括調(diào)用程序的標(biāo)識(shí)符;調(diào)用調(diào)用程序,其中調(diào)用程序?yàn)榉椒ǖ膱?zhí)行進(jìn)行設(shè)置;檢測(cè)方法的完成;及返回控制到調(diào)用程序,其中調(diào)用程序完成方法的處理。
全文摘要
用于執(zhí)行一方法的方法和裝置,調(diào)用一方法的字節(jié)碼被檢測(cè)出。方法塊的定位與方法有關(guān),其中方法塊包括一調(diào)用程序的標(biāo)識(shí)符。調(diào)用程序被訪問,其中調(diào)用程序?yàn)榉椒ǖ膱?zhí)行進(jìn)行設(shè)置。由調(diào)用程序?qū)崿F(xiàn)的設(shè)置,對(duì)方法是特別簡(jiǎn)明。方法的完成被檢測(cè),且把控制返回給調(diào)用程序,其中,調(diào)用程序完成方法的處理。
文檔編號(hào)G06F9/44GK1265487SQ99127078
公開日2000年9月6日 申請(qǐng)日期1999年12月28日 優(yōu)先權(quán)日1999年1月29日
發(fā)明者喬弗里·歐文·布蘭迪, 本特利·約漢·哈格拉維 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
辽源市| 依兰县| 锡林浩特市| 株洲县| 个旧市| 革吉县| 鲁山县| 双江| 大埔区| 海门市| 西乌珠穆沁旗| 怀来县| 青神县| 阿巴嘎旗| 名山县| 蛟河市| 平乐县| 揭西县| 陇南市| 陇西县| 贵州省| 茌平县| 玛纳斯县| 梅河口市| 松溪县| 澄迈县| 海口市| 无极县| 阿拉善右旗| 碌曲县| 桐城市| 当雄县| 焦作市| 隆尧县| 公主岭市| 响水县| 大同县| 民乐县| 鄢陵县| 昌都县| 彰化县|