專利名稱::虛擬機(jī)中方法調(diào)用的加速的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及提高代碼執(zhí)行速度,尤其涉及在象JAVA這樣的面向?qū)ο蟮沫h(huán)境中運(yùn)行的虛擬機(jī)中方法調(diào)用機(jī)制(mechanism)的加速。
背景技術(shù):
:面向?qū)ο蟮恼Z(yǔ)言支持繼承性和多態(tài)性以允許開(kāi)發(fā)靈活且可重復(fù)使用的軟件。一種典型的面向?qū)ο蟮某绦虬ㄒ唤M類。這些類中的每一個(gè)都可以定義一組數(shù)據(jù)成員。另外,每一個(gè)類可以包括一組方法,這些方法對(duì)該組數(shù)據(jù)成員起作用。繼承性使一個(gè)類能夠“繼承”或派生(derive)一個(gè)父類的各個(gè)能力(capability)。因此,由于有繼承性,所以一個(gè)給定的方法可以為父類和子類所共有。當(dāng)調(diào)用這樣一個(gè)共有方法時(shí),執(zhí)行機(jī)制必須確定所調(diào)用的方法是否正在對(duì)父類或子類的對(duì)象起作用。用方法特征區(qū)分對(duì)各對(duì)象起作用的方法,這些特征通常由以下部分組成方法名;參數(shù)數(shù)量、參數(shù)類型和參數(shù)順序(order);對(duì)象的相關(guān)類。給定對(duì)象的類型通常會(huì)在運(yùn)行時(shí)間得以確定。將這種在運(yùn)行時(shí)間確定對(duì)象類型的方法稱為“動(dòng)態(tài)連接”。在這方面,對(duì)所要執(zhí)行的適當(dāng)方法的選擇是基于一查找機(jī)制(lookupmechanism),這意味要在調(diào)用之后執(zhí)行的實(shí)際方法是基于該方法接收器的類型、類層次性和方法繼承性或重載模式(overloadingschema)而動(dòng)態(tài)確定的。下面描述一種典型的查找機(jī)制。這種查找機(jī)制確定出現(xiàn)調(diào)用時(shí)所要執(zhí)行的實(shí)際方法。如果一個(gè)類執(zhí)行了與所調(diào)用方法具有相同特征的方法,那么執(zhí)行找到的方法。否則,以遞歸的方式檢查父類,直到找到搜索的方法為止。如果沒(méi)有找到任何一個(gè)方法,那么就發(fā)出一個(gè)錯(cuò)誤信號(hào)(MsgNotUnderstood)。就執(zhí)行時(shí)間和其他資源而言,這種操作發(fā)生得過(guò)于頻繁且花費(fèi)昂貴。因此,需要提高查找機(jī)制的速度。靜態(tài)技術(shù)對(duì)該查找的一部分進(jìn)行預(yù)先計(jì)算,而動(dòng)態(tài)技術(shù)采用前面查找的結(jié)果的一個(gè)高速緩沖存儲(chǔ)器,這樣避免了其他查找。最重要的動(dòng)態(tài)連接算法稱為分派表搜索(DispatchTableSearch)(DTS)。就空間成本而言,這種DTS是一種很好的方法,但是,與DTS有關(guān)的搜索負(fù)擔(dān)使得該機(jī)制過(guò)于緩慢。需要減少與DTS有關(guān)的開(kāi)銷?,F(xiàn)已提出許多技術(shù)來(lái)減少與DTS有關(guān)的開(kāi)銷對(duì)查找的一部分進(jìn)行預(yù)先計(jì)算的靜態(tài)技術(shù)和高速緩存前面查找的結(jié)果的動(dòng)態(tài)技術(shù),這樣避免了其他查找。下面描述上述技術(shù)。一種稱為選擇表索引(selectortableIndexing)(STI)的技術(shù)是用來(lái)加速查找機(jī)制的靜態(tài)方法。下面將簡(jiǎn)述這種STI技術(shù)。假定有一C類和S選擇器的類層次結(jié)構(gòu),建立起一個(gè)C*S項(xiàng)的二維陣列。在每一個(gè)軸上為各個(gè)類和選擇器賦予連續(xù)的號(hào),通過(guò)預(yù)先計(jì)算每一個(gè)類和選擇器的查找來(lái)填充該陣列。一個(gè)陣列項(xiàng)含相應(yīng)方法或一個(gè)錯(cuò)誤處理程序(errorroutine)的一個(gè)基準(zhǔn)值。為一個(gè)完整的系統(tǒng)計(jì)算這些表。STI技術(shù)傳送快速和恒定的時(shí)間查找。但是,STI的主要缺點(diǎn)在于,對(duì)于一個(gè)具有有限計(jì)算資源的普通系統(tǒng)例如一個(gè)嵌入式系統(tǒng)來(lái)說(shuō),對(duì)于空間的需求是巨大的?,F(xiàn)已提出許多分派表壓縮技術(shù)以減小所需空間的間接開(kāi)銷,象選擇器著色(selectorcoloring),行位移技術(shù)等等。但是,這些技術(shù)的實(shí)施給象嵌入式系統(tǒng)這樣的有限計(jì)算資源環(huán)境帶來(lái)了不必要的負(fù)擔(dān)。這種技術(shù)的另一個(gè)缺點(diǎn)是,編譯代碼對(duì)類層次結(jié)構(gòu)中的變化非常敏感。通過(guò)STI建立的二維陣列固定于編譯時(shí)間。但是對(duì)于象JAVA這樣的語(yǔ)言來(lái)說(shuō),這組類能夠動(dòng)態(tài)變化。STI無(wú)法控制這一情形,因?yàn)樗荒軇?dòng)態(tài)改變?cè)撽嚵?。同步技術(shù)改善了用來(lái)執(zhí)行多線程應(yīng)用的線程模型功能。這種用于傳統(tǒng)嵌入式JAVA虛擬機(jī)中的同步技術(shù)(尤其是那些基于千字節(jié)虛擬機(jī)的技術(shù))與四狀態(tài)中的一個(gè)對(duì)象狀態(tài)相關(guān)聯(lián)(1)未鎖定,(2)簡(jiǎn)單鎖定,(3)擴(kuò)展鎖定(extendlocked),或者是(4)與一個(gè)監(jiān)視程序(monitor)有關(guān)的狀態(tài)。因此,需要同步技術(shù)不與任何特定的鎖定狀態(tài)相關(guān)聯(lián)。所以,就計(jì)算資源處理/執(zhí)行時(shí)間、存儲(chǔ)器和方法搜索或查找而言,需要一套輔助操作要求低的技術(shù)。甚至在接收對(duì)象頻繁變化的情況下,這套技術(shù)也應(yīng)當(dāng)有效。另外,需要一種機(jī)制,它能夠提高象嵌入式系統(tǒng)這樣的有限資源計(jì)算環(huán)境中運(yùn)行的虛擬機(jī)中的代碼執(zhí)行速度。
發(fā)明內(nèi)容一種基于計(jì)算機(jī)的系統(tǒng)通過(guò)提高方法調(diào)用的速度來(lái)提高代碼執(zhí)行速度。一個(gè)虛擬機(jī)包括一裝載器、一解釋器、線程管理器和其他模塊和/或部件。裝載器利用方法特征構(gòu)建一個(gè)散列表(hash-table)。解釋器利用所構(gòu)建的散列表來(lái)提高搜索方法的處理速度。該解釋器構(gòu)建一個(gè)具有一指針的方法調(diào)用高速緩沖存儲(chǔ)器,并且將其用于一接收器以提高代碼執(zhí)行速度。該高速緩沖存儲(chǔ)器提供修正后的守衛(wèi)條件(guardcondition),這些條件使得能夠進(jìn)行更快的高速緩存操作,這種操作使得執(zhí)行速度更快。線程管理器采用一個(gè)用來(lái)提高鎖定狀態(tài)過(guò)渡速度的深度級(jí)。該深度級(jí)表示簡(jiǎn)單鎖定狀態(tài)和擴(kuò)展鎖定狀態(tài),這樣,消除了對(duì)一分離簡(jiǎn)單鎖定狀態(tài)的需求。鎖定狀態(tài)數(shù)目越小,鎖定狀態(tài)過(guò)渡速度越快,從而代碼執(zhí)行速度越快。通常,本發(fā)明能夠在任何虛擬機(jī)中實(shí)施,例如JAVA虛擬機(jī)(JVM)和千字節(jié)虛擬機(jī)(KVM)環(huán)境中。尤其是,本發(fā)明能夠在具有相對(duì)有限計(jì)算資源的嵌入式系統(tǒng)中實(shí)施。根據(jù)下文提供的詳細(xì)描述,本發(fā)明的其他適用范圍將變得很明顯。應(yīng)理解的是,表示本發(fā)明優(yōu)選實(shí)施例的詳細(xì)描述和具體實(shí)例僅僅用于說(shuō)明本發(fā)明而不是用來(lái)限制本發(fā)明的范圍。根據(jù)詳細(xì)的說(shuō)明和附圖,能夠更完整地理解本發(fā)明,這些附圖中圖1是本發(fā)明一個(gè)實(shí)施例中一虛擬機(jī)的方框圖;圖2A示出一典型的類層次;圖2B示出用于查找加速過(guò)程中的一個(gè)方法散列表;圖3示出一典型方法散列表構(gòu)建程序;圖4描述了一種用來(lái)搜索散列表中一方法的典型散列查找程序;圖6示出包括到接收器的一個(gè)鏈接的高速緩存入口(cacheentry);圖7示出代表一已知線程模型的第一自動(dòng)過(guò)程;圖8示出用來(lái)提高多線程應(yīng)用速度的最優(yōu)自動(dòng)過(guò)程;圖9示出用來(lái)表示被繼承方法調(diào)用中各改進(jìn)的典型類層次76;圖10示出本發(fā)明一個(gè)實(shí)施例中比較方法調(diào)用時(shí)間的柱形圖;圖11示出一餅分圖,它表示本發(fā)明一個(gè)實(shí)施例中的加速度/加速變化率。具體實(shí)施例方式以下對(duì)優(yōu)選實(shí)施例的描述實(shí)際上僅僅是示例性的,其決不用來(lái)限制本發(fā)明、其應(yīng)用或者用途。一個(gè)面向?qū)ο?“OO”)的程序由包含數(shù)據(jù)成員和對(duì)這些數(shù)據(jù)成員起作用的方法的各個(gè)類組成。這樣,一個(gè)OO程序中的一個(gè)方法是一給定類的一部分。前面所表示/定義類的對(duì)象可以是例示的。每一個(gè)給定類式的各個(gè)示例對(duì)象擁有在給定類表示/定義中表示的數(shù)據(jù)成員。通常,那些是給定類式一部分的方法對(duì)例示對(duì)象起作用。一個(gè)例子示出了一OO程序中的典型結(jié)構(gòu)。一典型OO程序可以有兩個(gè)類,它們分別稱為類A和類B,其中類B繼承類A,或者由類A派生。類A可以定義一個(gè)方法m,由于這種繼承性,類B也將方法m作為其一部分。類A式的對(duì)象將方法m作為它們的一部分,那么,由于繼承性,類B的對(duì)象也將方法m作為他們的一部分。各方法特征用來(lái)區(qū)分如下所述的各方法。OO環(huán)境通常用一些方法特征來(lái)區(qū)分任何兩個(gè)表面上類似的方法,這些特征是利用類名、方法名、各參數(shù)和返回類型(returntype)形成的。當(dāng)一執(zhí)行引擎(executionengine)遇到調(diào)用關(guān)于一給定對(duì)象的方法m時(shí),它利用被調(diào)用方法的特征來(lái)查找方法表中該方法的定義位置。這種方法定義的搜索是一種時(shí)間密集型任務(wù)(timeIntensivetask)。本發(fā)明使得方法查找和執(zhí)行所需的時(shí)間最少,同時(shí)對(duì)任意給定環(huán)境的計(jì)算資源的需求最少。OO語(yǔ)言如JAVA采用一種頻繁的動(dòng)態(tài)發(fā)送機(jī)制來(lái)搜索一被調(diào)用方法的定義。該方法可以定義于一個(gè)以上的類中。對(duì)適當(dāng)方法定義的搜索是動(dòng)態(tài)進(jìn)行的。這導(dǎo)致產(chǎn)生一個(gè)相當(dāng)大的執(zhí)行時(shí)間輔助操作。通常,已有的靜態(tài)和動(dòng)態(tài)技術(shù)不適合象嵌入式JAVA這樣在相對(duì)嚴(yán)格資源約束條件下運(yùn)行的嵌入式平臺(tái)。尤其是,這些技術(shù)是存儲(chǔ)加強(qiáng)型的,對(duì)于具有有限存儲(chǔ)資源的普通嵌入式系統(tǒng)來(lái)說(shuō),這不是一個(gè)理想的特性。本發(fā)明涉及用來(lái)加速OO環(huán)境中方法調(diào)用機(jī)制的動(dòng)態(tài)、靈活而有效的技術(shù)。為了進(jìn)行說(shuō)明,在關(guān)于嵌入式系統(tǒng)應(yīng)用中采用JAVA的虛擬機(jī)的上下文描述中討論這種方法調(diào)用加速機(jī)制。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,采用JAVA的嵌入式系統(tǒng)僅僅用作解釋說(shuō)明,而不是限制性的。本發(fā)明可以在任何面向?qū)ο蟮沫h(huán)境中運(yùn)行和/或應(yīng)用。本發(fā)明的加速技術(shù)覆蓋方法調(diào)用過(guò)程的多個(gè)方面,例如查找方法、高速緩存方法和同步的方法。以下把一個(gè)虛擬機(jī)作為將本發(fā)明技術(shù)用于本發(fā)明一個(gè)實(shí)施例的平臺(tái)進(jìn)行描述。圖1是本發(fā)明一個(gè)實(shí)施例中一虛擬機(jī)10的方框圖。虛擬機(jī)10與一操作系統(tǒng)12密切配合工作。一裝載器(loader)14把要執(zhí)行的代碼裝入虛擬機(jī)10中。裝載器14包括諸如散列編制器(hashbuilder)16和散列查表18之類的散列管理模塊。校驗(yàn)器(verifier)20校驗(yàn)所裝入的類和代碼是否有可能的錯(cuò)誤。裝載器14還裝載來(lái)自語(yǔ)言類庫(kù)18和自然類庫(kù)(nativeclasslibrary)24的任何程序和/或類。解釋器26解釋并執(zhí)行裝載器14所裝入的代碼。高速緩沖存儲(chǔ)器28和高速緩存信息處理器30是解釋器26的一部分,它們用來(lái)高速緩存方法調(diào)用命令。堆棧管理和無(wú)用單元回收模塊32被解釋器26用來(lái)創(chuàng)建和破壞堆棧上的對(duì)象。解釋器26用線程管理器34來(lái)控制正在執(zhí)行的代碼的線程操作。由于各種線程在代碼執(zhí)行的過(guò)程中競(jìng)爭(zhēng)訪問(wèn)各對(duì)象,所以線程管理器34對(duì)各對(duì)象執(zhí)行鎖定和解鎖操作。另外,線程管理器34還管理線程切換。以上關(guān)于虛擬機(jī)10的描述涉及一種普通的虛擬機(jī)。這樣一個(gè)普通虛擬機(jī)10的具體例子是JAVA虛擬機(jī)(JVM)。作為另一個(gè)例子,現(xiàn)提及一KVM(千字節(jié)虛擬機(jī))。KVM通常用于需要覆蓋區(qū)小的JVM的嵌入式系統(tǒng)應(yīng)用環(huán)境中。在KVM或JVM中,裝載器14作為一個(gè)類文件裝載器工作,它裝載系統(tǒng)和用戶定義的類。另外,裝載器14構(gòu)建常數(shù)池(constantpool)和類文件結(jié)構(gòu),并且與類和代碼校驗(yàn)器20相互作用,類和代碼校驗(yàn)器20在本例中將校驗(yàn)所裝載字節(jié)碼的模式安全性(typesafety)。解釋器26用來(lái)解釋一個(gè)所裝載類文件的字節(jié)碼。線程管理器34管理應(yīng)用線程。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,以上對(duì)JVM和KVM的描述用于解釋,他們有助于理解本發(fā)明,但并不是限制性的。下面描述方法查找的加速。圖2A示出一典型類層次36。類A38包括方法‘m’。類B40是父類A38的子類。類B40包括方法m、m1和m2。類B40從類A38繼承了方法m。下面描述這種典型類層次36的基于散列表的查找。圖2B示出用于查找加速過(guò)程中的方法散列表42。虛擬機(jī)的裝載器14(見(jiàn)圖1)為上述類層次的每一個(gè)虛擬方法表構(gòu)建一個(gè)散列表42。通過(guò)象散列法這樣的直接訪問(wèn)技術(shù),提高方法表查找速度。它是利用適當(dāng)?shù)纳⒘屑夹g(shù)和一有效的散列函數(shù)(hashingfunction)實(shí)現(xiàn)的可以以多種方式構(gòu)建方法特征(圖中未示)。例如,可以用方法的名稱及其形式參數(shù)的數(shù)目和類型來(lái)構(gòu)建一個(gè)方法特征。散列表42的每一個(gè)索引對(duì)應(yīng)于一個(gè)結(jié)果,該結(jié)果是將一散列函數(shù)用于該方法特征得到的。應(yīng)當(dāng)仔細(xì)選擇散列表42的大小,以便令其覆蓋區(qū)小,同時(shí)使各方法特征之間的沖突最小,從而獲得更有效和靈活的查找機(jī)制。由于通過(guò)采用散列法訪問(wèn)的方式對(duì)所提供的方法表直接訪問(wèn),所以能夠?qū)崿F(xiàn)有效性。由于能夠調(diào)整散列表42的大小以使加速與覆蓋區(qū)之比最佳,所以能夠?qū)崿F(xiàn)靈活性。在裝載一類的過(guò)程中,散列編制器16構(gòu)建一個(gè)散列方法表。根據(jù)方法特征計(jì)算散列。散列表42中的每一入口由兩個(gè)部分組成。第一個(gè)部分是一標(biāo)志位(flag),該標(biāo)志位表示該類是否含具有這樣一個(gè)定義的方法。在本例中,示出第一部分441-445。在第一部分441和444中存在標(biāo)志“1”就表示,對(duì)于其方法特征散列在第一第一部分441和444的散列索引上的那些方法來(lái)說(shuō),與方法定義的鏈接是有用的。第二部分是一個(gè)去方法定義的指針。在有沖突的情況下,該第二部分是一個(gè)去方法定義列表的指針。這里,第二部分461是第二方法m2的單個(gè)方法定義,因?yàn)闆](méi)有其他方法特征散列至第一部分441的散列位置。但是,第一部分444散列位置的第二部分是一沖突列表,因?yàn)榉椒╩和m1各自的兩個(gè)方法特征散列到同一個(gè)第一位置444上。因此,分別將方法m和m1方法定義的沖突列表表示為第二部分462和463。圖3示出一典型的方法散列表構(gòu)建程序。裝載器14(見(jiàn)圖1)可以令一內(nèi)置散列編制器16(見(jiàn)圖1)構(gòu)建散列表42(見(jiàn)圖2B),或者該散列編制器16可以是一外部可調(diào)用程序。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,裝載器14內(nèi)部或外部的散列構(gòu)建程序的位置并不以任何方式限制本發(fā)明。以下詳細(xì)解釋對(duì)散列表42的構(gòu)建和散列編制器16的工作。散列編制器16處理裝載器14所裝入的類。對(duì)于給定裝入類中的每一個(gè)方法來(lái)說(shuō),散列編制器16根據(jù)該方法的特征計(jì)算一個(gè)散列。利用所產(chǎn)生的散列,散列編制器16得到散列表42中散列索引處的元素(element)。在一方法定義已經(jīng)存在于所訪問(wèn)散列位置上的情況下,如該散列索引處標(biāo)志位所確定的那樣,那么為新方法創(chuàng)建一沖突入口。但是如果該散列索引處的標(biāo)志位是“OFF”,指示沒(méi)有任何方法入口,那么在所計(jì)算的散列索引處將該方法記入散列表42中。圖4描述了一種用來(lái)搜索散列表中一方法的典型散列查找程序。散列查表18(見(jiàn)圖1)采用一散列值,該散列值是將一散列函數(shù)用于訪問(wèn)散列表42(見(jiàn)圖2B)中相應(yīng)入口/索引的方法特征而得到的。采用該散列值,散列查表18確定所訪問(wèn)散列索引/入口處的標(biāo)志位值。如果與該入口有關(guān)的標(biāo)志位是ON(如圖2B中‘1’所示),那么由于有該入口的第二部分,它訪問(wèn)該方法定義。標(biāo)志位的OFF狀態(tài)(如圖2B中‘0’所示)表示該類沒(méi)有執(zhí)行這樣一個(gè)方法,搜索指向一超類。與基于簡(jiǎn)單表的搜索相比,基于散列的方法定義訪問(wèn)方式使得搜索時(shí)間更快。這種查找方法加速取決于散列表尺寸。較大的散列表尺寸需要較大的存儲(chǔ)空間,但是使沖突最小。另一方面,較大的散列表尺寸可能在存儲(chǔ)管理(分配、無(wú)用單元回收、壓縮等等)方面導(dǎo)致產(chǎn)生附加開(kāi)銷。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,本發(fā)明可以以多種方式實(shí)施。例如,在一個(gè)實(shí)施例中,虛擬機(jī)10可以構(gòu)建成包括必要的基于散列的查找元素。作為選擇,一傳統(tǒng)的虛擬機(jī)可以如下所述修改成提供基于散列的查找。上述查找加速可以在一個(gè)傳統(tǒng)的嵌入式JAVA虛擬機(jī)內(nèi)實(shí)施,例如在以下的KVM(千字節(jié)虛擬機(jī))中實(shí)施。普通KVM中的方法查找機(jī)制是線性的,即,它采用了一個(gè)順序訪問(wèn)的方式?;谏⒘械牟檎以谟糜谄胀↘VM中的線性方法查找之上具有更好的性能。這樣一個(gè)機(jī)制的執(zhí)行將影響虛擬機(jī)10(見(jiàn)圖1)的兩個(gè)部分裝載器14和解釋器26。裝載器修改成構(gòu)建每一個(gè)所裝入類的散列表42。解釋器修改成利用散列表42來(lái)執(zhí)行快速而直接的訪問(wèn)查找。動(dòng)態(tài)技術(shù)存在于前面查找的高速緩存結(jié)果中。采用高速緩沖存儲(chǔ)器的技術(shù)消除了對(duì)創(chuàng)建大分派表的需要,這就減少了存儲(chǔ)的輔助操作,縮短了表創(chuàng)建時(shí)間。全程高速緩存技術(shù)存儲(chǔ)前面的查找結(jié)果。在一全程高速緩存表中,每一入口由三個(gè)一組組成(接收類、選擇器和方法地址)。接收類和選擇器用來(lái)計(jì)算高速緩沖存儲(chǔ)器中的一個(gè)索引。如果當(dāng)前類和方法名與所計(jì)算索引處高速緩存入口內(nèi)的那些匹配,那么執(zhí)行該方法地址處的代碼。因此,避免了方法查找。否則,采用一默認(rèn)分派技術(shù)(通常是DTS),而在該搜索的結(jié)尾處,把新的三個(gè)一組加到該高速緩存表上,將控制轉(zhuǎn)移給所找到的方法。這種算法所需的運(yùn)行時(shí)間存儲(chǔ)量很小,通常是高速緩沖存儲(chǔ)器的固定量和DTS技術(shù)的輔助操作(overhead)。接收類的頻繁變化可能會(huì)使執(zhí)行速度放慢。圖5示出一種用來(lái)存儲(chǔ)方法調(diào)用命令的已有高速緩沖存儲(chǔ)器布局。以一有代表性的格式示出高速緩存入口48,下面描述其內(nèi)容。內(nèi)容鏈接50是一去被調(diào)用方法的指針。CodeLoc52是去調(diào)用過(guò)該方法的指令的指針。原始參數(shù)54代表該方法最初被調(diào)用時(shí)所用的參數(shù)。原始指令56指向用來(lái)調(diào)用該方法的指令。在傳統(tǒng)的內(nèi)聯(lián)(Inline)高速緩存技術(shù)(如KVM中執(zhí)行的技術(shù))中,只有去方法定義的指針存儲(chǔ)在高速緩存入口48中。下面描述修改后的高速緩沖入口結(jié)構(gòu)和高速緩存處理機(jī)制。圖6示出包括到接收器的一個(gè)鏈接的高速緩存入口58。把調(diào)用一方法所涉及的一個(gè)對(duì)象稱為‘接收器’,因?yàn)樗邮諄?lái)自其他對(duì)象的方法調(diào)用請(qǐng)求。接收器指針60指向該接收器。高速緩存入口58的其他成員類似于上述高速緩存入口48。高速緩存入口48除了高速緩存所述的方法調(diào)用詳細(xì)內(nèi)容外,還高速緩存指向接收器的鏈接或指針。當(dāng)調(diào)用一方法時(shí),將接收器的類與所調(diào)用方法的類作比較。如果這兩類相等同,那么由于有該高速緩存入口而重新得到該方法定義。如果不等同,則進(jìn)行動(dòng)態(tài)查找以在該類層次中搜索該方法定義。這種高速緩沖存儲(chǔ)器布局的修改提高了如下所述方法查找過(guò)程的速度??梢杂靡桓咚倬彺娣绞教岣叻椒ㄕ{(diào)用速度。一種內(nèi)聯(lián)高速緩存技術(shù)能夠利用一修改的高速緩沖存儲(chǔ)器布局顯著提高程序執(zhí)行速度。這種內(nèi)聯(lián)高速緩存技術(shù)在于,在每一個(gè)調(diào)用位置上,自己將前面查找的結(jié)果(方法地址)高速緩存在代碼中。內(nèi)聯(lián)高速緩沖存儲(chǔ)器通過(guò)借助默認(rèn)方法查找方式找到的方法直接調(diào)用操作來(lái)重寫調(diào)用指令,從而改變?cè)撜{(diào)用指令。內(nèi)聯(lián)高速緩沖存儲(chǔ)器假定接收器的類頻繁改變,但是當(dāng)不是這種情況時(shí),內(nèi)聯(lián)高速緩存技術(shù)可以提供緩慢的執(zhí)行時(shí)間。通過(guò)避免接收器的類與所調(diào)用方法的類之間有一失配時(shí)的許多動(dòng)態(tài)查找操作,這種內(nèi)聯(lián)高速緩存技術(shù)可以得到顯著改善。萬(wàn)一發(fā)生這樣的失配,如果高速緩存處理器30能夠檢查出接收器沒(méi)有改變,那么可以從該高速緩沖存儲(chǔ)器中重新得到該方法定義。這可以通過(guò)以下步驟進(jìn)行將一指針加到該高速緩存結(jié)構(gòu)中的接收器上;修改守衛(wèi)高速緩存恢復(fù)的條件。以上描述了高速緩存入口58中接收指針60的添加??梢詫⒏咚倬彌_存儲(chǔ)器的守衛(wèi)條件修改成利用接收指針60的存在。當(dāng)調(diào)用一方法時(shí),高速緩存處理器30檢查下述的守衛(wèi)條件。第一守衛(wèi)條件是,一給定高速緩存入口58中的接收器的類是否等于所調(diào)用方法的類。第二和另一個(gè)守衛(wèi)條件是,當(dāng)前接收器是否等于接收指針60所指向的高速緩存的接收器,即,該接收器是否仍未受到改變。如果滿足這些守衛(wèi)條件中的任意一個(gè),高速緩存處理器30就重新得到該高速緩存入口58,從而在不必經(jīng)受方法表查找或搜索的情況下,訪問(wèn)該方法定義。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,檢查接收器是否尚未受到改變的該另一個(gè)守衛(wèi)條件使得高速緩存恢復(fù)過(guò)程更靈活。該另一個(gè)守衛(wèi)條件要求接收指針60設(shè)置在修改后的高速緩存入口58中。下面描述本發(fā)明一個(gè)實(shí)施例中高速緩存操作的一個(gè)例子。在本例中,考慮一對(duì)典型的類X和Y(圖中未示)。類Y從類X那里繼承了一個(gè)非靜態(tài)方法m。在采用類X和Y的一個(gè)OOP程序代碼中,存在一個(gè)指令環(huán)(loop),它將被頻繁執(zhí)行。在這樣一個(gè)指令環(huán)中,關(guān)于一對(duì)象OB而調(diào)用方法m,這里OB是類Y一個(gè)實(shí)例。在第一次調(diào)用方法m之后,高速緩存處理器18將存儲(chǔ)指向?qū)ο驩B的接收指針60,還將其他與調(diào)用有關(guān)的入口存入高速緩存入口58中。對(duì)于對(duì)方法m后來(lái)的調(diào)用,接收指針60的類,即,類Y不同于成為類X的所調(diào)用方法的類。第一守衛(wèi)條件,即,高速緩存入口58中接收器的類(類Y)是否等于所調(diào)用方法的類(類Y)這一條件將失效,不進(jìn)行高速緩存恢復(fù)操作。但是,第二守衛(wèi)條件,即,當(dāng)前接收器是否等于接收指針?biāo)赶虻母咚倬彺娴慕邮掌鬟@一條件將會(huì)得到滿足,因?yàn)樗麄兌贾赶蛲粋€(gè)對(duì)象OB。因此,第二守衛(wèi)條件便于利用高速緩存入口58中的接收指針對(duì)高速緩存方法調(diào)用進(jìn)行更快的查找。上述條件下對(duì)高速緩存技術(shù)的比較顯示,本實(shí)施例中修改后的高速緩存技術(shù)具有較好的查找性能。沒(méi)有接收指針60的高速緩沖存儲(chǔ)器(見(jiàn)圖5)將對(duì)后來(lái)每一次方法m的調(diào)用進(jìn)行動(dòng)態(tài)查找,這導(dǎo)致輔助操作量大。這樣一個(gè)高速緩沖存儲(chǔ)器不能利用將接收指針60所指的對(duì)象與當(dāng)前對(duì)象作比較的另外一個(gè)守衛(wèi)條件,因?yàn)槿鄙俳邮罩羔?。另一方面,高速緩存處理?0將簡(jiǎn)單地測(cè)試當(dāng)前接收器是否等于接收指針60所指向的那個(gè)接收器。因此,在無(wú)需任何資源昂貴的查找操作的情況下,對(duì)于后來(lái)對(duì)方法m的所有調(diào)用來(lái)說(shuō),將從該高速緩沖存儲(chǔ)器中重新得到該方法定義。這樣,本發(fā)明的這種高速緩存結(jié)構(gòu)和高速緩存處理機(jī)制使得速度大大提高。多態(tài)內(nèi)聯(lián)高速緩存是內(nèi)聯(lián)高速緩存技術(shù)的一個(gè)擴(kuò)充。編譯器產(chǎn)生對(duì)特殊存根(stub)程序的一個(gè)調(diào)用命令.每一個(gè)調(diào)用位置轉(zhuǎn)到一特定存根函數(shù)(stubfunction)。該功能最初是對(duì)一方法查找的調(diào)用。每次調(diào)用該方法查找,就擴(kuò)展該存根(stub)功能。在最好的情況下,該技術(shù)的成本花費(fèi)在測(cè)試和直接跳轉(zhuǎn)。另外,當(dāng)類層次很大并且接收類頻繁改變時(shí),可執(zhí)行代碼能夠大大擴(kuò)充。本發(fā)明的另一個(gè)實(shí)施例實(shí)現(xiàn)了提供查找加速的異步線程模型。無(wú)需任何外部資源的異步單線程程序可以自由工作,而無(wú)需管理當(dāng)前運(yùn)行線程的狀態(tài)或活動(dòng)。在多個(gè)同步線程可以訪問(wèn)相同資源且同時(shí)運(yùn)行的情況下,必須管理各種線程的沖突要求。在執(zhí)行一同步方法之前,一個(gè)線程必須受到與接收對(duì)象有關(guān)的鎖定。如果兩個(gè)線程試圖對(duì)同一對(duì)象執(zhí)行該方法,那么這一操作是必須的。鎖定對(duì)象顯示出該執(zhí)行操作。以下描述一種典型的線程模型,該模型用一對(duì)象鎖定表來(lái)管理多個(gè)線程的沖突要求。圖7示出代表一已知線程模型的第一自動(dòng)過(guò)程62。第一自動(dòng)過(guò)程62將對(duì)象鎖定狀態(tài)表示為圓圈,將狀態(tài)轉(zhuǎn)換表示為連接自動(dòng)過(guò)程狀態(tài)的有向線段。第一自動(dòng)過(guò)程62由狀態(tài)A-E組成,它們表示一個(gè)給定對(duì)象的鎖定狀態(tài)。狀態(tài)A64代表一個(gè)未鎖定狀態(tài);狀態(tài)B66代表一個(gè)簡(jiǎn)單鎖定狀態(tài);狀態(tài)C68代表一個(gè)擴(kuò)展?fàn)顟B(tài);狀態(tài)D70代表一個(gè)監(jiān)視狀態(tài);狀態(tài)E72代表一個(gè)例外狀態(tài)。各轉(zhuǎn)換由以下字母標(biāo)明‘u’、‘s’、‘e’、‘m’和‘x’。尤其是,這些字母代表以下操作u-設(shè)定_未鎖定;s-設(shè)定_簡(jiǎn)單_鎖定;e-設(shè)定_擴(kuò)展_鎖定;m-設(shè)定監(jiān)視;x-提出_例外。在有關(guān)給定對(duì)象的內(nèi)容中描述各轉(zhuǎn)換操作的相互作用。最初,對(duì)象處與一未鎖定狀態(tài)A64。當(dāng)一線程試圖鎖定對(duì)象以第一次將對(duì)象的鎖定狀態(tài)變?yōu)楹?jiǎn)單鎖定狀態(tài)B66時(shí),執(zhí)行設(shè)定_簡(jiǎn)單_鎖定操作。另外,當(dāng)另一個(gè)線程試圖鎖定正處于簡(jiǎn)單鎖定狀態(tài)B66下的同一對(duì)象時(shí),對(duì)象鎖定狀態(tài)變?yōu)閿U(kuò)展的鎖定狀態(tài)‘C’68。該對(duì)象一直保持在一擴(kuò)展?fàn)顟B(tài)C68下,直到任何其他的線程試圖進(jìn)一步鎖定它為止。從任意給定的狀態(tài)開(kāi)始,當(dāng)?shù)诙€程試圖鎖定一對(duì)象同時(shí)另一個(gè)線程已進(jìn)行了鎖定的時(shí)候,可以創(chuàng)建一個(gè)監(jiān)視狀態(tài)D70??梢赃M(jìn)行從任何狀態(tài)向監(jiān)視狀態(tài)D70的轉(zhuǎn)換。從一個(gè)同步方法中的退出,引發(fā)了從監(jiān)視狀態(tài)D70或擴(kuò)展?fàn)顟B(tài)C68的轉(zhuǎn)換。從任何給定狀態(tài)向任意其他狀態(tài)的轉(zhuǎn)換可以有惟一的例外,這個(gè)例外就是例外狀態(tài)E72。當(dāng)出現(xiàn)一個(gè)例外信號(hào)時(shí),對(duì)象達(dá)到例外狀態(tài)E72。通過(guò)將一轉(zhuǎn)換指令或命令發(fā)送給例外狀態(tài)E72,也不可能退出該例外狀態(tài)E72。對(duì)于其他狀態(tài),即,A-D來(lái)說(shuō),通過(guò)發(fā)送一個(gè)適當(dāng)?shù)霓D(zhuǎn)換指令或信號(hào),可以轉(zhuǎn)換到其他狀態(tài)或轉(zhuǎn)換到其自身。圖8示出用來(lái)提高多線程應(yīng)用速度的最優(yōu)自動(dòng)過(guò)程。它改進(jìn)了虛擬機(jī)10(見(jiàn)圖1)中所用的同步技術(shù)。通過(guò)從圖7所示的自動(dòng)過(guò)程中去除簡(jiǎn)單鎖定狀態(tài)B66,該線程模型避免了來(lái)自和去向簡(jiǎn)單鎖定狀態(tài)B66的轉(zhuǎn)換,因此直接從未鎖定狀態(tài)A64轉(zhuǎn)換到鎖定狀態(tài)C68。一深度指示器(圖中未示)用來(lái)指示如下所述的鎖定水平。當(dāng)一線程試圖第一次鎖定一對(duì)象時(shí),該對(duì)象從未鎖定狀態(tài)A64轉(zhuǎn)為簡(jiǎn)單鎖定狀態(tài)B66(見(jiàn)圖7)。這種情況下,將深度(對(duì)象被鎖定的次數(shù))設(shè)為一。如上所述,一對(duì)象從簡(jiǎn)單鎖定狀態(tài)B66轉(zhuǎn)為擴(kuò)展鎖定狀態(tài)C68。當(dāng)一線程試圖第二次鎖定該對(duì)象時(shí),深度增加到二,指示去向擴(kuò)展鎖定狀態(tài)C68的轉(zhuǎn)換。擴(kuò)展鎖定狀態(tài)C68可以看成這樣一種狀態(tài),即,其中深度水平可以大于或等于一。這樣,采用一個(gè)深度指示器,可以消除對(duì)簡(jiǎn)單鎖定狀態(tài)B66的需求。簡(jiǎn)單鎖定狀態(tài)的取消改進(jìn)了線程性能,因?yàn)榭梢员苊鈭?zhí)行某些部分代碼。另外,避免了從簡(jiǎn)單鎖定狀態(tài)向擴(kuò)展鎖定的轉(zhuǎn)換,使該線程模型更有效。圖9示出用來(lái)表示被繼承方法調(diào)用中各改進(jìn)的典型類層次76。這里,基本類是類P78。類Q80繼承并派生了類P78。類Q80擴(kuò)展了類P78的被繼承方法m()。類R82派生了類Q80,類S84進(jìn)一步擴(kuò)展了類R82。在類S84的主()方法中,對(duì)一個(gè)新目標(biāo)‘o’的類型S()進(jìn)行初始化。把被繼承方法‘m’用作進(jìn)一步描述中的一個(gè)例子,用以說(shuō)明加速的結(jié)果。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,以上對(duì)類層次76的描述是一種典型類層次的實(shí)例,它并不以任何方式限制本發(fā)明。通常,本發(fā)明所介紹的技術(shù)表現(xiàn)出能夠在JAVA程序執(zhí)行速度方面進(jìn)行高達(dá)約27%的加速。下面的描述概括了上述類層次,用以說(shuō)明應(yīng)用本發(fā)明的原理所得到的典型性能增強(qiáng)效果。圖10示出本發(fā)明一個(gè)實(shí)施例中用來(lái)比較原始方法調(diào)用與最佳方法調(diào)用的柱形圖86。假定在KVM環(huán)境下執(zhí)行原始方法調(diào)用88,而用本發(fā)明的虛擬機(jī)10(見(jiàn)圖1)執(zhí)行最佳方法調(diào)用90。柱形圖86的X軸代表散列表尺寸42(見(jiàn)圖2B),而Y軸代表執(zhí)行時(shí)間。如X軸上所示,散列表尺寸42從11個(gè)單位變化到29個(gè)單位。最佳方法調(diào)用90在散列表所有的尺寸42上都表現(xiàn)出有所改善的性能。如Y軸上所示,對(duì)于相同的方法調(diào)用來(lái)說(shuō),最佳方法調(diào)用90需要約500毫秒的時(shí)間,而原始方法調(diào)用88需要約800毫秒的時(shí)間。因而,與KVM方法調(diào)用時(shí)間相比,本發(fā)明的最佳方法調(diào)用90具有改善的執(zhí)行時(shí)間。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,以上關(guān)于方法調(diào)用時(shí)間的比較是示例性的并具有代表性特征,但是它并不以任何方式限制本發(fā)明。圖11示出一餅分圖92,它表示本發(fā)明一個(gè)實(shí)施例中的加速度/加速變化率。標(biāo)記94指示出散列表42(見(jiàn)圖2B)的尺寸,最終的加速表示為一個(gè)相應(yīng)的扇形區(qū)96。該餅分圖92反映出將仿形技術(shù)(profilingtechnique)用于圖9所示和上述的代碼片斷的情況。餅分圖92示出,當(dāng)散列表42的尺寸為最佳時(shí),可以有較好的執(zhí)行時(shí)間。在本例中,散列表的最佳尺寸約為29個(gè)單位,其相應(yīng)的執(zhí)行時(shí)間是27.91個(gè)單位。這可以與這樣一種情況作對(duì)照,即,散列表42的尺寸是11,執(zhí)行時(shí)間增加到35.97。采用本發(fā)明的靈活技術(shù),可以選擇最佳的散列表42的尺寸,從而使沖突最少,并且所需要的存儲(chǔ)器覆蓋區(qū)也有所減小。下面描述本發(fā)明總的特征。本發(fā)明優(yōu)選用于在嵌入式系統(tǒng)中實(shí)施的面向?qū)ο笙到y(tǒng),與較大的系統(tǒng)相比,嵌入式系統(tǒng)中的計(jì)算資源有限。由于系統(tǒng)通常是實(shí)時(shí)的,所以嵌入式系統(tǒng)中性能增強(qiáng)得很理想。另外,本發(fā)明提供靈活的方法,以使性能增強(qiáng)技術(shù)的資源要求最佳。這是嵌入式系統(tǒng)中另一個(gè)理想的特征,因?yàn)樗鼈兙哂杏邢薜拇鎯?chǔ)器和處理能力。本領(lǐng)域的那些技術(shù)人員會(huì)理解的是,術(shù)語(yǔ)“嵌入式系統(tǒng)”用于一般方式,其覆蓋了在某個(gè)資源約束條件下運(yùn)行的任何系統(tǒng)。例如,在其中計(jì)算資源具有有限特征的采用蜂窩電話或手表的應(yīng)用中運(yùn)行JVM的系統(tǒng)。本發(fā)明的描述本身僅僅是示例性的,因此,那些不脫離本發(fā)明要旨的變換都確定落入本發(fā)明的范圍內(nèi)。不認(rèn)為這些變換脫離本發(fā)明的實(shí)質(zhì)和范圍。權(quán)利要求1.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的系統(tǒng),該系統(tǒng)包括一虛擬機(jī),它有一裝載器和一解釋器,所述虛擬機(jī)利用所述裝載器將程序裝入所述虛擬機(jī)中,而利用所述解釋器執(zhí)行所述程序;所述裝載器構(gòu)建與至少一個(gè)程序類對(duì)應(yīng)的至少一個(gè)散列表,所述裝載器利用所述類的至少一個(gè)方法的至少一個(gè)被散列方法特征構(gòu)建所述散列表;和解釋器用一散列表查找代碼配置來(lái)搜索屬于一給定程序類的至少一個(gè)給定方法,所述散列表查找代碼配置為與所述給定方法對(duì)應(yīng)的一個(gè)散列表入口搜索所述被散列方法表。2.按照權(quán)利要求1的系統(tǒng),其中所述被散列方法特征是通過(guò)將一散列函數(shù)用于所述類的所述方法一個(gè)特征得到的。3.按照權(quán)利要求2的系統(tǒng),其中所述散列表包括;至少一個(gè)散列表索引,它對(duì)應(yīng)于所述被散列方法特征;至少一個(gè)方法標(biāo)志位;和至少一個(gè)指針,它用于所述類的所述方法的定義。4.按照權(quán)利要求3的系統(tǒng),其中所述散列表還包括一沖突列表,它用來(lái)處理與所述散列表的一個(gè)公共所述索引對(duì)應(yīng)的多個(gè)被散列方法特征。5.按照權(quán)利要求4的系統(tǒng),其中所述裝載器包括一用來(lái)更新所述沖突列表的沖突處理器。6.按照權(quán)利要求5的系統(tǒng),其中所述沖突處理器被優(yōu)化為能夠處理一些沖突的情況,這些情況中,多個(gè)被散列方法特征對(duì)應(yīng)于所述散列表的一個(gè)公共所述索引。7.按照權(quán)利要求6的系統(tǒng),其中當(dāng)所述散列表查找代碼配置不能找到與所述給定方法的所述散列表入口的位置時(shí),所述散列表查找代碼配置搜索所述類的所述沖突列表。8.按照權(quán)利要求7的系統(tǒng),其中當(dāng)所述散列表查找代碼配置在所述沖突列表中不能找到與所述給定方法對(duì)應(yīng)的所述散列表入口的位置時(shí),所述散列表查找代碼配置搜索所述類的一個(gè)超類。9.按照權(quán)利要求1的系統(tǒng),其中所述虛擬機(jī)是一千字節(jié)虛擬機(jī)(KVM),它在與一電子設(shè)備有關(guān)的存儲(chǔ)環(huán)境中運(yùn)行,所述解釋器是一字節(jié)碼解釋器。10.按照權(quán)利要求1的系統(tǒng),其中所述虛擬機(jī)是一JAVA虛擬機(jī)(JVM)。11.按照權(quán)利要求1的系統(tǒng),其中所述散列表需要有關(guān)最佳的存儲(chǔ)容量。12.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的系統(tǒng),該系統(tǒng)包括一虛擬機(jī),它有一解釋器,所述解釋器對(duì)第一接收對(duì)象起作用;一高速緩沖存儲(chǔ)器,它與所述解釋器相關(guān),所述高速緩沖存儲(chǔ)器包括至少一個(gè)存儲(chǔ)高速緩存入口,所述高速緩存入口存儲(chǔ)指向第二接收對(duì)象的至少一個(gè)第一鏈接和指向一方法的第二鏈接;和當(dāng)所述第一接收對(duì)象與通過(guò)存儲(chǔ)于所述高速緩存入口中的所述第一鏈接訪問(wèn)的所述第二接收對(duì)象相匹配時(shí),所述解釋器利用所述高速緩沖存儲(chǔ)器中的所述入口,通過(guò)所述第二鏈接直接訪問(wèn)所述方法。13.按照權(quán)利要求12的系統(tǒng),其中當(dāng)所述第一接收對(duì)象不與通過(guò)存儲(chǔ)在所述高速緩存入口中的所述第一鏈接訪問(wèn)的所述第二接收對(duì)象相匹配時(shí),所述解釋器對(duì)一方法表進(jìn)行查找,以搜索所述方法。14.按照權(quán)利要求12的系統(tǒng),其中所述解釋器包括一高速緩存處理模塊,它用來(lái)使所述第一接收對(duì)象與所述第二接收對(duì)象相匹配。15.按照權(quán)利要求14的系統(tǒng),其中當(dāng)?shù)谝活惻c通過(guò)存儲(chǔ)在所述高速緩存入口中的所述第一鏈接訪問(wèn)的所述第二接收對(duì)象的所述第二類相匹配時(shí),所述高速緩存處理模塊通過(guò)所述第二鏈接直接訪問(wèn)所述方法,所述第一接收對(duì)象是所述第一類的一個(gè)實(shí)例。16.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的系統(tǒng),該系統(tǒng)包括一虛擬機(jī),它有一線程模型,該線程模型用來(lái)執(zhí)行有至少一個(gè)類的程序,所述類具有至少一個(gè)對(duì)象;對(duì)該對(duì)象起作用的所述線程模型的至少兩個(gè)線程,所述線程模型利用一深度水平(deeplevel)控制所述對(duì)象的鎖定,從而控制所述線程對(duì)所述對(duì)象的訪問(wèn),其中所述深度水平具有至少兩個(gè)不同的鎖定狀態(tài)。17.按照權(quán)利要求16的系統(tǒng),其中第一深度水平代表一個(gè)簡(jiǎn)單鎖定狀態(tài)。18.按照權(quán)利要求17的系統(tǒng),其中所述第二深度水平代表一個(gè)擴(kuò)展鎖定狀態(tài)。19.按照權(quán)利要求18的系統(tǒng),其中所述深度水平中的變化產(chǎn)生所述簡(jiǎn)單鎖定狀態(tài)與所述擴(kuò)展鎖定狀態(tài)之間的轉(zhuǎn)換。20.一種執(zhí)行一個(gè)程序的基于計(jì)算機(jī)平臺(tái)的虛擬機(jī),該程序具有至少一個(gè)類,該類具有至少一個(gè)方法,該虛擬機(jī)包括一裝載器,它采用一個(gè)散列表和一個(gè)散列表查找代碼結(jié)構(gòu)來(lái)搜索對(duì)該類的一個(gè)對(duì)象起作用的方法;一解釋器,它用來(lái)執(zhí)行所述裝載器裝入的方法,一高速緩沖存儲(chǔ)器與所述解釋器相關(guān),所述高速緩沖存儲(chǔ)器由至少一個(gè)高速緩存入口組成,所述高速緩存入口包括至少一個(gè)指向該對(duì)象的鏈接;和所述解釋器使用的一個(gè)線程模型,所述線程模型的至少兩個(gè)線程對(duì)該對(duì)象起作用,所述線程模型用一深度水平控制該對(duì)象的鎖定,其中深度水平中的變化產(chǎn)生至少兩個(gè)不同鎖定狀態(tài)之間的轉(zhuǎn)換。21.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的方法,該方法包括用一裝載器將該程序裝入一虛擬機(jī)內(nèi);構(gòu)建與該程序的至少一個(gè)類對(duì)應(yīng)的至少一個(gè)散列表;用所述類的至少一個(gè)方法的至少一個(gè)被散列方法特征來(lái)構(gòu)建所述散列表;和用一散列表查找代碼配置來(lái)解釋所裝入的所述程序,以搜索屬于該程序一個(gè)給定類的至少一個(gè)給定方法。22.按照權(quán)利要求21的方法,其中構(gòu)建步驟還包括將一散列函數(shù)用于所述類的所述方法的一個(gè)特征,以得到至少一個(gè)被散列方法特征。23.按照權(quán)利要求21的方法,其中解釋步驟還包括為與所述給定方法對(duì)應(yīng)的一個(gè)散列表入口搜索所述被散列方法表。24.按照權(quán)利要求21的方法,其中構(gòu)建步驟還包括創(chuàng)建一個(gè)沖突列表,用以處理與所述散列表的一個(gè)公共索引對(duì)應(yīng)的多個(gè)被散列方法特征。25.按照權(quán)利要求24的方法,其中解釋步驟還包括當(dāng)所述散列表查找代碼配置無(wú)法找到與所述給定方法對(duì)應(yīng)的所述散列表中一入口的位置時(shí),搜索所述類的所述沖突列表。26.按照權(quán)利要求25的方法,還包括優(yōu)化對(duì)所述沖突列表的搜索。27.按照權(quán)利要求25的方法,還包括當(dāng)所述散列表查找代碼配置無(wú)法在所述沖突列表中找到與所述給定方法對(duì)應(yīng)的所述散列表入口的位置時(shí),搜索所述類的一個(gè)超類,其中所述類與所述超類有關(guān)。28.按照權(quán)利要求21的方法,還包括優(yōu)化所述散列表的尺寸。29.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的方法,該方法包括用一虛擬機(jī)處理一方法調(diào)用,所述虛擬機(jī)對(duì)第一接收對(duì)象起作用;存儲(chǔ)指向第二接收對(duì)象的至少一個(gè)第一鏈接和指向一方法的至少一個(gè)第二鏈接;使所述第一接收對(duì)象與所述第二接收對(duì)象相匹配;和當(dāng)所述第一接收對(duì)象與所述第二接收對(duì)象之間成功匹配時(shí),通過(guò)所述第二鏈接直接訪問(wèn)所述方法。30.按照權(quán)利要求29的方法,還包括當(dāng)所述第一接收對(duì)象不能與通過(guò)存儲(chǔ)在所述高速緩存入口中的所述第一鏈接訪問(wèn)的所述第二接收對(duì)象相匹配時(shí),在一方法表中進(jìn)行查找,以搜索所述方法。31.一種用來(lái)提高至少一個(gè)程序執(zhí)行速度的基于計(jì)算機(jī)平臺(tái)的方法,該系統(tǒng)包括在一虛擬機(jī)中提供一線程模型,用以執(zhí)行具有至少一個(gè)類的程序,所述類具有至少一個(gè)對(duì)象;利用一深度水平控制所述線程模型對(duì)所述對(duì)象的鎖定,用以控制所述線程模型的至少兩個(gè)線程對(duì)所述對(duì)象的訪問(wèn),其中所述深度水平具有至少兩個(gè)不同的鎖定狀態(tài)。32.按照權(quán)利要求31的方法,還包括用第一深度水平代表一簡(jiǎn)單鎖定狀態(tài)。33.按照權(quán)利要求32的系統(tǒng),還包括用所述第二深度水平代表一擴(kuò)展鎖定狀態(tài)。34.按照權(quán)利要求33的方法,還包括用所述深度水平中的變化,在所述簡(jiǎn)單鎖定狀態(tài)與所述擴(kuò)展鎖定狀態(tài)之間產(chǎn)生轉(zhuǎn)換。全文摘要一種基于計(jì)算機(jī)平臺(tái)的系統(tǒng)通過(guò)提高方法調(diào)用的速度來(lái)提高代碼執(zhí)行速度。一虛擬機(jī)包括一裝載器、一解釋器和一線程管理器。裝載器利用方法特征構(gòu)建一散列表,解釋器搜索該散列表以找到各方法的位置。解釋器利用有一指向一接收器的指針的方法調(diào)用高速緩沖存儲(chǔ)器來(lái)提高代碼運(yùn)行速度。線程管理器用一深度水平來(lái)提高鎖定狀態(tài)轉(zhuǎn)換的速度。文檔編號(hào)G06F9/455GK1495608SQ0313746公開(kāi)日2004年5月12日申請(qǐng)日期2003年6月24日優(yōu)先權(quán)日2002年8月22日發(fā)明者莫拉德·德巴比,那蒂亞·塔烏比,薩米·佐阿,莫拉德·伊里歐,拉米亞·凱塔里,哈姆蒂·雅夏歐,伊里歐,凱塔里,塔烏比,雅夏歐,佐阿,莫拉德德巴比申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社