JP2000172512A - バイトコ―ドを実行するための方法およびデ―タ処理システム - Google Patents

バイトコ―ドを実行するための方法およびデ―タ処理システム

Info

Publication number
JP2000172512A
JP2000172512A JP11316204A JP31620499A JP2000172512A JP 2000172512 A JP2000172512 A JP 2000172512A JP 11316204 A JP11316204 A JP 11316204A JP 31620499 A JP31620499 A JP 31620499A JP 2000172512 A JP2000172512 A JP 2000172512A
Authority
JP
Japan
Prior art keywords
compiler
compiled
bytecode
time
response
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.)
Pending
Application number
JP11316204A
Other languages
English (en)
Inventor
Anthony Beadle Bass
バース・アンソニー・ビードル
Wayne Brown Michael
マイケル・ウェイン・ブラウン
Anthony Paolini Michael
マイケル・アンソニー・パオリーニ
Scott Rozaato Douglas
ダグラス・スコット・ロザート
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000172512A publication Critical patent/JP2000172512A/ja
Pending legal-status Critical Current

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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

(57)【要約】 【課題】 バイトコードを実行するための方法および装
置を提供すること。 【解決手段】 バイトコードが、実行のために受け取ら
れ、バイトコードをコンパイルしなければならないかど
うかに関する判定が行われる。メソッドをコンパイルし
なければならないと判定されたことに応答して、バイト
コードはジャスト・イン・タイム・コンパイラに送られ
る。バイトコードはメソッドを形成し、メソッドをコン
パイルしなければならないことの判定がないことに応答
して、メソッドはインタープリタに送られる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、全般的には改良さ
れたデータ処理システムに関し、具体的には、Java仮想
マシンでメソッドを処理するための改良された方法およ
び装置に関する。さらに具体的に言うと、本発明は、メ
ソッドのジャスト・イン・タイム・コンパイルを選択的
に制御するための方法および装置に関する。
【0002】
【従来の技術】Javaは、オブジェクトとしてのデータと
これらのオブジェクトに適用できるメソッドの定義に焦
点を合わせた、オブジェクト指向のプログラミング言語
および環境である。Javaは、現代のプログラミング実践
における多数の問題を解決するために設計された。Java
は、さまざまな中央処理装置とオペレーティング・シス
テム・アーキテクチャを含む可能性がある多数の種類の
データ処理システムのためのアプリケーションをサポー
トすることができる。Javaアプリケーションを異なる種
類のデータ処理システムで実行できるようにするため
に、コンパイラは、通常は、アーキテクチャ中立のファ
イル・フォーマットを生成し、コンパイルされたコード
は、Java実行時システムが存在するならば、多数のプロ
セッサ上で実行可能になる。Javaコンパイラは、特定の
コンピュータ・アーキテクチャに固有ではないバイトコ
ード命令を生成する。バイトコードとは、Javaコンパイ
ラによって生成され、Javaインタープリタによって実行
される計算機独立コードである。Javaインタープリタ
は、バイトコードの復号と実行を交互に行うモジュール
である。バイトコードの復号によって、命令が、そのコ
ードが実行されるコンピュータの実行可能形式にされ
る。その後、その命令が、コンピュータによって実行さ
れる。これらのバイトコード命令は、どの計算機でも簡
単に解釈され、その場でネイティブ機械コードに簡単に
変換されるように設計されている。
【0003】Java仮想マシン(JVM)は、メモリ内だ
けに常駐する仮想コンピュータ構成要素である。JVM
には、インタープリタを含む、コンピュータ上でプログ
ラムを実行するのに必要な構成要素が含まれる。JVM
を用いると、Javaプログラムが、コードがコンパイルさ
れたプラットフォームだけではなく、異なるプラットフ
ォームでも実行できるようになる。Javaプログラムは、
JVM用にコンパイルされる。この形で、Javaは、さま
ざまな中央処理装置とオペレーティング・システム・ア
ーキテクチャを含む多数の種類のデータ処理システムの
ためのアプリケーションをサポートすることができる。
Javaアプリケーションが異なる種類のデータ処理システ
ム上で実行できるようにするために、コンパイラは、通
常は、アーキテクチャ中立のファイル・フォーマットを
生成し、コンパイルされたコードは、Java実行時システ
ムが存在するならば、多数のプロセッサ上で実行可能で
ある。Javaコンパイラは、特定のコンピュータ・アーキ
テクチャに固有でないバイトコード命令を生成する。バ
イトコードは、Javaコンパイラによって生成され、Java
インタープリタによって実行される計算機独立のコード
である。
【0004】JavaプログラムまたはJavaアプレットの実
行でさらに速度が必要な時には、ジャスト・イン・タイ
ム(JIT)コンパイラを使用して、メソッドまたはク
ラスのバイトコードを、その実行の前にネイティブ機械
命令に変換することができる。通常、このコンパイル
は、1メソッドあたり1回だけ実行される。いくつかの
JITコンパイラは、1度に1メソッドではなく、全ク
ラスをコンパイルすることができる。
【0005】状況によっては、JITコンパイラは、あ
るクラスの所与のメソッドからのバイトコードをコンピ
ュータ上での実行のための命令または機械コードにコン
パイルする時に、無効な結果を作る場合がある。これら
のエラーは、コードがジャスト・イン・タイム・コンパ
イルされない場合には発生しない。通常、ネイティブ命
令の実行でのこれらのエラーは、JITコンパイラの誤
った論理の結果として発生する。現在、これらのエラー
を回避するのに使用可能な機構は存在しない。
【0006】
【発明が解決しようとする課題】したがって、本発明の
目的は、メソッドのジャスト・イン・タイム・コンパイ
ルのための改良された方法および装置を提供することで
ある。
【0007】
【課題を解決するための手段】本発明は、バイトコード
を実行するための方法および装置を提供する。バイトコ
ードが、実行のために受け取られ、バイトコードをコン
パイルする必要があるかどうかに関する判定が行われ
る。バイトコードは、メソッドをコンパイルしなければ
ならないと判定されたことに応答して、ジャスト・イン
・タイム・コンパイラに送られる。バイトコードはメソ
ッドを形成し、そのメソッドは、メソッドをコンパイル
しなければならないという判定が存在しないことに応答
して、インタープリタに送られる。
【0008】
【発明の実施の形態】図1を参照すると、本発明を実施
できるデータ処理システムのブロック図が示されてい
る。データ処理システム100は、クライアント・コン
ピュータの例である。データ処理システム100では、
PCI(peripheral component interconnect)ローカ
ル・バス・アーキテクチャが使用されている。図示の例
ではPCIバスを使用するが、マイクロ・チャネルやI
SAなどの他のバス・アーキテクチャを使用することが
できる。プロセッサ102および主記憶104は、PC
Iブリッジ108を介してPCIローカル・バス106
に接続される。PCIブリッジ108には、プロセッサ
102のための、集積されたメモリ・コントローラとキ
ャッシュ・メモリも含まれる場合がある。PCIローカ
ル・バス106への追加接続は、直接構成要素相互接続
またはアドイン・ボードを介して行うことができる。図
示の例では、ローカル・エリア・ネットワーク(LA
N)アダプタ110、SCSI(Small Computer Syste
m Interface)ホスト・バス・アダプタ112および拡
張バス・インターフェース114が、直接構成要素接続
によってPCIローカル・バス106に接続される。こ
れに対して、オーディオ・アダプタ116、グラフィッ
クス・アダプタ118およびオーディオ/ビデオ・アダ
プタ(A/V)119は、拡張スロットに挿入されるア
ドイン・ボードによってPCIローカル・バス106に
接続される。拡張バス・インターフェース114は、キ
ーボードおよびマウス・アダプタ120、モデム122
および追加メモリ124のための接続を提供する。SC
SIホスト・バス・アダプタ112は、ハード・ディス
ク装置126、テープ駆動装置およびCDROM駆動装
置のための接続を提供する。通常のPCIローカル・バ
ス実施態様は、3つまたは4つのPCI拡張スロットま
たはアドイン・コネクタをサポートする。
【0009】オペレーティング・システムは、プロセッ
サ102上で走行し、図1のデータ処理システム100
内のさまざまな構成要素を調整し、その制御を提供する
のに使用される。オペレーティング・システムは、イン
ターナショナル・ビジネス・マシーンズ・コーポレイシ
ョンが市販するOS/2などの市販オペレーティング・
システムとすることができる。「OS/2」は、インタ
ーナショナル・ビジネス・マシーンズ・コーポレイショ
ンの商標である。
【0010】Javaなどのオブジェクト指向プログラミン
グ・システムは、オペレーティング・システムと共に走
行し、データ処理システム100上で実行中のJavaプロ
グラムまたはJavaアプリケーションからオペレーティン
グ・システムへの呼出しを提供する。オペレーティング
・システム、オブジェクト指向オペレーティング・シス
テムおよびアプリケーションまたはプログラムのための
命令は、ハード・ディスク装置126などの記憶装置に
配置され、プロセッサ102による実行のために主記憶
104にロードすることができる。
【0011】当業者は、図1のハードウェアを、実施態
様に応じて変更できることを諒解するであろう。たとえ
ば、光ディスク駆動装置などの他の周辺装置を、図1に
示されたハードウェアに追加して、またはその代わりに
使用することができる。図示の例は、本発明に関するア
ーキテクチャ的制限を暗示する目的のものではない。た
とえば、本発明の処理は、多重プロセッサ・データ処理
システムに適用することができる。
【0012】本発明は、どのメソッドをジャスト・イン
・タイム・コンパイルする(「JITする」とも称す
る)かを選択するための方法、装置および命令を提供す
る。本発明の機構には、通常はジャスト・イン・タイム
(JIT)コンパイラのためのものであるメソッドをジ
ャスト・イン・タイム・コンパイルまたは「JITコン
パイル」するための呼出しを受け取るインターフェース
が含まれる。そのメソッドをJITコンパイラに送るか
どうかに関する判定が行われる。図示の例では、そのメ
ソッドは、JITされた時に無効な結果、またはエラー
を生じることが既知のメソッドに関する情報を含むデー
タベースまたはデータ構造体と比較される。そのメソッ
ドをJITする場合には、そのメソッドが、インターフ
ェースによってJITコンパイラに渡される。そうでな
い場合には、そのメソッドを、処理のためにJVM内の
インタープリタに返すことができる。その代わりに、そ
のメソッドの処理を終了することができる。
【0013】図2を参照すると、本発明の好ましい実施
例による、メソッドを選択的に処理するのに使用される
構成要素の図が示されている。この例では、JVM20
0に、クラス・ローダ202とインタープリタ204が
含まれる。インターフェース206は、本発明の機構お
よび処理を含む構成要素である。データ構造体208
は、メソッドをJITコンパイルするか否かを判定する
ために、インターフェース206によって使用される。
やはり図2に示されているのが、コンパイラ・ユニット
212を含むJITコンパイラ210である。JVM2
00とJITコンパイラ210には、他の構成要素が含
まれるが、本発明の説明が不明瞭にならないようにする
ために図示しない。
【0014】JVM200は、指定されたクラスのメソ
ッドを呼び出すことによって実行を開始する。図示の例
では、このメソッドは、たとえばmainである。このメソ
ッドには、文字列の配列の形で引数を1つだけ渡すこと
ができる。これによって、指定されたクラスがロードさ
れ、それが使用する他の型とリンクされ、初期設定され
る。クラスのロードには、特定の名前のクラスまたはイ
ンターフェース型の2進形式を見つけることが含まれ
る。図示の例では、ローディング処理は、クラス・ロー
ダ202によって実施される。この例のクラス・ローダ
202には、ClassLoaderクラスが含まれ、このクラス
には、Java実行時環境に新しいクラスをロードするため
のメソッドが含まれる。インタープリタ204は、バイ
トコードをネイティブ命令に変換した後にそのネイティ
ブ命令を実行するプログラムである。バイトコードは、
JVMが位置するコンピュータによって実行可能な形式
に変換される。
【0015】JITコンパイラ210には、コンパイラ
・クラスを組み込まれたコンパイラ・ユニット212が
含まれ、このコンパイラ・クラスには、実行の前にメソ
ッドをネイティブ命令にコンパイルするためのメソッド
が含まれる。この例では、コンパイルは、1メソッドあ
たり1回だけ発生する。一部のJITコンパイラは、1
度に1メソッドではなく、すべてのクラスをコンパイル
することができる。特定のクラスまたはメソッドは、そ
のクラスまたはメソッドのインスタンスをJITコンパ
イラ210内のコンパイラ・ユニット212に渡すこと
によってコンパイルできる。
【0016】インターフェース206は、JITコンパ
イラ210に向けられたメソッドの呼出しまたは渡しを
受け取る。インターフェース206は、JITコンパイ
ラ210の代わりにメソッドを受け取るJITコンパイ
ラとしてそれ自体を登録することによって、JITコン
パイラ210に渡されるメソッドを受け取るかインター
セプトすることができる。メソッドは、JVM200か
らインターフェース206によって、JVM200内の
インタープリタ204によって呼び出されたコンパイル
・クラスAPIを介して受け取られる。インターフェー
ス206は、クラス・ローダ202から受け取ったメソ
ッド情報を取り上げ、そのメソッドをJITコンパイル
するかどうかを判定する。この判定は、JITされた時
に無効な結果またはエラーを生じるメソッドに関する情
報を含むデータ構造体208のメソッドのリストまたは
テーブルとメソッド名を比較することによって行うこと
ができる。このデータ構造体には、JITコンパイラ2
10などの特定のJITコンパイラに関する情報を格納
することができる。メソッドをJITする場合には、そ
のメソッドはJITコンパイラ210に渡される。そう
でない場合には、インターフェース206が、インター
プリタ204にそのメソッドを解釈させる呼出しを行
う。その代わりに、メソッドの処理を終了することがで
きる。
【0017】さらに、インターフェース206内の本発
明の機構を用いると、スタック内のJavaスタック・フレ
ームにアクセスできるようになる。インターフェース2
06がなければ、Javaスタック・フレームは、インター
ナショナル・ビジネス・マシーンズ・コーポレイション
が販売するJVM for OS/2などの一部のJVMではアクセ
ス不能である。そのようなアクセスは、通常は、セキュ
リティ許可を判定するための横断調査に使用することが
できる。スタックをアクセスするための関数に関する情
報を含むデータ構造体がインターフェース206に渡さ
れるので、スタックが使用可能になる。図示の例では、
このデータ構造は、コンパイル済みコード・リンク・ベ
クトル216である。通常、JVM200は、コンパイ
ル済みコード・リンク・ベクトル216を生成し、この
データ構造体をJITコンパイラ210に渡す。JIT
コンパイラ210は、このデータ構造体にリストされた
処置のための関数を、その処置のそれ自体の版と置換す
ることができる。
【0018】インターフェース206がコンパイル済み
コード・リンク・ベクトル216を受け取る時に、スタ
ックの内容は、フレーム・アプリケーション・プログラ
ミング・インターフェース(API)218を介してア
クセスできるようになる。フレームAPI218は、Fr
ameIntfとも称し、これは、JVM for OS/2などのインタ
ーナショナル・ビジネス・マシーンズ・コーポレイショ
ンのJVMで使用可能な関数であり、コンパイル済みコ
ード・リンク・ベクトル216の一部である。この形
で、フレームAPI218を含むコンパイル済みコード
・リンク・ベクトル216が、インターフェース206
によってフックされるか受け取られる時に、JVM20
0とJITコンパイラ210の間のブリッジとして、共
用ライブラリが作成される。
【0019】図示の例では、コンパイル済みコード・リ
ンク・ベクトル216は、フォワーダ(forwarder)動
的リンク・ライブラリ(DLL)を使用してインターフ
ェース206によってインターセプトまたは受け取られ
る。このフォワーダDLLは、IBM JVM for OS/2など、
インターナショナル・ビジネス・マシーンズ・コーポレ
イションから入手できるJVMで使用可能である。JV
M200は、フォワーダDLLを使用して、コンパイル
済みコード・リンク・ベクトル216をJITコンパイ
ラ210に送る。JVM200は、ジャスト・イン・タ
イム・コンパイラとしてフォワーダDLLを使用する。
この場合、呼出しは、インターフェース206がJIT
コンパイラへの呼出しをインターセプトする状態で、フ
ォワーダDLLに送られる。この時点で、コンパイル済
みコード・リンク・ベクトル216を使用して、スタッ
クとスタック内のスタック・フレームにアクセスするこ
とができる。図示の例では、コンパイル済みコード・リ
ンク・ベクトル216は、関数へのポインタを含むコン
パイル済みコード・リンク・ベクトルである。本発明の
処理は、インターフェース206で実施されるが、この
処理は、たとえばJVM200など、他のソフトウェア
構成要素で実施することができる。
【0020】図3に移ると、本発明の好ましい実施例に
よる、図2のコンパイル済みコード・リンク・ベクトル
が示されている。コンパイル済みコード・リンク・ベク
トル216には、複数の項目302ないし308が含ま
れる。各項目には、関数へのポインタ(PFN)と、そ
の関数の識別が含まれる。これらのポインタは、関数の
アドレスをポイントする。さらに、これらのポインタ
は、図示の例では置換可能であり、その結果、コンパイ
ル済みコード・リンク・ベクトル300内の項目のPF
Nを変更することによって、ある処置のために呼び出さ
れる関数を変更することができる。たとえば、コンパイ
ル済みコード・リンク・ベクトル300の項目302に
は、処置312のPFN310が含まれ、このPFN3
10は、この例ではフレーム・インターフェース関数Fr
ameIntfである。項目302のFrameIntfは、実際には、
JavaスタックとJavaフレームを横断するための関数をポ
イントする複数のPFNを含むデータ構造体314への
ポインタである。たとえば、FrameIntfのデータ構造体
314には、フレーム初期設定関数initFrame()31
6、フレーム・クローン関数cloneFrame()318、前フ
レーム関数prevFrame()320、モア・フレーム関数mor
eFram()322およびメソッド・ブロック関数methodBlo
ck()324が含まれる。フレーム初期設定関数initFram
e()316は、最上位フレームが現フレームの状態でFra
meIntf構造体を初期設定するのに使用される。フレーム
・クローン関数cloneFrame()318は、現フレームのコ
ピーを作成し、その結果、現フレームを記憶できるよう
にするのに使用される。次に、前フレーム関数prevFram
e()320は、FrameIntf構造体が前のフレームをポイン
トするように設定するのに使用される。モア・フレーム
関数moreFram()322は、まだフレームがスタック内に
存在するかどうかを調べるのに使用され、メソッド・ブ
ロック関数methodBlock()324は、現フレームから現
メソッド・ブロックを取得するのに使用される。さまざ
まなFrameIntf関数を使用するコードの例を下に示す。 // 現フレームから開始して、スタックの末尾まで // スタック・フレームのすべてを横断する。 for (FrameIntf.init(ee, &trav); FrameIntf.more(&trav); FrameIntf.prev(&trav))) { // このフレームのメソッド・ブロックは // pAFrame->methodblk? と一致するか if (Frameintf.method(&trav) != pAFrame->methodblk) break; }
【0021】この形で、コンパイル済みコード・リンク
・ベクトル216とその内容を検査し、分析することが
できる。フォワーダDLLは、IBM社のJVMに見ら
れるFrameIntfを使用して、スタック・フレームがJI
Tされたか否かに無関係に、コンパイル済みコード・リ
ンク・ベクトル216内のスタック・フレームにアクセ
スする。
【0022】図4に移ると、本発明の好ましい実施例に
よる、本発明の処理を使用して操作されるJavaスタック
とJVMフレームの図が示されている。Javaスタック4
00には、図示の例ではJVMフレーム402ないし4
12が含まれる。Javaスタック400は、図2のインタ
ーフェース206によってインターセプトされるスタッ
クの例である。
【0023】各JVMは、Javaスタック400などのJa
vaスタックを有する。Javaスタック400は、JVMと
同時に作成される。Javaスタック400は、ローカル変
数と部分結果を保持し、メソッドの呼出しとリターンで
も役割を演ずるので、Cなどの従来の言語のスタックに
類似している。Javaスタック400用のメモリは、連続
している必要はない。各フレームに、メソッドに関する
情報を含めることができる。具体的に言うと、フレーム
は、データと部分結果を記憶することができ、メソッド
の値を返し、例外をディスパッチするために動的リンク
を可能にする。Javaメソッドが呼び出されるたびに、新
しいフレームが作成される。フレームは、Javaスタック
400から割り振られる。この例では、JVMフレーム
408に、ローカル変数416と実行環境418が含ま
れる。この実行環境は、JVM命令が値を取り出し、こ
れらの値を操作し、結果を返すオペランド・スタックの
形とすることができる。オペランド・スタックを介し
て、引数をメソッドに渡すことができ、メソッドから結
果を受け取ることができる。JVMフレーム402ない
し412内の情報のすべてを、図2のインターフェース
206によってJavaスタック400が受け取られた時
に、横断と分析のために使用可能にすることができる。
【0024】図5を参照すると、本発明の好ましい実施
例による、メソッドをジャスト・イン・タイム・コンパ
イルしなければならないかどうかの判定に使用される処
理の流れ図が示されている。この処理は、JITコンパ
イラのコンパイル・クラス関数への呼出しをインターセ
プトすることによって開始される(ステップ500)。
その後、特定のクラス/メソッドに関するユーザ指定の
データに関する探索を行う(ステップ502)。この探
索は、さまざまなクラスまたはメソッドに関する情報を
含むデータ構造体内で行うことができる。具体的に言う
と、この情報によって、JITコンパイラによってコン
パイルされた時に無効な結果またはエラーを生じるメソ
ッドが識別される。この情報は、特定のJITコンパイ
ラを目標にすることができる。
【0025】図6に、本発明の好ましい実施例による、
クラス/メソッド情報に関するユーザ指定のデータを含
むデータ構造体の例が示されている。データ構造体60
0には、複数の項目602ないし612が含まれ、この
各項目によって、クラス/メソッドと、そのメソッドを
JITするかJITしないかに関する表示が識別され
る。クラス/メソッドBの項目604にあるものなどの
「NO JIT」は、そのメソッドをJITしてはなら
ないことを示す。その後、クラス/メソッドがNO J
ITとしてマークされているかどうかに関する判定を行
う(ステップ504)。この判定は、JITされるメソ
ッドを、図6のデータ構造体600などのデータ構造体
内のデータと比較することによって行われる。クラス/
メソッドをJITしない場合には、そのクラス/メソッ
ドのバイトコードは変更されず(ステップ506)、処
理はその後終了する。これらのバイトコードは、その
後、実行のためにインタープリタに送ることができる。
そうでない場合には、JITされるクラス/メソッド
を、コンパイル・クラスを呼び出すことによってJIT
コンパイラに送り(ステップ508)、処理はその後終
了する。
【0026】本発明を、完全に機能するデータ処理シス
テムに関して説明してきたが、当業者は、本発明の処理
をコンピュータ可読媒体の形およびさまざまな形態で配
布することができることと、配布の実行に実際に使用さ
れる信号担持媒体の具体的な種類に無関係に本発明が同
等に適用されることを理解することに留意することが重
要である。コンピュータ可読媒体の例には、フロッピ・
ディスク、ハード・ディスク装置、RAM、CD−RO
Mなどの記録可能型媒体と、ディジタル通信回線やアナ
ログ通信回線などの伝送型媒体が含まれる。
【0027】本発明の説明を、例示と説明のために提示
したが、これは、網羅的であることを意図されたもので
はなく、本発明を開示された形態に制限する目的のもの
でもない。当業者には、多数の変更および変形が明白で
ある。たとえば、図示の実施例は、Javaのバイトコード
の処理を対象とするが、本発明の処理は、命令が実行さ
れるコンピュータに固有でない命令を処理する他のプロ
グラミング言語および環境に適用できる。その場合に
は、コンピュータ上の仮想マシンが、命令を解釈する
か、命令をコンパイラに送って、仮想マシンが配置され
たコンピュータによる実行に適したコードを生成するこ
とができる。本発明の処理は、生成エラーや例外以外の
判断基準に基づく、命令の選択的コンパイルにも適用で
きる。たとえば、選択的コンパイルは、メモリまたは速
度に基づくものとすることができる。この処理は、すべ
てのクラス、個々のメソッド、または、ループなどのメ
ソッド内の経路に適用することができる。この実施例
は、本発明の原理と実用的な応用例を最もよく説明し、
想定される具体的な使用に適したさまざまな変更を加え
たさまざまな実施態様について本発明を当業者が理解で
きるようにするために選択され、記述されたものであ
る。
【0028】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0029】(1)実行のためにバイトコードを受け取
るステップと、前記バイトコードをコンパイルしなけれ
ばならないかどうかを判定するステップと、バイトコー
ドをコンパイルしなければならないという判定に応答し
て、前記バイトコードをジャスト・イン・タイム・コン
パイラに送るステップとを含む、バイトコードを実行す
るための方法。 (2)前記バイトコードが、メソッドを形成する、上記
(1)に記載の方法。 (3)バイトコードをコンパイルしなければならないと
いう判定がないことに応答して、前記メソッドをインタ
ープリタに送るステップをさらに含む、上記(2)に記
載の方法。 (4)前記受け取るステップが前記バイトコードを処理
するための前記コンパイラへの呼出しをインターセプト
するステップを含む、上記(1)に記載の方法。 (5)前記判定するステップが、前記バイトコードを複
数のメソッドに関する情報と比較するステップと、前記
複数のメソッドに関する情報に基づいて、前記バイトコ
ードをコンパイルしなければならないかどうかを判定す
るステップとを含む、上記(2)に記載の方法。 (6)前記複数のメソッドが、データ構造体に格納され
る、上記(5)に記載の方法。 (7)前記複数のメソッドに関する前記情報が、ジャス
ト・イン・タイム・コンパイラに送られた時にエラーを
生成するメソッドの識別を含む、上記(5)に記載の方
法。 (8)メソッドを実行するためのジャスト・イン・タイ
ム・コンパイラへの呼出しを監視するステップと、前記
呼出しの検出に応答して、前記呼出しをインターセプト
するステップと、前記呼出しのインターセプトに応答し
て、前記メソッドをジャスト・イン・タイム・コンパイ
ルしなければならないかどうかを判定するステップと、
前記メソッドをジャスト・イン・タイム・コンパイルし
なければならないことの判定に応答して、前記メソッド
を前記ジャスト・イン・タイム・コンパイラに送るステ
ップとを含む、ジャスト・イン・タイム・コンパイラに
よるJava仮想マシン内でのメソッドのジャスト・イン・
タイム・コンパイルのための方法。 (9)前記Java仮想マシンが、インタープリタを含み、
さらに前記メソッドをジャスト・イン・タイム・コンパ
イルしなければならないことの判定がないことに応答し
て、前記メソッドを前記インタープリタに送るステップ
を含む、上記(8)に記載の方法。 (10)前記Java仮想マシンが、インタープリタを含
み、さらに前記メソッドをジャスト・イン・タイム・コ
ンパイルしなければならないことの判定がないことに応
答して、前記メソッドの実行を停止するステップを含
む、上記(8)に記載の方法。 (11)計算機に固有でない命令を、実行のために受け
取るステップと、前記命令をコンピュータに固有のネイ
ティブ・コードにコンパイルしなければならないかどう
かを判定するステップと、前記命令をコンパイルしなけ
ればならないことの判定に応答して、前記コンピュータ
に固有のネイティブ・コードを生成するように設計され
たコンパイラに前記命令を送るステップと、を含む、前
記コンピュータ上で走行する仮想マシンのための命令を
実行するための方法。 (12)仮想マシンからコンパイラへスタックを渡す呼
出しであって、前記スタックへのアクセスに使用される
情報を含む前記呼出しをインターセプトするコンピュー
タ実施されるステップと、前記スタックにアクセスする
ために情報を使用するコンピュータ実施されるステップ
とを含む、前記仮想マシンおよび前記コンパイラによっ
て使用されるスタックにアクセスするための方法。 (13)前記情報が、複数の関数への複数のポインタを
含む、上記(12)に記載の方法。 (14)前記呼出しが、フォワーダ動的リンク・ライブ
ラリを使用して行われる、上記(11)に記載の方法。 (15)コンピュータに固有でない命令を含むメソッド
を実行のためにロードする、クラス・ローダと、各命令
を1時に1つずつ、前記コンピュータによって実行可能
な形式に変換し、実行する、インタープリタと、前記コ
ンピュータによって実行可能な命令を生成する、コンパ
イラと、複数の動作のモードを含むインターフェースと
を含み、前記インターフェースの前記複数の動作モード
が前記インターフェースが前記クラス・ローダから前記
コンパイラに向けられた前記命令を受け取る、動作の第
1モードと前記命令の受取に応答して、前記インターフ
ェースが前記命令を前記コンパイラに送るかどうかを判
定する、動作の第2モードと、前記命令を前記コンパイ
ラに送ることの判定に応答して、前記インターフェース
が前記命令を前記コンパイラに送る、動作の第3モード
とを含む、前記コンピュータ内で使用するための仮想マ
シン。 (16)さらに、メソッドに関する情報を含み、動作の
前記第2モードの前記インターフェースが、前記メソッ
ドを前記コンパイラに送るかどうかの判定に使用する情
報を問い合わせる、データ構造体を含む、上記(15)
に記載の仮想マシン。 (17)前記情報が、前記コンパイラによってコンパイ
ルされた時にエラーを生成するメソッドの識別を含む、
上記(16)の仮想マシン。 (18)前記インターフェースが、前記命令を前記コン
パイラに送ることの判定がないことに応答して、前記イ
ンターフェースが前記命令を前記インタープリタに送
る、動作の第4モードを含む、上記(15)に記載の方
法。 (19)実行のためにバイトコードを受け取るための受
取手段と、前記バイトコードをコンパイルしなければな
らないかどうかを判定するための判定手段と、バイトコ
ードをコンパイルしなければならないことの判定に応答
して、前記バイトコードをジャスト・イン・タイム・コ
ンパイラに送るための送出手段とを含む、バイトコード
を実行するためのデータ処理システム。 (20)さらに、バイトコードをコンパイルしなければ
ならないことの判定がないことに応答して、前記メソッ
ドをインタープリタに送るための送出手段を含む、上記
(19)に記載のデータ処理システム。 (21)受取手段が、前記バイトコードを処理するため
の前記コンパイラへの呼出しをインターセプトするため
のインターセプト手段を含む、上記(19)に記載のデ
ータ処理システム。 (22)判定手段が、前記バイトコードを複数のメソッ
ドに関する情報と比較するための比較手段と、前記バイ
トコードをコンパイルしなければならないかどうかを、
前記複数のメソッドに関する前記情報に基づいて判定す
るための判定手段とを含む、上記(19)に記載のデー
タ処理システム。 (23)メソッドを実行するためのジャスト・イン・タ
イム・コンパイラへの呼出しを監視するための監視手段
と、前記呼出しの検出に応答して、前記呼出しをインタ
ーセプトするためのインターセプト手段と、前記呼出し
のインターセプトに応答して、前記メソッドをジャスト
・イン・タイム・コンパイルしなければならないかどう
かを判定するための判定手段と、前記メソッドをジャス
ト・イン・タイム・コンパイルしなければならないこと
の判定に応答して、前記メソッドを前記ジャスト・イン
・タイム・コンパイラに送るための送出手段とを含む、
前記ジャスト・イン・タイム・コンパイラによるJava仮
想マシン内でのデータ処理システムのジャスト・イン・
タイム・コンパイルのためのデータ処理システム。 (24)前記Java仮想マシンが、インタープリタを含
み、さらに、前記メソッドをジャスト・イン・タイム・
コンパイルしなければならないことの判定がないことに
応答して、前記メソッドを前記インタープリタに送るた
めの送出手段を含む、上記(23)に記載のデータ処理
システム。 (25)前記Java仮想マシンが、インタープリタを含
み、さらに、前記メソッドをジャスト・イン・タイム・
コンパイルしなければならないことの判定がないことに
応答して、前記メソッドの実行を停止するための停止手
段を含む、上記(23)に記載のデータ処理システム。 (26)コンピュータに固有でない命令を、実行のため
に受け取るための受取手段と、前記命令を前記コンピュ
ータに固有のネイティブ・コードにコンパイルしなけれ
ばならないかどうかを判定するための判定手段と、メソ
ッドをコンパイルしなければならないことの判定に応答
して、前記コンピュータに固有のネイティブ・コードを
生成するように設計されたコンパイラに前記命令を送る
ための送出手段とを含む、前記コンピュータ上で走行す
る仮想マシンのための命令を実行するための、前記コン
ピュータ内のデータ処理システム。 (27)実行のためにバイトコードを受け取るための第
1命令と、前記バイトコードをコンパイルしなければな
らないかどうかを判定するための第2命令と、バイトコ
ードをコンパイルしなければならないことの判定に応答
して、前記バイトコードをジャスト・イン・タイム・コ
ンパイラに送るための第3命令とを含む、バイトコード
を実行するための、データ処理システム内のコンピュー
タ・プログラム製品。 (28)メソッドを実行するためのジャスト・イン・コ
ンパイラへの呼出しを監視するための第1命令と、前記
呼出しの検出に応答して、前記呼出しをインターセプト
するための第2命令と、前記呼出しのインターセプトに
応答して、前記メソッドをジャスト・イン・タイム・コ
ンパイルしなければならないかどうかを判定するための
第3命令と、前記メソッドをジャスト・イン・タイム・
コンパイルしなければならないことの判定に応答して、
前記メソッドを前記ジャスト・イン・タイム・コンパイ
ラに送るための第4命令とを含む、ジャスト・イン・タ
イム・コンパイラによるJava仮想マシン内のコンピュー
タ・プログラム製品のジャスト・イン・タイム・コンパ
イルのための、データ処理システム内のコンピュータ・
プログラム製品。
【図面の簡単な説明】
【図1】本発明を実施することができるデータ処理シス
テムのブロック図である。
【図2】本発明の好ましい実施例によるメソッドの選択
的な処理に使用される構成要素のブロック図である。
【図3】本発明の好ましい実施例によるコンパイル済み
コード・リンク・ベクトルを示す図である。
【図4】本発明の好ましい実施例による、本発明の処理
を使用して操作される、JavaスタックとJVMフレーム
を示す図である。
【図5】本発明の好ましい実施例による、メソッドをジ
ャスト・イン・タイム・コンパイルしなければならない
かどうかの判定に使用される処理の流れ図である。
【図6】本発明の好ましい実施例による、クラス/メソ
ッド情報に関するユーザ指定のデータを含むデータ構造
体の例を示す図である。
【符号の説明】
200 JVM 202 クラス・ローダ 204 インタープリタ 206 インターフェース 208 データ構造体 210 JITコンパイラ 212 コンパイラ・ユニット 216 コンパイル済みコード・リンク・ベクトル 218 フレーム・アプリケーション・プログラミング
・インターフェース(API) 300 コンパイル済みコード・リンク・ベクトル 310 PFN 312 処置 314 データ構造体 316 フレーム初期設定関数initFrame() 318 フレーム・クローン関数cloneFrame() 320 前フレーム関数prevFrame() 322 モア・フレーム関数moreFram() 324 メソッド・ブロック関数methodBlock()
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バース・アンソニー・ビードル アメリカ合衆国78681 テキサス州ラウン ドロック フローラ・ヴィスタ・ループ 3648 (72)発明者 マイケル・ウェイン・ブラウン アメリカ合衆国78628 テキサス州ジョー ジタウン リバー・ダウン・ロード529 (72)発明者 マイケル・アンソニー・パオリーニ アメリカ合衆国78758 テキサス州オース チン バルコーンズ・ウッズ・ドライブ 3905 (72)発明者 ダグラス・スコット・ロザート アメリカ合衆国78758 テキサス州オース チン ホビー・ホース・コート11901 ア パートメント1815

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】実行のためにバイトコードを受け取るステ
    ップと、 前記バイトコードをコンパイルしなければならないかど
    うかを判定するステップと、 バイトコードをコンパイルしなければならないという判
    定に応答して、前記バイトコードをジャスト・イン・タ
    イム・コンパイラに送るステップとを含む、バイトコー
    ドを実行するための方法。
  2. 【請求項2】前記バイトコードが、メソッドを形成す
    る、請求項1に記載の方法。
  3. 【請求項3】バイトコードをコンパイルしなければなら
    ないという判定がないことに応答して、前記メソッドを
    インタープリタに送るステップをさらに含む、請求項2
    に記載の方法。
  4. 【請求項4】前記受け取るステップが前記バイトコード
    を処理するための前記コンパイラへの呼出しをインター
    セプトするステップを含む、請求項1に記載の方法。
  5. 【請求項5】前記判定するステップが、 前記バイトコードを複数のメソッドに関する情報と比較
    するステップと、 前記複数のメソッドに関する情報に基づいて、前記バイ
    トコードをコンパイルしなければならないかどうかを判
    定するステップとを含む、請求項2に記載の方法。
  6. 【請求項6】前記複数のメソッドが、データ構造体に格
    納される、請求項5に記載の方法。
  7. 【請求項7】前記複数のメソッドに関する前記情報が、
    ジャスト・イン・タイム・コンパイラに送られた時にエ
    ラーを生成するメソッドの識別を含む、請求項5に記載
    の方法。
  8. 【請求項8】メソッドを実行するためのジャスト・イン
    ・タイム・コンパイラへの呼出しを監視するステップ
    と、 前記呼出しの検出に応答して、前記呼出しをインターセ
    プトするステップと、 前記呼出しのインターセプトに応答して、前記メソッド
    をジャスト・イン・タイム・コンパイルしなければなら
    ないかどうかを判定するステップと、 前記メソッドをジャスト・イン・タイム・コンパイルし
    なければならないことの判定に応答して、前記メソッド
    を前記ジャスト・イン・タイム・コンパイラに送るステ
    ップとを含む、ジャスト・イン・タイム・コンパイラに
    よるJava仮想マシン内でのメソッドのジャスト・イン・
    タイム・コンパイルのための方法。
  9. 【請求項9】前記Java仮想マシンが、インタープリタを
    含み、さらに前記メソッドをジャスト・イン・タイム・
    コンパイルしなければならないことの判定がないことに
    応答して、前記メソッドを前記インタープリタに送るス
    テップを含む、請求項8に記載の方法。
  10. 【請求項10】前記Java仮想マシンが、インタープリタ
    を含み、さらに前記メソッドをジャスト・イン・タイム
    ・コンパイルしなければならないことの判定がないこと
    に応答して、前記メソッドの実行を停止するステップを
    含む、請求項8に記載の方法。
  11. 【請求項11】計算機に固有でない命令を、実行のため
    に受け取るステップと、 前記命令をコンピュータに固有のネイティブ・コードに
    コンパイルしなければならないかどうかを判定するステ
    ップと、 前記命令をコンパイルしなければならないことの判定に
    応答して、前記コンピュータに固有のネイティブ・コー
    ドを生成するように設計されたコンパイラに前記命令を
    送るステップと、 を含む、前記コンピュータ上で走行する仮想マシンのた
    めの命令を実行するための方法。
  12. 【請求項12】仮想マシンからコンパイラへスタックを
    渡す呼出しであって、前記スタックへのアクセスに使用
    される情報を含む前記呼出しをインターセプトするコン
    ピュータ実施されるステップと、 前記スタックにアクセスするために情報を使用するコン
    ピュータ実施されるステップとを含む、前記仮想マシン
    および前記コンパイラによって使用されるスタックにア
    クセスするための方法。
  13. 【請求項13】前記情報が、複数の関数への複数のポイ
    ンタを含む、請求項12に記載の方法。
  14. 【請求項14】前記呼出しが、フォワーダ動的リンク・
    ライブラリを使用して行われる、請求項11に記載の方
    法。
  15. 【請求項15】コンピュータに固有でない命令を含むメ
    ソッドを実行のためにロードする、クラス・ローダと、 各命令を1時に1つずつ、前記コンピュータによって実
    行可能な形式に変換し、実行する、インタープリタと、 前記コンピュータによって実行可能な命令を生成する、
    コンパイラと、 複数の動作のモードを含むインターフェースとを含み、
    前記インターフェースの前記複数の動作モードが前記イ
    ンターフェースが前記クラス・ローダから前記コンパイ
    ラに向けられた前記命令を受け取る、動作の第1モード
    と前記命令の受取に応答して、前記インターフェースが
    前記命令を前記コンパイラに送るかどうかを判定する、
    動作の第2モードと、 前記命令を前記コンパイラに送ることの判定に応答し
    て、前記インターフェースが前記命令を前記コンパイラ
    に送る、動作の第3モードとを含む、前記コンピュータ
    内で使用するための仮想マシン。
  16. 【請求項16】さらに、 メソッドに関する情報を含み、動作の前記第2モードの
    前記インターフェースが、前記メソッドを前記コンパイ
    ラに送るかどうかの判定に使用する情報を問い合わせ
    る、データ構造体を含む、請求項15に記載の仮想マシ
    ン。
  17. 【請求項17】前記情報が、前記コンパイラによってコ
    ンパイルされた時にエラーを生成するメソッドの識別を
    含む、請求項16の仮想マシン。
  18. 【請求項18】前記インターフェースが、 前記命令を前記コンパイラに送ることの判定がないこと
    に応答して、前記インターフェースが前記命令を前記イ
    ンタープリタに送る、動作の第4モードを含む、請求項
    15に記載の方法。
  19. 【請求項19】実行のためにバイトコードを受け取るた
    めの受取手段と、 前記バイトコードをコンパイルしなければならないかど
    うかを判定するための判定手段と、 バイトコードをコンパイルしなければならないことの判
    定に応答して、前記バイトコードをジャスト・イン・タ
    イム・コンパイラに送るための送出手段とを含む、バイ
    トコードを実行するためのデータ処理システム。
  20. 【請求項20】さらに、 バイトコードをコンパイルしなければならないことの判
    定がないことに応答して、前記メソッドをインタープリ
    タに送るための送出手段を含む、請求項19に記載のデ
    ータ処理システム。
  21. 【請求項21】受取手段が、 前記バイトコードを処理するための前記コンパイラへの
    呼出しをインターセプトするためのインターセプト手段
    を含む、請求項19に記載のデータ処理システム。
  22. 【請求項22】判定手段が、 前記バイトコードを複数のメソッドに関する情報と比較
    するための比較手段と、 前記バイトコードをコンパイルしなければならないかど
    うかを、前記複数のメソッドに関する前記情報に基づい
    て判定するための判定手段とを含む、請求項19に記載
    のデータ処理システム。
  23. 【請求項23】メソッドを実行するためのジャスト・イ
    ン・タイム・コンパイラへの呼出しを監視するための監
    視手段と、 前記呼出しの検出に応答して、前記呼出しをインターセ
    プトするためのインターセプト手段と、 前記呼出しのインターセプトに応答して、前記メソッド
    をジャスト・イン・タイム・コンパイルしなければなら
    ないかどうかを判定するための判定手段と、 前記メソッドをジャスト・イン・タイム・コンパイルし
    なければならないことの判定に応答して、前記メソッド
    を前記ジャスト・イン・タイム・コンパイラに送るため
    の送出手段とを含む、前記ジャスト・イン・タイム・コ
    ンパイラによるJava仮想マシン内でのデータ処理システ
    ムのジャスト・イン・タイム・コンパイルのためのデー
    タ処理システム。
  24. 【請求項24】前記Java仮想マシンが、インタープリタ
    を含み、さらに、 前記メソッドをジャスト・イン・タイム・コンパイルし
    なければならないことの判定がないことに応答して、前
    記メソッドを前記インタープリタに送るための送出手段
    を含む、請求項23に記載のデータ処理システム。
  25. 【請求項25】前記Java仮想マシンが、インタープリタ
    を含み、さらに、 前記メソッドをジャスト・イン・タイム・コンパイルし
    なければならないことの判定がないことに応答して、前
    記メソッドの実行を停止するための停止手段を含む、請
    求項23に記載のデータ処理システム。
  26. 【請求項26】コンピュータに固有でない命令を、実行
    のために受け取るための受取手段と、 前記命令を前記コンピュータに固有のネイティブ・コー
    ドにコンパイルしなければならないかどうかを判定する
    ための判定手段と、 メソッドをコンパイルしなければならないことの判定に
    応答して、前記コンピュータに固有のネイティブ・コー
    ドを生成するように設計されたコンパイラに前記命令を
    送るための送出手段とを含む、前記コンピュータ上で走
    行する仮想マシンのための命令を実行するための、前記
    コンピュータ内のデータ処理システム。
  27. 【請求項27】実行のためにバイトコードを受け取るた
    めの第1命令と、 前記バイトコードをコンパイルしなければならないかど
    うかを判定するための第2命令と、 バイトコードをコンパイルしなければならないことの判
    定に応答して、前記バイトコードをジャスト・イン・タ
    イム・コンパイラに送るための第3命令とを含む、バイ
    トコードを実行するための、データ処理システム内のコ
    ンピュータ・プログラム製品。
  28. 【請求項28】メソッドを実行するためのジャスト・イ
    ン・コンパイラへの呼出しを監視するための第1命令
    と、 前記呼出しの検出に応答して、前記呼出しをインターセ
    プトするための第2命令と、 前記呼出しのインターセプトに応答して、前記メソッド
    をジャスト・イン・タイム・コンパイルしなければなら
    ないかどうかを判定するための第3命令と、 前記メソッドをジャスト・イン・タイム・コンパイルし
    なければならないことの判定に応答して、前記メソッド
    を前記ジャスト・イン・タイム・コンパイラに送るため
    の第4命令とを含む、ジャスト・イン・タイム・コンパ
    イラによるJava仮想マシン内のコンピュータ・プログラ
    ム製品のジャスト・イン・タイム・コンパイルのため
    の、データ処理システム内のコンピュータ・プログラム
    製品。
JP11316204A 1998-12-03 1999-11-08 バイトコ―ドを実行するための方法およびデ―タ処理システム Pending JP2000172512A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/204512 1998-12-03
US09/204,512 US6324687B1 (en) 1998-12-03 1998-12-03 Method and apparatus to selectively control processing of a method in a java virtual machine

Publications (1)

Publication Number Publication Date
JP2000172512A true JP2000172512A (ja) 2000-06-23

Family

ID=22758209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11316204A Pending JP2000172512A (ja) 1998-12-03 1999-11-08 バイトコ―ドを実行するための方法およびデ―タ処理システム

Country Status (4)

Country Link
US (1) US6324687B1 (ja)
JP (1) JP2000172512A (ja)
KR (1) KR20000057010A (ja)
TW (1) TWI235335B (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073345A (ja) * 2000-08-25 2002-03-12 Fujitsu Ltd 情報処理装置及び記録媒体
WO2003040918A1 (fr) * 2001-11-07 2003-05-15 Fujitsu Limited Ordinateur virtuel equipe d'un compilateur jit, procede de fonctionnement correspondant, et dispositif terminal comprenant cet ordinateur virtuel
JP2006126947A (ja) * 2004-10-26 2006-05-18 Hitachi Software Eng Co Ltd 情報処理装置、情報処理方法、およびプログラム
JP2006524382A (ja) * 2003-04-22 2006-10-26 トランジティブ リミテッド インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置
KR100654428B1 (ko) * 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
JP2007141153A (ja) * 2005-11-22 2007-06-07 Hitachi Software Eng Co Ltd インタプリタ
JP2007272893A (ja) * 2006-03-30 2007-10-18 Sun Microsyst Inc 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム
JP2008533578A (ja) * 2005-03-11 2008-08-21 トランジティブ リミテッド プログラムコード変換中の実行制御
JP2010191734A (ja) * 2009-02-19 2010-09-02 Hitachi Software Eng Co Ltd 画像再生装置及び中間語プログラム実行方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6609144B1 (en) * 1998-05-04 2003-08-19 Matsushita Electric Industrial Co., Ltd. Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
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
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6604167B1 (en) * 2000-09-28 2003-08-05 International Business Machines Corporation Method and apparatus traversing stacks for just-in-time compilers for Java virtual machines
US6779106B1 (en) 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US6883165B1 (en) * 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6857119B1 (en) * 2001-09-25 2005-02-15 Oracle International Corporation Techniques for modifying a compiled application
US20040044988A1 (en) * 2002-08-29 2004-03-04 Schene Christopher Robin Generation of compiled code for simulator speed up
US7222218B2 (en) 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7603664B2 (en) * 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7765532B2 (en) * 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7272828B2 (en) * 2002-11-27 2007-09-18 Intel Corporation Software object type identification
CA2434280A1 (en) * 2003-07-03 2005-01-03 Zhong L. Wang Method and apparatus to guarantee type and initialization safety in multihreaded programs
GB2407655B (en) * 2003-10-28 2009-08-05 Symbian Ltd Mapping of dynamic link libraries in a computing device
US7941807B2 (en) * 2004-04-30 2011-05-10 International Business Machines Corporation Transitional resolution in a just in time environment
US7844960B2 (en) * 2005-09-14 2010-11-30 International Business Machines Corporation Optimizing software program execution during class loading phase
KR100828364B1 (ko) * 2006-06-28 2008-05-08 삼성전자주식회사 가상 프로파일을 이용한 자바 jit 컴파일 방법 및시스템
US8819649B2 (en) 2011-09-09 2014-08-26 Microsoft Corporation Profile guided just-in-time (JIT) compiler and byte code generation
US20130205282A1 (en) * 2012-02-07 2013-08-08 Microsoft Corporation Transferring program execution from compiled code to interpreted code
US9058193B2 (en) * 2013-11-14 2015-06-16 Google Inc. Methods and systems for providing compatibility of applications with multiple versions of an operating system
US9292270B2 (en) * 2014-03-27 2016-03-22 Microsoft Technology Licensing, Llc Supporting dynamic behavior in statically compiled programs
US9348625B2 (en) 2014-05-23 2016-05-24 Google Inc. Application access to native and bundled libraries
CN108170543B (zh) * 2017-12-26 2021-06-01 上海展扬通信技术有限公司 Kernel代码及其上层代码的同步处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11237989A (ja) * 1997-10-06 1999-08-31 Sun Microsyst Inc 休止中にバイトコード最適化を実行する方法及び装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US6139199A (en) * 1997-06-11 2000-10-31 Sun Microsystems, Inc. Fast just-in-time (JIT) scheduler
US6078744A (en) * 1997-08-01 2000-06-20 Sun Microsystems Method and apparatus for improving compiler performance during subsequent compilations of a source program
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11237989A (ja) * 1997-10-06 1999-08-31 Sun Microsyst Inc 休止中にバイトコード最適化を実行する方法及び装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002073345A (ja) * 2000-08-25 2002-03-12 Fujitsu Ltd 情報処理装置及び記録媒体
WO2003040918A1 (fr) * 2001-11-07 2003-05-15 Fujitsu Limited Ordinateur virtuel equipe d'un compilateur jit, procede de fonctionnement correspondant, et dispositif terminal comprenant cet ordinateur virtuel
CN100354826C (zh) * 2001-11-07 2007-12-12 富士通株式会社 配有jit编译器的虚拟计算机及其方法
JP2006524382A (ja) * 2003-04-22 2006-10-26 トランジティブ リミテッド インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置
JP4844971B2 (ja) * 2003-04-22 2011-12-28 インターナショナル・ビジネス・マシーンズ・コーポレーション インタープリタの最適化をプログラム・コード変換の間に実行する方法及び装置
KR100654428B1 (ko) * 2004-01-14 2006-12-06 삼성전자주식회사 자바 프로그램의 처리 속도를 향상시키는 시스템 및 그 방법
JP2006126947A (ja) * 2004-10-26 2006-05-18 Hitachi Software Eng Co Ltd 情報処理装置、情報処理方法、およびプログラム
JP2008533578A (ja) * 2005-03-11 2008-08-21 トランジティブ リミテッド プログラムコード変換中の実行制御
US8615749B2 (en) 2005-03-11 2013-12-24 International Business Machines Corporation Execution control during program code conversion
JP2007141153A (ja) * 2005-11-22 2007-06-07 Hitachi Software Eng Co Ltd インタプリタ
JP2007272893A (ja) * 2006-03-30 2007-10-18 Sun Microsyst Inc 動的コンパイルにより発生される動的出力における検知可能なポーズを減少させるメカニズム
JP2010191734A (ja) * 2009-02-19 2010-09-02 Hitachi Software Eng Co Ltd 画像再生装置及び中間語プログラム実行方法

Also Published As

Publication number Publication date
TWI235335B (en) 2005-07-01
US6324687B1 (en) 2001-11-27
KR20000057010A (ko) 2000-09-15

Similar Documents

Publication Publication Date Title
US6324687B1 (en) Method and apparatus to selectively control processing of a method in a java virtual machine
US6637025B1 (en) Dynamic selection/definition of which class/methods should or should not be jit'ed using information stored in a jar file
US6530075B1 (en) JIT/compiler Java language extensions to enable field performance and serviceability
US6233725B1 (en) Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine
US6336213B1 (en) Method and apparatus for dynamic selection of which bytecodes should be just in time compiled
US7913240B2 (en) Method and apparatus for transforming java native interface function calls into simpler operations during just-in-time compilation
US6003095A (en) Apparatus and method for demand loading a dynamic link library
EP3314422B1 (en) Extending a virtual machine instruction set architecture
US6631515B1 (en) Method and apparatus to reduce code size and runtime in a Java environment
US6557168B1 (en) System and method for minimizing inter-application interference among static synchronized methods
US6662359B1 (en) System and method for injecting hooks into Java classes to handle exception and finalization processing
US6938247B2 (en) Small memory footprint system and method for separating applications within a single virtual machine
US6295643B1 (en) Method and apparatus for improving java virtual machine performance using persistent execution information
US6412109B1 (en) Method for optimizing java bytecodes in the presence of try-catch blocks
US6662362B1 (en) Method and system for improving performance of applications that employ a cross-language interface
US10684827B2 (en) Generating dynamic modular proxies
US6412108B1 (en) Method and apparatus for speeding up java methods prior to a first execution
US6704927B1 (en) Static binding of dynamically-dispatched calls in the presence of dynamic linking and loading
US6851114B1 (en) Method for improving the performance of safe language multitasking
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
US7124407B1 (en) Method and apparatus for caching native code in a virtual machine interpreter
US20070250825A1 (en) Compiling Alternative Source Code Based on a Metafunction
EP0945790B1 (en) Method and apparatus for implementing fast subclass and subtype checks
CA2434280A1 (en) Method and apparatus to guarantee type and initialization safety in multihreaded programs
US6385764B1 (en) Method and apparatus for improving invocation speed of Java methods

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060418

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060421