JPH11237989A - 休止中にバイトコード最適化を実行する方法及び装置 - Google Patents

休止中にバイトコード最適化を実行する方法及び装置

Info

Publication number
JPH11237989A
JPH11237989A JP10319738A JP31973898A JPH11237989A JP H11237989 A JPH11237989 A JP H11237989A JP 10319738 A JP10319738 A JP 10319738A JP 31973898 A JP31973898 A JP 31973898A JP H11237989 A JPH11237989 A JP H11237989A
Authority
JP
Japan
Prior art keywords
methods
list
compilation
computer program
computer
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.)
Withdrawn
Application number
JP10319738A
Other languages
English (en)
Inventor
Urs Holzle
ホルツル ウールズ
Lars Bak
バク ラーズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH11237989A publication Critical patent/JPH11237989A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 コンピュータプログラムにおけるメソッドの
動的コンパイルのみかけ上の効率を改善する。 【解決手段】 コンピュータプログラムの実行における
アイドル期間中にメソッドに付随するバイトコードを動
的コンパイルする方法および装置が開示される。ここで
述べる方法は、解釈済バイトコードおよびコンパイル済
バイトコードの双方を実行するように構成されたコンピ
ュータシステム内で使用するのに特に適している。一部
の態様では、動的コンパイルすべきメソッドが一つ以上
のリスト中で参照される。このリストは、最高優先順位
メソッドのコンパイルを最初に促進するように優先順位
付けすることができる。ある態様では、一対のコンパイ
ルリストが用意される。これらのコンパイルリストのう
ちの最初の一つはコンピュータプログラムの処理に先立
って生成され、他方はコンピュータプログラムの処理中
に生成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般にソフトウェ
アアプリケーションの実行を最適化する方法および装置
に関する。本発明は、特に、コンピュータプログラムの
全体的実行における休止中にコンパイルや他のアクティ
ビティを実行してコンピュータシステム資源の使用を最
適化する方法および装置に関する。
【0002】
【従来の技術】コンピュータシステムは、しばしばコン
ピュータシステムのネットワーク(例えば、ローカルエ
リアネットワークやイントラネットやインターネット)
を介して連結されており、これらのコンピュータシステ
ムがソフトウェアアプリケーションなどの資源を共有で
きるようになっている。一般に、ソフトウェアアプリケ
ーション、あるいはコンピュータプログラムは、異なる
コンピュータシステムに異なるフォーマットで配信され
ることがある。これは、各コンピュータシステムが、ソ
フトウェアアプリケーションが特定のフォーマットであ
ることを要求するという事実によるものである。この他
に、一つの形式のコンピュータプログラムを多くの異な
るコンピュータシステムが利用できるようにするため
に、コンピュータプログラムが、機械独立形式、すなわ
ちバイトコードとしてコンピュータシステムに配信され
る場合もある。
【0003】コンピュータプログラムを機械独立形式で
配信すると、プログラムを直接解釈したり、あるいはプ
ログラムを機械依存コード、すなわち「マシンコード」
に翻訳することができる。直接解釈されるプログラム
は、マシンコードに翻訳されるプログラムよりもコンピ
ュータシステム内で占めるスペースが少ない。しかしな
がら、直接解釈されるプログラムは、たいていの場合、
マシンコードに翻訳されるプログラムよりも実行速度が
遅い。このため、コンピュータプログラムをマシンコー
ドに翻訳する代わりにコンピュータプログラムを直接解
釈するかどうかは、多くの場合、実行速度に対するスペ
ースの相対的な重要度に基づいて判断される。
【0004】
【発明が解決しようとする課題】コンパイルへの一つの
アプローチは、アクティブに動作中のプログラム内のメ
ソッドが実行のために最初に呼び出されるときにそのメ
ソッドをコンパイルすることである。このアプローチ
は、しばしば動的コンパイルまたは「実行時(runtim
e)」コンパイルと呼ばれる。動的コンパイルに伴う一
つの問題点は、プログラムに伴うコンパイルオーバヘッ
ドが過大になる場合があることである。すなわち、比較
的大きな数のメソッドをほぼ同時にコンパイルしなけれ
ばならない場合、プログラムのコンパイルに伴うオーバ
ヘッドが、プログラムの全体的な実行に悪影響を与える
レベルとなる場合がある。一般に、コンパイルにシステ
ム資源を使用しすぎると、プログラムの実行が低効率で
遅くなることがある。更に、アクティブプログラム実行
中にメソッドをコンパイルしているコンパイラによって
消費された時間は、ユーザから見えるような休止をプロ
グラムの実行に導く可能性がある。例えば、プログラム
のコンパイルオーバヘッドが高い間にユーザがプログラ
ムにコマンドを入力すると、ユーザ入力に対する応答に
遅延が生じる場合がある。このような応答の遅延は、ユ
ーザを苛立たせることがある。従って、コンピュータプ
ログラムにおけるメソッドの動的コンパイルの外見上の
効率を改善する機構が望まれる。
【0005】
【課題を解決するための手段】本発明の上記の目的やそ
の他の目的を達成するため、コンピュータプログラムの
実行におけるアイドル期間中にメソッドを動的コンパイ
ルする方法および装置を開示する。ここに記載する方法
は、解釈済バイトコードおよびコンパイル済バイトコー
ドの双方を実行するように構成されたコンピュータシス
テムで使用するのに特に適している。本発明の一態様に
よれば、コンピュータプログラムの処理におけるアイド
ル期間または低オーバヘッド期間が識別される。この
後、コンパイル用に識別された一つ以上のメソッドがこ
の識別されたアイドル期間中に動的コンパイルされる。
一部の態様では、動的コンパイルされるべきメソッドが
一つ以上のリスト中で参照される。これらのリストは、
最も高い優先順位のメソッドのコンパイルを最初に促進
するように優先順位付けされていてもよい。ある態様で
は、一対のコンパイルリストが設けられる。これらのコ
ンパイルリストの最初の一つは、コンピュータプログラ
ムを処理する前に作成されるデータベースリストであ
り、他方は、コンピュータプログラムの処理中に作成さ
れる実行リストである。
【0006】ある態様では、メソッドのコンパイル中に
割込みが受信されると、所定の時間にわたってコンパイ
ルの継続が可能になる。コンパイルがこの所定時間中に
完了しない場合、コンパイルは打ち切られる。
【0007】本発明の更に別の態様では、コンピュータ
プログラムの処理における低アクティビティ期間中にバ
イトコード化メソッドを動的コンパイルするコンピュー
タシステムは、低アクティビティ期間を識別する機構を
含んでいる。このシステムは、低アクティビティ期間中
のコンパイルのためのメソッドを識別する機構を更に含
んでいる。コンパイラは、低アクティビティ期間中に識
別済メソッドのコンパイルを初期化するように構成され
ている。ある態様では、このシステムは、識別済メソッ
ドのコンパイル中に受信された割込み信号を処理するよ
うに構成された割込みプロセッサ、および必要なときに
メソッドのコンパイルを打ち切るアボート機構も含んで
いる。
【0008】本発明の上記および他の利点は、以下の詳
細な説明を読み、種々の添付図面を検討することにより
明らかになる。
【0009】本発明は、添付の図面とともに以下の説明
を参照することによって最も良く理解することができ
る。
【0010】
【発明の実施の形態】上述のように、プログラムがアク
ティブに動作している間にバイトコード化プログラムに
伴うメソッドを動的コンパイルすることにより、プログ
ラムの動作が非効率的になる場合がある。この非効率性
は、コンパイラによって利用可能なコンピュータシステ
ム資源の過度の使用、すなわちコンパイルオーバヘッド
という結果を生み出すことがある。アクティブプログラ
ム実行中にメソッドを動的コンパイルしているコンパイ
ラによって費やされる時間は、プログラムの実行に遅延
を導く場合がある。このような遅延をユーザが知覚でき
る場合、特に遅延の長さが比較的長い(例えば、遅延の
長さが約200ミリ秒を超える)場合、このような遅延
は容認できないものとみなされることがある。
【0011】このようなプログラムの性能の改善に対す
る一つのアプローチは、解釈済バイトコードおよび動的
コンパイル済バイトコードの双方の混在を可能にすると
である。このようなシステムでは、特定のメソッドのコ
ンパイルをいつ行うのが効率的かに関する判断を依然と
して行わなければならない。本発明では、コンパイルオ
ーバヘッドが比較的高いときにコンピュータプログラム
中のメソッドの動的コンパイルを遅延させる方法および
装置が記載される。特に、コンパイルオーバヘッドが高
すぎると判断される場合、プログラムの全体処理に比較
的低いアクティビティの期間が存在するようになるま
で、メソッドの少なくとも一部の動的コンパイルを遅延
させることができる。
【0012】コンパイルが予定されている少なくとも一
部のバイトコード化メソッドの動的コンパイルを遅延さ
せることにより、コンピュータ資源をより効率良く利用
することができる。コンピュータプログラムが処理中に
おいて本質的にインアクティブである間、例えばコンピ
ュータプログラムがユーザからの入力を待っている間ア
イドルであるとき、プログラムの実行に伴う全体資源利
用オーバヘッドは、一般に比較的低い。このような低ア
クティビティ期間中は、コンパイルすべきメソッドであ
ると事前に識別されたメソッドのコンパイルを、利用可
能なシステム資源を用いて実行することができる。コン
ピュータプログラムの計算オーバヘッドが低い間にコン
パイルを実行することは、システム資源全体の効率的な
使用を見越しており、通常、ユーザにとって目立つ遅延
を生じることはない。
【0013】最初に図1を参照し、バイトコードの動的
コンパイルを可能にするコンピュータシステムを本発明
の一実施形態に従って説明する。バイトコード144
は、実行時にコンピュータシステム146への入力とし
て与えられる。バイトコード144は、一般にコンピュ
ータプログラムとして編成することができるが、通常
は、メソッドなどのパーズ可能セグメント、またはルー
チンに配列されている。ある実施形態では、バイトコー
ド144は、仮想マシン内の翻訳時環境(compile-time
environment)によって同じ仮想マシン内の実行時環境
(run-time environment)、例えばコンピュータシステ
ム146に提供することができる。本発明を実施可能な
一つの適切な仮想マシンについは、図6を参照しながら
詳細に後述する。
【0014】バイトコード144がコンピュータシステ
ム146に与えられた場合、バイトコード144をイン
タープリタ148によって処理することができる。ある
いは、バイトコード144をコンパイラ150によって
コンパイルして、コンパイル済バイトコード152を作
成してもよい。一般に、バイトコード144は、処理の
ためにインタープリタ148およびコンパイラ150の
双方にほぼ同時に入力されることがある。
【0015】メソッドの各呼出しでは、メソッドがコン
パイルされない場合、そのメソッドに伴うバイトコード
144がインタープリタ148を用いて解釈される。あ
る実施形態では、一つのメソッドが解釈される回数の計
測器が維持される。このような計測器は、各解釈済メソ
ッドに含まれるカウンタであってメソッドが解釈される
度に増分されるカウンタ(例えば呼出しカウンタ)を含
んでいてもよい。
【0016】メソッドが解釈される回数がしきい値、す
なわち制限値を超えると、そのメソッドは、コンパイラ
150を用いてコンパイルすることができる。解釈済バ
イトコード154は、一般にコンパイル済コードよりも
実行速度が遅い、すなわち非効率的であるので、頻繁に
実行されるコード(frequently executed code)158
に含まれるメソッドを繰り返し解釈することは非効率的
な場合がある。メソッドをコンパイルすることにより得
られる時間節約は、コンパイルプロセスに伴うコンパイ
ルオーバヘッドを補償する可能性が高いので、一般に、
頻繁実行コード158をコンパイルすることで、頻繁実
行コード158に具現化されたメソッドをより効率良く
実行することができる。
【0017】実行時の間、コンパイラ150を用いたバ
イトコード144のコンパイルに伴うコンパイルオーバ
ヘッドは、このコンパイルオーバヘッドが通常予め定め
られる最大許容レベルを超えないように監視される。こ
のコンパイルオーバヘッドは、実行に対してコンパイル
に必要なプロセッサ時間のパーセンテージを用いて表現
されることが多い。予め定められた最大オーバヘッドレ
ベルは、特定のシステムの必要性および特性に応じて広
範囲に変化しうる。例えば、高い実行性能を与えるよう
に意図された仮想マシンでは、予め定められた最大レベ
ルは、全システム資源の約10パーセント使用から約3
0パーセント使用までの範囲内とすることができる。バ
イトコード144のコンパイルに伴うオーバヘッドがこ
の所定最大レベルを超える場合、コンパイルオーバヘッ
ドがもっと低ければコンパイルされていたであろうメソ
ッドを実行リスト中に配置する、すなわち待ち行列に入
れることができる。この実行リストは、本質的に、コン
パイルオーバヘッドがより低いときに処理できる複数の
メソッドからなる待ちリストである。すなわち、コンパ
イルオーバヘッドがより低いときは、実行リスト中のメ
ソッドをコンパイルすることができる。具体的には、コ
ンパイルオーバヘッドとコンピュータシステム146に
伴う全計算オーバヘッドとの双方が低レベルである時に
実行リストを処理することができる。
【0018】バイトコードが、プログラムの全体的実行
における別のアイドル期間(例えば、バイトコードの処
理を通じて生じるアイドル期間)中にコンパイルされる
場合は、プログラムを監視して休止が生じる時点を判断
してもよい。次に図2を参照すると、プログラム、すな
わちアプリケーションを実行するプロセスは、休止中に
コードをコンパイルする機能を含んでいる。このプロセ
スを本発明の一実施形態に従って説明する。プログラム
の実行はステップ210から始まり、ステップ212で
は、プログラムの実行がアイドル期間に到達したかどう
かに関して判断がなされる。
【0019】アイドル期間は、一般に、プログラムが本
質的にインアクティブとなるプログラム処理中の休止、
例えば思考休止(think pause)である。プログラム
は、実行をアクティブに継続する前に、関連オペレーシ
ョンシステムからタイマ信号などのアクションを待って
もよいし、あるいはユーザ入力を待ってもよい。一般
に、思考休止は、プログラムがユーザからのアクション
を待っている間に生じる。アイドル期間の長さは、広範
囲に変化しうる。例えば、アイドル期間の長さは、わず
か数ミリ秒から約2分の1秒まで変化することがある。
プログラムがユーザからの入力を待っているためにアイ
ドル期間が生じる場合は、一般にアイドル期間が極めて
長くなることがあり、例えば、数秒、数分、数日あるい
はそれ以上のオーダとなることがある。
【0020】一般に、「有用」な休止を認識するために
しきい値が用いられる。例えば、実際の休止が所定のミ
リ秒数にわたって続くと、システムはその休止を、もう
少しのあいだ継続する可能性が高い有用な休止として認
識することができる。休止が続きそうな場合、その休止
を活用するためにコンパイルを継続できるようにしても
よい。このため、プログラムの実行がアイドル期間に到
達したかどうかに関するステップ212での判断には、
低アクティビティの期間がしきい値(例えば、約100
ミリ秒や約2分の1秒)に到達したかどうかの判断が含
まれる。
【0021】一般に、アイドル期間、すなわち比較的ア
クティビティの低い期間の発生は、プログラムの実行に
伴う中央処理装置(CPU)の使用率を監視することに
よって識別することができる。この他に、全コンピュー
タシステムに伴うスレッドの状態を監視することによっ
てアイドル期間の存在を判断することもできる。
【0022】相対的インアクティビティ(relative ina
ctivity)の期間を識別するためにCPU使用率が監視
される場合、CPU使用率は、本質的には、CPU使用
率が特定の使用率しきい値を下回る時点を判断するため
に監視される。使用率しきい値、すなわち「低アクティ
ビティしきい値」は、広範囲に変化しうる。例えば、使
用率しきい値は、オーバヘッドの低いアクティビティ
(例えば、カーソルを周期的に明滅するように設定する
こと)しか実質的に動作していないときにプログラムが
アイドルであるとみなされるように設定することができ
る。ある実施形態では、プログラムの処理中のCPU使
用率が全システム資源の約20パーセントという使用率
しきい値を下回ると、プログラムの全体処理が低アクテ
ィビティ期間にあるとみなされる。このような時点で
は、システム資源の少なくとも約80パーセントが使用
可能な場合がある。
【0023】当業者であれば理解できるように、スレッ
ドの状態の監視には、スレッドスケジューラの検討(st
udying)が含まれることがある。全てのスレッドがブロ
ックされたこと、すなわち実質的にどのスレッドも「実
行可能(run-able)」な状態にないことをスレッドスケ
ジューラが示す場合は、プログラムがCPU時間を消費
していないことが示唆されている。一般に、CPU時間
は、スレッドが非ブロック状態となりうるどの時点にお
いても、信号が到着するまでは消費されない。CPU時
間が消費されていない場合、プログラムは一般にアイド
ル期間にある。
【0024】プログラムの実行がアイドル期間にないと
ステップ212で判断されると、プロセスフローはステ
ップ210に戻り、ここでプログラムは動作を続ける。
この代わりに、アイドル期間があるとステップ212で
判断されると、コンパイルなどの保留タスク(pending
task)が存在するかどうかに関してステップ214で判
断がなされる。すなわち、アイドル期間中に発生するこ
とが予定されたタスクが存在するかどうかに関して判断
がなされる。このようなタスクには、一般に、コンパイ
ルや不要部分の整理など、多様なタスクが含まれる。こ
のようなタスクには、これらのタスクのシステム内での
相対的な重要度を用いて優先順位を付けてもよい。ここ
に記載する実施形態では、これらのタスクを保留コンパ
イルとして説明する。
【0025】一般に、保留コンパイルは、二つのソース
から得ることができる。すなわち、データベースリスト
と実行リストである。これらは、コンパイル用の「候
補」メソッドのリストである。データベースリストを生
成する一つの構成には、コンパイル済メソッドを監視す
るシステム、例えばデータベースがインライン化される
ときにデータベースリストを生成する構成が含まれてい
てもよい。このようなシステムでは、データベースリス
トは本質的に、プログラムの前の実行中にコンパイルさ
れたメソッドであって、プログラムの後の実行時にコン
パイルされる可能性が高いメソッドと考えられるメソッ
ドからなる「ワーキングセット」、あるいは「候補セッ
ト」である。他の機構を用いてデータベースリストを生
成したり追加してもよい。一部の実施形態では、データ
ベースリストが、不要部分の整理機能など、他のタスク
を含んでいてもよい。
【0026】上述のように、実行リストは、プログラム
の現在の実行中に生成され、複数のメソッドからなる待
ち行列、すなわちメソッドの候補セットである。この実
行リストは、メソッドのコンパイルを可能にするにはコ
ンパイルオーバヘッドが高すぎると以前に考えられてい
た事実によってコンパイルから抑制されていたメソッド
を含む、すなわち識別してもよい。この実行リストは、
解釈済メソッドに関連付けられた呼出しカウンタ、すな
わちメソッドが解釈された回数に追随するカウンタ、を
検討する独立スィーパプロセス(separate sweeper pro
cess)によってリストに定期的に追加されたメソッドを
識別していてもよい。一般に、メソッド用の呼出しカウ
ンタは、メソッドが呼び出されるたびに増分される。ス
ィーパは、呼出しカウンタを定期的に検討することによ
り、最近呼び出されたことのないメソッドの呼出しカウ
ンタが、メソッドをコンパイルに適切とみなすために現
在考えられているレベルにあるかどうかを判断すること
ができる。しきい値(例えば、メソッドをコンパイル用
と考えるために一般的に到達しなければならないメソッ
ドの呼出し回数)はプログラム実行中に変化しうるの
で、現在のしきい値を上回る呼出しカウンタを有するメ
ソッドをスィーパによって実行リストに加えてもよい。
他の機構を用いて実行リストを生成または追加してもよ
い。一部の実施形態では、実行リストが、他の保留タス
ク(例えば、不要部分の整理)に加えて保留コンパイル
を含む一般ワークリストに付随していてもよい。
【0027】ステップ214において実行リストおよび
データベースリストの検討を通じて保留タスクがないと
判断されると、プロセスフローはステップ210に戻
り、そこでプログラムは動作を継続する。一方、保留コ
ンパイルがあると判断された場合は、ステップ216に
おいてコンパイル等のタスクが実行される。保留コンパ
イルの実行に伴うステップは、図3を参照しながら以下
で説明する。保留コンパイルが実行された後、プロセス
フローはステップ210に戻り、そこでプログラムは動
作を継続する。
【0028】前述したように、ここに記載する実施形態
では、メソッドのコンパイルおよびコンパイル済メソッ
ドの呼出しがメソッドの解釈よりも効率的である可能性
が高いと予想される場合には、メソッドがコンパイルさ
れる。過度のコンパイルオーバヘッドを避けるため、こ
のようなコンパイルは、プログラム全体の実行中にアイ
ドル期間が存在するようになるまで遅延させてもよい。
図3は、本発明の一実施形態に従ったメソッドに対する
遅延コンパイルの実行(すなわち、図2のステップ21
6)に伴うステップを示すプロセスフロー図である。こ
のコンパイル実行プロセスは、ステップ302から開始
する。ステップ302では、最も高い優先順位を持つ候
補メソッドが識別される。ある実施形態では、最高優先
順位メソッドが、実行リスト内に存在する、すなわち実
行リストによって識別される最高の呼出し回数を有する
メソッドであってもよい。この他に、最高優先順位メソ
ッドは、実行リスト上の最短予想コンパイル時間を有す
るメソッドであってもよい。最高優先順位メソッドの識
別は、図4を参照しながら後で詳細に説明する。
【0029】ステップ302で最高優先順位メソッドが
識別された後、ステップ304では、最高優先順位メソ
ッドが既にコンパイルされているかどうかに関して判断
がなされる。最高優先順位メソッドは、種々の理由によ
って既にコンパイルされている可能性がある。例えば、
メソッドが実行リスト内に配置された後、全体的なプロ
グラム実行の過程において、コンパイルオーバヘッドが
低い間にメソッドが呼出されコンパイルされる場合があ
る。このため、このメソッドは既にコンパイルされてお
り、また、実行リストを繰り返し更新するのは時間がか
かることから、このメソッドが実行リストから除去され
ていない可能性もある。最高優先順位メソッドも、これ
がデータベースリストから得られる場合は、以前にコン
パイルされている可能性がある。すなわち、実行リスト
とデータベースリストの双方に同じメソッドが現れる場
合は、例えばメソッドが実行リストを用いて既にコンパ
イルされており、データベースリストが損失が大きいた
めに更新されていないと、そのメソッドはデータベース
リスト中の最高優先順位メソッドとして識別されるとき
に既にコンパイルされている可能性がある。
【0030】ステップ304での判断が、最高優先順位
メソッドが既にコンパイルされているというものである
場合、このメソッドは適切なリスト、すなわち実行リス
トかデータベースリストのいずれかから取り除くことが
でき、プロセスフローはステップ302に戻り、ここで
新たな最高優先順位メソッドが識別される。この代わり
に、最高優先順位メソッドが前にコンパイルされていな
かったと判断された場合は、ステップ306において最
高優先順位メソッドのコンパイルが開始する。すなわ
ち、最高優先順位メソッドのコンパイルが初期化され
る。
【0031】最高優先順位メソッドのコンパイル中、割
込みが受信される場合がある。一般に、割込みには、タ
イマ信号およびユーザ入力(例えばキーボード入力)が
含まれことがある。但し、これに限定されるものではな
い。ステップ308では、割込みを受け取ったかどうか
が判断される。当業者であれば分かるように、割込みが
受信されると、必要に応じて割込みを処理するために、
最高優先順位メソッドのコンパイルが自動的に停止する
ことがある。
【0032】割込みが受信されていた場合、ステップ3
14において最高優先順位メソッドのコンパイルが所定
の時間にわたって継続することが許容される。ある実施
形態では、この所定時間は、本質的には、少なくとも一
つのスレッドを実行可能状態にセットする信号が受信さ
れた後におけるコンパイルの「生存時間」である。割込
みが受信された後にコンパイルが短時間継続できるよう
にすることで、コンパイルの完了が近い場合に、コンパ
イルを完了させる機会が与えられる。
【0033】この所定時間は広範に変化しうるが、この
所定時間は一般的には数ミリ秒、例えば「Xミリ秒」で
ある。約10ミリ秒から約200ミリ秒の範囲内で、よ
り短い時間が好ましい。というのも、ユーザ入力に応答
した約200ミリ秒よりも長い時間の遅延は知覚するこ
とができ、従ってユーザをいらだたせることが多いこと
が分かったからである。この時間は、実行可能状態にあ
るスレッドの優先順位または信号のソースに基づいて変
化する可能性がある。ここで、より高い優先順位の信号
またはスレッドには、より短い時間が使用される。
【0034】ステップ314において所定時間にわたる
継続がコンパイルに許された後、ステップ316では、
この所定時間の間にコンパイルが成功して完了したかど
うかに関して判断がなされる。コンパイルが完了してい
る場合、プロセスフローは図2のステップ210に移動
し、ここでプログラムの全体的な実行が継続する。コン
パイルが完了すると、新たにコンパイルされたメソッド
も、そのメソッドがどのリストから得られたかに応じて
実行リストまたはデータベースリストのいずれかから取
り除かれることになる。
【0035】所定時間の間にコンパイルが完了していな
い場合、プロセスフローはステップ316からステップ
318に移動し、ここでコンパイルは打ち切られる。コ
ンパイルの完了を許すと全プログラムの実行や特に割込
みの処理に大きな遅延を生じることがあるという事実に
より、コンパイルの完了は許されない。コンパイルが打
ち切られると、「クリーンアップ」が生じ、例えば、当
業者であれば分かるように、試みたコンパイルで使用さ
れたシステム資源が放棄される。コンパイルが打ち切ら
れると、プロセスフローは図2のステップ210に移動
し、ここでプログラムの全体的実行が続く。
【0036】ここで、ステップ308に戻る。最高優先
順位メソッドのコンパイル中に何ら割込みが受信されな
かった場合には、ステップ310でコンパイルが継続す
る。ステップ312では、コンパイルが完了したかどう
かに関して判断がなされる。コンパイルが完了したと判
断される場合、最高優先順位メソッドを適切なリストか
ら取り除くことができ、プロセスフローはステップ30
2に戻り、ここで新しい最高優先順位メソッドが識別さ
れる。この他に、コンパイルが完了していないとステッ
プ312で判断された場合は、コンパイルが完了する
か、あるいはステップ308における割込みの受信によ
ってコンパイルが打ち切られるまで、コンパイルは継続
することを許される。
【0037】一般に、実行リストおよびデータベースリ
スト中のメソッドがコンパイルされる「順序」は、多様
な要因に基づいて決定することができる。各リスト中の
メソッドには、同じリスト中の他のメソッドに対する優
先順位の値を割り当てることができる。優先順位の値
は、一般に、プログラムの全体実行中における任意の時
点に割り当てることができ、更にプログラム実行の過程
を通じて更新することも可能である。例えば、リスト中
の優先順位値は、メソッドがリストに追加されるたびに
計算および更新、すなわち再評価することができる。実
行リストおよびデータベースリスト中のメソッドの優先
順位がコンパイル用にメソッドが選択される時に最新と
なるように、優先順位の値を各アイドル期間の開始時に
再評価してもよい。
【0038】メソッドの優先順位の値は、複数の要因の
任意の組合せに基づいて計算することができる。このよ
うな要因には、メソッドの呼出し回数、リスト内におけ
るメソッドの位置、メソッドの推定コンパイル時間、お
よびプログラムの全体的実行中における現行アイドル期
間の長さが含まれる。但し、これらに限定されるもので
はない。この他に、ある実施形態では、メソッドの優先
順位値を本質的にランダムに割り当てることができる。
【0039】リスト中に最高の呼出し回数を有するメソ
ッドは、最高のコンパイル優先順位を有する可能性があ
る。というのも、このメソッドは、本質的に最も高い頻
度で呼び出された解釈済メソッドだからである。リスト
内におけるメソッドの位置も、メソッドに割り当てられ
た優先順位値に影響を与える可能性がある。これは、リ
ストに最も新しく追加されたメソッドは、多くの場合、
近い将来に必要となる可能性が高いからである。リスト
中の最短推定コンパイル時間を有するメソッドは、最高
のコンパイル優先順位を有する可能性がある。これは、
より短い推定コンパイル時間を有するメソッドのコンパ
イルは、一般に、より長い推定コンパイル時間を有する
メソッドのコンパイルよりもアイドル期間中に完了する
可能性が高いからである。一般に、メソッドのコンパイ
ル時間は、メソッドの長さによって推定することができ
る。例えば、比較的短いメソッドは、通常、比較的短い
コンパイル時間を有することになる。
【0040】現行アイドル期間の長さも、メソッドの優
先順位値に影響を与える可能性がある。例えば、現行ア
イドル期間が既に比較的長い場合、アイドル期間がより
長く続く可能性は一般に高い。長いアイドル期間は、し
ばしばプログラムの全体的実行が長時間にわたって生じ
ているコンピュータをユーザが離れる結果となることが
ある。このように、現行のアイドル期間が既に比較的長
いと判断される場合にはアイドル期間が更に長く続く可
能性が一般的にかなり高いことが分かった。従って、ア
イドル期間が比較的長いと予想される場合、より長い予
測コンパイル時間を有するメソッドは、より高いコンパ
イル優先順位を有していてもよい。というのも、より短
い予測コンパイル時間を有するメソッドは、通常、後続
の、より短いアイドル期間中にすぐにコンパイルするこ
とができるからである。
【0041】前述のように、メソッドの優先順位値は、
多様な要因に基づくことがある。換言すると、優先順位
関数を用いて優先順位値を決定することができる。この
ような優先順位関数の形は、一般に広範囲に変化しう
る。例えば、優先順位関数は、あるメソッドについて優
先順位値を得るために、そのメソッドについての呼出し
回数をそのメソッドについての推定コンパイル時間で除
算するものであってもよい。この他に、優先順位関数
は、短い推定コンパイル時間を有するメソッドについて
の呼出し回数の使用や、長い推定コンパイル時間を有す
るメソッドに対する定数で呼出し回数を除算したものの
使用を含んでいてもよい。
【0042】次に図4を参照しながら、最高の優先順位
値を有するメソッドの識別(すなわち、図3のステップ
302)に伴うステップを本発明の一実施形態に従って
説明する。最高の優先順位を有するメソッドの識別は、
プログラムに付随する実行リスト中にメソッドが存在す
るかどうかの判断を伴うステップ402から開始する。
【0043】一般に、実行リスト中のメソッドは、デー
タベースリスト中のメソッドよりも高いコンパイル優先
順位を有しているものと考えられる。実行リスト中のメ
ソッドは、より効率的に実行することによって付随コン
パイルオーバヘッドを克服する可能性が高いものとして
プログラム実行の過程中に識別されたメソッドである。
というのも、これらのメソッドは繰り返し呼び出される
からである。この他に、データベースリスト中のメソッ
ドは、潜在的に繰り返し呼び出される可能性のあるメソ
ッドであり、従って、これらのメソッドのコンパイルが
有益である可能性は高い。言い換えると、実行リスト
は、現在の、すなわち実際のメソッド使用率を反映して
おり、データベースリストは、本質的にメソッドの長期
使用率を反映している。従って、実行リストからのメソ
ッドは、通常、データベースリストからのメソッドの前
にコンパイル用に選択される。これは、実行リスト中の
メソッドをコンパイルする方が、これらのメソッドを使
用するプログラムの全体的実行を効率的にする可能性が
高いからである。
【0044】ステップ402での判断が実行リスト中に
メソッドが存在するというものである場合、ステップ4
04において、実行リスト中で最も高い優先順位を有す
るメソッドがコンパイルのために選択される。実行リス
トからメソッドが選択されると、最高優先順位メソッド
を識別するステップは完了する。この他に、ステップ4
02での判断が実行リスト中にメソッドが存在しないと
いうものである場合、データベースリスト中の最高優先
順位メソッドがコンパイル用に選択される。データベー
スリストからメソッドが選択されると、最高優先順位メ
ソッドを識別するプロセスは完了する。
【0045】本発明は、一般に、適切なコンピュータシ
ステム上で実施することができる。特に、プログラムの
全体的実行中のアイドル期間における待機メソッド(qu
euedmethod)のコンパイルは、適切な仮想マシン(例え
ば、図6を参照して後述する仮想マシン)を用いて達成
することができる。図5は、本発明の実施に適した代表
的な汎用コンピュータシステムを示している。このコン
ピュータシステム530は、複数のメモリ素子に結合さ
れた任意の数のプロセッサ532(これは、中央処理装
置、すなわちCPUとも呼ばれる)を含んでいる。これ
らのメモリ素子には、一次記憶装置534(通常は、リ
ードオンリメモリ、すなわちROM)と一次記憶装置5
36(通常は、ランダムアクセスメモリ、すなわちRA
M)とが含まれている。
【0046】当業者であれば分かるように、コンピュー
タシステム530、またはより具体的にCPU532
は、仮想マシンをサポートするように構成されている。
コンピュータシステム530でサポートされる仮想マシ
ンの一例は、図6を参照しながら後述する。この技術分
野では周知のように、ROMは、データおよび命令を単
方向でCPU532に転送するように作用するが、RA
Mは、通常、データおよび命令を双方向的に転送するた
めに使用される。一般に、CPU532は、任意の数の
プロセッサを含んでいてもよい。一次記憶装置534、
536は、双方とも任意の適切なコンピュータ読取り可
能媒体を含んでいてもよい。CPU532には二次記憶
媒体538(通常は、マスメモリ素子)も双方向に結合
されており、付加的なデータ記憶容量を与えている。マ
スメモリ素子538は、コンピュータコード、データな
どを含むプログラムを記憶するために使用可能なコンピ
ュータ読取り可能媒体である。通常、マスメモリ素子5
38は、一次記憶装置534、536よりも一般的に遅
いハードディスクやテープなどの記憶媒体である。マス
メモリ記憶装置938は、磁気テープリーダや紙テープ
リーダ、あるいは他の周知装置の形をとることができ
る。マスメモリ素子538内に保持される情報は、適切
な場合に、仮想記憶としてRAM534の一部として標
準的な方式で組み込まれる。特定の一次記憶装置536
(CD−ROMなど)も、CPU532に単方向でデー
タを受け渡すことができる。
【0047】CPU532は、一つ以上の入出力装置5
40にも結合されている。この入出力装置としては、ビ
デオモニタ、トラックボール、マウス、キーボード、マ
イクロフォン、タッチセンシティブディスプレイ、トラ
ンスジューサカードリーダ、磁気テープまたは紙テープ
リーダ、タブレット、スタイラス、音声または手書き認
識装置、あるいは他の周知の入力装置(例えば、当然の
ことではあるが、他のコンピュータ)を挙げることがで
きる。但し、これらに限定されるわけではない。最後
に、CPU532は、オプションとして、符号512で
全体的に示されるネットワーク接続を用いてコンピュー
タまたは通信ネットワーク(例えば、ローカルエリアネ
ットワーク、インターネットネットワーク、イントラネ
ットネットワーク)に結合されていてもよい。このよう
なネットワーク接続を用いると、CPU532は、上述
の方法ステップを実行する過程でネットワークから情報
を受け取ったり、ネットワークに情報を出力するとがで
きるものと考えられる。このような情報は、CPU53
2を用いて実行すべき一連の命令として表されることが
多いが、例えば搬送波に具体化されるコンピュータデー
タ信号の形でネットワークから受け取ったりネットワー
クに出力することができる。上述の装置およびマテリア
ルは、コンピュータハードウェアおよびソフトウェア技
術の当業者には良く知られたものであろう。
【0048】前述のように、仮想マシンはコンピュータ
システム530上で動作することができる。図6は、図
5のコンピュータシステム530によってサポートさ
れ、本発明を実施するのに適した仮想マシンの線図であ
る。コンピュータプログラム、例えばカリフォルニア州
マウンテンビューのサンマイクロシステムズ(Sun Micr
osystems)によって開発されたJava(商標)プログラミ
ング言語で書かれたコンピュータプログラムが実行され
ると、翻訳時環境605内のコンパイラ620にソース
コード610が提供される。コンパイラ620は、ソー
スコード610をバイトコード630に翻訳する。一般
に、ソースコード610は、ソースコード610がソフ
トウェア開発者によって作成される時にバイトコード6
30に翻訳される。
【0049】一般に、バイトコード630は、ネットワ
ーク(例えば、図5のネットワーク512)を通じて複
写、ダウンロード、または配布したり、図5の一次記憶
装置534などの記憶装置に記憶することができる。こ
こに記載する実施形態では、バイトコード630はプラ
ットフォームに依存しない。すなわち、バイトコード6
30は、適切な仮想マシン640を動作させている実質
的に任意のコンピュータシステム上で実行することがで
きる。例えば、Java(商標)環境では、Java(商標)仮
想マシンを動作させているコンピュータシステム上でバ
イトコード630を実行することができる。
【0050】バイトコード630は、仮想マシン640
を含む実行時環境635に提供される。実行時環境63
5は、一般に、図5のCPU532などのプロセッサを
用いて実行することができる。仮想マシン640は、コ
ンパイラ642、インタープリタ644、およびランタ
イムシステム646を含んでいる。バイトコード630
は、一般に、コンパイラ642またはインタープリタ6
44のいずれかに提供することができる。
【0051】バイトコード630がコンパイラ642に
提供される場合は、上述のように、バイトコード630
に含まれるメソッドが機械語命令にコンパイルされる。
一方、バイトコード630がインタープリタ644に提
供される場合は、バイトコード630が一度に1バイト
コードずつインタープリタ644に読み込まれる。次い
で、インタープリタ644は、各バイトコードがインタ
ープリタ644に読み込まれるのに伴って、各バイトコ
ードによって定義される操作を実行する。一般に、イン
タープリタ644は、バイトコード630を処理して、
バイトコード630に関連付けられた操作をほぼ連続的
に実行する。
【0052】メソッドがオペレーティングシステム66
0から呼び出されると、そのメソッドを解釈済メソッド
として呼び出すべきであると判断される場合は、ランタ
イムシステム646はそのメソッドをインタープリタ6
44から取得することができる。一方、メソッドをコン
パイル済メソッドとして呼び出すべきであると判断され
る場合は、ランタイムシステム646はコンパイラ64
2を起動する。この後、コンパイラ642は、バイトコ
ード630から機械語命令を生成し、その機械語命令を
実行する。一般に、この機械語命令は、仮想マシン64
0が終了するときに廃棄される。
【0053】本発明の実施形態を数個しか記載しなかっ
たが、本発明は、本発明の趣旨または範囲から逸脱する
ことなく他の多くの特定形態に具現化することができ
る。例えば、アイドル期間中のコンパイル実行に伴うス
テップは、順序を変えたり、削除または追加することが
できる。一般に、本発明の方法に伴うステップは、本発
明の趣旨または範囲から逸脱することなく順序を変えた
り、取り除いたり、追加することができる。
【0054】上記では、コンパイル用の最高優先順位メ
ソッドを、実行リストおよびデータベースリスト中の実
質的に全てのメソッドから選択されたものとして述べて
きた。実行リストまたはデータベースリスト、あるいは
この双方に含まれる全メソッドを探索して最高のコンパ
イル優先順位を持つメソッドの位置を特定する方法で
は、実行リストが膨大な場合に損失が大きいことがわか
る。従って、ある実施形態では、実行リストのほぼ全体
を探索する代わりに、実行リストの部分集合を探索する
ことで、コンパイル用の最高優先順位メソッドを識別す
ることができる。例えば、実行リストから最初の「N」
個の候補メソッドを探索することにより、この最初のN
個の候補メソッドの中から最高優先順位メソッドを識別
することができる。
【0055】前述のように、メソッドのコンパイル優先
順位は、呼出しカウンタを用いることで少なくとも一部
は識別することができる。呼出しカウンタは、一般に、
メソッドがアクセスされるたびに増分されるカウンタで
ある。一部の実施形態では、呼出しカウンタが時間の経
過とともに減衰してもよい。例えば、メソッドが繰り返
し呼び出され、プログラム実行の開始時にコンパイルが
予定されていたが、再び呼び出されない場合、呼出しカ
ウンタを減衰させてメソッドのコンパイル優先順位を低
減してもよい。メソッド用の呼出しカウンタが減衰、例
えば指数関数的に減衰してしまうと、メソッドのコンパ
イルがもはや望ましくない場合がある。このため、この
ようなメソッドを定期的に実行リストから取り除いても
よい。
【0056】同様に、コンパイルの実行の進行中、コン
パイルを予定されているメソッドが前にコンパイルされ
たものであるかどうかに関して判断がなされる。この他
に、既にコンパイルされたメソッドを、実行リストおよ
びデータベースリストの一方または双方から適宜取り除
くことができる。一般に、コンパイル済メソッドについ
ての実行リストおよびデータベースリストの検査に伴う
オーバヘッドは、比較的大きいことがある。しかしなが
ら、コンパイル済メソッドは、本発明の趣旨または範囲
から逸脱することなく、定期的に(例えば、アイドル期
間の開始時に)取り除くことができる。
【0057】これまで実行リストは、コンパイルされる
べき複数の解釈済メソッドからなるリスト、すなわち待
ち行列として一般的に説明してきたが、実行リストは、
アイドル期間が存在するようになるまで再コンパイルか
ら遅延させられたコンパイル済メソッドを含んでいても
よい。例えば、二つのレベルのコンパイラを有するシス
テムでは、いったんメソッドがコンパイルされてしまう
と、そのメソッドが繰り返し実行される場合は、そのメ
ソッドをより効率良く再コンパイルすることが望ましい
ことが分かる。このようなシステムでは、再コンパイ
ル、すなわち二次コンパイルを予定されているメソッド
が、コンパイルを予定された解釈済メソッドとして同じ
実行リスト中に含まれていてもよい。しかしながら一方
で、再コンパイルが予定されたメソッドが別個の実行リ
ストに含まれていてもよい。
【0058】ある実施形態では、実行リストは、一般
に、保留コンパイルに加えて、または保留コンパイルの
代わりに遅延タスクを含むワークリストであってもよ
い。このようなタスクに優先順位を付けてもよい。ワー
クリストからのタスクが動作している場合は、割込みが
受信されると、そのタスクを完了できるようになってい
てもよい。例えば、タスクが不要部分の整理を含む場
合、不要部分整理プロセスを中断し、不要部分整理プロ
セスの「バックアウト」をすることは、このプロセスを
完了する以上に犠牲が大きいことがある。このため、不
要部分の整理を完了することが許される場合がある。一
般に、タスクも、割込みが受信されたときには中断する
ことができる。従って、本例は例示であって限定的なも
のではないと考えるべきであり、本発明は、本明細書で
挙げた詳細に限定されるべきではなく、均等物の全範囲
に沿って特許請求の範囲内で変形を加えることができ
る。
【図面の簡単な説明】
【図1】本発明の一実施形態に従ってコードを動的コン
パイルするコンピュータシステムのブロック図である。
【図2】本発明の一実施形態に従って休止中にコードを
コンパイルする機能を有するプログラムの実行に伴うス
テップを示すプロセスフローチャートである。
【図3】本発明の一実施形態に係るメソッドへのコンパ
イルの実行、すなわち図2のステップ216、に伴うス
テップを示すプロセスフローチャートである。
【図4】本発明の一実施形態に係る最高優先順位メソッ
ドの識別、すなわち図3のステップ302に伴うステッ
プを示すプロセスフローチャートである。
【図5】本発明を実施するのに適した典型的な汎用コン
ピュータシステムを示す図である。
【図6】本発明を実施するのに適した仮想マシンの線図
である。
【符号の説明】
144…バイトコード、148…インタープリタ、15
0…コンパイラ、152…コンパイル済バイトコード、
154…解釈済バイトコード、158…頻繁実行コー
ド、162…コンパイル済頻繁実行コード。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラーズ バク アメリカ合衆国, カリフォルニア州, パロ アルト, コリナ ウェイ 3782

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータプログラムの処理における
    アイドル期間中にメソッドを動的コンパイルするために
    コンピュータによって実施される方法であって、 前記アイドル期間を識別するステップと、 複数のメソッドから選択される第1のメソッドを前記ア
    イドル期間中に識別するステップであって、前記複数の
    メソッドは、前記コンピュータプログラムに含まれてお
    り、このコンピュータプログラムは、解釈済プログラム
    コードおよびコンパイル済プログラムコードの双方を実
    行するように構成されているステップと、 前記第1メソッドのコンパイルを初期化するステップで
    あって、この第1メソッドのコンパイルの初期化が前記
    アイドル期間中に行われるようになっているステップ
    と、を備える方法。
  2. 【請求項2】 前記複数のメソッドは、前記コンピュー
    タプログラムに付随する第1のリスト中で参照され、前
    記第1メソッドは、前記第1リストに付随する最高優先
    順位メソッドである、請求項1記載のコンピュータによ
    って実施される方法。
  3. 【請求項3】 前記複数のメソッドから選択される第1
    の一組のメソッドは第1のリストに付随し、前記複数の
    メソッドから選択される第2の一組のメソッドは第2の
    リストに付随し、前記第1リストは前記コンピュータプ
    ログラムの処理中に生成され、前記第2リストは前記コ
    ンピュータプログラムの処理前に生成され、 前記第1メソッドを識別するステップは、前記第1リス
    トから最高優先順位メソッドとして前記第1メソッドを
    選択するステップを含んでいる、請求項1記載のコンピ
    ュータによって実施される方法。
  4. 【請求項4】 前記複数のメソッドから選択される第1
    の一組のメソッドは第1のリストに付随し、前記複数の
    メソッドから選択される第2の一組のメソッドは第2の
    リストに付随し、前記第1リストは前記コンピュータプ
    ログラムの処理中に生成され、前記第2リストは前記コ
    ンピュータプログラムの処理前に生成され、 前記第1メソッドを識別するステップは、前記第2リス
    トから最高優先順位メソッドとして前記第1メソッドを
    選択するステップを含んでいる、請求項1記載のコンピ
    ュータによって実施される方法。
  5. 【請求項5】 前記第1メソッドのコンパイルの初期化
    後に前記コンピュータプログラムによって割込みが受信
    されたどうかを判断するステップと、 割込みが受信されたと判断された場合に所定時間にわた
    って前記第1メソッドコンパイルを継続するステップ
    と、 前記第1メソッドのコンパイルが前記所定時間の経過後
    に完了したかどうかを判断するステップと、 前記第1メソッドのコンパイルが前記所定時間の経過後
    に完了していないと判断された場合に前記第1メソッド
    のコンパイルを打ち切るステップと、を更に備える請求
    項1〜4のいずれかに記載のコンピュータによって実施
    される方法。
  6. 【請求項6】 コンピュータプログラムの全体処理にお
    ける低アクティビティ期間中にメソッドを動的コンパイ
    ルするためにコンピュータによって実施される方法であ
    って、 前記低アクティビティ期間を識別するステップと、 複数のメソッドから選択される第1のメソッドを前記低
    アクティビティ期間中に識別するステップであって、前
    記複数のメソッドは前記コンピュータプログラムに含ま
    れているステップと、 前記第1メソッドがコンパイルされたかどうかを判断す
    るステップであって、この判断が前記低アクティビティ
    期間中になされるステップと、 前記第1メソッドがコンパイルされていないと判断され
    た場合に、前記低アクティビティ期間中に前記第1メソ
    ッドのコンパイルを初期化するステップと、を備える方
    法。
  7. 【請求項7】 前記第1メソッドがコンパイルされたと
    判断された場合に、前記複数のメソッドから選択される
    第2のメソッドを前記低アクティビティ期間中に識別す
    るステップと、 前記第2メソッドがコンパイルされたかどうかを判断す
    るステップであって、前記第2メソッドがコンパイルさ
    れたかどうかの判断が前記低アクティビティ期間中に行
    われるステップと、 前記第2メソッドがコンパイルされていないと判断され
    た場合に、前記低アクティビティ期間中に前記第2メソ
    ッドのコンパイルを初期化するステップと、を更に備え
    る請求項6記載のコンピュータによって実施される方
    法。
  8. 【請求項8】 前記複数のメソッドの各々に対して優先
    順位値を決定するステップを更に備え、前記第1メソッ
    ドが前記第1メソッドに対する前記優先順位値に基づい
    て識別される請求項6または7記載のコンピュータによ
    って実施される方法。
  9. 【請求項9】 前記複数のメソッドの各々に対して前記
    優先順位値を決定するステップは、前記複数のメソッド
    の各々に関連付けられた呼出しカウンタを前記低アクテ
    ィビティ期間中に処理するステップを含んでいる、請求
    項8記載のコンピュータによって実施される方法。
  10. 【請求項10】 前記複数のメソッドの各々に対して前
    記優先順位値を決定するステップは、前記複数のメソッ
    ドの各々に対するコンパイル時間を前記低アクティビテ
    ィ期間中に推定するステップを含んでいる、請求項8記
    載のコンピュータによって実施される方法。
  11. 【請求項11】 前記複数のメソッドから選択される第
    1の一組のメソッドは第1のリストに付随し、前記複数
    のメソッドから選択される第2の一組のメソッドは第2
    のリストに付随し、前記第1リストは前記コンピュータ
    プログラムの処理中に生成され、前記第2リストは前記
    コンピュータプログラムの処理前に生成され、 前記第1メソッドを識別するステップは、前記第1リス
    トから最高優先順位メソッドとして前記第1メソッドを
    選択するステップを含んでいる、請求項6記載のコンピ
    ュータによって実施される方法。
  12. 【請求項12】 前記第1メソッドのコンパイルの初期
    化後に前記コンピュータプログラムによって割込みが受
    信されたかどうかを判断するステップと、 割込みが受信されたと判断された場合に所定時間にわた
    って前記第1メソッドのコンパイルを継続するステップ
    と、 前記第1メソッドのコンパイルが前記所定時間の経過後
    に完了したかどうかを判断するステップと、 前記第1メソッドのコンパイルが前記所定時間の経過後
    に完了していないと判断された場合に前記第1メソッド
    のコンパイルを打ち切るステップと、を更に備える請求
    項6〜11のいずれかに記載のコンピュータによって実
    施される方法。
  13. 【請求項13】 割込みが受信されていないと判断され
    た場合に前記第1メソッドのコンパイルを完了するステ
    ップと、 複数のメソッドから選択される第2のメソッドを前記低
    アクティビティ期間中に識別するステップと、 前記第2メソッドが前記低アクティビティ期間中にコン
    パイルされたかどうかを判断するステップと、 前記第2メソッドがコンパイルされていないと判断され
    た場合に、前記低アクティビティ期間中に前記第2メソ
    ッドのコンパイルを初期化するステップと、を更に備え
    る請求項12記載のコンピュータによって実施される方
    法。
  14. 【請求項14】 コンピュータプログラムの処理におけ
    るアイドル期間中に遅延タスクを動的に処理するために
    コンピュータによって実施される方法であって、 前記コンピュータプログラムの処理におけるアイドル期
    間を識別するステップと、 複数のタスクから選択される第1のタスクを前記コンピ
    ュータプログラムの処理におけるアイドル期間中に識別
    するステップであって、前記複数のタスクは、前記コン
    ピュータプログラムに含まれており、このコンピュータ
    プログラムは、解釈済プログラムコードおよびコンパイ
    ル済プログラムコードの双方を実行するように構成され
    ているステップと、 前記第1タスクを開始するステップであって、前記第1
    タスクの開始が前記アイドル期間中に行われるようにな
    っているステップと、を備える方法。
  15. 【請求項15】 割込みが受信された場合に前記第1タ
    スクを完了するステップを更に備える請求項14記載の
    コンピュータによって実施される方法。
  16. 【請求項16】 割込みが受信された場合に前記第1タ
    スクを中断するステップを更に備える請求項14記載の
    コンピュータによって実施される方法。
  17. 【請求項17】 コンピュータプログラムの処理におけ
    る低アクティビティ期間中にバイトコード化メソッドを
    動的コンパイルするコンピュータシステムであって、前
    記メソッドは前記コンピュータプログラムに付随してお
    り、 前記低アクティビティ期間を識別する機構と、 複数のメソッドから選択される第1のメソッドを前記低
    アクティビティ期間中に識別する機構と、 前記低アクティビティ期間中に前記第1メソッドのコン
    パイルを初期化するコンパイラと、を備えるコンピュー
    タシステム。
  18. 【請求項18】 前記複数のメソッドの第1の一組を参
    照するように構成され、前記コンピュータプログラムに
    付随する第1のリストであって、前記第1メソッドがこ
    の第1リストに付随する最高優先順位メソッドとなって
    いる第1リストと、 前記複数のメソッドの第2の一組を参照するように構成
    された第2のリストであって、前記コンピュータプログ
    ラムの処理前に生成される第2リストと、を更に備え、
    前記第1リストが前記コンピュータプログラムの処理中
    に生成される請求項17記載のコンピュータシステム。
  19. 【請求項19】 前記第1メソッドのコンパイル中に割
    込み信号を受信するように構成され、前記コンパイラと
    通信する割込みプロセッサであって、前記コンパイラ
    は、この割込みプロセッサからの信号に応答して前記第
    1メソッドのコンパイルを所定時間にわたって継続する
    ように更に構成されている、割込みプロセッサと、 前記コンパイラと通信する打切り機構であって、前記第
    1メソッドのコンパイルを打ち切るように構成された打
    切り機構と、を更に備える請求項17記載のコンピュー
    タシステム。
  20. 【請求項20】 前記第1メソッドがコンパイルされる
    時点を識別するように構成された診断機構を更に備える
    請求項17〜19のいずれか記載のコンピュータシステ
    ム。
  21. 【請求項21】 コンピュータプログラムの処理におけ
    るアイドル期間中にメソッドを動的コンパイルするよう
    に構成されたコンピュータプログラムコード装置(comp
    uter program code device)を含むコンピュータ読取り
    可能な媒体であって、 前記アイドル期間を識別するコンピュータプログラムコ
    ード装置と、 複数のメソッドから選択される第1のメソッドを前記ア
    イドル期間中に識別するコンピュータプログラムコード
    装置であって、前記複数のメソッドが前記コンピュータ
    プログラムに含まれているコンピュータプログラムコー
    ド装置と、 前記アイドル期間中に前記第1メソッドのコンパイルを
    初期化するコンピュータプログラムコード装置と、を備
    えるコンピュータ読取り可能な媒体。
  22. 【請求項22】 前記コンピュータプログラムコード装
    置が搬送波に具体化されている請求項21記載のコンピ
    ュータ読取り可能な媒体。
JP10319738A 1997-10-06 1998-10-06 休止中にバイトコード最適化を実行する方法及び装置 Withdrawn JPH11237989A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/944735 1997-10-06
US08/944,735 US5970249A (en) 1997-10-06 1997-10-06 Method and apparatus for performing byte-code optimization during pauses

Publications (1)

Publication Number Publication Date
JPH11237989A true JPH11237989A (ja) 1999-08-31

Family

ID=25481974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10319738A Withdrawn JPH11237989A (ja) 1997-10-06 1998-10-06 休止中にバイトコード最適化を実行する方法及び装置

Country Status (6)

Country Link
US (2) US5970249A (ja)
EP (1) EP0908818B1 (ja)
JP (1) JPH11237989A (ja)
KR (1) KR100589798B1 (ja)
CN (1) CN100392595C (ja)
DE (1) DE69834230T2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172512A (ja) * 1998-12-03 2000-06-23 Internatl Business Mach Corp <Ibm> バイトコ―ドを実行するための方法およびデ―タ処理システム
WO2004107170A1 (ja) * 2003-05-28 2004-12-09 Matsushita Electric Industrial Co., Ltd. プログラム実行制御装置
US6848098B1 (en) 1999-11-18 2005-01-25 Fujitsu Limited Process and apparatus for optimizing program written in interpretive language for each callable program part base on frequency of executions
JP2007213490A (ja) * 2006-02-13 2007-08-23 Fujitsu Ltd アプリケーションサーバシステムおよび仮想マシンプログラム
JP2007272893A (ja) * 2006-03-30 2007-10-18 Sun Microsyst Inc 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム
JP2010108086A (ja) * 2008-10-28 2010-05-13 Nec Corp Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
JP2013061810A (ja) * 2011-09-13 2013-04-04 Fujitsu Ltd 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム
US9170830B2 (en) 2013-03-26 2015-10-27 Fujitsu Limited Method for controlling program execution
JP2017524212A (ja) * 2015-05-22 2017-08-24 シャオミ・インコーポレイテッド アプリケーションのインストールパッケージの処理方法、装置、プログラム及び記録媒体

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6960133B1 (en) 2000-08-28 2005-11-01 Igt Slot machine game having a plurality of ways for a user to obtain payouts based on selection of one or more symbols (power pays)
US6513156B2 (en) * 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US6317796B1 (en) * 1997-10-06 2001-11-13 Sun Microsystems, Inc. Inline database for receiver types in object-oriented systems
US6792600B1 (en) * 1998-05-14 2004-09-14 International Business Machines Corporation Method and apparatus for just in time compilation of instructions
US6141793A (en) * 1998-04-01 2000-10-31 Hewlett-Packard Company Apparatus and method for increasing the performance of interpreted programs running on a server
US6405367B1 (en) 1998-06-05 2002-06-11 Hewlett-Packard Company Apparatus and method for increasing the performance of Java programs running on a server
US6427234B1 (en) * 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
US6205578B1 (en) * 1998-08-14 2001-03-20 Ati International Srl Interpreter for stack-based languages
JP2000122875A (ja) * 1998-10-19 2000-04-28 Internatl Business Mach Corp <Ibm> 例外処理方法およびシステム
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6332215B1 (en) * 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
GB2344907A (en) * 1998-12-19 2000-06-21 Int Computers Ltd Instruction translation and execution mechanism
US6327702B1 (en) * 1998-12-30 2001-12-04 Microsoft Corporation Generating a compiled language program for an interpretive runtime environment
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
US6507946B2 (en) * 1999-06-11 2003-01-14 International Business Machines Corporation Process and system for Java virtual method invocation
GB2352914A (en) * 1999-08-03 2001-02-07 Sony Uk Ltd Data broadcast method
JP3356742B2 (ja) * 1999-11-17 2002-12-16 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム実行方法
DE19963832A1 (de) * 1999-12-30 2001-07-05 Ericsson Telefon Ab L M Programmprofilierung
US6865730B1 (en) * 2000-03-08 2005-03-08 International Business Machines Corporation Interprocedural analysis and optimization of an object oriented program in the presence of dynamic class loading
US6769985B1 (en) 2000-05-31 2004-08-03 Igt Gaming device and method for enhancing the issuance or transfer of an award
US7699699B2 (en) 2000-06-23 2010-04-20 Igt Gaming device having multiple selectable display interfaces based on player's wagers
US7695363B2 (en) 2000-06-23 2010-04-13 Igt Gaming device having multiple display interfaces
US7240342B1 (en) * 2000-06-30 2007-07-03 Intel Corporation User transparent continuous compilation
US6973646B1 (en) * 2000-07-21 2005-12-06 International Business Machines Corporation Method for compiling program components in a mixed static and dynamic environment
US6935955B1 (en) 2000-09-07 2005-08-30 Igt Gaming device with award and deduction proximity-based sound effect feature
KR20020028814A (ko) * 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US6739973B1 (en) 2000-10-11 2004-05-25 Igt Gaming device having changed or generated player stimuli
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7040983B2 (en) 2001-03-21 2006-05-09 Igt Gaming device having a multi-round, multi-characteristic matching game
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
US7901291B2 (en) 2001-09-28 2011-03-08 Igt Gaming device operable with platform independent code and method
US7666098B2 (en) 2001-10-15 2010-02-23 Igt Gaming device having modified reel spin sounds to highlight and enhance positive player outcomes
US6848996B2 (en) 2001-10-15 2005-02-01 Igt Gaming device with sound recording changes associated with player inputs
US7708642B2 (en) 2001-10-15 2010-05-04 Igt Gaming device having pitch-shifted sound and music
US6993755B1 (en) * 2001-10-24 2006-01-31 Sun Microsystems, Inc. Dynamic compilation control
CA2359862A1 (en) * 2001-10-24 2003-04-24 Ibm Canada Limited - Ibm Canada Limitee Using identifiers and counters for controlled optimization compilation
US6996814B2 (en) 2001-11-14 2006-02-07 Sun Microsystems, Inc. Method and apparatus for dynamically compiling byte codes into native code
US20040088690A1 (en) * 2002-08-27 2004-05-06 Hayim Shaul Method for accelerating a computer application by recompilation and hardware customization
US7290254B2 (en) * 2003-03-25 2007-10-30 Intel Corporation Combining compilation and instruction set translation
US7789748B2 (en) * 2003-09-04 2010-09-07 Igt Gaming device having player-selectable music
US7105736B2 (en) 2003-09-09 2006-09-12 Igt Gaming device having a system for dynamically aligning background music with play session events
US20050149498A1 (en) * 2003-12-31 2005-07-07 Stephen Lawrence Methods and systems for improving a search ranking using article information
US8954420B1 (en) 2003-12-31 2015-02-10 Google Inc. Methods and systems for improving a search ranking using article information
US7788657B2 (en) * 2004-02-27 2010-08-31 Tvworks, Llc Targeted runtime compilation
US7680888B1 (en) 2004-03-31 2010-03-16 Google Inc. Methods and systems for processing instant messenger messages
US8386728B1 (en) 2004-03-31 2013-02-26 Google Inc. Methods and systems for prioritizing a crawl
US8099407B2 (en) 2004-03-31 2012-01-17 Google Inc. Methods and systems for processing media files
US8161053B1 (en) 2004-03-31 2012-04-17 Google Inc. Methods and systems for eliminating duplicate events
US8631076B1 (en) 2004-03-31 2014-01-14 Google Inc. Methods and systems for associating instant messenger events
US8346777B1 (en) 2004-03-31 2013-01-01 Google Inc. Systems and methods for selectively storing event data
US7333976B1 (en) 2004-03-31 2008-02-19 Google Inc. Methods and systems for processing contact information
US7581227B1 (en) 2004-03-31 2009-08-25 Google Inc. Systems and methods of synchronizing indexes
US7412708B1 (en) * 2004-03-31 2008-08-12 Google Inc. Methods and systems for capturing information
US7725508B2 (en) 2004-03-31 2010-05-25 Google Inc. Methods and systems for information capture and retrieval
US8275839B2 (en) * 2004-03-31 2012-09-25 Google Inc. Methods and systems for processing email messages
US7941439B1 (en) 2004-03-31 2011-05-10 Google Inc. Methods and systems for information capture
KR100725386B1 (ko) * 2004-09-25 2007-06-07 삼성전자주식회사 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US8043155B2 (en) 2004-10-18 2011-10-25 Igt Gaming device having a plurality of wildcard symbol patterns
US20060212840A1 (en) * 2005-03-16 2006-09-21 Danny Kumamoto Method and system for efficient use of secondary threads in a multiple execution path processor
US9262446B1 (en) 2005-12-29 2016-02-16 Google Inc. Dynamically ranking entries in a personal data book
US8799876B2 (en) * 2006-09-29 2014-08-05 Intel Corporation Method and apparatus for assigning subroutines
US8146065B2 (en) 2007-08-13 2012-03-27 International Business Machines Corporation Running time of short running applications by effectively interleaving compilation with computation in a just-in-time environment
US20090125519A1 (en) * 2007-11-13 2009-05-14 Intel Corporation Device, system, and method for regulating software lock elision mechanisms
KR20090098500A (ko) * 2008-03-14 2009-09-17 삼성전자주식회사 가상 머신의 유휴 구간 검사 장치 및 방법, 그리고 그방법을 수행하기 위한 컴퓨터 프로그램
US8591308B2 (en) 2008-09-10 2013-11-26 Igt Gaming system and method providing indication of notable symbols including audible indication
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
JP2011192239A (ja) * 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
JP2011192240A (ja) * 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
CN102610002B (zh) * 2011-01-20 2015-11-25 鸿富锦精密工业(深圳)有限公司 机台状态侦测系统及方法
US8460090B1 (en) 2012-01-20 2013-06-11 Igt Gaming system, gaming device, and method providing an estimated emotional state of a player based on the occurrence of one or more designated events
US9245407B2 (en) 2012-07-06 2016-01-26 Igt Gaming system and method that determines awards based on quantities of symbols included in one or more strings of related symbols displayed along one or more paylines
US8740689B2 (en) 2012-07-06 2014-06-03 Igt Gaming system and method configured to operate a game associated with a reflector symbol
US9027007B2 (en) * 2013-03-06 2015-05-05 Qualcomm Incorporated Reducing excessive compilation times
US9996325B2 (en) 2013-03-06 2018-06-12 Qualcomm Incorporated Dynamic reconfigurable compiler
US9009691B1 (en) * 2013-07-12 2015-04-14 Google Inc. Using an inline stack to improve performance of an applications binary
US9192857B2 (en) 2013-07-23 2015-11-24 Igt Beat synchronization in a game
US9569185B2 (en) 2014-02-07 2017-02-14 Oracle International Corporation Changing de-optimization guard representation during the compilation process
CN105718298B (zh) * 2014-12-03 2019-02-15 龙芯中科技术有限公司 动态编译方法及装置
US9947170B2 (en) 2015-09-28 2018-04-17 Igt Time synchronization of gaming machines
CN105373430A (zh) 2015-10-13 2016-03-02 惠州Tcl移动通信有限公司 一种动态分配编译机的系统及其方法
US11029929B2 (en) * 2019-01-24 2021-06-08 Red Hat, Inc. Using emulation to improve startup time for just-in-time compilation
CN112379984A (zh) * 2020-11-16 2021-02-19 神州融安科技(北京)有限公司 执行任务的方法、设备、电子设备及计算机可读存储介质
KR20230019619A (ko) * 2021-08-02 2023-02-09 삼성전자주식회사 어플리케이션 최적화 방법 및 이를 지원하는 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694603A (en) * 1982-09-28 1997-12-02 Reiffin; Martin G. Computer memory product with preemptive multithreading software
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
US5586328A (en) * 1994-10-21 1996-12-17 Microsoft Corporation Module dependency based incremental compiler and method
US5995997A (en) * 1997-05-02 1999-11-30 Microsoft Corporation Apparatus and methods for optimally allocating currently available computer resources to future task instances versus continued execution of current task instances
US6009517A (en) * 1997-10-06 1999-12-28 Sun Microsystems, Inc. Mixed execution stack and exception handling
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US5933635A (en) * 1997-10-06 1999-08-03 Sun Microsystems, Inc. Method and apparatus for dynamically deoptimizing compiled activations

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000172512A (ja) * 1998-12-03 2000-06-23 Internatl Business Mach Corp <Ibm> バイトコ―ドを実行するための方法およびデ―タ処理システム
US6848098B1 (en) 1999-11-18 2005-01-25 Fujitsu Limited Process and apparatus for optimizing program written in interpretive language for each callable program part base on frequency of executions
WO2004107170A1 (ja) * 2003-05-28 2004-12-09 Matsushita Electric Industrial Co., Ltd. プログラム実行制御装置
JP2004355277A (ja) * 2003-05-28 2004-12-16 Matsushita Electric Ind Co Ltd プログラム実行制御装置、プログラム実行制御方法
US7958499B2 (en) 2003-05-28 2011-06-07 Panasonic Corporation Program execution control device, program execution control method, control program, and recording medium
JP2007213490A (ja) * 2006-02-13 2007-08-23 Fujitsu Ltd アプリケーションサーバシステムおよび仮想マシンプログラム
US8332845B2 (en) 2006-02-13 2012-12-11 Fujitsu Limited Compile timing based on execution frequency of a procedure
JP2007272893A (ja) * 2006-03-30 2007-10-18 Sun Microsyst Inc 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム
JP2010108086A (ja) * 2008-10-28 2010-05-13 Nec Corp Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
JP2013061810A (ja) * 2011-09-13 2013-04-04 Fujitsu Ltd 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム
US9170830B2 (en) 2013-03-26 2015-10-27 Fujitsu Limited Method for controlling program execution
JP2017524212A (ja) * 2015-05-22 2017-08-24 シャオミ・インコーポレイテッド アプリケーションのインストールパッケージの処理方法、装置、プログラム及び記録媒体

Also Published As

Publication number Publication date
US6240548B1 (en) 2001-05-29
DE69834230T2 (de) 2006-08-31
CN100392595C (zh) 2008-06-04
EP0908818A2 (en) 1999-04-14
KR100589798B1 (ko) 2006-10-25
CN1234552A (zh) 1999-11-10
US5970249A (en) 1999-10-19
EP0908818A3 (en) 2001-06-20
KR19990036882A (ko) 1999-05-25
DE69834230D1 (de) 2006-05-24
EP0908818B1 (en) 2006-04-19

Similar Documents

Publication Publication Date Title
JPH11237989A (ja) 休止中にバイトコード最適化を実行する方法及び装置
US6865734B2 (en) Method and apparatus for performing byte-code optimization during pauses
US6237141B1 (en) Method and apparatus for dynamically optimizing byte-coded programs
US8286152B2 (en) Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
US6634023B1 (en) Compile method, exception handling method and computer
US7039738B2 (en) Method and system for handling device driver interrupts
US7086053B2 (en) Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
EP0806725B1 (en) Method and apparatus for early insertion of assembler code for optimization
US7406684B2 (en) Compiler, dynamic compiler, and replay compiler
US20030093779A1 (en) Method and apparatus for dynamically compiling byte codes into native code
US7086044B2 (en) Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
JP3992102B2 (ja) コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体
US10754754B2 (en) Evaluating performance improvement of executing instructions in a first processor over executing on a second processor
JP3538292B2 (ja) 実行時プログラム翻訳方法
US6671877B1 (en) Method and device to calculate activity degrees of method programs
US20050039189A1 (en) Methods and apparatus to preemptively compile an application
KR100692211B1 (ko) 게임 엔진에서 파이버를 이용한 오브젝트 처리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051005

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080319