JP2006526841A - バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定 - Google Patents
バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定 Download PDFInfo
- Publication number
- JP2006526841A JP2006526841A JP2006509353A JP2006509353A JP2006526841A JP 2006526841 A JP2006526841 A JP 2006526841A JP 2006509353 A JP2006509353 A JP 2006509353A JP 2006509353 A JP2006509353 A JP 2006509353A JP 2006526841 A JP2006526841 A JP 2006526841A
- Authority
- JP
- Japan
- Prior art keywords
- class
- program element
- proximity
- parameter
- program
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44573—Execute-in-place [XIP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Abstract
本発明の一実施形態によって、プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定の実施を容易にするシステムが提供される。該プラットフォーム非依存のバーチャルマシン上でプログラムを実行する間において、該システムは、命令と、該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータとを受信する。次に、該システムは、該パラメータ内にエンコードされた情報を検査することによって、該参照の近接を決定し、次いで、該パラメータを用いることによって該プログラム要素への該参照を生成し、ここで、該参照の該近接は、該参照が該パラメータから生成される態様を決定する。
Description
本発明は、コンピュータシステム内にあるプラットフォーム非依存のバーチャルマシン(virtual machine)の設計に関する。さらに詳しくは、本発明は、プラットフォーム非依存のバーチャルマシンにおいてインプレース実行(in−place execution)を支援するために近接ベースのアドレス指定を達成するための方法および装置に関する。
現在、コンピュータ技術における大きな進歩により、かなりの量の計算能力をポケットサイズの演算装置(例えば、セル式電話機、および電子手帳)に組み込むことが可能となっている。これらの装置に多様なアプリケーションを実行させることを可能にするために、開発者は、プラットフォーム非依存のバーチャルマシン(例えば、SUN Microsystems,Inc.、Santa Clara、California によって開発されたJAVA VIRTUAL MACHINE(登録商標))をこれらの演算装置に組み込み始めた。これにより、これらの演算装置は、プラットフォーム非依存のバイトコードを実行可能となり、このバイトコードは、多くの異なった演算プラットフォームに容易に分散され得る。
具体的には、Java2 Platform,Micro Edition(J2ME(登録商標))は、無線機器の分野ではよく知られている。近年、無線装置産業における多くのキープレーヤーは、J2ME用の機器を大量に出荷し始めている。2002年には、6000万〜8000万台のJ2ME用の携帯電話機が出荷されたと見積もられており、2003年に出荷されたJ2ME機器の全台数は2億台を超えるだろう。J2MEプラットフォームの成功にも関わらず、JAVA(登録商標)技術の大きな課題が、小さな機器空間内に残っている。
予想通りではあるが、J2MEアプリケーション開発の重大な障害になってきている1つの領域はアプリケーションサイズである。携帯機器におけるさらに重要なJ2MEアプリケーションの発展により、J2MEアプリケーションのダウンロードによって、無線ネットワークのバンド幅の大部分が消費される。非常に小さいJ2MEアプリケーションには関連しないランタイムの動的メモリのコストおよびアプリケーション起動のコストは、Java(登録商標)プログラミング言語における重大なモバイルシステムのソフトウェア開発と同様、大抵の大量市場の消費者の機器に対して依然として過多である。
プラットフォーム非依存のバーチャルマシンにおけるメモリの使用量およびアプリケーション起動のコストを減らす多くの有望なアプローチのうちの1つは、「インプレース実行」として知られた技術である。純粋なインプレース実行を支援するJVM(Java(登録商標) Virtual Machine)において、標準的なJava(登録商標)クラスファイルのフォーマットは、従来の時間のかかるクラスローディングプロセスのない、バーチャルマシンのランタイム構造として直接使用され得る表現と取り替えられる。この表現では、静的データ構造(例えば、クラス、メソッドテーブル、フィールドテーブル、例外ハンドラ、シンボル、定数およびバイトコード)は、実際には、決してバーチャルマシンにロードされず、そのかわりに、静的表現から直接アクセスされる。モバイル装置(ここで、静的表現が安価なフラッシュメモリまたは読み取り専用メモリ中に保持され得る)では、このことは、劇的なRAM消費の節約を示し得る;一般的な条件では、5〜10Xまで節約し得る。アプリケーションの静的なサイズは、標準的なJava(登録商標)クラスファイルまたはJARファイルを有する場合よりも有意に小さくもなり得、これによって、Java(登録商標)アプリケーションのシンボリック情報または動的なリンク能力の損失はない。
残念ながら、実行速度ということになると、インプレース実行は多くの不都合な点を有する。インプレース実行可能なコードは不変であるので、様々な一般的に使用される、ランタイムでバイトコードを変形する能力に依存するランタイムの最適化を使用することができない。さらに、インプレース実行可能なファイルは、容易にメモリ中に再配置可能であるように意図されるので、このようなファイルにおけるすべての参照は、ポインタではなくオフセットでなければならない。これによって、ランタイムでさらなるレベルの間接化技法(indirection)が導入され、これによって実行速度が遅くなる。
さらに、インプレース実行可能なファイルは一般的に、広い範囲のバーチャルマシンのインプリメンテーションに適用可能であることが意図されるので、従来のバーチャルマシンにおいて使用されるランタイムのデータ構造のような特定のバーチャルマシンのインプリメンテーションのためにはカスタマイズされ得ない。
これらの問題を理由として、プラットフォーム非依存のバーチャルマシンにおいて、インプレース実行は広く使用されてきていないが、このような技術は携帯電話および他のターゲット装置に対しては理想的であり得る。
したがって、必要とされるものは、プラットフォーム非依存のバーチャルマシンにおけるインプレース実行を達成することを効率的に容易にするメソッドおよび装置である。
本発明の一実施形態によって、プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定の実施を容易にするシステムが提供される。該プラットフォーム非依存のバーチャルマシン上でプログラムを実行する間において、該システムは、命令と、該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータとを受信する。次に、該システムは、該パラメータ内にエンコードされた情報を検査することによって、該参照の近接を決定し、次いで、該パラメータを用いることによって該プログラム要素への該参照を生成し、ここで、該参照の該近接は、該参照が該パラメータから生成される態様を決定する。
この実施形態の一変更形態では、上記参照の上記近接が、上記プログラム要素が同一のクラスにあること、または、該プログラム要素が同一のバンドル内の別のクラスに関連していること、または、該プログラム要素が別のバンドル内の別のクラスに関連していることを示し得る。
この実施形態の一変更形態では、上記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のクラスにあることを上記参照の上記近接が示す場合において、該参照を生成することが、該同一のクラス内の該プログラム要素に対するオフセットとして上記パラメータを用いることを含む。
この実施形態の一変更形態では、上記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のバンドル内の別のクラスにあることを上記参照の上記近接が示す場合において、該参照を生成することが、上記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを含み、該エントリは、該クラスに対するグローバルオフセットと、該クラス内の該プログラム要素に対するオフセットとを含む。
この実施形態の一変更形態では、上記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が別のバンドル内の別のクラスにあることを上記参照の上記近接が示す場合において、該参照を生成することが、上記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを含み、該エントリは、クラス名と、プログラム要素名と、プログラム要素の型とを識別する。次に、該システムは、該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップし、該プログラム要素名と該プログラム要素の型とを用いることによって、該クラス内の該プログラム要素に対するオフセットをルックアップする。
この実施形態の一変更形態では、上記プログラム要素がクラスである場合、かつ、該クラスが同一のバンドルにあることを上記参照の上記近接が示す場合において、該参照を生成することが、上記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを含み、該エントリは該クラスに対するグローバルオフセットを含む。
この実施形態の一変更形態では、上記プログラム要素がクラスである場合、かつ、該クラスが別のバンドルにあることを上記参照の上記近接が示す場合において、該参照を生成することが、上記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを含み、該エントリはクラス名を識別する。次に、該システムは、該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップする。
この実施形態の一変更形態では、上記プログラムを実行する前において、上記システムは、参照ルックアップ構造を生成することによって、インプレース実行の間においてプログラム要素への参照を生成することを容易にする。さらなる変更形態では、上記参照ルックアップ構造は、メソッドまたはフィールドへの参照を生成する参照テーブルと、クラスへの参照を生成するオフセットマップとを含む。
この実施形態の一変更形態では、上記パラメータ内にエンコードされた上記情報が予約ビットに含まれ、該予約ビットは、該パラメータの最低位の2ビットを構成する。
次の説明は、当業者が本発明を作り出し、使用できるように表され、具体的な適用およびその必要性に基づいて提供される。開示された実施形態に対する様々な修正は、当業者に容易に明らかとなり、本明細書中で規定される一般的な原理は、本発明の精神および範囲から逸脱することなく、他の実施形態および用途に適用され得る。したがって、本発明は、ここに示す実施形態に制限されることを意図せず、本明細書で開示された原理および特徴に一貫した最も広い範囲を与えられ得る。
この詳細な説明に記載されるデータ構造およびコードは、典型的には、読み取り可能なストレージ媒体上に格納され、このストレージ媒体は、コンピュータシステムによって使用されるコードおよび/またはデータを格納し得る任意の装置または媒体であり得る。これは、以下に限定されないが、磁気ストレージ装置および光学ストレージ装置(例えば、ディスクドライブ、磁気テープ、CD(compact disc)およびDVD(digital versatile disc または digital video disc))および(信号が変調された伝播波を有する、または有さない)伝送媒体中に具現化されたコンピュータ命令信号を含む。例えば、この伝送媒体は、インターネットのような通信ネットワークを含み得る。
(演算装置におけるプラットフォーム非依存のアプリケーションの実行)
図1は、演算装置102における、従来のプラットフォーム非依存のアプリケーションの実行を示す。演算装置102は、一般的に、演算応力を有する任意のタイプの装置またはシステム(以下に限定されるわけではないが、ラップトップコンピュータシステム、ポケットサイズのコンピュータシステム、電子手帳または装置コントローラを含む)を含み得る。演算装置102は、別の装置(例えば、ページャー(pager)、セル型電話機、テレビ、自動車、または家電)内に組み込まれる演算装置も含み得る。本発明の一実施形態では、演算装置102は、無線ネットワークを介して信号を送受信する無線トランシーバを含む。
図1は、演算装置102における、従来のプラットフォーム非依存のアプリケーションの実行を示す。演算装置102は、一般的に、演算応力を有する任意のタイプの装置またはシステム(以下に限定されるわけではないが、ラップトップコンピュータシステム、ポケットサイズのコンピュータシステム、電子手帳または装置コントローラを含む)を含み得る。演算装置102は、別の装置(例えば、ページャー(pager)、セル型電話機、テレビ、自動車、または家電)内に組み込まれる演算装置も含み得る。本発明の一実施形態では、演算装置102は、無線ネットワークを介して信号を送受信する無線トランシーバを含む。
動作中には、演算装置102は、プラットフォーム非依存のアプリケーションを受容し得る。例えば、図1を参照すると、演算装置102は、Java(登録商標)ARchiveファイル108(JARファイル)中のまたは他の等価なファイルフォーマットのプラットフォーム非依存のアプリケーションを受容する。JARファイル108内のアプリケーションは、多くのクラスファイルおよび他のデータ構造からなる。
JARファイル108は、演算装置102内の不揮発性のフラッシュメモリ104(読み取り専用メモリ)にロードされる。このローディングプロセスは、無線または有線の通信リンクを介して、またはJARファイル204を含むコンピュータ読み取り可能なストレージ媒体(例えば、ディスク)の導入により起こり得、JARファイル204を演算装置102に入れる。
次に、このアプリケーションを実行するために、時間を浪費するクラスローディングプロセス(class loading process)が生じ、そのプロセス中では、静的データ(static data)構造110(アプリケーションメタデータ)は、フラッシュメモリ104からランダムアクセスメモリ(RAM)106にコピーされる。これら静的データ構造110は、アイテム(例えばクラス)、フィールドおよびメソッドのテーブル、シンボル、特例のハンドラテーブル、定数およびバイトコードを含む。さらに、このアプリケーションに関する動的データ構造112(例えば、オブジェクトインスタンス、実行スタック、スレッドおよびモニタ)は、RAM106中に格納される。次いで、このアプリケーションはRAM106中で実行される。
フラッシュメモリ104から静的データ構造110およびコードへ直接アクセス可能であるので、静的データ構造110およびコードをRAM106にコピーする時間浪費するプロセスが概ね不必要であることに注目されたい。
(プラットフォーム非依存のアプリケーションのインプレース実行)
図2は、本発明の実施形態による、演算装置102におけるプラットフォーム非依存のアプリケーションのインプレース実行を示す。この実施形態では、変換器202が、JARファイル108を処理して、変換されたJARファイル204を生成する。変換されたJARファイル108内では、このアプリケーション(アプリケーションメタデータ)のすべての静的データ構造は、直接実行可能な形式で表される。
図2は、本発明の実施形態による、演算装置102におけるプラットフォーム非依存のアプリケーションのインプレース実行を示す。この実施形態では、変換器202が、JARファイル108を処理して、変換されたJARファイル204を生成する。変換されたJARファイル108内では、このアプリケーション(アプリケーションメタデータ)のすべての静的データ構造は、直接実行可能な形式で表される。
次に、変換されたJARファイル108は、演算装置102内にあるフラッシュメモリ104中にロードされる。このアプリケーションが連続して実行される場合、静的データ構造は、フラッシュメモリ104内にとどまる。静的変数に対してプレースホールダー(placeholder)として働く単に小さな「シャドウクラス(shadow class)」206が、動的データ構造112とともにRAM106中に格納される。
(バイトコード形式)
上述の変換プロセス中では、ポインタはオフセットによって置き換えられ、このアプリケーションはメモリ中で再配置することが可能となる。この変換プロセス中では、このバイトコード形式は概して不変である。オフセットベースのアドレス指定を支援するためにこのバイトコード形式を変更することが可能であることに注目されたい。しかし、バイトコード形式の修正により、不可能ではないが、既存のデバグツールを使用することは困難である。したがって、この変換を実行する場合には、バイトコード形式(特に、バイトコード長)を維持するのが望ましい。
上述の変換プロセス中では、ポインタはオフセットによって置き換えられ、このアプリケーションはメモリ中で再配置することが可能となる。この変換プロセス中では、このバイトコード形式は概して不変である。オフセットベースのアドレス指定を支援するためにこのバイトコード形式を変更することが可能であることに注目されたい。しかし、バイトコード形式の修正により、不可能ではないが、既存のデバグツールを使用することは困難である。したがって、この変換を実行する場合には、バイトコード形式(特に、バイトコード長)を維持するのが望ましい。
バイトコードは、このバイトコードに関するプログラム要素(例えば、メソッド、フィールドまたはクラス)のロケーションを決定するのに使用され得るパラメータと関連することが多い。変換プロセス中では、ポインタを含むパラメータは、オフセットまたはシンボリックリンクに変換される。
バイトコード中の予約ビットは、このプログラム要素の参照がどのようにしてこのプログラムから生成されるかを特定するために使用される。例えば、図3を参照すると、8ビットのバイトコード302は、隣接する16ビットのパラメータ304と関連する。パラメータ304の2つの低位の2ビットは、予約ビット306として機能し、これらのビットは、図4〜5を参照してさらに後述するように、プログラム要素の参照がパラメータからどのようになされるべきかということを指定する。
(オフセットベースのアドレス指定を支援するためのルックアップ構造)
パラメータ304は、オフセットまたはシンボリックリンクを含む1以上のルックアップ構造を参照するために使用される。例えば、図4は、本発明の実施形態によるオフセット依存の参照を容易にするルックアップ構造を示す。これらのルックアップ構造は、参照テーブル402およびオフセットマップ420を含む。
パラメータ304は、オフセットまたはシンボリックリンクを含む1以上のルックアップ構造を参照するために使用される。例えば、図4は、本発明の実施形態によるオフセット依存の参照を容易にするルックアップ構造を示す。これらのルックアップ構造は、参照テーブル402およびオフセットマップ420を含む。
図5中のフローチャートを参照すると、参照テーブル402およびオフセットマップ420は次のように使用される。プラットフォーム非依存のアプリケーションの実行中には、プラットフォーム非依存のバーチャルマシンは、関連するパラメータ304とともにバイトコード302を受け取り、このパラメータは、バイトコード302に関するプログラム要素の参照を生じさせるために使用され得る(ステップ502)。
次いで、このシステムは、パラメータ304内の予約ビット306を調べ、近接(proximity)を決定する(ステップ504)。このシステムは、プログラム要素(フィールド、メソッド、クラス)のタイプを決定するためにバイトコードも調べる(ステップ506)。次に、このシステムは、プログラム要素のタイプおよび参照の近接に基づいて多くの動作を実行する。
このプログラム要素がフィールドまたはメソッドで、かつこの参照の近接が同じクラス(予約ビット00で示される)である場合、パラメータ304は、そのクラスへのオフセットとして使用され、ルックアップは必要ない(ステップ508)。
このプログラム要素がフィールドまたはメソッドで、かつこの参照の近接が同じバンドル中の別のクラス(予約ビット01により示される)である場合、パラメータ304は、参照テーブル402中のエントリ401をルックアップするために使用される。(このルックアップは、参照テーブル402およびオフセットマップ420における他のルックアップと同様に、予約ビット306をマスクすることを含み得ることに注目されたい。)エントリ401は、使用されない32ビット語403、対応するクラス412用のグローバル32ビットクラスオフセット404、および16ビットフィールド/メソッドオフセット405を含み、この16ビットフィールド/メソッドオフセット405は、クラス412内のフィールドまたはメソッドに対するオフセットを指定する(ステップ510)。
このプログラム要素がフィールドまたはメソッドで、参照の近接が別のバンドル中の別のクラスである場合(予約ビットは10により示される)、パラメータ304は、参照テーブル402中のエントリ415をルックアップするために使用される。エントリ415は、クラス名オフセット406、フィールド/メソッド名オフセット407およびシグネチャ408を含む。クラス名オフセット406は、グローバルシンボルプール414中のクラス名をルックアップするために使用される。このクラス名は、システムルックアップ416を達成するために使用され、グローバル32ビットクラスオフセット418を対応するクラス413に戻す。フィールド/メソッド名オフセット407は、同様にして、グローバルなシンボルプール414中のフィールド/メソッド名をルックアップするために使用される。シグネチャ408を伴うフィールド/メソッド名は、システムルックアップを実行するために使用され、このシステムルックアップは16ビットのオフセットをクラス412内のフィールド/メソッドへ戻す(ステップ512)。
このプログラム要素がクラスで、参照の近接が同じバンドルまたはファイルである場合(予約ビット01により示される)、パラメータ304は、オフセットマップ420中のエントリ421をルックアップするために使用され、エントリ421は、対応するクラスの32ビットのグローバルクラスのオフセット422を含む(ステップ514)。
プログラム要素がクラスで、かつ参照の近接が別のバンドルまたはファイルである場合(予約ビット10により示される)、パラメータ304は、オフセットマップ420中のエントリ423をルックアップするために使用される。エントリ423は、グローバルシンボルプール414中のクラス名をルックアップするために使用されるクラス名オフセット424を含む。このクラス名は、32ビットのグローバルクラスオフセットを対応するクラスに戻すシステムルックアップを実行するために使用される(ステップ516)。
上述した本発明の実施形態は、例示および説明のみの目的で表されている。これらが、すべてを網羅していて、開示の形式に本発明を制限することは意図されない。したがって、多くの修正および変更は当業者に明らかである。さらに、上述の開示により、本発明が制限されることを意図しない。本発明の範囲は、添付の特許請求の範囲によって規定される。
Claims (31)
- プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定を行う方法であって、
該プラットフォーム非依存のバーチャルマシン上においてプログラムを実行する間において、命令を受信することと、
該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータを受信することと、
該パラメータ内にエンコードされた情報を検査することによって、該参照の近接を決定することと、
該パラメータを用いることによって該プログラム要素への該参照を生成することであって、該参照の該近接は、該参照が該パラメータから生成される態様を決定する、ことと
を包含する、方法。 - 前記参照の前記近接が、
前記プログラム要素が同一のクラスにあることと、
該プログラム要素が同一のバンドル内の別のクラスに関連していることと、
該プログラム要素が別のバンドル内の別のクラスに関連していることと
を示し得る、請求項1に記載の方法。 - 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、該同一のクラス内の該プログラム要素に対するオフセットとして前記パラメータを用いることを包含する、請求項2に記載の方法。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを包含し、該エントリは、該クラスに対するグローバルオフセットと、該クラス内の該プログラム要素に対するオフセットとを含む、請求項2に記載の方法。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が別のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、
前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリは、クラス名と、プログラム要素名と、プログラム要素の型とを識別する、ことと、
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップすることと、
該プログラム要素名と該プログラム要素の型とを用いることによって、該クラス内の該プログラム要素に対するオフセットをルックアップすることと
を包含する、請求項2に記載の方法。 - 前記プログラム要素がクラスである場合、かつ、該クラスが同一のバンドルにあることを前記参照の前記近接が示す場合において、該参照を生成することが、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリは該クラスに対するグローバルオフセットを含む、ことを包含する、請求項2に記載の方法。
- 前記プログラム要素がクラスである場合、かつ、該クラスが別のバンドルにあることを前記参照の前記近接が示す場合において、該参照を生成することが、
前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリはクラス名を識別する、ことと、
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップすることと
を包含する、請求項2に記載の方法。 - 前記プログラムを実行する前において、参照ルックアップ構造を生成することによって、インプレース実行の間においてプログラム要素への参照を生成することを容易にすることをさらに包含する、請求項1に記載の方法。
- 前記参照ルックアップ構造が、メソッドまたはフィールドへの参照を生成する参照テーブルと、クラスへの参照を生成するオフセットマップとを含む、請求項8に記載の方法。
- 前記パラメータ内にエンコードされた前記情報が予約ビットに含まれ、該予約ビットは、該パラメータの最低位の2ビットである、請求項1に記載の方法。
- コンピュータによって実行されたときにおいて、プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定を行う方法を該コンピュータに行わせる命令を格納するコンピュータ可読記憶媒体であって、該方法は、
該プラットフォーム非依存のバーチャルマシン上においてプログラムを実行する間において、命令を受信することと、
該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータを受信することと、
該パラメータ内にエンコードされた情報を検査することによって、該参照の近接を決定することと、
該パラメータを用いることによって該プログラム要素への該参照を生成することであって、該参照の該近接は、該参照が該パラメータから生成される態様を決定する、ことと
を包含する、コンピュータ可読記憶媒体。 - 前記参照の前記近接が、
前記プログラム要素が同一のクラスにあることと、
該プログラム要素が同一のバンドル内の別のクラスに関連していることと、
該プログラム要素が別のバンドル内の別のクラスに関連していることと
を示し得る、請求項11に記載のコンピュータ可読記憶媒体。 - 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、該同一のクラス内の該プログラム要素に対するオフセットとして前記パラメータを用いることを包含する、請求項12に記載のコンピュータ可読記憶媒体。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることを包含し、該エントリは、該クラスに対するグローバルオフセットと、該クラス内の該プログラム要素に対するオフセットとを含む、請求項12に記載のコンピュータ可読記憶媒体。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が別のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、該参照を生成することが、
前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリは、クラス名と、プログラム要素名と、プログラム要素の型とを識別する、ことと、
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップすることと、
該プログラム要素名と該プログラム要素の型とを用いることによって、該クラス内の該プログラム要素に対するオフセットをルックアップすることと
を包含する、請求項12に記載のコンピュータ可読記憶媒体。 - 前記プログラム要素がクラスである場合、かつ、該クラスが同一のバンドルにあることを前記参照の前記近接が示す場合において、該参照を生成することが、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリは該クラスに対するグローバルオフセットを含む、ことを包含する、請求項12に記載のコンピュータ可読記憶媒体。
- 前記プログラム要素がクラスである場合、かつ、該クラスが別のバンドルにあることを前記参照の前記近接が示す場合において、該参照を生成することが、
前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップすることであって、該エントリはクラス名を識別する、ことと、
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップすることと
を包含する、請求項12に記載のコンピュータ可読記憶媒体。 - 前記プログラムを実行する前において、前記方法は、参照ルックアップ構造を生成することによって、インプレース実行の間においてプログラム要素への参照を生成することを容易にすることをさらに包含する、請求項11に記載のコンピュータ可読記憶媒体。
- 前記参照ルックアップ構造が、メソッドまたはフィールドへの参照を生成する参照テーブルと、クラスへの参照を生成するオフセットマップとを含む、請求項18に記載のコンピュータ可読記憶媒体。
- 前記パラメータ内にエンコードされた前記情報が予約ビットに含まれ、該予約ビットは、該パラメータの最低位の2ビットである、請求項11に記載のコンピュータ可読記憶媒体。
- プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定を行う装置であって、
プラットフォーム非依存のプログラムを実行するように構成されたプラットフォーム非依存のバーチャルマシンと、
命令と、
該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータと
を受信するように構成された該プラットフォーム非依存のバーチャルマシン内の受信機構と、
参照生成機構であって、該参照生成機構は、該パラメータ内にエンコードされた情報を検査することによって該参照の近接を決定するように構成され、かつ、該パラメータを用いることによって該プログラム要素の該参照を生成するように構成されており、該参照の該近接は、該参照が該パラメータから生成される態様を決定する、参照生成機構と
を備える、装置。 - 前記参照の前記近接が、
前記プログラム要素が同一のクラスにあることと、
該プログラム要素が同一のバンドル内の別のクラスに関連していることと、
該プログラム要素が別のバンドル内の別のクラスに関連していることと
を示し得る、請求項21に記載の装置。 - 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のクラスにあることを前記参照の前記近接が示す場合において、前記参照生成機構が、該同一のクラス内の該プログラム要素に対するオフセットとして前記パラメータを用いるように構成されている、請求項22に記載の装置。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が同一のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、前記参照生成機構が、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップするように構成されており、該エントリは、該クラスに対するグローバルオフセットと、該クラス内の該プログラム要素に対するオフセットとを含む、請求項22に記載の装置。
- 前記プログラム要素がフィールドまたはメソッドである場合、かつ、該プログラム要素が別のバンドル内の別のクラスにあることを前記参照の前記近接が示す場合において、前記参照生成機構は、
前記パラメータを用いることによって、参照ルックアップ構造内のエントリであって、クラス名と、プログラム要素名と、プログラム要素の型とを識別するエントリをルックアップするように構成され、
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップするように構成され、かつ
該プログラム要素名と該プログラム要素の型とを用いることによって、該クラス内の該プログラム要素に対するオフセットをルックアップするように構成されている、請求項22に記載の装置。 - 前記プログラム要素がクラスである場合、かつ、該クラスが同一のバンドルにあることを前記参照の前記近接が示す場合において、前記参照生成機構が、前記パラメータを用いることによって参照ルックアップ構造内のエントリをルックアップするように構成されており、該エントリは該クラスに対するグローバルオフセットを含む、ことを包含する、請求項22に記載の装置。
- 前記プログラム要素がクラスである場合、かつ、該クラスが別のバンドルにあることを前記参照の前記近接が示す場合において、前記参照機構は、
前記パラメータを用いることによって、参照ルックアップ構造内のエントリであって、クラス名を識別するエントリをルックアップするように構成され、かつ
該クラス名を用いることによって、該クラスに対するグローバルオフセットをルックアップするように構成されている、請求項22に記載の装置。 - 前記プラットフォーム非依存のプログラムを、インプレース実行に適した形式に変換するように構成された変換器をさらに備え、前記プログラムを実行する前において、該変換器は、参照ルックアップ構造を生成することによって、インプレース実行の間においてプログラム要素への参照を生成することを容易にするように構成されている、請求項21に記載の装置。
- 前記参照ルックアップ構造が、メソッドまたはフィールドへの参照を生成する参照テーブルと、クラスへの参照を生成するオフセットマップとを含む、請求項28に記載の装置。
- 前記パラメータ内にエンコードされた前記情報が予約ビットに含まれ、該予約ビットは、該パラメータの最低位の2ビットである、請求項21に記載の装置。
- プラットフォーム非依存のバーチャルマシンにおいて近接ベースのアドレス指定を行う手段であって、
命令と、
該命令に関連したプログラム要素への参照を生成するために用いられ得る該命令に関連したパラメータと
を受信するように構成された該プラットフォーム非依存のバーチャルマシン内の受信手段と、
該プロットフォーム非依存のバーチャルマシン内の参照生成手段であって、該参照生成手段は、該パラメータ内にエンコードされた情報を検査することによって該参照の近接を決定するように構成され、かつ、該パラメータを用いることによって該プログラム要素の該参照を生成するように構成されており、該参照の該近接は、該参照が該パラメータから生成される態様を決定する、参照生成手段と
を備える、手段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/453,941 US7328432B2 (en) | 2003-06-02 | 2003-06-02 | Proximity-based addressing for supporting in-place execution in virtual machines |
PCT/US2004/009328 WO2004109506A2 (en) | 2003-06-02 | 2004-03-25 | Proximity-based addressing for supporting in-place execution in virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006526841A true JP2006526841A (ja) | 2006-11-24 |
Family
ID=33452143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006509353A Pending JP2006526841A (ja) | 2003-06-02 | 2004-03-25 | バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7328432B2 (ja) |
JP (1) | JP2006526841A (ja) |
GB (1) | GB2418048B (ja) |
WO (1) | WO2004109506A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008527530A (ja) * | 2005-01-11 | 2008-07-24 | リアルネットワークス・アジア・パシフィック・カンパニー・リミテッド | アプリケーション連動方法およびそのシステム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7748002B1 (en) * | 2001-10-31 | 2010-06-29 | Juniper Networks, Inc. | Systems and methods for scheduling applications |
US8549269B2 (en) * | 2009-03-10 | 2013-10-01 | International Business Machines Corporation | Method, apparatus or software for processing exceptions produced by an application program |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02308336A (ja) * | 1989-05-23 | 1990-12-21 | Nec Corp | プログラム実行方式 |
JPH06230976A (ja) * | 1992-12-22 | 1994-08-19 | Sun Microsyst Inc | 参照をリゾルブする方法および装置 |
JPH10198570A (ja) * | 1996-05-30 | 1998-07-31 | Sun Microsyst Inc | 読み出し専用メモリにクラスをロードする方法及びシステム |
JP2000514584A (ja) * | 1996-10-25 | 2000-10-31 | シュルンベルジェ システーム | 高級プログラミング言語を用いたマイクロコントローラ |
JP2001256058A (ja) * | 2000-03-13 | 2001-09-21 | Omron Corp | インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US69342A (en) * | 1867-10-01 | Improvement in harvesters | ||
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
US5920720A (en) * | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
US7159223B1 (en) * | 2000-05-12 | 2007-01-02 | Zw Company, Llc | Methods and systems for applications to interact with hardware |
US6574747B2 (en) | 2000-06-02 | 2003-06-03 | Microsoft Corporation | Extensible execute in place (XIP) architecture and related methods |
JP2004507832A (ja) * | 2000-08-31 | 2004-03-11 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 仮想マシン命令を実行するシステム |
-
2003
- 2003-06-02 US US10/453,941 patent/US7328432B2/en active Active
-
2004
- 2004-03-25 JP JP2006509353A patent/JP2006526841A/ja active Pending
- 2004-03-25 GB GB0524567A patent/GB2418048B/en not_active Expired - Fee Related
- 2004-03-25 WO PCT/US2004/009328 patent/WO2004109506A2/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02308336A (ja) * | 1989-05-23 | 1990-12-21 | Nec Corp | プログラム実行方式 |
JPH06230976A (ja) * | 1992-12-22 | 1994-08-19 | Sun Microsyst Inc | 参照をリゾルブする方法および装置 |
JPH10198570A (ja) * | 1996-05-30 | 1998-07-31 | Sun Microsyst Inc | 読み出し専用メモリにクラスをロードする方法及びシステム |
JP2000514584A (ja) * | 1996-10-25 | 2000-10-31 | シュルンベルジェ システーム | 高級プログラミング言語を用いたマイクロコントローラ |
JP2001256058A (ja) * | 2000-03-13 | 2001-09-21 | Omron Corp | インタプリタ型言語によるプログラムの実行方法およびその方法を用いた情報処理装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008527530A (ja) * | 2005-01-11 | 2008-07-24 | リアルネットワークス・アジア・パシフィック・カンパニー・リミテッド | アプリケーション連動方法およびそのシステム |
JP4818278B2 (ja) * | 2005-01-11 | 2011-11-16 | リアルネットワークス・アジア・パシフィック・カンパニー・リミテッド | アプリケーション連動方法およびそのシステム |
Also Published As
Publication number | Publication date |
---|---|
GB2418048A (en) | 2006-03-15 |
GB2418048B (en) | 2006-10-25 |
GB0524567D0 (en) | 2006-01-11 |
WO2004109506A2 (en) | 2004-12-16 |
WO2004109506A3 (en) | 2005-09-29 |
US20040243999A1 (en) | 2004-12-02 |
US7328432B2 (en) | 2008-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3314422B1 (en) | Extending a virtual machine instruction set architecture | |
US7246346B2 (en) | System and method for persisting dynamically generated code in a directly addressable and executable storage medium | |
EP1622013B1 (en) | Method and apparatus for resolving symbolic references in a virtual machine | |
CN105830023B (zh) | 用于在执行上下文中运行动态代码程序的方法和装置 | |
US20050028155A1 (en) | Java execution device and Java execution method | |
CN106033370B (zh) | 64位Java虚拟机的实现方法及装置 | |
US8042103B2 (en) | Pre-translated files used in a virtual machine | |
WO2024045379A1 (zh) | 编译方法和编译器、Wasm虚拟机 | |
US20030079202A1 (en) | Exception handling in java computing environments | |
US6799185B2 (en) | Frameworks for accessing Java class files | |
US6901591B1 (en) | Frameworks for invoking methods in virtual machines | |
EP1386231B1 (en) | Partial loading of class files into virtual machines | |
US7685565B1 (en) | Run time reconfiguration of computer instructions | |
US6948156B2 (en) | Type checking in java computing environments | |
US7328436B2 (en) | Dynamic allocation of internal memory at runtime | |
JP2005507103A (ja) | Javaヒープを実現するフレームワーク | |
JP2006526841A (ja) | バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定 | |
US8341606B2 (en) | Method of invoking inlined method and java virtual machine using the method | |
JP2006018834A (ja) | 仮想マシンに配置された再配置可能な実行ファイルをロードするための方法および装置 | |
US7181724B2 (en) | Representation of Java® data types in virtual machines | |
US20040025009A1 (en) | Method and apparatus for acceleration of multimedia content | |
US6934726B2 (en) | Storing and retrieving of field descriptors in Java computing environments | |
US7831965B1 (en) | Method and apparatus for facilitating intermediate linking of binary files in a virtual machine | |
US20060288338A1 (en) | Offset threaded code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100528 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101028 |