JP2014002790A - 高速パッチベースメソッドコール - Google Patents
高速パッチベースメソッドコール Download PDFInfo
- Publication number
- JP2014002790A JP2014002790A JP2013186387A JP2013186387A JP2014002790A JP 2014002790 A JP2014002790 A JP 2014002790A JP 2013186387 A JP2013186387 A JP 2013186387A JP 2013186387 A JP2013186387 A JP 2013186387A JP 2014002790 A JP2014002790 A JP 2014002790A
- Authority
- JP
- Japan
- Prior art keywords
- target
- code
- state
- target method
- call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 681
- 230000008859 change Effects 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000007246 mechanism Effects 0.000 abstract description 6
- 230000003068 static effect Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 239000004020 conductor Substances 0.000 description 3
- 239000003292 glue Substances 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
Abstract
【解決手段】コンパイルされているコールを行うメソッドからターゲットメソッドの高速の呼出しを与えるパッチベースメカニズムが提供される。コールを行うメソッドに対するコードが格納部内に格納される。コールを行うメソッドに対するコードはターゲットメソッドを呼出す命令を有しており、該命令はパラメータを有している。ターゲットメソッドにより経験される現在の状態から新たな状態への状態変化に応答して、該パラメータは第一値から第二値へ修正され、該第二値は新たな状態においてのターゲットメソッドの実行を容易化させるための正しいアドレスを表わしている。従って、ターゲットメソッドを呼出すための命令におけるパラメータは、常に、ターゲットメソッドの正しい状態を反映しており、そのことは該命令が実行される場合にターゲットメソッドの高速の呼出しを提供する。
【選択図】図1
Description
ターゲットメソッドを呼出すこのアプローチは、パイプライン型アーキテクチャを有するコンピュータプロセッサに関し著しい低速化を発生する場合がある。このようなプロセッサにおいては、該プロセッサがデコードし、実行し、又は前の命令からの結果を書込んでいる間に、その後の命令をルックフォワードし且つプリフェッチするためにパイプラインが使用される。このように、パイプライン型プロセッサは幾つかの命令を並列的に処理し且つ実行している場合があり、例えば、第一命令の結果がメモリへ又はレジスタへ書込まれている間に、該プロセッサが第二命令を実行し、第三命令をデコードし、且つ第四命令をフェッチする。ターゲットメソッドを呼出す上のアプローチにおいて、コールを行うメソッドがコンパイルされる時におけるターゲットメソッドのアドレスの不確実性は、プロセッサをしてコールを行うメソッドの実行期間中に誤った命令をプリフェッチさせる場合があり、そのことは該プロセッサをしてそのパイプラインをフラッシュさせることとなる。然しながら、プロセッサパイプラインをフラッシュさせることはプロセッササイクルを浪費させ且つ実行の低速化を発生させる。
(2)非仮想/静的:コンパイルされていない
(3)仮想:オーバーライドされており且つコンパイルされている
(4)仮想:オーバーライドされており且つコンパイルされていない
(5)仮想:オーバーライドされておらず且つコンパイルされている
(6)仮想:オーバーライドされておらず且つコンパイルされていない
該命令と関連しているパラメータは、その現在の状態におけるターゲットメソッドの実行を容易化するために常に正しいアドレスを反映する。ターゲットメソッドが状態(1)又は(5)にある場合には、該パラメータは、そのターゲットメソッドの実行が開始するコードキャッシュ内のアドレスを表わす。ターゲットメソッドが状態(2)にある場合には、該パラメータはターゲットメソッドのアンコンパイルされているバージョンをしてインタプリタにより実行させる1組のコードを参照する。ターゲットメソッドが状態(3),(4)又は(6)にある場合には、該パラメータは仮想メソッドを呼出すための1組のコードを参照する。
1実施例においては、本明細書に記載する高速のパッチベースメソッド呼出し用の技術は、又、コールを行うメソッドの実行可能なコードから仮想ターゲットメソッドに対してコールをパッチングさせる。この実施例においては、直接的ブランチアンドリンク命令がコールを行うメソッドの実行可能なコードにおいて使用されて仮想ターゲットメソッドを呼出す。本明細書に記載する該技術に従って、仮想ターゲットメソッドを呼出す直接的ブランチアンドリンク命令は、ターゲットメソッドがそのコンパイル状態(例えば、コンパイルされているか又はアンコンパイルされている)又はそのオーバーライド状態(例えば、オーバーライドされているか又はオーバーライドされていない)のうちの少なくとも1つ又はそれ以上における変化を経験する場合にパッチさせることが可能である。直接的ブランチアンドリンク命令は、該命令のパラメータを修正することによりパッチ(patch)させることが可能であり、そのパラメータは仮想ターゲットメソッドの現在の状態を反映する態様でセットされ且つ修正される。ターゲットメソッドが少なくとも1つのその他のメソッドにより現在オーバーライドされている場合には、該パラメータの値は仮想メソッドを呼出すことが可能な1組のコードを参照するためにセットされる。仮想メソッドを呼出す1組のコードは、実行されると、実行されるべきターゲットメソッド(例えば、オリジナルのターゲットメソッド又はオーバーライドメソッド)の識別を決定し且つその識別されたメソッドの実行を容易化させる。例えば、直接的ブランチアンドリンク命令が実行される場合にその識別されたターゲットメソッドがデコンパイルされる場合には、仮想メソッドを呼出す該1組のコードは、実行される場合に、ターゲットメソッドをしてインタプリタにより実行させる。その識別されたターゲットメソッドがコンパイルされ且つコードキャッシュ内に格納されると、仮想メソッドを呼出す該1組のコードは、実行される場合に、実行をコードキャッシュ内のターゲットメソッドの実行可能なコードの始めへ転送させる。仮想ターゲットメソッドがその他のメソッドにより現在オーバーライドされておらず且つ現在コンパイルされており且つコードキャッシュ内に格納されている場合には、該パラメータの値はコードキャッシュ内のターゲットメソッドの実行可能なコードの始めを表わす。仮想ターゲットメソッドがそのコンパイル状態及び/又はそのオーバーライド状態のいずれかにおける状態変化を経験することに応答して、直接的ブランチアンドリンク命令は、上述した如くターゲットメソッドの現在の状態を反映させるためにそのパラメータの値を修正することによりパッチさせることが可能である。
本明細書に記載する高速のパッチベース(patch−based)メソッド呼出し(method invocation)用の技術は、間接参照の代わりにコンパイルされているコールを行うメソッドからの直接的なメソッドコール(method call)を利用する。異なるプロセッサアーキテクチャは、これらに制限されるものではないが、ブランチアンドリンク命令、ジャンプ命令、及びジャンプアンドリンク命令を包含する直接的なコールを容易化させるために使用することが可能な異なる命令又はタイプの命令を与える場合がある。従って、コンパイルされているコールを行うメソッドからの直接的なメソッドコールを容易化させるために以下に記載する命令は、制限的な意味ではなく例示的なものとして理解されるべきである。
本明細書に記載する高速のパッチベースメソッド呼出し用の技術は、コールを行うメソッドの実行可能なコードから非仮想及び静的ターゲットメソッドの両方に対してコールをパッチさせる。本明細書に記載する技術は非仮想及び静的ターゲットメソッドの両方に対して同一の態様で適用可能である。何故ならば、非仮想及び静的ターゲットメソッドの両方は、コールを行うメソッドがコンパイルされる時に決定することが可能だからである。
図2Aを参照すると、コードキャッシュ105が図示されている。コールを行うメソッド202及びターゲットメソッド208の実行可能なコードはコードキャッシュ105内に格納されている。省略記号211により示されるように、1つ又はそれ以上のその他のコンパイルされているメソッド又はその他の実行可能なコードもコードキャッシュ105内に格納させることが可能である。コールを行うメソッド202はターゲットメソッド208を呼出すための直接的ブランチアンドリンク命令204を有している。命令204はコードキャッシュ105内のターゲットメソッド208の実行可能なコードの始めを参照するパラメータ206を有している。
コールを行うメソッド202がコンパイルされた後に、パラメータ206の値は、ターゲットメソッドが丁度デコンパイルされ且つコードキャッシュ105から除去された場合の状態変化に応答してinvokeInterpreterコード210を参照するためにセットさせることが可能である。パラメータ206の値は、又、コールを行うメソッド202がコンパイルされている時にターゲットメソッド208がコンパイルされていない状態にある場合にinvokeInterpreterコード210を参照するためにセットさせることが可能である。
1実施例においては、本明細書に記載する高速のパッチベースメソッド呼出し用の技術をインプリメントすることは、複数個のコンパイルされているコールを行うメソッドからターゲットメソッドへの直接的な参照をトラッキング即ち追跡することが関与する。コンパイルされているコールを行うメソッドからターゲットメソッドへの直接参照はターゲットメソッドを呼び出すためのコンパイルされているコールを行うメソッドの実行可能なコードにおいて使用される命令のパラメータとすることが可能である。該直接参照は、ターゲットメソッドとコンパイルされているコールを行うメソッドにおける特定の命令の位置との間の関連性としてメモリ又はその他の格納部内に記録させることが可能である。
本明細書に記載する高速のパッチベースメソッド呼出し用の技術は、コールを行うメソッドの実行可能なコードから仮想ターゲットメソッドに対してコールをパッチさせる。オブジェクト指向型プログラミングにおいては、仮想メソッドはベースクラスにおけるメソッドであって、そのベースクラスのサブクラスにおいてインプリメントされている別のメソッドによりオーバーライドされることが許可されるメソッドである。典型的に、仮想ターゲットメソッドのアイデンティティ即ち識別は、コールを行うメソッドが実行されるまで不知である。何故ならば、呼出しを行うオブジェクトのインスタンスタイプ(従って、呼出されるべきオーバーライドメソッドの識別)はランタイムにおいてのみ決定することが可能だからである。
1実施例においては、本明細書に記載する仮想メソッドコールの高速のパッチベースメソッド呼出し用の技術をインプリメントすることは複数個のコンパイルされているコールを行うメソッドから仮想ターゲットメソッドへの直接参照をトラッキング即ち追跡することが関与する。更に、該技術をインプリメントすることは、又、1つ又はそれ以上のその他のメソッドによる仮想ターゲットメソッドのオーバーライドをトラッキングすることが関与する。
1実施例において、オペレーティングシステム102、JVM104、インタプリタ106及びDAC108は1個又はそれ以上のプロセッサにより実行される命令の組の形態をとる。図5はこれらの組の命令を実行することが可能なコンピュータシステム500のブロック図である。コンピュータシステム500は情報交換を容易とするためのバス502、及び情報を処理するためにバス502と結合されている1個又はそれ以上のプロセッサ504を包含している。コンピュータシステム500は、又、情報及びプロセッサ504により実行されるべき命令を格納するためにバス502へ結合されているランダムアクセスメモリ(RAM)又はその他のダイナミック格納装置等のメインメモリ506を包含している。メインメモリ506は、又、プロセッサ504による命令の実行期間中に、一時的な変数又はその他の中間情報を格納するために使用することが可能である。コンピュータシステム500は、更に、静的情報及びプロセッサ504用の命令を格納するためにバス502へ結合されているリードオンリメモリ(ROM)508又はその他の静的格納装置を包含することが可能である。磁気ディスク又は光学ディスク等の格納装置510が情報及び命令を格納するために設けられ且つバス502へ結合されている。
102 オペレーティングシステム
104 JVM
105 コードキャッシュ
106 インタプリタ
108 動的適応型コンパイラ(DAC)
202 コールを行うメソッド
204 直接的ブランチアンドリンク命令
206 パラメータ
208 ターゲットメソッド
210 1組のコード
211 省略記号
Claims (21)
- オブジェクト指向型クラスのインスタンスに動的に結合しかつインタプリタ的に実行することができる仮想マシンを動作させるためのコンピュータにより実現される方法であって、
コールを行うメソッドに対するコードを格納部内に格納するステップであって、該コールを行うメソッドに対する該コードはターゲットメソッドに直接ブランチさせる命令を有しており、該命令はパラメータを有している、ステップと;
現在の状態から該ターゲットメソッドにより経験される新たな状態への状態変化に応答して、第一値から第二値へ該パラメータを修正するステップと;
を有し、
該状態変化は:
コンパイルされるかアンコンパイルさるかという、該ターゲットメソッドのコンパイルの変化;及び/又は、
該ターゲットメソッドのオーバーライド状態の変化、
を含むことを特徴とする方法。 - 請求項1において、該現在の状態がアンコンパイルされた状態であり、且つ該新たな状態が、該ターゲットメソッドが実行可能なコードにコンパイルされたコンパイルされた状態であり、且つ該パラメータの該第二値が該ターゲットメソッドの該実行可能なコードへの参照を有していることを特徴とする方法。
- 請求項1又は2において、該現在の状態が、該ターゲットメソッドが実行可能なコードにコンパイルされているコンパイルされた状態であり、且つ該新たな状態がアンコンパイルされた状態であり、且つ該パラメータの該第二値が該ターゲットメソッドのアンコンパイルされたバージョンをしてインタプリタ的に実行させる1組のコードに対する参照を有していることを特徴とする方法。
- 請求項1ないし3のうちいずれか1項において、更に、
該ターゲットメソッドにより経験される該状態変化の前に、該ターゲットメソッドと該ターゲットメソッドに直接ブランチさせる該コールを行うメソッドのコードにおける命令との間の関連性を記録する、
ことを特徴とする方法。 - 請求項4において、該パラメータを修正するステップは:
該状態変化に応答して修正されることが必要な特定の命令として該命令を識別するように、該ターゲットメソッドと該命令との間の該関連性を使用するステップ、
を含むことを特徴とする方法。 - 請求項5において、
該コールを行うメソッドがデコンパイルされ且つ該格納部から除去されたか否かを決定するステップと;
該コールを行うメソッドがデコンパイルされたことの決定に応答して、該ターゲットメソッドと該命令との間の該関連性を除去するステップと;
を更に有することを特徴とする方法。 - 請求項1ないし6のうちいずれか1項において、
該コールを行うメソッドに対する該コードを該格納部内に格納するステップの前に:
該コールを行うメソッドに対する該コードを派生するために該コールを行うメソッドをコンパイルするステップと;
該ターゲットメソッドの該現在の状態が、該ターゲットメソッドが実行可能なコードにコンパイルされているコンパイルされた状態であるか否かを決定するステップと;
該ターゲットメソッドの該現在の状態が該コンパイルされた状態であることの決定に応答して、該パラメータを該ターゲットメソッドの該実行可能なコードに対する参照を有するように設定するステップと;
を更に有することを特徴とする方法。 - 請求項1ないし7のうちいずれか1項において、
該コールを行うメソッドに対する該コードを該格納部内に格納するステップの前に:
該コールを行うメソッドに対する該コードを派生するために該コールを行うメソッドをコンパイルするステップと;
該ターゲットメソッドの該現在の状態がアンコンパイルされた状態であるか否かを決定するステップと;
該ターゲットメソッドの該現在の状態が該アンコンパイルされた状態であることの決定に応答して、該パラメータを、該ターゲットメソッドのアンコンパイルされたバージョンをしてインタプリタ的に実行させる1組のコードに対する参照を有するように設定するステップと;
を更に有することを特徴とする方法。 - 請求項1ないし8のうちいずれか1項において、
該ターゲットメソッドが仮想メソッドであり、
該現在の状態が、該ターゲットメソッドがいずれのオーバーライドメソッドによってもオーバーライドされることのない第一状態であり、且つ該新たな状態が該ターゲットメソッドが少なくとも1つのオーバーライドメソッドによりオーバーライドされる第二状態であり、かつ、
該パラメータの該第二値が仮想メソッドを呼出すための1組のコードに対する参照を有している、
ことを特徴とする方法。 - 請求項9において、
該ターゲットメソッドが該少なくとも1つのオーバーライドメソッドによりオーバーライドされる場合に第一情報を記録するステップと;
該ターゲットメソッドが該状態変化を経験したか否かを決定するために該第一情報を検査するステップと;
を更に有することを特徴とする方法。 - 請求項10において、
該第一情報が該ターゲットメソッドと関連しているメソッドブロック内に格納されるオーバーライドフラッグであり、
該第一情報を記録するステップは、該少なくとも1つのオーバーライドメソッドが実行のためにロードされる場合に該オーバーライドフラッグをセットするステップを含む、
ことを特徴とする方法。 - 請求項10において、
該第一情報が、該ターゲットメソッドと関連しているメソッドブロック内に格納されるオーバーライドカウントであり、
該第一情報を記録するステップは、該少なくとも1つのオーバーライドメソッドの各々が実行のためにロードされる場合に該オーバーライドカウントをインクリメントさせるステップを含む、
ことを特徴とする方法。 - 請求項1において、
該ターゲットメソッドが仮想メソッドであり、
請求項1の方法が、
該コールを行うメソッドに対する該コードを該格納部内に格納するステップの前に、
該コールを行うメソッドに対する該コードを派生するために該コールを行うメソッドをコンパイルするステップと;
該ターゲットメソッドの該現在の状態が該ターゲットメソッドがいずれのオーバーライドメソッドによってもオーバーライドされることのない第一状態であるか否かを決定するステップと;
該ターゲットメソッドの該現在の状態が該第一状態であることの決定に応答して、
該第一状態において該ターゲットメソッドが実行可能なコードにコンパイルされている場合には、該パラメータを該ターゲットメソッドの該実行可能なコードに対する第一参照を有するようにセットするステップと;
該第一状態において該ターゲットメソッドが実行可能なコードにコンパイルされていない場合には、該パラメータを仮想メソッドを呼出す1組のコードに対する第二参照を有するようにセットするステップと;
を更に有することを特徴とする方法。 - 請求項1において、
該ターゲットメソッドが仮想メソッドであり、
請求項1の方法が、該コールを行うメソッドに対する該コードを該格納部内に格納するステップの前に、
該コールを行うメソッドに対する該コードを派生するために該コールを行うメソッドをコンパイルするステップと;、
該ターゲットメソッドの該現在の状態が該ターゲットメソッドが少なくとも1つのオーバーライドメソッドによりオーバーライドされる第一状態であるか否かを決定ステップと;
該ターゲットメソッドの該現在の状態が該第一状態であることの決定に応答して、該パラメータを該命令が実行される場合に該ターゲットメソッド及び該少なくとも1つのオーバーライドメソッドのうちのどちら一方に直接ブランチすべきかを決定する1組のコードに対する第一参照を有するようにセットするステップと;
を更に有することを特徴とする方法。 - 請求項14において、該1組のコードが該コールを行うメソッドの該コード内に挿入されているインラインコードであることを特徴とする方法。
- 請求項1において、
該コールを行うメソッドが該ターゲットメソッドに直接ブランチする1つ又はそれ以上の命令を有する複数個のコールを行うメソッドのうちの特定のコールを行うメソッドであり、該1つ又はそれ以上の命令の各々が該パラメータを有しており、且つ該命令が該1つ又はそれ以上の命令のうちの特定の命令であり、
第一値から第二値へ該パラメータを修正するステップは、該1つ又はそれ以上の命令の各々における該パラメータを修正するステップを含む、
ことを特徴とする方法。 - 請求項1ないし16のうちいずれか1項において、該命令がブランチアンドリンクプロセッサ命令であることを特徴とする方法。
- 請求項1ないし17のうちいずれか1項において、該コールを行うメソッドを実行するステップを更に有し、該コールを行うメソッドを実行するステップは、該パラメータの該第一値及び該パラメータの該第二値のうちのいずれか1つに基づいて該命令を実行するステップを含むことを特徴とする方法。
- 請求項1ないし18のうちいずれか1項において、
該方法がオブジェクトメソッドをバイトコードから実行可能なコードへコンパイルするための動的適用型コンパイラを有する仮想マシンにおいて実現され、
該格納部が該仮想マシンに対して割当てられているメモリ内の領域であり、該メモリ内の領域が該動的適用型コンパイラによりコンパイルされた該オブジェクトメソッドを格納する形態とされている、
ことを特徴とする方法。 - 請求項19において、該仮想マシンがJAVA仮想マシンであることを特徴とする方法。
- コンピュータに、請求項1ないし20のうちいずれか1項記載の方法を実行させるためのプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/365,146 US8099724B2 (en) | 2006-02-28 | 2006-02-28 | Fast patch-based method calls |
US11/365146 | 2006-02-28 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007047989A Division JP2007234022A (ja) | 2006-02-28 | 2007-02-27 | 高速パッチベースメソッドコール |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014002790A true JP2014002790A (ja) | 2014-01-09 |
JP5845221B2 JP5845221B2 (ja) | 2016-01-20 |
Family
ID=38050212
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007047989A Pending JP2007234022A (ja) | 2006-02-28 | 2007-02-27 | 高速パッチベースメソッドコール |
JP2013186387A Active JP5845221B2 (ja) | 2006-02-28 | 2013-09-09 | 高速パッチベースメソッドコール |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007047989A Pending JP2007234022A (ja) | 2006-02-28 | 2007-02-27 | 高速パッチベースメソッドコール |
Country Status (6)
Country | Link |
---|---|
US (1) | US8099724B2 (ja) |
EP (1) | EP1826668B1 (ja) |
JP (2) | JP2007234022A (ja) |
CN (1) | CN101030149B (ja) |
AT (1) | ATE423346T1 (ja) |
DE (1) | DE602007000544D1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458670B2 (en) * | 2007-09-27 | 2013-06-04 | Symantec Corporation | Automatically adding bytecode to a software application to determine network communication information |
US8762952B2 (en) * | 2010-12-14 | 2014-06-24 | Bmc Software, Inc. | Recording method calls that led to an unforeseen problem |
EP2798470A4 (en) * | 2011-12-29 | 2015-07-15 | Intel Corp | PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION |
CN103443763B (zh) * | 2012-08-08 | 2016-10-05 | 英特尔公司 | 包含对重写虚拟函数的调用的支持的isa桥接 |
CN105335200B (zh) * | 2015-11-24 | 2019-05-07 | 小米科技有限责任公司 | 系统升级方法及装置 |
US10474446B2 (en) * | 2016-09-16 | 2019-11-12 | Bank Of America Corporation | Installation tool for adhering to enterprise requirements |
CN109710396B (zh) | 2017-10-26 | 2023-08-22 | 华为技术有限公司 | 一种信息采集及内存释放的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001154855A (ja) * | 1999-09-13 | 2001-06-08 | Matsushita Electric Ind Co Ltd | プログラム変換装置 |
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4970639A (en) * | 1988-05-20 | 1990-11-13 | International Business Machines Corporation | Virtual machine architecture independent program loader |
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US6151703A (en) * | 1996-05-20 | 2000-11-21 | Inprise Corporation | Development system with methods for just-in-time compilation of programs |
US6321323B1 (en) * | 1997-06-27 | 2001-11-20 | Sun Microsystems, Inc. | System and method for executing platform-independent code on a co-processor |
US6170083B1 (en) * | 1997-11-12 | 2001-01-02 | Intel Corporation | Method for performing dynamic optimization of computer code |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US6233725B1 (en) * | 1998-12-03 | 2001-05-15 | International Business Machines Corporation | Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine |
US6295642B1 (en) * | 1999-04-29 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for partial just in time compiling in a data processing system |
US6429860B1 (en) * | 1999-06-15 | 2002-08-06 | Visicomp, Inc. | Method and system for run-time visualization of the function and operation of a computer program |
US6721875B1 (en) * | 2000-02-22 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form |
US6779188B1 (en) * | 2000-09-28 | 2004-08-17 | International Business Machines Corporation | Apparatus and method for improved devirtualization of method calls |
US7032230B2 (en) * | 2001-08-27 | 2006-04-18 | International Business Machines Corporation | Efficient virtual function calls for compiled/interpreted environments |
US6934943B2 (en) * | 2001-10-18 | 2005-08-23 | Hewlett-Packard Development Company | Optimization of control transfers to dynamically loaded modules |
US6928536B2 (en) * | 2001-11-29 | 2005-08-09 | Hewlett-Packard Development Company, L.P. | Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching |
US6915513B2 (en) * | 2001-11-29 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically replacing code |
-
2006
- 2006-02-28 US US11/365,146 patent/US8099724B2/en active Active
-
2007
- 2007-02-27 EP EP07250802A patent/EP1826668B1/en active Active
- 2007-02-27 DE DE602007000544T patent/DE602007000544D1/de active Active
- 2007-02-27 AT AT07250802T patent/ATE423346T1/de not_active IP Right Cessation
- 2007-02-27 JP JP2007047989A patent/JP2007234022A/ja active Pending
- 2007-02-27 CN CN2007100799461A patent/CN101030149B/zh active Active
-
2013
- 2013-09-09 JP JP2013186387A patent/JP5845221B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
JP2001154855A (ja) * | 1999-09-13 | 2001-06-08 | Matsushita Electric Ind Co Ltd | プログラム変換装置 |
Also Published As
Publication number | Publication date |
---|---|
US8099724B2 (en) | 2012-01-17 |
US20070234311A1 (en) | 2007-10-04 |
JP5845221B2 (ja) | 2016-01-20 |
CN101030149A (zh) | 2007-09-05 |
DE602007000544D1 (de) | 2009-04-02 |
EP1826668B1 (en) | 2009-02-18 |
CN101030149B (zh) | 2012-10-17 |
ATE423346T1 (de) | 2009-03-15 |
EP1826668A1 (en) | 2007-08-29 |
JP2007234022A (ja) | 2007-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5845221B2 (ja) | 高速パッチベースメソッドコール | |
US11347489B2 (en) | Accessing a migrated member in an updated type | |
EP3314422B1 (en) | Extending a virtual machine instruction set architecture | |
US6286134B1 (en) | Instruction selection in a multi-platform environment | |
AU712005B2 (en) | System and method for runtime optimization of private variable function calls in a secure interpreter | |
US8352925B2 (en) | Mechanism for enabling a set of code intended for a first platform to be executed on a second platform | |
JP2010176688A (ja) | 仮想マシン環境におけるアプリケーション・プログラム・インタフェースの最適化の方法および装置 | |
JP2003196107A (ja) | エミュレートされるコードとネイティブコードとを統合するシステムおよび方法 | |
JP2009059349A (ja) | 共用型ジャバjarファイル | |
US8291393B2 (en) | Just-in-time compiler support for interruptible code | |
US10853110B2 (en) | Constructor accessibility checks for deserialization | |
US11726786B2 (en) | Lazy copying of runtime-managed stack frames | |
JP2007141248A (ja) | ジャバ言語におけるメソッド参照のサポート | |
US6904516B2 (en) | Mechanism for enabling efficient execution of an instruction | |
US11803487B2 (en) | Transitioning between thread-confined memory segment views and shared memory segment views | |
US7895603B1 (en) | Mechanism for enabling virtual method dispatch structures to be created on an as-needed basis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140930 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20141225 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150122 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150616 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151015 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20151022 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20151110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5845221 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |