JP2007272893A - 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム - Google Patents

動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム Download PDF

Info

Publication number
JP2007272893A
JP2007272893A JP2007086623A JP2007086623A JP2007272893A JP 2007272893 A JP2007272893 A JP 2007272893A JP 2007086623 A JP2007086623 A JP 2007086623A JP 2007086623 A JP2007086623 A JP 2007086623A JP 2007272893 A JP2007272893 A JP 2007272893A
Authority
JP
Japan
Prior art keywords
instructions
compilation
sets
output
dynamic
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
Application number
JP2007086623A
Other languages
English (en)
Other versions
JP5324050B2 (ja
Inventor
Ioi K Lam
ケイ. ラム イオイ
Oleg A Pliss
エイ. プリス オレグ
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 JP2007272893A publication Critical patent/JP2007272893A/ja
Application granted granted Critical
Publication of JP5324050B2 publication Critical patent/JP5324050B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】動的コンパイル期間中に動的ポーズを減少させる技術の提供。
【解決手段】アプリケーションがユーザに対しての動的出力のレンダリングを検知する。該動的出力は、アプリケーションがビジュアル又はオーディオデータにおける変化を表わす。アプリケーションがこのような出力を検知すると、動的出力の頻度をモニタするシステムに通知する。動的出力の頻度がスレッシュホールドを超えると、システムはコンパイルを中断すべく通知する。システム上のインタプリタが処理制御をコンパイラーへパスすべく命令される場合にコンパイルが行われる。この態様は、インタプリタにより現在処理中のメソッドがコンパイルのためにマーク付けされている場合である。従って、コンパイルを中断させるために、インタプリタがコンパイラーに対して処理制御をパスすべく命令されることがないようにコンパイラはコンパイルのためにメソッドのマーク付けすることを中止する。
【選択図】図1

Description

本発明は、動的コンパイル期間中に動的ポーズを減少させる技術に関するものであって、更に詳細には、動的コンパイルにより発生される動的出力における検知可能なポーズを減少させる技術に関するものである。
このセクションに記載するアプローチは、探求することが可能であったアプローチであるが、必ずしも以前に着想されたか又は探求されたアプローチではない。従って、そうでないことが示されない限り、このセクションにおいて記載するアプローチのいずれもが単にこのセクション内に包含されているという理由によって従来技術としての地位を有するものであると仮定すべきではない。
サンマイクロシステムのジャバ(Java(登録商標))プログラミング言語等のプログラミング言語は、プログラマーが比較的容易に多くのプラットフォームに対し1つの言語でアプリケーションを開発することを可能とし、相互引用性を確保するよりも、製品の開発に関してより多くの資源を消費することを可能とする。
典型的なジャバインプリメンテーションにおいては、ジャバアプリケーションが実行される場合には、ジャバ仮想マシン(JVM)のインスタンスもジャバアプリケーションの実行をサポートするために開始される。JVMは、ネイティブコードであることが可能であり、ジャババイトコードを解釈し且つ実行する。ジャババイトコードは、人間のプログラマーにより作成され且つ理解されるジャバソースコードから派生される。該バイトコードは中間レベルのコードとして動作する。ジャバプログラムは、JVMが実行中である任意のプラットフォーム上で実行することが可能である。
時折、JVMをしてバイトコードを解釈させるよりも、ジャバアプリケーションをネイティブなマシンコードで実行することがより望ましい。このような場合には、バイトコードは、典型的に、ジャストインタイム即ちJITコンパイラーと呼称されるコンパイラーによりネイティブなマシンコードへコンパイルすることが可能である。そうすることによりJVMは特定のアプリケーションをより速く実行することを可能とする(アプリケーションのジャババイトコードを実行するためにジャバインタプリタを使用するのではなく、アプリケーションは直接的にプロセッサにより実行され、そのことはより高速である)。
JVMはあるインターバルでバイトコードをネイティブのマシンコードへコンパイルすることをトリガするためのサンプリングメカニズムを包含している。例えば、サンプリングメカニズムは、30ミリ秒毎にコンパイルをトリガすべく設定することが可能である。然しながら、コンパイルはその他の目的のために使用することが可能なシステム資源を消費する。従って、コンパイルの効果を最小とするために、JVMは、例えば、一度に5ミリ秒の間コンパイルが発生することが可能であるに過ぎないようにコンパイルに制限を設定することが可能である。このことは、一度に1つのプロセッサスレッドを稼動させるのに充分な資源を具備する単一プロセッサシステムにおいて特に有用である。サンプリングメカニズムを介してのコンパイルを制限することにより、JVMは、プロセッサスレッドに関して時間を取り過ぎることによりコンパイルがシステム資源を重苦しくすることがないことを保証する。
サンプリングメカニズムの1つの欠点は、コンパイルの静的性質である。コンパイルは特定の時間において行われるべく設定されており且つある期間に制限されている。然しながら、ベンチマーク用のアプリケーション等のプロセッサ集約的プログラムの場合には、実行効率を最大化させるために可及的に多くのメソッドをコンパイルすることが望ましい場合がある。このような場合には、サンプリングに加えて、幾つかの仮想マシンは「ホットメソッド(hot method)」(ある時間周期内において頻繁に呼出されるメソッド)の動的コンパイルを使用する。ホットメソッドは、最近実行されたメソッドのリストをトラッキングすることによりコンパイルされる。このリストにおける各メソッドは、マーク付けされ、インタプリタ的な実行の代わりにネイティブな実行のためにそのメソッドをコンパイルさせる。
然しながらホットメソッドの動的コンパイルの欠点のうちの1つは、コンパイラーがシステム資源の不釣り合いな割合を迅速に消費する場合があるということである。このことは、特に、多数のホットメソッドが存在している場合に言えることである。このことは、ビデオ又はオーディオ等の動的出力のレンダリング等のその他のシステム機能に悪影響を与える場合がある。例えば、充分な処理能力が存在しない場合には、ビデオアニメーションのフレームは必要な割合でリフレッシュしない場合があり、アニメーションの観察者をして不所望なスタッター(stutter)、ポーズ又はブランクイメージを知覚させることとなる。
上の説明から、静的サンプリングアプローチも、ホットメソッドの動的コンパイルアプローチも、それら自身によって、完全に満足の行く結果を提供するものではないことが明らかである。従って、コンパイルを管理する改善したメカニズムが必要とされている。
本発明の1実施例によれば、動的コンパイルにより発生される動的出力における検知可能なポーズを減少させる方法が提供される。動的出力は、頻繁に変化する出力として定義される。動的出力の例は、モーションビデオ、アニメーション、又はオーディオとすることが可能である。この方法によれば、仮想マシンを具備するシステム上で稼動しているアプリケーションがユーザに対してレンダリングされるべく出力をユーザインターフェースへ送る。アプリケーションがこのような出力を送る場合にはいつでも、該アプリケーションは、このような出力が発生したことを仮想マシンへ通知するメソッドを喚起させる。出力が発生したことのこのような通知は仮想マシンにより、出力の頻度を追従する動的出力モニタへ転送される。
動的出力モニタは出力の頻度をスレッシュホールドに対して比較して、その出力が動的出力であるか否か及び仮想マシン上のコンパイルが中止されるべきか又は継続されるべきかを決定する。その出力頻度がスレッシュホールドを超える場合には、動的出力モニタはグローバル動的出力インジケータの値を変化させてシステムの他のコンポーネントに対してコンパイルを中止することを告げる。特に、グローバル動的出力インジケータは、コンパイルのためにメソッドのマーキングを継続するか否かをシステム上のコンパイラーに告げるために使用される。
システム上のインタプリタが、メソッド処理の制御をコンパイラーへパスすることが命令される場合にコンパイルが行われる。処理制御がコンパイラーへパスされると、コンパイラーはグローバル動的出力インジケータをチェックして、動的出力モニタがコンパイルが中止されることを要求したか否かを決定する。そうである場合には、コンパイラーはコンパイルのためにメソッドをマーキングすることがないことによりコンパイルを中止する。メソッドは、通常、それらが最近解釈されたメソッドのログ内に位置されている「ホットメソッド」である場合に、コンパイルのためにマーク付けされる。最近解釈されたメソッドは、ジャバインタプリタにより最近実行されたメソッドである。コンパイルのためにメソッドのマーキングしないことにより、次回にこれらのメソッドがインタプリタにより取扱われると、インタプリタはそのメソッドの処理制御をコンパイラーへパスすることはなく、従って、コンパイルは実施されない。コンパイルが実施されないので、動的出力をユーザに対してレンダリングするためにより多くの資源が使用可能とされる。このことは、ユーザが動的出力において検知可能なポーズを経験することの蓋然性を減少させる。このように、本発明のこの実施例は、ホットメソッドを動的にコンパイルさせることを可能とする。然しながら、動的出力がレンダリングされている場合には、ホットメソッドのコンパイルが中止されて、出力レンダリングメカニズムに対してそれらが動的出力をレンダリングするのに必要な処理資源を与える。このように動的コンパイルを自動的に制御することによりシステムのその他の部分に悪影響を与えることなしにホットメソッドコンパイルの恩恵を受けることが可能である。
以下の説明において、説明の便宜上、本発明の完全なる理解を与えるために多数の特定の詳細について記載する。然しながら、本発明はこれらの特定な詳細なしで実施することが可能であることは明らかである。その他の場合において、本発明を不必要にぼかすことを回避するために、良く知られた構造及び装置はブロック図で示してある。
構造的概観
図1を参照すると、本発明の1実施例をインプリメントすることが可能なシステム100のブロック図が示されている。説明の便宜上、本発明の1実施例をシステム100上のJVM101を参照して説明する。然しながら、注意すべきことであるが本発明はこのような実施例に制限されるものではなく、JVMによってインプリメントされることが必要なものではない。そうではなく、本明細書に記載したようなプロセスを実施することが可能な任意のシステムを使用することが可能である。システム100の例は、ハンドヘルドコンピューティング装置、パーソナルデジタルアシスタント、携帯電話、ポータブルコンピュータ、パソコン、又は本明細書に記載したプロセスを実施するための任意のその他のタイプのコンピューティングシステムを包含することが可能である。
図示したように、JVM101は、就中、インタプリタ102及びコンパイラー106を包含している。インタプリタ102及びコンパイラー106は、システム100上のアプリケーション150によりコールされたメソッドを処理するためにJVM101により使用される。インタプリタ102は、バイトコードを実行することによりメソッドをインタプリタ的に、即ち解釈しながら実行する。更に、インタプリタ102は実行ログ104を使用してメソッドの実行をログ、即ち記録する。メソッドを処理している間に、インタプリタ102は、又、処理制御がコンパイラー106へパスされるべきか否かを決定する役目を有している。
コンパイラー106はコンパイルとして知られている処理においてバイトコードをネイティブコードへコンパイルする。コンパイル期間中に、コンパイラー106は、1つのメソッドのバイトコードをネイティブ実行可能コードへ翻訳するために喚起、即ち呼出され、該ネイティブな実行可能コードはシステム100上の1つ又はそれ以上のプロセッサにより実行される。更に、コンパイラー106は多数のその他のタスクの役目を担っている。例えば、1実施例によれば、コンパイラー106は、又、将来のコンパイルのために実行ログ104内におけるメソッドのマーク付けをするか否かを決定する役目を担っている。
実行ログ104はインタプリタ102によって最近実行されたメソッドのリスティングを包含している。実行ログ104内にログされたメソッドは「ホットメソッド」というラベルが付けられ、それらのメソッドは、設定したインターバル期間中にインタプリタ102によって特定の頻度を超えて実行されたメソッドである。例えば、1実施例によれば、実行ログ104は、各キュー空間が最近解釈されたメソッドを表わす20個のキュー空間の寸法を有するキューとすることが可能である。そうであるから実行ログ104はインタプリタ102によって実行された過去20個のメソッドを追跡するに過ぎない。1つのメソッドがインタプリタ102によって実行されると、そのメソッドは実行ログ104内にログされる。付加的なメソッドのその後の処理は、元のメソッドを実行ログ104からプッシュアウト、即ち押出させる。然しながら、元のメソッドが再度20個のメソッド内において実行される場合には、それは実行ログ104内に再び入り且つホットメソッドとして留まる。
実行ログ104内のホットメソッドはコンパイラー106によってコンパイル用のマークが付けられる。例えば、それがインタプリタ102から処理制御を獲得する場合には、コンパイラー106は、通常、コンパイルのために実行ログ104内の全てのメソッドにマークを付ける。然しながら、ホットメソッドのコンパイルを検知可能なポーズなしでユーザに対して動的出力をレンダリングさせるのに必要な処理能力とバランスさせるために、コンパイラー106は動的出力の存在をモニタする。動的出力は、ビデオ、アニメーション、オーディオ又は頻繁に変化するその他の任意のタイプの出力等の任意のタイプの出力とすることが可能である。動的出力が現在レンダリングされているか否かに基づいて、コンパイラー106は、コンパイルのために実行ログ104内のメソッドにマークを付けるか否かを決定することによりホットメソッドのコンパイルを動的に制御することが可能である。
JVM101は、又、サンプリングインタラプト108を包含している。サンプリングインタラプトは、コンパイラー106によるメソッドのコンパイルをトリガするために使用されるメカニズムである。これを達成するために、1実施例においては、サンプリングインタラプト108は、メソッドの実行期間中にインタプリタ102がチェックするグローバル変数に対する値を割当てる。グローバル変数の値は、サンプリングトリガがフラッグされているか否かを表示するために使用される。サンプリングトリガは、インタプリタ102が、処理スレッドの制御がコンパイルのためにコンパイラー106に与えられることが必要であることを認識することを可能とする。インタプリタ102がそのメソッドを処理即ち解釈している間に、インタプリタ102は、サンプリングインタラプト108がグローバル変数に対して設定された値に基づいてサンプリングトリガをフラッグしたか否かを決定する。サンプリングトリガがフラッグされている場合、即ちフラッグが立てられている場合には、インタプリタ102はプロセッサスレッドの制御をコンパイラー106へ渡す。
同様に、実行ログ104内のメソッドをマーキングすることによりコンパイラー106はサンプリングインタラプト108によって使用される同一のグローバル変数をして、処理制御をコンパイラー106へパスするか否かをインタプリタ102に知らせる。従って、次回にインタプリタ102がマークされているメソッドを実行すると、インタプリタ102は、サンプリングトリガがフラッグされており且つ処理制御をコンパイラー106へパスすることを認識する。コンパイラー106が処理制御を有すると、コンパイラー106は、実行ログ104内のメソッドにマークを付けるか否かを決定する。実行ログ104内のメソッドをマークを付けるか否かを決定するために、コンパイラー106は、最初に、動的出力がレンダリング中であるか否かを決定する。このことを行うために、JVM101は、アプリケーション150と通信することにより動的出力がレンダリング中であるか否かを認識せねばならない。
アプリケーション150はシステム100上で稼動し且つJVM101により実行のためのメソッドをコールする。1実施例によれば、アプリケーション150がマルチメディアの提示期間中にディスプレイ又はオーディオにおける変化等のユーザインターフェースに対しての出力をレンダリングする場合には、アプリケーション150はその出力をJVM101に知らせるために出力インジケータを喚起させる。例えば、アプリケーション150がシステム100上で稼動しているグラフィカルゲームアプリケーションであると仮定する。アプリケーション150は、そのゲームのビジュアル出力が1つのフレームから次のフレームへ変化したことを検知し且つ出力が現在レンダリングされていることをJVM101のコンポーネントに告げるために使用される出力インジケータをコールする。1実施例によれば、その出力インジケータがコールされると、JVM101は動的出力モニタ110を使用して出力表示を処理する。
動的出力モニタ110はアプリケーション150による出力インジケータのコールをモニタする役目を担っている。例えば、アプリケーション150が出力インジケータをコールする度に、動的出力モニタ110はクロック112を使用してその発生をログ、即ち記録し、出力がアプリケーション150から報告される頻度を追従する。動的出力モニタ110が、出力頻度が特定のスレッシュホールド、例えば1分間におけるコールのある数を超えたことを決定する場合には、動的出力モニタ110はグローバル変数をして、表示中の出力が動的出力であることを表わすように設定させる。
動的出力モニタ110は全てのアプリケーションによる出力インジケータのコールを継続してモニタする。出力インジケータのコール数が設定したスレッシュホールドより低くなると、動的出力モニタ110は、表示中の出力が動的出力ではないことを表わすべくグローバル変数を変化させることが可能である。
グローバル変数を使用して、コンパイラー106は、コンパイルのために実行ログ104内のメソッドにマークを付けるか否かを決定することが可能であり、従って動的出力のレンダリング期間中にメソッドのコンパイルを動的に制御することが可能である。
機能的概観
動的出力に対するモニタリング
次に、図2を参照すると、本発明の1実施例に基づいて、動的出力モニタ110及び任意のアプリケーション150の動作を例示したフローチャートが示されている。ステップ202において、アプリケーション150がシステム100のユーザインターフェースへ出力を送ると、アプリケーション150は出力インジケータをコールする。ユーザインターフェースへ送られた出力は、例えば、ディスプレイスクリーン上のピクセルの変化又は新たな組のオーディオデータとすることが可能である。従って、1実施例によれば、ピクセル又はオーディオデータにおける変化に応答して、アプリケーション150はJVM101のその出力を知らせるために出力インジケータを喚起する役目を担っている。1実施例によれば、該出力インジケータは、JVM101への出力への存在を表わすカスタムジャバクラスのインスタンスとすることが可能である。
アプリケーション150が出力インジケータをコールすると、JVM101はその表示を動的出力モニタ110へ転送する。従って、ステップ204において、動的出力モニタ110は出力インジケータのコールをモニタする。クロック112を使用して、動的出力モニタ100は、設定した量の時間内における報告された出力の頻度を決定する。1実施例によれば、動的出力モニタ110は、特定の量の時間におけるメソッドコールの量を表わす比を作成することにより出力インジケータコールを積極的にモニタする。例えば、動的出力モニタ110は毎秒出力インジケータが何回コールされたかを決定するために毎秒毎に比の値を作成することが可能である。従って、出力インジケータが1秒内に、例えば、4回コールされると、報告される比は4である。
この比を使用して、動的出力モニタ110は、動的出力が現在レンダリングされているか否かを決定するために、その比の値をスレッシュホールド比と比較する。スレッシュホールド比はコンパイルが中断される前にある量の時間当たりの出力の最大限許容される検知数を表わしている。スレッシュホールド比が高ければ高い程、コンパイルが発生することが許容される蓋然性は一層高い。同様に、低いスレッシュホールド比は、動的出力のレンダリング期間中にコンパイルがスタッター又はポーズを発生させる蓋然性がより少ないことを確保する。
1実施例によれば、スレッシュホールド比の値は、システム100、JVM101又はアプリケーション150等の任意のその他のコンポーネントにより自動的に設定し且つ変化させることが可能である。例えば、システム100の任意のコンポーネントが、任意の与えられた時刻において、効率の目的のためのメソッドのコンパイルが、動的出力における何等かのポーズ又はスタッターの影響に優るものであることを決定することが可能である。従って、スレッシュホールド比の値が元々2である場合には、システム100の1つのコンポーネントはその値は5へ増加させることが可能である。代替的に、別の実施例においては、スレッシュホールド比はシステム100のユーザにより手動的に設定することが可能である。
動的出力モニタ110は、動的出力が上述した比をスレッシュホールド比と比較することによりレンダリングされているか否かを決定するものであるが、本発明はこのような実施例に制限されるものではなく、動的出力モニタ110は、アプリケーション150からの出力インジケータのコールを追跡する任意のその他のメソッドにより動的出力がレンダリングされているか否かを決定することが可能であることに注意すべきである。
再度図2を参照すると、ステップ206において、動的出力モニタ110は、上述した処理を使用して動的出力がレンダリングされているか否かを決定する。このような決定を行った後に、1実施例によれば、動的出力モニタ110はグローバル変数の値を変化させる。該変数は「グローバル」変数であるとして定義されるが、その理由は、システム100の任意のコンポーネント又はオブジェクトへアクセス可能だからである。該グローバル変数は、動的出力の存在をシステム100上の全てのコンポーネント又はオブジェクトへ通信するために使用される。このグローバル変数は、以後、「グローバル動的出力インジケータ」と呼称される。従って、動的出力がレンダリング中であるか否かを決定した後に、動的出力モニタ110は夫々ステップ207又は208において、グローバル動的出力インジケータに対し0又は1の値を割当てる。
該スレッシュホールド比の値が出力インジケータコールの頻度よりも一層高い場合には、ステップ207において、グローバルダイナミック出力インジケータの値は0へ設定される。この場合において、システム100のその他のコンポーネントは、グローバル動的出力インジケータが0に設定される場合には、動的出力がレンダリングされていないことを認識する形態とさせることが可能である。
然しながら、出力インジケータコールの頻度がスレッシュホールド比より一層高い場合には、ステップ208において、グローバル動的出力インジケータの値は1へ設定され且つシステム100のコンポーネントは、このような値が、動的出力が現在レンダリングされていることを表わすことを認識する形態とさせることが可能である。
動的出力モニタ110はグローバル動的出力インジケータを積極的に0又は1の値へ設定するものであるから、動的出力がレンダリングされているか否かに関して、システム100及びJVM101のコンポーネントは継続的にアップデートされる。更に、グローバル動的出力インジケータは0または1の値に設定することが可能であることについて説明したが、本発明はこのような実施例に制限されるものではなく、且つグローバル動的出力インジケータは任意の値に設定することが可能である。例えば、その他の実施例においては、グローバル動的出力インジケータは、動的出力のスペクトルを表わす任意の数の値に設定することが可能である。特に、0の値は、動的出力が現在レンダリングされていないことを表わすことが可能であり、一方5の値は、動的出力が非常に頻繁にレンダリングされることを表わすことが可能である。更に、0と5との間の任意の値は、動的出力の異なる頻度を表わすことが可能である。グローバル動的出力インジケータの値を使用して、1実施例によれば、動的出力の頻度に従って動的出力期間中に動的コンパイルを可変的に制御することが可能である。
メソッドのインタプリタ的処理
動的出力モニタ110が動的出力に対してモニタしている間に、アプリケーション150はJVM101による実行のためのメソッドを喚起する。例示的な目的として、システム100上で稼動しているアプリケーション150によりメソッドnが最近コールされたものと仮定する。次に、図3を参照すると、インタプリタ102の動作を例示したフローチャートが本発明の1実施例に基づいて示されている。メソッドnがコールされると、JVM101は該メソッドをインタプリタ的に実行するためにインタプリタ102へパスする。ステップ302において、インタプリタ102はバイトコードでメソッドnをインタプリタ的に実行する。
インタプリタ的実行期間中に、又は、代替的に、任意のその他の時間において、ステップ304において、メソッドnのエントリが実行ログ104内に配置される。メソッドnのエントリが実行ログ104内になされるので、メソッドnは、通常、処理制御がコンパイラー106へパスされる場合にコンパイル用のマークが付けられる。以下に説明するように、コンパイラー106は、動的出力がレンダリングされるか否かに依存して、実行ログ104内のいずれかのメソッドに対してマーキングを行う役目を担っている。メソッドnはコンパイル用のマークが付けられるので、次回にメソッドnがインタプリタ的に実行される場合に、インタプリタ102は処理制御をコンパイラー106へパスし、本明細書に記載した如き処理を使用してメソッドnをコンパイルさせる。
メソッドnのログを実行ログ104内に配置させた後に、ステップ306において、インタプリタ102は、サンプリングトリガがフラッグされているか否かを決定する。サンプリングトリガは、インタプリタ102が処理制御をコンパイラー106へ渡すべきであるか否かを表わすために使用される。1実施例によれば、サンプリングトリガは、2つの態様でフラッグすることが可能であり、即ち(1)サンプリングメカニズムがトリガされているか、又は(2)コンパイラー106によるコンパイルのためにマークが付けられているメソッドが現在インタプリタ102によってインタプリタ的に実行されていることである。これら2つの態様の間の唯一の差は、第一の態様のサンプリングメカニズムは、サンプリングトリガを特定のインターバルでフラッグさせ、一方2番目の態様におけるホットメソッドは、どのメソッドがコンパイラー106によるコンパイルのためのマークが付けられているかに依存して、任意の与えられた時間においてサンプリングトリガをフラッグさせることが可能である。
1実施例によれば、サンプリングトリガがフラッグされているか否かを決定するために、インタプリタ102は、以後「グローバルコンパイル変数」と呼称する別のグローバル変数の値をチェックする。グローバルコンパイル変数は、処理制御をコンパイラー106へ渡すか否かをインタプリタ102へ通知する。グローバルコンパイル変数が1の値を有している場合には、サンプリングトリガがフラッグされており、且つインタプリタ102は処理制御をコンパイラー106へ渡す。そうでない場合には、グローバルコンパイル変数は0のままである。グローバルコンパイル変数の値が0である場合には、インタプリタ102はメソッドnをインタプリタ的に実行することを完了し、且つステップ308において、次に喚起されるメソッドn+1をインタプリタ的に実行する。
然しながら、ステップ306において、コンパイル変数の値が1であるのでサンプリングトリガがフラッグされていることを決定する場合には、ステップ308において、インタプリタ102は処理制御をコンパイラー106へ渡す。
メソッドの動的コンパイル
1実施例によれば、システム100は単一処理スレッドシステムであり、そのことは、システム100のどのコンポーネントも処理制御を獲得しない限り何等の動作を実施することはないことを意味している。従って、コンパイラー106は、それが上述した如くインタプリタ102から処理制御を受取るまで何等の動作を実施することはない。コンパイラー106が処理制御を受取ると、それは処理制御をインタプリタ102へ返す前に本明細書に記載するような多数の動作を実施する。
次に、図4を参照すると、本発明の1実施例に基づいてコンパイラー106の動作を例示したフローチャートが示されている。コンパイラー106が動作中である場合、即ち処理制御を獲得している場合には、ステップ402において、コンパイラーは上述した如く動的出力モニタ110によって設定されたグローバル動的出力変数の値をチェックする。従って、1実施例によれば、ステップ404において、コンパイラー106は、表示中の出力が動的出力であるか否かをJVM101によって設定されたグローバルメディア変数の値を検査することにより決定する。例えば、グローバル動的出力変数が0の値に設定された場合には、コンパイラー106は、動的出力が現在発生されていないことを決定し、且つステップ406において、コンパイラー106の通常動作において為されるように、コンパイル用に実行ログ104内の各メソッドのマーク付けを継続する。
1実施例によれば、実行ログ104内のメソッドのマーキング即ちマーク付けは、そのメソッドが再度コールされる場合にサンプリングトリガをフラッグさせる。1実施例において、このことは、変数宣言を表わす1つ又はそれ以上の命令をコールされているメソッドのインスタンス内に挿入することにより達成される。次回にそのメソッドがJVM101によってコールされると、その変数宣言はその特定の変数をして値を変化させる。
例えば、1実施例において、メソッドnがコンパイル用にマーク付けされていた場合に、コンパイラー106は次回にメソッドnがコールされる場合に、グローバルコンパイル変数に対する変数宣言を表わす命令を1の値へ設定させる。従って、図3に示した処理に従ってインタプリタ102がメソッドnを実行している場合に、インタプリタ102は、グローバルコンパイル変数が1の値に設定されているのでサンプリングトリガがフラッグされていることを決定する(図3におけるステップ306参照)。それに応答して、インタプリタ102は処理制御をコンパイラー106へパスする。このことは、更に、コンパイラーをしてメソッドnのコンパイル動作を開始させる。
然しながら、動的出力が現在レンダリング中である場合には、コンパイラー106は実行ログ104内のいずれのメソッドにマーク付けを行うものではなく、従って処理制御はこれらのメソッドの実行期間中にコンパイラー106へ戻ることはない。再度ステップ404を参照すると、コンパイラー106が、グローバル動的出力インジケータの値が1に設定されているので動的出力がレンダリング中であることを決定すると、コンパイラー106はステップ406をスキップし且つ直接的にステップ408へ進行する。従って、動的出力がレンダリング中であることが決定される場合には、コンパイラー106は実行ログ104内のいずれのメソッドもマーク付けするものではなく、そのことは、これらのメソッドが喚起される場合にはグローバルコンパイル変数は1へ設定されることがないことを意味している。インタプリタ102がこれらのメソッドの処理を回避する場合には、コンパイルトリガがフラッグされていないことを決定する。
ステップ408において、システム100上の1つ又はそれ以上のプロセッサによるネイティブ実行のために、メソッドnのバイトコード命令をネイティブコードへ翻訳することによるメソッドnのコンパイルをコンパイラー106が開始する。代替的に、現在のメソッドnをコンパイルする代わりに、コンパイラー106は、前のメソッドに関するコンパイルを再開することが可能である。例えば、1実施例によれば、JVM101はコンパイルが行われることが許容される時間の量を5ミリ秒に制限する。
最大コンパイル時間が5ミリ秒であると仮定する。コンパイラー106が以前にメソッドn−1をコンパイルしており且つ5ミリ秒でそのコンパイルを完了することができなかった場合には、コンパイラー106はメソッドn−1に対するコンパイルの経過をマーク付けし且つ処理制御をインタプリタ102へリターンする。然しながら、次回にそれが処理制御を得ると、コンパイラー106はそれがコンパイルを中断した点においてメソッドn−1のコンパイルを再開することが可能である。1実施例によれば、部分的にコンパイルされたメソッドのコンパイルは未だに全くコンパイルされていないメソッドに対して優先性を持っている。従って、例えコンパイラーがメソッドnの実行期間中に処理スレッドの制御を得たとしても、メソッドn−1が最初にコンパイルされ、且つコンパイラー106はメソッドnをコンパイルのために次に並ぶべく待ち合わせさせることが可能である。
代替的にメソッドn−1が完全にコンパイルされている場合には、コンパイラー106は、今やネイティブコードであるメソッドn−1を、そのメソッドがJVM101において次にコールされる場合に実行させ、且つ新たなメソッド又は部分的にコンパイルされているメソッドのコンパイルを継続して行う。
ステップ410において、コンパイラー106はグローバルコンパイル変数を0へリセットする。インタプリタ102が、サンプリングメカニズムによって又は何等かのメソッドnがコンパイルのためにマーク付けされているためにコンパイラー106へ制御をパスすることを確保するために、コンパイラー106はコンパイル変数をリセットさせる。従って、グローバルコンパイル変数が0へリセットされるので、(1)サンプリングトリガがフラッグされているか、又は(2)メソッドn+1がコンパイルのためにコンパイラー106によってマーク付けされており、従ってグローバルコンパイル変数をして再度1の値へ設定させていない限り、次のメソッドn+1の実行時にインタプリタ102は処理制御をコンパイラー106へパスすることはない。
更に、1実施例によれば、コンパイラーがJVM101によって設定されているその最大時間制限に到達すると、コンパイラー106はグローバルコンパイル変数を0へリセットする。例えば、コンパイルは5ミリ秒の最大値に制限される場合がある。従って処理制御を獲得してから5ミリ秒が経過すると、コンパイラー106はステップ410へ進行し、コンパイル変数を0へリセットし且つ処理制御をステップ412においてインタプリタ102へリターンする。
図2乃至4にわたって説明した処理はJVM101及びシステム100上のいずれかのアプリケーション150の動作期間中連続的である。グローバル動的出力インジケータの使用は、アプリケーション150により処理中の動的出力の量に従ってコンパイルを動的に抑制することを可能とする。このような処理の結果を更に図5及び図6によって例示する。
図5Aを参照すると、1実施例に基づくサンプリングメカニズムの動作期間中の処理スレッドを例示したブロック図が示されている。図5はサンプリングメカニズムの動作期間中の処理タイムラインに基づく処理スレッド500aを示している。1実施例によれば、サンプリングメカニズムは、30ms等の設定したインターバルにおいてメソッドのコンパイルをトリガする形態とされている。従って、30ms毎に、インタプリタ102は処理スレッド500Aの制御をコンパイラー106へパスする。然しながら、サンプリングメカニズムは、システム資源を節約するためにコンパイルの量を制限する形態とさせることが可能である。従って、1実施例によれば、コンパイルは任意の与えられた時間において5msへ制限される。このように、制御が30msにおいてコンパイラー106へパスされると、コンパイルは35msまで実施される。この点において、コンパイルは中断され且つスレッド500Aの制御はインタプリタ102へリターンされる。
図5Bは、1実施例に基づくサンプリングメカニズム及びホットメソッドの動的コンパイルの両方の動作期間中の処理スレッドを例示したブロック図である。図5Bにおいて、処理スレッド500Bは、ホットメソッドのコンパイル期間中における処理スレッドを表わしている。スレッド500Aのように、サンプリングメカニズムによるコンパイルは30msと35msとの間において行われる。然しながら、スレッド500Aと異なり、コンパイルは35msと60msとの間の時間期間中に中断されることはなく、その理由は、コンパイラー106はこの時間期間中にホットメソッドのコンパイルをトリガすることが可能だからである。例えば、スレッド500B上において、ポイントA及びBは実行ログ104においてマークが付けられているホットメソッドのコンパイルを表わしている。更に、1実施例によれば、ホットメソッドの動的コンパイルに対して設定された時間は存在しない。従って、実行ログにおいてマークが付けられているメソッドのコンパイルは、スレッド500B上で大きな量の時間を占めることが可能である。例えば、ポイントA,B,C,Dは、60msと90msとの間の時間の大きな大部分を占めている。スレッド500B上のメソッドのコンパイルに多くの時間が消費されるので、より多くのシステム資源がコンパイルするために使用され且つ動的出力のレンダリングが影響を受ける場合がある。充分なシステム資源が動的出力に対して使用されることがないので、動的出力のレンダリングにおいてユーザはポーズ又はスタッターを検知する場合がある。
然しながら、上述した如く、動的コンパイル期間中に検知可能なポーズを減少させる方法は、コンパイラー106が実行ログ104内のメソッドを選択的にマーク付けすることを可能とする。例えば、コンパイラー106が実行ログ104内のいずれのメソッドにもマーク付けすることがない場合には、処理制御は上述した如くコンパイラー106へパスすることはないので35msと60msとの間でコンパイルが行われることはない。その代わりに、コンパイルは、ほぼ500Aのように、30msと35msとの間におけるサンプリングメカニズムに制限される。
このように、本発明は、処理スレッド500A及び処理スレッド500Bにおいて特徴付けられる場合の間の制御を可能とする。動的出力がレンダリングされているか否かに依存して、コンパイラー106は検知可能なポーズを減少させるためにメソッドのコンパイルを動的に制御することが可能である。
ハードウエア概観
図6は本発明の1実施例をインプリメントすることが可能なコンピュータシステム600を例示したブロック図である。コンピュータシステム600は、情報交換を容易化させるためのバス702、及び情報を処理するためにバス602と結合されている1個又はそれ以上のプロセッサ604を包含している。コンピュータシステム600は、又、ランダムアクセスメモリ(RAM)又はその他の動的記憶装置等の情報を記憶し且つプロセッサ604により実行されるべき命令を記憶するためにバス602へ結合されているメインメモリ606を包含している。メインメモリ606は、又、プロセッサ604による命令の実行期間中に一次的な変数又はその他の中間情報を記憶するために記憶することが可能である。コンピュータシステム600は、更に、静的情報及びプロセッサ604に対する命令を記憶するためにバス602へ結合されているリードオンリメモリ(ROM)708又はその他の静的記憶装置を包含することが可能である。磁気ディスク又は光学ディスク等の記憶装置610が設けられており且つ情報及び命令を格納するためにバス602へ結合されている。
コンピュータシステム600は、コンピュータユーザに対し情報を表示するためにバス602を介してディスプレイ612へ結合させることが可能である。英文字及びその他のキーを包含する入力装置614が、情報及びコマンド選択をプロセッサ604へ通信するためにバス602へ結合されている。別のタイプのユーザ入力装置は、方向情報及びコマンド選択をプロセッサ604へ通信し且つディスプレイ612上のカーソルの移動を制御するために、マウス、トラックボール、又はカーソル方向器等のカーソル制御616である。この入力装置は、典型的に、2つの軸、即ち第一軸(例えば、x)及び第二軸(例えば、y)において2つの自由度を有しており、そのことは、該装置が面内における位置を特定することを可能とする。
コンピュータシステム600において、バス602は、種々のコンポーネント間で情報、信号、データ等を交換させることを可能とする任意のメカニズム及び/又は媒体とすることが可能である。例えば、バス602は、電気的信号を担持する1組の導体とすることが可能である。バス602は、又、1つ又はそれ以上のコンポーネント間でワイヤレス信号を担持するワイヤレス媒体(例えば、空気)とすることも可能である。バス602は、更に、1つ又はそれ以上のコンポーネントを接続するネットワーク接続とすることが可能である。種々のコンポーネント間で情報、信号、データ等を交換することを可能とする任意のメカニズム及び/又は媒体をバス602として使用することが可能である。
バス602は、又、これらのメカニズム/媒体の結合とすることが可能である。例えば、プロセッサ604は、記憶装置610とワイヤレス的に通信することが可能である。このような場合には、バス602は、プロセッサ604及び記憶装置610の観点からは空気等のワイヤレス媒体である。更に、プロセッサ604は容量的にROM608と通信することが可能である。更に、プロセッサ604は、ネットワーク接続を介してメインメモリ606と通信することが可能である。この場合には、バス602はネットワーク接続である。更に、プロセッサ604は、1組の導体を介してディスプレイ612と通信することが可能である。この場合には、バス602は1組の導体である。従って、種々のコンポーネントがどのようにして互いに通信するかに依存して、バス602は異なる形態を取ることが可能である。図6に示したように、バス620は、種々のコンポーネント間で情報、信号、データ等を交換することを可能とする全てのメカニズム及び/又は媒体を機能的に表わしている。
本発明は本明細書に記載した技術をインプリメントするためのコンピュータシステム600の使用に関連している。本発明の1実施例によれば、これらの事実は、メインメモリ606内に包含している1つ又はそれ以上の命令の1つ又はそれ以上のシーケンスを実行するプロセッサ604に応答してコンピュータシステム600により実施される。このような命令は記憶装置610等の別の機械読取可能な媒体からメインメモリ606内に読み込むことが可能である。メインメモリ606内に包含される命令のシーケンスの実行は、プロセッサ604をして本明細書に記載した処理ステップを実施させる。代替的実施例においては、本発明をインプリメントするために、ソフトウエア命令の代わりに又はそれと結合してハードワイヤード回路を使用することが可能である。従って、本発明の実施例はハードウエア回路とソフトウエアとの何等かの特定の組合わせに制限されるものではない。
本明細書に使用されているように「機械読取可能な媒体」という用語は、マシンをして特定の態様で動作させるデータを供給することに参画する任意の媒体のことを意味している。コンピュータシステム600を使用してインプリメントされる実施例においては、種々の機械読取可能な媒体が、例えば、実行のために命令をプロセッサ604へ供給することに関与する。このような媒体は、これらに制限されるものではないが、非揮発性媒体、揮発性媒体、及び伝送媒体を包含する多くの形態を取ることが可能である。非揮発性媒体は、例えば、記憶装置610等の光学的又は磁気的ディスクを包含している。揮発性媒体は、メインメモリ606等のダイナミックメモリを包含している。伝送媒体は、同軸ケーブル、銅ワイヤ及びオプティカルファイバー、バス602を含むワイヤを包含している。伝送媒体は、又、無線及び赤外線データ通信期間中に発生されるもののような音響的又は光波の形態を取ることが可能である。
機械読取可能な媒体の一般的な形態は、例えば、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープ、又は任意のその他の磁気媒体、CD−ROM、DVD、又は任意のその他の光学的記憶媒体、パンチカード、ペーパーテープ、孔のパターンを具備する任意のその他の物理的媒体、RAM、PROM、EPROM、フラッシュEPROM、任意のその他のメモリチップ又はカートリッジ、以後記載するような搬送波、又はそれからコンピュータが読取ることが可能な任意のその他の媒体を包含している。
機械読取可能な媒体の種々の形態は、実行のために1つ又はそれ以上の命令の1つ又はそれ以上のシーケンスをプロセッサ604へ担持する場合に関連する場合がある。例えば、命令は、初期的に、遠隔コンピュータの磁気ディスク上に担持されている場合がある。その遠隔コンピュータは該命令をそのダイナミックメモリ内にロードさせ且つ該命令をモデムを使用する電話線を介して送信することが可能である。コンピュータシステム600に対して局所的なモデムは電話線上のデータを受取り且つ赤外線送信器を使用してそのデータを赤外線信号へ変換することが可能である。赤外線検知器は赤外線信号内に担持されるデータを受取ることが可能であり且つ適宜の回路がそのデータをバス602上に配置させることが可能である。バス602はメインメモリ606へデータを担持し、それから、プロセッサ604が命令を検索し且つ実行する。メインメモリ606によって受取られる命令は、オプションとして、プロセッサ604による実行の前又は後のいずれかにおいて記憶装置610に記憶させることが可能である。
コンピュータシステム600は、又、バス602へ結合されている通信インターフェース618を包含している。通信インターフェース618はローカルネットワーク622へ接続されているネットワークリンク620に対し二方向データ通信結合を提供する。例えば、通信インターフェース618は、統合サービスデジタルネットワーク(ISDN)カード又は対応するタイプの電話線に対してデータ通信接続を提供するモデムとすることが可能である。別の例として、通信インターフェース618は互換性のあるLANに対しデータ通信接続を提供するためのローカルエリアネットワーク(LAN)カードとすることが可能である。ワイヤレスリンクを実現することも可能である。いずれかのこのような実現例において、通信インターフェース618は種々のタイプの情報を表わすデジタルデータストリームを担持する電気的、電磁的又は光学的信号を送信し且つ受信する。
ネットワークリンク620は、典型的に、1つ又はそれ以上のネットワークを介して他のデータ装置に対してのデータ通信を提供する。例えば、ネットワークリンク620はローカルネットワーク622を介してホストコンピュータ624に対する又はインターネットサービスプロバイダー(ISP)726により運用されるデータ装置への接続を提供することが可能である。ISP726は現在「インターネット」628として一般的に呼称されているワールドワイドパケットデータ通信ネットワークを介してのデータ通信サービスを提供する。ローカルネットワーク622及びインターネット628は、両方共、デジタルデータストリームを担持する電気的、電磁的又は光学的信号を使用する。種々のネットワークを介しての信号及びネットワークリンク620上及びコンピュータシステム600へ及びそれからのデジタルデータを担持する通信インターフェース618を介しての信号は情報を輸送する搬送波の例示的形態である。
コンピュータシステム600は、ネットワーク、ネットワークリンク620及び通信インターフェース618を介して、メッセージを送信し且つプログラムコードを含むデータを受信することが可能である。インターネットの例においては、サーバー630はインターネット628、ISP626、ローカルネットワーク622及び通信インターフェース618を介してアプリケーションプログラム用の要求されたコードを送信する場合がある。
受信したコードはそれが受信されるとプロセッサ604により実行されることが可能であり、及び/又は後に実行するために記憶装置610又はその他の非揮発性記憶装置内に記憶させることが可能である。このように、コンピュータシステム600は搬送波の形態でアプリケーションコードを得ることが可能である。
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ制限されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
本発明の1実施例をインプリメントすることが可能なシステムの概略を示したブロック図。 本発明の1実施例に基づく動的出力モニタの動作を例示したフローチャート。 本発明の1実施例に基づくインタプリタの動作を例示したフローチャート。 本発明の1実施例に基づいてコンパイラーの動作を例示したフローチャート。 (A)は1実施例に基づくサンプリングメカニズムの動作期間中の処理スレッドを例示した概略図、(B)は1実施例に基づくホットメソッドの動的コンパイル期間中の処理スレッドを例示した概略図。 本発明の1実施例を実現することが可能な汎用コンピュータシステムを示したブロック図。
符号の説明
100 システム
101 JVM
102 インタプリタ
104 実行ログ
106 コンパイラー
108 サンプリングインタラプト
110 動的出力モニタ
112 クロック
150 アプリケーション

Claims (20)

  1. マシンによりインプリメントされる方法において、
    動的出力が現在ユーザに対してレンダリングされているか否かを決定し、
    動的出力が現在ユーザに対してレンダリングされていることの決定に応答して、1つ又はそれ以上の組の命令をコンパイルさせず、それにより該1つ又はそれ以上の組の命令をインタプリタ的に実行させる、
    ことを包含している方法。
  2. 請求項1において、決定を行う場合に、
    出力がユーザに対してレンダリングされていることの1つ又はそれ以上の表示を受取り、
    少なくとも部分的に該1つ又はそれ以上の表示に基づいて、該レンダリングされている出力が動的出力であるか否かを決定する、
    ことを包含している方法。
  3. 請求項2において、該出力が動的出力であるか否かを決定する場合に、
    該1つ又はそれ以上の表示が受取られる頻度を決定する、
    ことを包含している方法。
  4. 請求項1において、動的出力がモーションビデオ及びオーディオからなるグループのうちの1つである方法。
  5. 請求項1において、1つ又はそれ以上の命令をコンパイルさせない場合に、
    コンピュータシステムをしてコンパイルのための1つ又はそれ以上の組の命令をマーキングすることを停止させ、その場合に該1つ又はそれ以上の組の命令をマーキングすることがコンピュータシステムをして該1つ又はそれ以上の組の命令が次回にコンピュータシステムにより処理される場合に該1つ又はそれ以上の組の命令をコンパイルさせる、
    ことを包含している方法。
  6. 請求項5において、コンパイルは該1つ又はそれ以上の組の命令を第一フォーマットから第二フォーマットへ変換させ、その場合に該第二フォーマットは該1つ又はそれ以上の組の命令をネイティブに実行させるために使用される方法。
  7. 請求項5において、該1つ又はそれ以上の組の命令が実行ログ内にリストされている最近実行された命令の組であり、且つコンピュータシステムをしてコンパイルのために1つ又はそれ以上の組の命令をマーキングすることを停止させることが、コンピュータシステムをして該実行ログ内にいずれかの組の命令をマーキングすることを停止させることを包含している方法。
  8. 1つ又はそれ以上のプロセッサにより実行される場合に、該1つ又はそれ以上のプロセッサをして以下の動作を実施させる1つ又はそれ以上の組の命令を有する機械読取可能な媒体において、
    動的出力が現在ユーザに対してレンダリングされているか否かを決定し、
    動的出力が現在ユーザに対してレンダリングされていることの決定に応答して、1つ又はそれ以上の組の命令をコンパイルさせず、それにより該1つ又はそれ以上の組の命令をインタプリタ的に実行させる、
    ことを特徴とする機械読取可能な媒体。
  9. 請求項8において、決定を行う場合に、
    出力がユーザに対してレンダリングされていることの1つ又はそれ以上の表示を受取り、
    少なくとも部分的に該1つ又はそれ以上の表示に基づいて、該レンダリングされている出力が動的出力であるか否かを決定する、
    ことを包含している機械読取可能な媒体。
  10. 請求項9において、該出力が動的出力であるか否かを決定する場合に、
    該1つ又はそれ以上の表示が受取られる頻度を決定する、
    ことを包含している機械読取可能な媒体。
  11. 請求項8において、1つ又はそれ以上の命令をコンパイルさせない場合に、
    コンピュータシステムをしてコンパイルのための1つ又はそれ以上の組の命令をマーキングすることを停止させ、その場合に該1つ又はそれ以上の組の命令をマーキングすることが、コンピュータシステムをして、該1つ又はそれ以上の組の命令がコンピュータシステムにより次回処理される場合に該1つ又はそれ以上の組の命令をコンパイルさせる、
    ことを包含している機械読取可能な媒体。
  12. 請求項11において、コンパイルが該1つ又はそれ以上の組の命令を第一フォーマットから第二フォーマットへ変換させ、該第二フォーマットがネイティブ的に該1つ又はそれ以上の組の命令を実行させるために使用される機械読取可能な媒体。
  13. 請求項11において、該1つ又はそれ以上の組の命令が実行ログ内にリストされている最近実行された命令の組であり、コンピュータシステムをしてコンパイルのための1つ又はそれ以上の組の命令のマーキングを停止させることが、コンピュータシステムをして該実行ログ内のいずれかの組の命令のマーキングを停止させることを包含している機械読取可能な媒体。
  14. 装置において、
    固定記憶部、
    1つ又はそれ以上のプロセッサ、
    1組の命令であって、該1つ又はそれ以上のプロセッサによって実行される場合に、該1つ又はそれ以上のプロセッサをして以下の動作、即ち
    動的出力が現在ユーザに対してレンダリングされているか否かを決定し、且つ
    動的出力が現在ユーザに対してレンダリングされていることの決定に応答して、1つ又はそれ以上の組の命令をコンパイルさせず、それにより該1つ又はそれ以上の組の命令をインタプリタ的に実行させる、
    を実施させる1組の命令、
    を有している装置。
  15. 請求項14において、決定を行う場合に、
    出力がユーザに対してレンダリングされていることの1つ又はそれ以上の表示を受取り、
    少なくとも部分的に該1つ又はそれ以上の表示に基づいて、該レンダリングされている出力が動的出力であるか否かを決定する、
    ことを包含している装置。
  16. 請求項15において、該出力が動的出力であるか否かを決定する場合に、
    該1つ又はそれ以上の表示が受取られている頻度を決定する、
    ことを包含している装置。
  17. 請求項14において、動的出力がモーションビデオ及びオーディオからなるグループのうちの1つである装置。
  18. 請求項14において、1つ又はそれ以上の命令をコンパイルさせない場合に、
    コンピュータシステムをしてコンパイルのための1つ又はそれ以上の組の命令をマーキングすることを停止させ、その場合に該1つ又はそれ以上の組の命令をマーキングすることがコンピュータシステムをして、該1つ又はそれ以上の組の命令が次回コンピュータシステムにより処理される場合に該1つ又はそれ以上の組の命令をコンパイルさせる、
    ことを包含している装置。
  19. 請求項18において、コンパイルが、該1つ又はそれ以上の組の命令をして第一フォーマットから第二フォーマットへ変換させ、その場合に該第二フォーマットが該1つ又はそれ以上の組の命令をネイティブ的に実行させるために使用される装置。
  20. 請求項18において、該1つ又はそれ以上の組の命令が実行ログ内にリストされている最近実行された命令の組であり、その場合にコンピュータシステムをしてコンパイルのための1つ又はそれ以上の組の命令のマーキングを停止させることが、コンピュータシステムをして該実行ログ内のいずれかの組の命令のマーキングを停止させることを包含している装置。
JP2007086623A 2006-03-30 2007-03-29 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム Active JP5324050B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/395,985 US7784041B2 (en) 2006-03-30 2006-03-30 Mechanism for reducing detectable pauses in dynamic output caused by dynamic compilation
US11/395985 2006-03-30

Publications (2)

Publication Number Publication Date
JP2007272893A true JP2007272893A (ja) 2007-10-18
JP5324050B2 JP5324050B2 (ja) 2013-10-23

Family

ID=38229058

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007086623A Active JP5324050B2 (ja) 2006-03-30 2007-03-29 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム

Country Status (4)

Country Link
US (1) US7784041B2 (ja)
EP (1) EP1840740B1 (ja)
JP (1) JP5324050B2 (ja)
CN (2) CN101046754B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010161779A (ja) * 2009-01-09 2010-07-22 Disney Enterprises Inc 彩度マップを用いてモノクロ着色するためのシステム及び方法
JP2010191734A (ja) * 2009-02-19 2010-09-02 Hitachi Software Eng Co Ltd 画像再生装置及び中間語プログラム実行方法
JP2016510919A (ja) * 2013-03-06 2016-04-11 クゥアルコム・インコーポレイテッドQualcomm Incorporated 過度のコンパイル時間の低減
US9996325B2 (en) 2013-03-06 2018-06-12 Qualcomm Incorporated Dynamic reconfigurable compiler

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9075667B2 (en) * 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
JP6555981B2 (ja) * 2015-08-24 2019-08-07 キヤノン株式会社 情報処理装置及びその制御方法
CN112308947B (zh) * 2019-07-25 2024-09-24 腾讯科技(深圳)有限公司 一种动画的生成方法、装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0417034A (ja) * 1990-05-10 1992-01-21 Matsushita Electric Ind Co Ltd タスクスケジューリング装置
JPH11237989A (ja) * 1997-10-06 1999-08-31 Sun Microsyst Inc 休止中にバイトコード最適化を実行する方法及び装置
JP2000172512A (ja) * 1998-12-03 2000-06-23 Internatl Business Mach Corp <Ibm> バイトコ―ドを実行するための方法およびデ―タ処理システム
JP2001282552A (ja) * 2000-03-28 2001-10-12 Sony Corp 情報処理装置および方法、並びにプログラム格納媒体
JP2004355277A (ja) * 2003-05-28 2004-12-16 Matsushita Electric Ind Co Ltd プログラム実行制御装置、プログラム実行制御方法
JP2005509945A (ja) * 2001-11-14 2005-04-14 サン・マイクロシステムズ・インコーポレイテッド バイトコードをネイティブコードに動的にコンパイルする方法および装置
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481708A (en) * 1992-06-05 1996-01-02 Borland International, Inc. System and methods for optimizing object-oriented compilations
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US6654931B1 (en) * 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6637025B1 (en) * 1998-12-03 2003-10-21 International Business Machines Corporation Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6412108B1 (en) * 1999-05-06 2002-06-25 International Business Machines Corporation Method and apparatus for speeding up java methods prior to a first execution
US6408382B1 (en) * 1999-10-21 2002-06-18 Bops, Inc. Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
US7451389B2 (en) * 2000-06-06 2008-11-11 Microsoft Corporation Method and system for semantically labeling data and providing actions based on semantically labeled data
US7124407B1 (en) * 2000-08-16 2006-10-17 Sun Microsystems, Inc. Method and apparatus for caching native code in a virtual machine interpreter
US6883165B1 (en) * 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US7154621B2 (en) * 2001-03-20 2006-12-26 Lightsurf Technologies, Inc. Internet delivery of digitized photographs
US7350200B2 (en) * 2001-03-29 2008-03-25 Intel Corporation Method and system of controlling dynamically compiled native code size
JP2002318696A (ja) * 2001-04-23 2002-10-31 Mitsubishi Electric Corp プログラム実行装置および方法
GB0125176D0 (en) * 2001-10-19 2001-12-12 Koninkl Philips Electronics Nv A method of compiling bytecode to native code
US6993755B1 (en) * 2001-10-24 2006-01-31 Sun Microsystems, Inc. Dynamic compilation control
JP3808755B2 (ja) * 2001-11-07 2006-08-16 富士通株式会社 Jitコンパイラを備えた仮想計算機
AUPR947701A0 (en) * 2001-12-14 2002-01-24 Activesky, Inc. Digital multimedia publishing system for wireless devices
EP1376322A1 (de) * 2002-06-27 2004-01-02 Alcatel Verfahren und multimodale Benutzer-Schnittstelle zum Verarbeiten von Benutzereingaben
US7097099B2 (en) * 2002-07-29 2006-08-29 The Code Corporation Data collection device with integrated data translation
US7484200B2 (en) * 2002-08-14 2009-01-27 National Instruments Corporation Automatically analyzing and modifying a graphical program
GB0220282D0 (en) * 2002-08-31 2002-10-09 Ibm Improved just in time compilation of java software methods
US7150012B2 (en) * 2002-10-15 2006-12-12 Nokia Corporation Method and apparatus for accelerating program execution in platform-independent virtual machines
WO2004040445A1 (en) * 2002-10-29 2004-05-13 Freescale Semiconductor, Inc. Method and apparatus for selectively optimizing interpreted language code
JP4487479B2 (ja) * 2002-11-12 2010-06-23 日本電気株式会社 Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
KR100503077B1 (ko) * 2002-12-02 2005-07-21 삼성전자주식회사 자바 실행 장치 및 자바 실행 방법
JP3924256B2 (ja) * 2003-03-12 2007-06-06 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ装置、コンパイラプログラム、記録媒体、コンパイル方法、実行時情報生成装置、及び実行時情報生成プログラム
US7290254B2 (en) * 2003-03-25 2007-10-30 Intel Corporation Combining compilation and instruction set translation
US7174545B2 (en) * 2003-04-08 2007-02-06 The Boeing Company Apparatus and method for producing display application software for embedded systems
ES2470976T3 (es) * 2003-09-12 2014-06-24 Open Tv, Inc. Método y sistema para controlar la grabación y reproducción de aplicaciones interactivas
US7640232B2 (en) * 2003-10-14 2009-12-29 Aol Llc Search enhancement system with information from a selected source
US7516459B2 (en) * 2004-02-20 2009-04-07 Intel Corporation Methods and apparatus to optimize managed application program interfaces
US7370318B1 (en) * 2004-09-02 2008-05-06 Borland Software Corporation System and methodology for asynchronous code refactoring with symbol injection
US7568190B2 (en) * 2005-03-08 2009-07-28 International Business Machines Corporation Late binding of optimization information for just in time compilation
US20060229813A1 (en) * 2005-03-30 2006-10-12 Tobiska William K Ionospheric forecast system (IFS)
US7450131B2 (en) * 2005-09-30 2008-11-11 Intel Corporation Memory layout for re-ordering instructions using pointers
US7954094B2 (en) * 2006-03-27 2011-05-31 International Business Machines Corporation Method for improving performance of executable code

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0417034A (ja) * 1990-05-10 1992-01-21 Matsushita Electric Ind Co Ltd タスクスケジューリング装置
JPH11237989A (ja) * 1997-10-06 1999-08-31 Sun Microsyst Inc 休止中にバイトコード最適化を実行する方法及び装置
JP2000172512A (ja) * 1998-12-03 2000-06-23 Internatl Business Mach Corp <Ibm> バイトコ―ドを実行するための方法およびデ―タ処理システム
JP2001282552A (ja) * 2000-03-28 2001-10-12 Sony Corp 情報処理装置および方法、並びにプログラム格納媒体
JP2005509945A (ja) * 2001-11-14 2005-04-14 サン・マイクロシステムズ・インコーポレイテッド バイトコードをネイティブコードに動的にコンパイルする方法および装置
JP2004355277A (ja) * 2003-05-28 2004-12-16 Matsushita Electric Ind Co Ltd プログラム実行制御装置、プログラム実行制御方法
JP2006039879A (ja) * 2004-07-26 2006-02-09 Aplix Corp クラスファイル実行方法およびJava(R)実行環境プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010161779A (ja) * 2009-01-09 2010-07-22 Disney Enterprises Inc 彩度マップを用いてモノクロ着色するためのシステム及び方法
US8330769B2 (en) 2009-01-09 2012-12-11 Disney Enterprises, Inc. System and method for monochromatic tinting using saturation maps
JP2010191734A (ja) * 2009-02-19 2010-09-02 Hitachi Software Eng Co Ltd 画像再生装置及び中間語プログラム実行方法
JP2016510919A (ja) * 2013-03-06 2016-04-11 クゥアルコム・インコーポレイテッドQualcomm Incorporated 過度のコンパイル時間の低減
US9996325B2 (en) 2013-03-06 2018-06-12 Qualcomm Incorporated Dynamic reconfigurable compiler

Also Published As

Publication number Publication date
US20070234317A1 (en) 2007-10-04
EP1840740B1 (en) 2018-05-30
CN102567067B (zh) 2015-01-14
CN101046754B (zh) 2012-05-30
JP5324050B2 (ja) 2013-10-23
CN102567067A (zh) 2012-07-11
EP1840740A2 (en) 2007-10-03
US7784041B2 (en) 2010-08-24
EP1840740A3 (en) 2009-03-04
CN101046754A (zh) 2007-10-03

Similar Documents

Publication Publication Date Title
JP5324050B2 (ja) 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム
US10761905B2 (en) Enhanced code callback
US7992138B2 (en) Method and apparatus for executing different java methods
US20060225107A1 (en) System for running applications in a resource-constrained set-top box environment
US5546583A (en) Method and system for providing a client/server interface in a programming language
US7844960B2 (en) Optimizing software program execution during class loading phase
US7765527B2 (en) Per thread buffering for storing profiling data
JP2010176688A (ja) 仮想マシン環境におけるアプリケーション・プログラム・インタフェースの最適化の方法および装置
EP1929399A2 (en) System and method for creating and using graphical object instances in a statechart environment
EP1444575B1 (en) Method and apparatus for dynamically compiling byte codes into native code
US9792198B2 (en) Debugger with method restart capability
CN112256421B (zh) 通信处理方法、装置、存储介质及电子设备
CN112506854A (zh) 页面模板文件的存储和页面生成方法、装置、设备及介质
CN112700515A (zh) 动画播放方法和装置、存储介质、电子设备
CN111971655B (zh) 用于超文本标记语言图形内容的本机运行时技术
JP2008191901A (ja) 電子機器、制御プログラム及び電子機器の制御方法。
US10379823B1 (en) Conversion of remote application dialogs to native mobile controls
EP3115898B1 (en) Method for generating user-level events for an application
US7464382B1 (en) UI aware method invocation transferring to java event dispatch thread
JP2007141248A (ja) ジャバ言語におけるメソッド参照のサポート
CN118069137A (zh) 页面渲染方法、装置、计算机设备及计算机可读存储介质
CN115712428A (zh) 一种医学影像浏览方法、装置、设备、存储介质
KR20130071056A (ko) 이동 단말기 및 그 제어방법
CN115454548A (zh) 显示小程序页面的方法、装置、设备、介质及程序产品
CN118796279A (zh) 一种窗口动画处理方法及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100318

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110113

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110118

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130514

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130521

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: 20130709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130718

R150 Certificate of patent or registration of utility model

Ref document number: 5324050

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250