JP2002504725A - 最適化先読みコンパイラを使用したジャバ開発環境 - Google Patents

最適化先読みコンパイラを使用したジャバ開発環境

Info

Publication number
JP2002504725A
JP2002504725A JP2000532796A JP2000532796A JP2002504725A JP 2002504725 A JP2002504725 A JP 2002504725A JP 2000532796 A JP2000532796 A JP 2000532796A JP 2000532796 A JP2000532796 A JP 2000532796A JP 2002504725 A JP2002504725 A JP 2002504725A
Authority
JP
Japan
Prior art keywords
code
java
machine
software
stack
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
JP2000532796A
Other languages
English (en)
Inventor
パー・ボスナー
Original Assignee
シグナス・ソリューションズ
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 シグナス・ソリューションズ filed Critical シグナス・ソリューションズ
Publication of JP2002504725A publication Critical patent/JP2002504725A/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/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

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

Abstract

(57)【要約】 本発明は、高性能なシステム開発に適する、機械に依らない解決を提供する。高性能システムに要求されることは、ジャバ最適化と先読みコンパイラを提供することで満足される。最適化された先読みコンパイルは、C/C++で書かれたコードと比較できる大きさと速度を持つコードを作り出す。システムソフトウェアは、前コンパイルされたジャバコード(515)とジャババイトコードを実行するジャバ仮想機械(505)とを含む。干渉的モデルは、前コンパイルされたジャバコードと、翻訳されたバイトコードと、コンパイルされたジャバコードとを interoperate するのを可能にする。好ましくは、先読みジャバコンパイラを最適化することで、ジャバソースコード(517)あるいはジャババイトコード(519)のいずれかをコンパイルすることができる。この方法で、バイトコード形式でのみ配付されるコードは、前コンパイルすることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、ソフトウェア開発ツール、特にコンパイラに関し、かつ、ジャバ(
Java)プログラム言語に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
組込型システムは、より大きなシステムまたは機械の一部である専門化された
コンピュータシステムである。一般的には、組込型システムは、ROM内に記憶
されたプログラムを有する単一のマイクロプロセッサボード上に収容されている
。実質的には、ディジタルインターフェースを有する全ての機器(時計,電子レ
ンジ,VCR,車)は、組込型システムを利用する。いくつかの組込型システム
は、オペレーティングシステムを具備するが、多くの組込型システムは、論理全
体が単一のプログラムとして実行されることができるように、非常に専門化され
ている。
【0003】 汎用コンピュータのためのソフトウェア開発と組込型システムのためのソフト
ウェア開発とは非常に共通しているが、組込型システムのためのソフトウェア開
発は、実質的に異なるニーズおよび考察によって行われている。特に、組込型シ
ステムのためのソフトウェアは、一般的に、できるだけ高速かつコンパクトであ
るように要求される。小さなコードサイズは、装置費用を減少し、かつ、実効速
度にも寄与するかも知れない。
【0004】 組込型システム開発に対する重大な障害は、組込型システムプラットフォーム
の莫大な多様性である。小数のプロセッサが市場の大部分を支配する汎用コンピ
ュータ界とは異なり、組込型システム界では、数百の異なるプロセッサが、市場
シェアを奪い合っている。故に、ソフトウェアの再利用を達成するために、組込
型システムソフトエアに指標を示すことが要求されている。そのような指標の指
示は、熟練したプログラマによってのみ実行されることができ、かつ、困難で、
時間がかかり、誤りが生じやすい。
【0005】 多目的コンピュータにとって、ジャバプログラミング言語は、「一度書くと、
どこででも実行する」という約束を保ちながら、少なくとも部分的に実現された
約束を現出する。組込型システム界において同じ発展を達成することは、重要な
前進を示す。しかしながら、いくつかの障害が、「組込型システムへジャバを即
座に適用する」ということを妨害する。
【0006】 図1を参照すると、伝統的なジャバ実行モデルは、ジャバソースコード103
を.classファイル105へコンパイルするために、ジャバコンパイラ101(例
えば、javac )を使用する。.classファイル105は、機械に依存したバイトコ
ード命令を具備する。これらの.classファイルは、ブラウザまたはいくつかの他
のジャバ「仮想機械(VM)」107によって、ダウンロードされかつ翻訳され
る。システムサービスは、クラスライブラリまたは.so ファイル109の形式で
提供される。
【0007】 ジャバVMは、概念的にはスタックマシン(stack machine )である。VMに
よって翻訳された命令は、「スタックスロット」内に記憶されたデータを処理す
る。任意の時において、スタックスロット内のデータは、ジャバ言語使用におい
て定義された多数のデータ型のいずれかで有り得る。ジャバ照合器は、「型の一
致が違反されない(例えば、整数を含むスタックスロットが、文字列を含むスタ
ックスロットへ付加されない)」ということを保証する。
【0008】 ジャバVMの実行時モデルが、図2に示される。方法が呼び出されると、フレ
ームが、フレームスタック200上へ押し出される。図2では、2つのフレーム
が示される。第1フレーム201は、第1方法Aに対応し、かつ、第2フレーム
203は、第2方法Bに対応する。フレームポインタは、現在のフレームを指し
示す。フレームは、例えば、発呼者のフレームへのポインタ205と、呼び出さ
れた方法に対応する方法記述子へのポインタ207と、プログラムカウンタ(P
C)209と、スタックポインタ(SP)211と、ローカルレジスタエリア2
13と、式スタック215とを具備する。各方法は、方法記述子217,219
のように、それぞれ、図2に示されるように、対応する方法記述子を有する。フ
レーム内のローカルレジスタエリアおよび式スタックのサイズは、それぞれ、対
応する方法記述子内のパラメータmax_vars(221)およびmax_stack(223 )によって決定される。方法記述子は、また、方法コードへのポインタ225を
具備する。例えば、「方法Aが方法Bを呼び出す」ということを仮定する。方法
Aのコード227内には、方法Bによる使用のために、引数が式スタック上へ押
し出す命令が存在する。これらの引数は、方法Aの観点からは、出力引数である
。該引数が押し出された後、以下のコード命令が方法Bを呼び出す。該命令は、
「方法Bに対するフレームがフレームスタック上へ押し出され、かつ、方法Aか
らの出力引数が、方法Bのフレームのレジスタエリアの第1部分への入力引数と
してコピーされ、かつ、最終的に、方法Bのコード229が実行される」という
ことを引き起こす。
【0009】 図3は、従来モデルによるジャバを実行する機械の様々な構成要素間における
機能的な関係を示す。バイトコードコンパイラ303へのソースを使用して取得
されたバイトコード301は、ジャバVM305の先頭で実行される。ジャバV
Mは、インタプリタの形式をとってもよく、または、「ジャストインタイム(J
IT)」コンパイラの形式をとってもよい。クラスライブラリ307は、ジャバ
VMおよびバイトコードプログラム(特に、基本言語サポートおよび拡張機能)
へサービスを提供する。実行時ライブラリ309は、低レベルのガベジコレクシ
ョン(garbage collection:GC)およびスレッドサポート(threads support
)を提供し、かつ、ホストプラットフォームオペレーションシステム311の先
頭で実行する。該システム311は、同様に、マシンハードウエアまたはシリコ
ン313上で実行する。
【0010】 上記のジャバ技術モデルは、重要なサポートを有している。しかしながら、バ
イトコードを翻訳することは、多くの場合において、ジャバプログラムを(比較
される)CまたはC++プログラムよりも遅くする。この状況を改善するための
1つのアプローチは、JITコンパイラである。これらは、方法が最初に実行さ
れる丁度その前に、バイトコードを機械コードへ、動的に変換する。これは、実
質的なスピードアップを提供できるが、それでもCまたはC++よりも遅い。J
ITアプローチには、従来のコンパイラと比較して、3つの欠点がある。第1に
、コンパイルは、アプリケーションがロードされる度に、再実行されなくてはな
らない。このことは、起動時間が、プリコンパイルコードよりも非常に悪い。第
2に、JITコンパイラは、高速で実行されしなくてはならないので(アプリケ
ーションが実行されるときはいつでも実行されるので)、JITコンパイラは、
特別な最適化を実行できない。実質的には、単純なレジスタ配置および「一寸し
た最適化」のみが実行される。迅速な再コンパイルに対する要求は、JITを実
質的により高速にすることを非常に困難にする。第3に、JITコンパイラは、
アプリケーションが実行されている間、仮想メモリ内に保持されなくてはならな
い。このメモリは、組込型システムでは、非常に高価である。
【0011】 また、JITコンパイルの間、コードが実行される前に、多大な時間が構成お
よびテーブルの初期化に費やされる。ジャバクラスファイルは、クラスを記述す
る「メタデータ」を、実質的には具備する。このメタデータは、クラスファイル
自身からは、効率よくアクセスされることができない。代わりに、ジャバ実行時
環境は、メタデータを読み出さなくてはならず、かつ、各クラスを該クラスのフ
ィールドおよび方法を伴って記述する拡張データ構造を、該メタデータから構築
しなくてはならない。例えば、図4を参照すると、リンクされたリストを実現す
るクラス“IntList ”を仮定する。(図10において、後述されるソースコード
は、同じ例示的なクラスを仮定する。)メモリにおいて、オブジェクトリファレ
ンス(ポインタ)401は、リストクラス記述子430へのポインタ403を有
する第1リストオブジェクト410と、(値10を具備する)値フィールド40
5と、次のリストオブジェクト420へのポインタ407とを指し示す。次のリ
ストオブジェクト420は、また、リストクラス記述子430を指し示し、かつ
、値415(20)を具備する。次のリストオブジェクトへのポインタ417は
空である。リストクラス記述子430は、他のオブジェクトへのポインタ(例え
ば、リストオブジェクトのフィールドを記述するオブジェクト440へのポイン
タ421)を具備する。オブジェクト440は、フィールド「値」および「次」
の名前と型とバイトオフセットとを具備する。加えて、クラステーブル450は
、ロードされた様々な値をリストし、かつ、それらのクラス記述子を指し示す。
上記のデータ構造を構築することは、メモリ要求とのばされた起動時間とを増大
する。
【0012】 機械非依存の度合いは、GNUCコンパイラ(gcc)に基づく本指定代理人
の組込型システム開発環境によって既に、達成される。この開発環境において、
100個の組込型システムプロセッサのためのマシン指定コンパイラ「バックエ
ンド」は、{C/C++で記述されたコードが全てのサポートされたプロセッサ
に対してコンパイルされる」ということを可能にしながら、共通gccコンパイ
ラ「フロントエンド」へインターフェースする。しかしながら、多目的コンピュ
ータと組込型システムとの間の橋渡しをするように一度記述されたらどこででも
実行するためには、かつ、組込型システムがウェブ可能になるためには、ジャバ
に基づく組込型システム開発解決が要求される。
【0013】
【課題を解決するための手段】
本発明は、一般的に言えば、高効率なシステム開発に適切なマシンに依存しな
い解決を提供する。好ましい実施形態において、該解決はジャバに基づく。この
ことは、マシンに依存しない。高効率システムという要求は、ジャバ最適化先読
みコンパイラを提供することによって満たされる。最適化先読みコンパイルは、
C/C++で記述されたコードと同等のサイズおよびスピードを有するコードを
生成する。同時に、ジャバの世界との互換性が提供される。このことは、個々の
システム要求に従ったコードの混合および一致が可能とされる。例えば、もし、
システムがネットワーク接続を有するならば、システムソフトウェアは、プリコ
ンパイルされたジャバコードに加えて、ジャバ仮想マシンを具備する。該ジャバ
仮想マシンは、ジャババイトコードがダウンロードされかつ実行されることを可
能にする。固有のモデルは、「C/C++コードは勿論のこと、プリコンパイル
されたジャバコードとVM翻訳されたバイトコードとJITコンパイルされたジ
ャバコードとが内部処理する」ということを可能にする。好ましくは、最適化先
読みジャバコンパイラは、ジャバソースコードとジャババイトコードとのいずれ
かをコンパイルすることができる。この方法では、バイトコード形式で分配され
たコードだけが、プリコンパイルされる。ジャバスタックスロットコンパイル方
法は、コード最適化を達成し、かつ、ジャバの先読みコンパイルに関する困難を
解消する。加えて、ジャバメタデータの静的配置は、コンパイラによって生成さ
れる。このことは、実行時にそのような配置を生成する必要を除去する。
【0014】
【発明の実施の形態】
本発明は、添付図面と組み合わせる以下の説明に基づいて、さらに理解される
【0015】 図5を参照すると、本発明の1つの特徴による組込型ジャバ技術モデルが示さ
れる。このモデルでは、クラスライブラリ507のように、バイトコード501
およびジャバVM505で内部処理することができるマシンコード515が提供
される。マシンコードは、3つの異なる経路を通して取得されてもよい。第1経
路は、マシンコードコンパイラ517へのソースを使用して直接ジャバソースコ
ードをコンパイルすることを呼び起こす。第2経路は、マシンコードコンパイラ
519へのバイトコードを使用してバイトコードをコンパイルすることを呼び起
こす。第3経路は、gccのような適切なコンパイラ520を使用して、マシン
コードへの何か他の(CまたはC++のような)言語をコンパイルすることを呼
び起こす。
【0016】 特定の組込型システムに依存して、バイトコードおよびジャバVMおよびホス
トプラットフォームオペレーティングシステムは存在してもよいししなくてもよ
い。
【0017】 図6を参照すると、組込型ジャバ技術モデルの他の表示が示される。ジャバソ
ースコード603(.java )は、javac のような適切なコンパイラ601を使用
するバイトコード605、または、jc1 (本指定代理人によるインターネット上
で広く利用可能な“egcs”の一部、または、実験的なGnu コンパイラ組、ソフト
ウェアリリース)のような適切なコンパイラ613を使用する組立コード611
(.s)のいずれかへ編集される。バイトコードは、また、jc1を使用して、組
立コードへコンパイルされる。バイトコードは、ジャバソースコードから抽出さ
れてもよく、または、異なるソース615(例えば、スキーム)から抽出されて
もよい。スキームについては、例えば、Per Bothner, Kawa, the Java-based Sc
heme System, http://www.cygnus.com/〜bothner/kawa.htmlを参照のこと。結果
としての組立コードは、今度は、(619のようなアセンブラを使用して)オブ
ジェクトコード521(.o)へアセンブルされる。オブジェクトコードは、実行
可能なライブラリ625または共有された(「ダイナミックリンク」)ライブラ
リ627(“DLL”)のいずれかのようなローダーld(523)によって、
メモリへロードされてもよい。
【0018】 「ジャバVMが存在する」ということを仮定すると、ジャバVMは、バイトコ
ードまたはクラスライブラリコードまたは固有の方法コードまたはこれらのいず
れかの組合せを実行するように動作する。例示的な実施形態では、ジャバVM6
07は、Kaffe (http://www.kaffe.org/ から利用可能な無料ジャバVM)であ
る。関連するクラスライブラリ609はlibkaffe.so である。
【0019】 図6のモデルにおいて、コンパイルされたコードおよびバイトコードは、必要
ならば、内部処理することができる。そのような内部処理を達成することは、本
発明の1つの重要な特徴である。内部処理は、互換性のある構造とテーブルと呼
出約定とを使用することによって達成される。図3の先行技術モデルでは、C/
C++コードとジャババイトコードとの間における内部処理は、ジャバ固有イン
ターフェース(JNI)を使用して達成される。JNIは、内部言語通信のため
に使用されるアプリケーションバイナリインターフェース(ABI)を指定する
。しかしながら、JNIは、標準かつ移植可能であるが、比較的遅くかつ非効率
である。本発明の1つの特徴によると、この非効率性は、低レベルVM特定AB
Iをコンパイルすることによって、回避される。例示的な実施形態では、他のA
BIが代わりに選択されることができるにもかかわらず、選択されるABIは、
Kaffe のABIである。Kaffe は、多数の共通プラットフォーム上で、JITコ
ンパイラを使用する。JITコンパイラを使用することは、プリコンパイルされ
た方法と動的にロードされた方法との間における呼出を簡単にする。なぜならば
、両者は共に同じ呼出約定を使用するからである。
【0020】 標準的なジャバモデルでは、ユーザコードのために必要な空間に加えて、ジャ
バVMおよび実行時環境のための固定されたコードの実体も存在する。このコー
ドは、例えば、標準ライブラリと、新たなクラスをロードするためのコードと、
ガベジコレクタと、JITコンパイラとを具備する。いくつかのアプリケーショ
ンは、ロードされたクラスとジャバ固有インターフェース(JNI)と反映と大
型クラスライブラリとへのアクセスを必要とするかも知れない。他のアプリケー
ションは、これらのいずれをも必要としないかも知れない。故に、メモリが厳し
い環境では、このサポートコードのうちのいくつかを除外することが望ましいか
も知れない。例えば、もし、実行時において新たなクラスをロードする必要がな
いならば、クラスファイルを読み込みかつバイトコードを翻訳(または、JIT
コンパイル)するためのコードは省略されるかも知れない。同様に、異なるクラ
イアントは、また、ガベジコレクションに対して、異なるアルゴリズムまたは異
なる連続実行を望むかも知れない。好ましくは、「ジャバVMにおいて必要とさ
れる特徴が選択される」ということを可能にするために、コンフィグレーション
ユーティリティが提供される。これは、オペレーティングシステムを構築する前
にカーネルオプションを構成することに非常に類似した機能である。
【0021】 効率的にコード化を行うのは、エンベッドシステムにとって最大の関心事であ
る。さらに、重要な考慮の対象として、開始時間を最小化することがある。本発
明の他の側面は、コード化効率を最大化し、開始時間を最小化することである。
【0022】 図7には、本発明のある側面に関連した、先読みのジャバコンパイラを最適化
する際のブロック図が示されている。内部的には、gccは、二つの主要な表記
を使用している。第1のものは、よく知られた抽象的な構文ツリーのレベルでの
樹状表記であり、高級な自由式表記を表すのに使用される。第2のものは、RT
L(レジスタ変換言語)形式であり、概して、命令や命令パターンや機械語レベ
ルの計算を表すのに使用される。ツリーを用いてコンスタントフォールディング
(constant folding)が行われるが、さらに他の最適化がRTLレベルで行われ
る。図7において、コンパイラシェル701(TOPLEV.C)は、ジャバの
ソースコードがジャバのバイトコードがコンパイルされるべきかどうかを決定し
、ジャバパーサ703とバイトコードパーサ705の対応する一つを呼び出す。
呼び出されるパーサは、表記や種類や宣言他のツリー表記707を作る。コンス
タントフォールディングがこの分野で良く知られた方法で実行される(709)
。機械表記713を用いた、EXPAND_EXPR711のモジュールは、そ
の後、機械固有の抽象表記命令のリンク済み一覧表である、レジスタ転送言語(
RTL)表記715を生成するために樹状表記を拡大する。先行する動作を実行
するコードモジュールは、一般的にコンパイラのフロントエンド(710)と呼
ばれる。
【0023】 コンパイラのバックエンド(620)において、様々な最適化(717)がR
TL表記715上で実行され、最適化されたRTLを作り出す。最適化されたR
TLから、VARASM.VとTOPLEV.C(719)の最適化されたモジ
ュールが、使用する機械のアッセンブリコードを作り出す。
【0024】 スタックスロットのコンパイレーションは、本発明に従って定義され、使用す
るのが実際のプロセッサであるようなレジスタ特有の命令にジャバVMを構成す
るスタックマシンを目指して命令をマップする処理である。コンパイラの中で、
このマップは、2段階の処理である。第1に、スタックスロットは、仮想レジス
タ、すなわち、コンパイラ内のレジスタ表記にマップされる。第2の、これらの
仮想レジスタは、機能呼び出しフレーム内に実在するレジスタあるいはメモリ位
置にマップされる。マッピングは、コンパイラによって起こされる種類の制約を
良く見なければならず、また、効率的な最適化されたコードを作り出さなくては
ならない。スタックスロットと仮想レジスタ間の1対1の簡単なマップは、どち
らも行わない。表1内に示される例を見ると、レジスタ値("Register1")は、 定数(5)によってインクリメントされる。例において、vreg11とvreg50とvreg
51は、コンパイラ内の仮想レジスタである。
【0025】
【表1】
【0026】 この簡単な表は、可能な最適化を利用してはいない。最適化器は、分離したパ
スの間に、続いて実行される。しかし、その様な方法は、不便であり時間がかか
る。さらにそのような方法は、コンパイラの種類の制約を乱す。
【0027】 コンパイラの種類の制約は、本発明の一つの側面に従って、スタックスロック
を単一の仮想レジスタにマップせずに、仮想レジスタの“ファミリ”にマップす
ることで、満足される。マップの一例が、表2に示される。表2のものに似た構
成を持つ内部構造を用いて、コンパイラは、ジャバVMの実行時間の環境を作る
。表2は、“スパース”の表であり、必要なときにのみコンパイラによって“フ
ァイル出力”される。次に最適化が仮想レジスタに沿って実行されるとき、最適
化は正しい結果を生み出すことが保証される。
【0028】
【表2】 効率的なコード化は、ジャバのスタックをツリーノードのスタックとして作る
ことによって達成される。gccコンパイラの中で、ツリーのノードは、コンパ
イラの世界では良く知られた、抽象的な構文ツリーに似ている。表1の命令のシ
ークエンスにおいて、現在の最適化先読みジャバコンパイラは、樹状ノード表記
を作る。第1に、図8Aに示されるように、ツリーが整数の定数5を表すものと
して作られる。スタックポインタは、1に設定される。次にノードが、変数Xを
表すように作られ、vreg11にマップされたと仮定する(図8B)。スタックポイ
ンタは、2にインクリメントされる。次に、ノードが追加を表すのに作られる。
ノードは、先に作られた2個のノードに向けられ、3個のノードが作られるが、
スタックポインタが1になるようにそれらを“消費”する(図8C)。
【0029】 ブランチ条件あるいは“側面条件(side condition)”に出会うと、スタック
は、“フラッシュ”されなくてはならない。この(istore)命令はそのような側
面条件の一つである。従って、図8Dにおいて、MODIFY_EXPRノード
が作られ、表記の左側(LHS)と表記の右側(RHS)を表すポインタノード
を伴って、作られる。ツリーノードの構造は、EXPAND_EXPR(711
)に回され、これは、MULTIPLY_EXPRノードを表す、使用するマシ
ン特有のRTLを作り出す。
【0030】 iadd命令をいかに一般的に実行するかを示す、jc1コンパイラからの断
片が図9に示されている。ビルド(build)機能は、ツリーノードを作るための 標準的なgcc機能であり、フォールド(fold)は、一定のフォールドを行うた
めの標準的な機能である。pop_value機能とpush_value機能は、そのスタック一 がどのツリーノードに対応するかを追跡し続ける。gccコンパイラのフロント
エンドのこのツリーノード表記から、gccコンパイラのバックエンドは、続い
て、実際のコードを作り出す。
【0031】 仮想レジスタは、必要なときにのみ割り当てられるので、少ないレジスタが使
用され、結果としてより良いコードとなる。また、追加用の正しい命令と他の表
現を選択するために、一定のフォールディングと既存のマシンとからの利点が得
られる。結果として、コードは、gcc CとC++のフロントエンドにより使
われる同じ機構を大幅に用いて作られる。従って、同様なコードの質が期待でき
る。
【0032】 クラスのメタダタ(meta data)を含んだ複雑なデータ構造を作る従来技術の 処理が記載される。本発明の一側面に関連して、このデータ構造を作る処理は、
実行時間環境によって得られる内部表記を直接作るコンパイラを持つことによっ
て取り消される。コンパイラは、非常に少ない初期化が実行時間に実行されるべ
く留まるように、内部データ構造を静的に割り当て初期化する。
【0033】 図10を参照すると、例としてのジャバのクラスのためのソースコードが示さ
れている。標準的なジャバの実行モデルにおいて、クラスのファイルがソースコ
ードから作られる。クラスファイルに含まれるのは、クラス宣言から得られるメ
タデータである(図示されず)。しかし、クラスのファイルのメタデータは、V
Mには適さない。代わりに、VMがクラスをロードするときに、メタデータを読
んで図4に示されるデータ構造を動的に作る。
【0034】 本発明の一側面に従って、メタデータは、静的な初期化データとして記憶され
る。コンパイラ済みのクラスの形式のソースコード表記が図11に示される。静
的な初期化データとして記憶されたメタデータは直接使用することができる。図
4のデータ構造を作る処理は、従って避けることができる。結果として、開始は
、速くなり、動的な割り当てを必要としない。
【0035】 当業者にとって、本発明は、その精神と必須の特長とから離れることなく、他
の特定の形式で実施することができることは、望ましいことである。従って、こ
こに開示される実施形態は、全ての側面から実例的であるが制限的では無いと考
えられる。本発明の範囲は、前述の記載よりも添付される請求の範囲によって示
され、その等価物の意味と範囲の中の全ての変更とは、そこに受け入れられるも
のとして意図される。
【0036】 従って、ここに開示される実施形態は、全ての点で実例的であるが制限的では
ないと考えられる。本発明の範囲は、前述したものより添付の請求の範囲によっ
て示され、その等価物の意味と範囲の中の全ての変更とは、そこに受け入れられ
るものとして意図される。
【図面の簡単な説明】
【図1】 従来のジャバ実行モデルのフロー図である。
【図2】 ジャバVMの実行時モデルを図解する図である。
【図3】 図1のフロー図に対応するブロック図である。
【図4】 図1のジャバ従来モデルによるメタデータを具備するデータ構造
の図である。
【図5】 本発明の1つの特徴によるジャバ実行モデルのブロック図である
【図6】 図5のフロー図に対応するフロー図である。
【図7】 本発明の1つの特徴による最適化先読みジャバコンパイラのブロ
ック図である。
【図8】 Aは「ジャバVMスタックが、スタックの第1“スナップショッ
ト”を示すツリーノードのスタックによって、どのようにしてモデル化されるの
か」ということの例の一部を示す図であり、Bは「ジャバVMスタックが、スタ
ックの第2“スナップショット”を示すツリーノードのスタックによって、どの
ようにしてモデル化されるのか」ということの例の一部を示す図であり、Cは「
ジャバVMスタックが、スタックの第3“スナップショット”を示すツリーノー
ドのスタックによって、どのようにしてモデル化されるのか」ということの例の
一部を示す図であり、Dは「ジャバVMスタックが、スタックの第4“スナップ
ショット”を示すツリーノードのスタックによって、どのようにしてモデル化さ
れるのか」ということの例の一部を示す図である。
【図9】 「jc1コンパイラがツリーノードのジャバVMスタックをどの
ようにしてシミュレートするのか」ということを示すjc1コンパイラからのフ
ラグメントを示す図である。
【図10】 ジャバクラスの一例を示す図である。
【図11】 プリコンパイルされたメーターデータを伴う(図10の)ジャ
バクラスの一例を示す図である。
【符号の説明】
501……バイトコード 505……VM 507……クラスライブラリ 515……マシンコード
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SZ,UG,ZW),EA(AM ,AZ,BY,KG,KZ,MD,RU,TJ,TM) ,AL,AM,AT,AU,AZ,BA,BB,BG, BR,BY,CA,CH,CN,CU,CZ,DE,D K,EE,ES,FI,GB,GD,GE,GH,GM ,HR,HU,ID,IL,IN,IS,JP,KE, KG,KP,KR,KZ,LC,LK,LR,LS,L T,LU,LV,MD,MG,MK,MN,MW,MX ,NO,NZ,PL,PT,RO,RU,SD,SE, SG,SI,SK,SL,TJ,TM,TR,TT,U A,UG,US,UZ,VN,YU,ZW

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 ソースコードと、コードが機械に依らないコード命令によっ
    て表記される中間形式とを持つ、高級プログラミング言語でコードを作る段階と
    、 最小化先読みコンパイラを用いて、特定の機械のための上記のコードを前コン
    パイルし、前コンパイルされたコードを作り出す段階と を備え、 上記の高級プログラミング言語の標準的実行モデルは、上記の機械に依らない
    コード命令の実行時間において、翻訳をしコンパイルをする ことを特長とするソフトウェアコード生成方法。
  2. 【請求項2】 上記コードは、ソースコードから前コンパイルされることを
    特長とする請求項1記載のソフトウェアコード生成方法。
  3. 【請求項3】 上記コードは、上記の機械に依らないコード命令から前コン
    パイルされることを特長とする請求項1記載のソフトウェアコード生成方法。
  4. 【請求項4】 上記の標準的な実行モデルによって要求される実行時間部品
    のサブセットを選択する段階と、 システム内の実行時間部品の上記サブセットのみを確定する段階と をさらに備えることを特長とする請求項1記載のソフトウェアコード生成方法
  5. 【請求項5】 上記システムにおいて、上記の機械に依らないコード命令を
    実行するための仮想機械を実現するソフトウェアと、上記の機械に依らないコー
    ド命令のファイルをダウンロードするための通信ソフトウェアとを含む段階をさ
    らに備えることを特長とする請求項4記載のソフトウェアコード生成方法。
  6. 【請求項6】 上記の機械に依らないコード命令のファイルをダウンロード
    する段階をさらに備えることを特長とする請求項5記載のソフトウェアコード生
    成方法。
  7. 【請求項7】 上記の仮想機械上で、上記の機械に依らないコード命令を実
    行する段階をさらに備えることを特長とする請求項6記載のソフトウェアコード
    生成方法。
  8. 【請求項8】 (interoperate)する、上記の機械に依らないコード命令と
    上記の前コンパイルされたコードを生み出す段階をさらに備えることを特長とす
    る請求項7記載のソフトウェアコード生成方法。
  9. 【請求項9】 前コンパイルは、スタックスロットコンパイル処理を備える
    ことを特長とする請求項1記載のソフトウェアコード生成方法。
  10. 【請求項10】 スタックスロットコンパイルは、特定のジャバの種類のデ
    ータを表す、スタックスロットを、上記の特定のジャバの種類を表すのに使用さ
    れる機械のモードに従って、一組の仮想レジスタの一つへと、マップすることを
    含むことを特長とする請求項9記載のソフトウェアコード生成方法。
  11. 【請求項11】 スタックスロットコンパイラは、 ツリーのノードのスタックを用いて、上記の標準的実行モデルのスタックを作
    る段階と、 レジスタ変換言語表記を得るために、ツリーノード表現を拡張する段階と を備えることを特長とする請求項9記載のソフトウェアコード生成方法。
  12. 【請求項12】 最適化されたレジスタ変換言語コード表記を作り出すため
    に、レジスタ変換言語コード表記上で最適化を実行する段階をさらに備えること
    を特長とする請求項11記載のソフトウェアコード生成方法。
  13. 【請求項13】 最適化されたレジスタ変換言語コード表記から、アッセン
    ブリコードを作り出す段階をさらに備えることを特長とする請求項12記載のソ
    フトウェアコード生成方法。
  14. 【請求項14】 上記コードには、上記のコードによって使用されるデータ
    領域の少なくとも一つと、上記のコードによって使用される方法とを記載するメ
    タデータを備えることを特長とする請求項1記載のソフトウェアコード生成方法
  15. 【請求項15】 上記メタデータの変換は、上記メタデータの初期化された
    静的データ表記を作り出すことが含まれることを特長とする請求項14記載のソ
    フトウェアコード生成方法
JP2000532796A 1998-02-19 1999-02-18 最適化先読みコンパイラを使用したジャバ開発環境 Pending JP2002504725A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/025,842 1998-02-19
US09/025,842 US6110226A (en) 1998-02-19 1998-02-19 Java development environment using optimizing ahead-of-time compiler
PCT/US1999/003518 WO1999042925A1 (en) 1998-02-19 1999-02-18 Java development environment using optimizing ahead-of-time compiler

Publications (1)

Publication Number Publication Date
JP2002504725A true JP2002504725A (ja) 2002-02-12

Family

ID=21828342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000532796A Pending JP2002504725A (ja) 1998-02-19 1999-02-18 最適化先読みコンパイラを使用したジャバ開発環境

Country Status (5)

Country Link
US (1) US6110226A (ja)
EP (1) EP1062575A4 (ja)
JP (1) JP2002504725A (ja)
AU (1) AU2772799A (ja)
WO (1) WO1999042925A1 (ja)

Families Citing this family (115)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138140A (en) * 1995-07-14 2000-10-24 Sony Corporation Data processing method and device
US6212673B1 (en) * 1997-03-31 2001-04-03 International Business Machines Corporation Component-neutral builder interface
US6960133B1 (en) 2000-08-28 2005-11-01 Igt Slot machine game having a plurality of ways for a user to obtain payouts based on selection of one or more symbols (power pays)
US6976626B2 (en) * 1997-09-16 2005-12-20 Metrologic Instruments, Inc. Wireless bar code symbol driven portable data terminal (PDT) system adapted for single handed operation
US5933635A (en) * 1997-10-06 1999-08-03 Sun Microsystems, Inc. Method and apparatus for dynamically deoptimizing compiled activations
EP0943990A3 (en) * 1998-02-27 2004-12-22 Texas Instruments Incorporated Method and system of providing dynamic optimization information in a code interpretive runtime environment
ATE225536T1 (de) * 1998-06-26 2002-10-15 Deutsche Telekom Ag Verfahren zur prüfung von java-bytecode- programmen auf sicherheitseigenschaften
JP2000020319A (ja) * 1998-06-30 2000-01-21 Canon Inc プログラム実行装置、その制御方法および記憶媒体
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6199194B1 (en) * 1998-09-25 2001-03-06 Adaptec, Inc. Method and system for programming firmware over a computer network
US6467082B1 (en) * 1998-12-02 2002-10-15 Agere Systems Guardian Corp. Methods and apparatus for simulating external linkage points and control transfers in source translation systems
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
US6324687B1 (en) * 1998-12-03 2001-11-27 International Business Machines Corporation Method and apparatus to selectively control processing of a method in a java virtual machine
US6530075B1 (en) * 1998-12-03 2003-03-04 International Business Machines Corporation JIT/compiler Java language extensions to enable field performance and serviceability
US6295641B1 (en) * 1998-12-03 2001-09-25 International Business Machines Corporation Method and apparatus for dynamically selecting bytecodes for just in time compiling in a user's environment
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6327702B1 (en) * 1998-12-30 2001-12-04 Microsoft Corporation Generating a compiled language program for an interpretive runtime environment
JP3807860B2 (ja) * 1999-01-29 2006-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法および装置、並びにメソッド活動度計算方法および装置
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans
US6484313B1 (en) 1999-06-30 2002-11-19 Microsoft Corporation Compiling and persisting of intermediate language code
US7150005B2 (en) * 1999-07-02 2006-12-12 Beryl Technical Assays, Llc Method and system for global constant management for memory
US6968549B1 (en) 1999-07-02 2005-11-22 Beryl Technical Assays Llc Method and system for dynamically loading data structures into memory with global constant pool
AU6748400A (en) * 1999-07-28 2001-02-19 Sun Microsystems, Inc. A single-compiler architecture
US6594783B1 (en) * 1999-08-27 2003-07-15 Hewlett-Packard Development Company, L.P. Code verification by tree reconstruction
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
GB9925510D0 (en) * 1999-10-29 1999-12-29 Ibm Incorporating native code in java archive files
US6484188B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Optimization of garbage collection code in the context of raw native interface function calls in the java programming language
US20010042241A1 (en) * 2000-01-21 2001-11-15 Fujitsu Limited Apparatus and method for executing program using just-in time-compiler system
US7080359B2 (en) * 2002-01-16 2006-07-18 International Business Machines Corporation Stack unique signatures for program procedures and methods
US7032216B1 (en) * 2000-02-25 2006-04-18 Oracle International Corporation Native compilation and safe deployment of virtual machine code
US7159223B1 (en) * 2000-05-12 2007-01-02 Zw Company, Llc Methods and systems for applications to interact with hardware
US6769985B1 (en) 2000-05-31 2004-08-03 Igt Gaming device and method for enhancing the issuance or transfer of an award
US7695363B2 (en) 2000-06-23 2010-04-13 Igt Gaming device having multiple display interfaces
US7699699B2 (en) 2000-06-23 2010-04-20 Igt Gaming device having multiple selectable display interfaces based on player's wagers
EP1174791B1 (en) 2000-07-10 2017-09-27 Microsoft Technology Licensing, LLC Unified data type system and method
US6973646B1 (en) * 2000-07-21 2005-12-06 International Business Machines Corporation Method for compiling program components in a mixed static and dynamic environment
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6779106B1 (en) 2000-09-28 2004-08-17 International Business Machines Corporation Apparatus and method for an enhanced integer divide in an IA64 architecture
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
KR20020028814A (ko) 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US6739973B1 (en) 2000-10-11 2004-05-25 Igt Gaming device having changed or generated player stimuli
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7350200B2 (en) * 2001-03-29 2008-03-25 Intel Corporation Method and system of controlling dynamically compiled native code size
EP2244185B1 (en) * 2001-05-30 2014-01-01 BlackBerry Limited A mobile communications device application processing system
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
US20030001894A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Method and apparatus for dynamically determining actions to perform for an object
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US7901291B2 (en) 2001-09-28 2011-03-08 Igt Gaming device operable with platform independent code and method
US7213240B2 (en) 2001-10-05 2007-05-01 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
US7708642B2 (en) 2001-10-15 2010-05-04 Igt Gaming device having pitch-shifted sound and music
US7666098B2 (en) 2001-10-15 2010-02-23 Igt Gaming device having modified reel spin sounds to highlight and enhance positive player outcomes
US6848996B2 (en) * 2001-10-15 2005-02-01 Igt Gaming device with sound recording changes associated with player inputs
GB0125176D0 (en) * 2001-10-19 2001-12-12 Koninkl Philips Electronics Nv A method of compiling bytecode to native code
US7529773B2 (en) * 2001-12-19 2009-05-05 Parametric Technology Corporation Idea service for automatic file naming and storing
US7340730B2 (en) 2002-03-18 2008-03-04 Sun Microsystems, Inc. On demand, network accessible, run time compile server
US7272827B2 (en) * 2002-04-03 2007-09-18 International Business Machines Corporation Statically detecting externally referenced interfaces of a program
US7039911B2 (en) * 2002-05-17 2006-05-02 Naturalbridge, Inc. Hybrid threads for multiplexing virtual machine
GB0220282D0 (en) * 2002-08-31 2002-10-09 Ibm Improved just in time compilation of java software methods
US7765532B2 (en) * 2002-10-22 2010-07-27 Oracle America, Inc. Inducing concurrency in software code
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7603664B2 (en) * 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US20040083467A1 (en) * 2002-10-29 2004-04-29 Sharp Laboratories Of America, Inc. System and method for executing intermediate code
US6964042B2 (en) * 2002-12-17 2005-11-08 Bea Systems, Inc. System and method for iterative code optimization using adaptive size metrics
CA2418670A1 (en) * 2003-02-11 2004-08-11 Ibm Canada Limited - Ibm Canada Limitee Method and system for generating executable code for formatiing and printing complex data structures
KR100506522B1 (ko) * 2003-02-24 2005-08-03 삼성전자주식회사 자바 프로그램에서 바이트 코드의 컴파일 시간 단축시스템 및 방법
US20040230901A1 (en) * 2003-05-15 2004-11-18 International Business Machines Corporation Portlet style conformity on pervasive agents
US20050039189A1 (en) * 2003-08-14 2005-02-17 Todd Anderson Methods and apparatus to preemptively compile an application
US7789748B2 (en) * 2003-09-04 2010-09-07 Igt Gaming device having player-selectable music
US7421687B1 (en) * 2003-10-08 2008-09-02 Sun Microsystems, Inc. Optimizing branch condition expressions in a JIT compiler
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
US20050278361A1 (en) * 2004-06-15 2005-12-15 Brunell Edward G View definition language for network management application development
US20060004856A1 (en) * 2004-06-15 2006-01-05 Xiangyang Shen Data management and persistence frameworks for network management application development
US7555743B2 (en) * 2004-06-15 2009-06-30 Alcatel-Lucent Usa Inc. SNMP agent code generation and SNMP agent framework for network management application development
US20050278708A1 (en) * 2004-06-15 2005-12-15 Dong Zhao Event management framework for network management application development
CN100498711C (zh) * 2004-07-20 2009-06-10 明星游戏株式会社 自动翻译程序和程序翻译服务器
KR100577366B1 (ko) * 2004-09-25 2006-05-10 삼성전자주식회사 이종의 자바 메소드를 실행하는 방법 및 장치
KR100725386B1 (ko) * 2004-09-25 2007-06-07 삼성전자주식회사 가상 머신 어플리케이션을 실행하는 방법 및 그 방법을이용한 디지털 방송 수신기
US8043155B2 (en) 2004-10-18 2011-10-25 Igt Gaming device having a plurality of wildcard symbol patterns
KR100597414B1 (ko) * 2004-10-21 2006-07-05 삼성전자주식회사 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
US7793275B2 (en) * 2006-03-31 2010-09-07 Intel Corporation Methods and apparatus to tune intermediate representations in a managed runtime environment
WO2008002173A1 (en) * 2006-06-20 2008-01-03 Intel Corporation Method and apparatus to call native code from a managed code application
US8296742B2 (en) * 2006-10-10 2012-10-23 Microsoft Corporation Automatic native generation
US7921416B2 (en) 2006-10-20 2011-04-05 Yahoo! Inc. Formal language and translator for parallel processing of data
US8418135B2 (en) * 2007-05-31 2013-04-09 Red Hat, Inc. Method and apparatus to abstract away rule languages
US9164783B2 (en) * 2007-08-20 2015-10-20 International Business Machines Corporation Load time resolution for dynamic binding languages
US8453128B2 (en) * 2007-09-28 2013-05-28 Oracle America, Inc. Method and system for implementing a just-in-time compiler
US9798524B1 (en) * 2007-12-04 2017-10-24 Axway, Inc. System and method for exposing the dynamic web server-side
US8578056B1 (en) * 2008-03-31 2013-11-05 Symantec Corporation Optimized application streaming for just in time compiled components
US8473935B2 (en) * 2008-04-21 2013-06-25 Microsoft Corporation Just-ahead-of-time compilation
US20100023923A1 (en) * 2008-07-24 2010-01-28 Sap Portals Israel Ltd Method for medeling objects in a hetrogenious computing environment
US8591308B2 (en) 2008-09-10 2013-11-26 Igt Gaming system and method providing indication of notable symbols including audible indication
US20130167144A1 (en) * 2009-09-04 2013-06-27 Bernd Mathiske Virtual Machine Persisted Within Itself
US8910148B2 (en) * 2010-07-29 2014-12-09 International Business Machines Corporation Packaging an application with plurality of libraries
US8460090B1 (en) 2012-01-20 2013-06-11 Igt Gaming system, gaming device, and method providing an estimated emotional state of a player based on the occurrence of one or more designated events
US8740689B2 (en) 2012-07-06 2014-06-03 Igt Gaming system and method configured to operate a game associated with a reflector symbol
US9245407B2 (en) 2012-07-06 2016-01-26 Igt Gaming system and method that determines awards based on quantities of symbols included in one or more strings of related symbols displayed along one or more paylines
WO2014176587A2 (en) * 2013-04-26 2014-10-30 The Trustees Of Columbia University In The City Of New York Systems and methods for mobile applications
US9192857B2 (en) 2013-07-23 2015-11-24 Igt Beat synchronization in a game
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
US9348625B2 (en) * 2014-05-23 2016-05-24 Google Inc. Application access to native and bundled libraries
US9430200B1 (en) 2015-06-04 2016-08-30 Microsoft Technology Licensing Llc Cross-library framework architecture feature sets
US9947170B2 (en) 2015-09-28 2018-04-17 Igt Time synchronization of gaming machines
CN107977199A (zh) * 2016-10-19 2018-05-01 中国石油化工股份有限公司 一种在Java程序中调用C++功能模块的方法
CN106775616B (zh) * 2016-11-10 2020-08-11 中国电子科技集团公司第二十八研究所 基于C++与Java混合编程的分布式服务系统
KR102663196B1 (ko) * 2018-11-16 2024-05-07 삼성전자주식회사 사용자 단말장치, 서버, 사용자 단말장치의 제어방법 및 서버의 제어방법
US10782948B2 (en) * 2018-11-19 2020-09-22 Red Hat, Inc. Reducing application startup time by generating bytecode from metadata at build time
CN111736838A (zh) * 2019-03-25 2020-10-02 华为技术有限公司 一种跨语言编译方法及设备
US10915305B2 (en) * 2019-03-28 2021-02-09 International Business Machines Corporation Reducing compilation time for computer software
CN113342323B (zh) * 2021-06-29 2024-03-29 银清科技有限公司 软件在线开发的方法及装置
EP4187380A1 (en) 2021-11-30 2023-05-31 aicas GmbH Translating intermediate code to provide machine code by selecting suitable translation options

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62113244A (ja) * 1985-11-12 1987-05-25 Omron Tateisi Electronics Co プログラムテスト装置
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
JPH09282174A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラム実行方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL100987A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
US5551039A (en) * 1992-02-03 1996-08-27 Thinking Machines Corporation Compiling a source code vector instruction by generating a subgrid loop for iteratively processing array elements by plural processing elements
US5375242A (en) * 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
US5812854A (en) * 1996-03-18 1998-09-22 International Business Machines Corporation Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62113244A (ja) * 1985-11-12 1987-05-25 Omron Tateisi Electronics Co プログラムテスト装置
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
JPH09282174A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd プログラム実行方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
とどそふと: "特集 第2章:Java言語仕様", C MAGAZINE, vol. 第8巻,第5号, JPN6009003044, 1 May 1996 (1996-05-01), JP, pages 40 - 41, ISSN: 0001234604 *
とどそふと: "特集 第3章:JavaからCへのコンバートとJava仮想機械", C MAGAZINE, vol. 第8巻,第5号, JPN6009003056, 1 May 1996 (1996-05-01), JP, pages 58 - 59, ISSN: 0001234599 *
堀田拡二、渡邊雄二: "Java高速実行環境:HBC", FUJITSU, vol. 第48巻,第2号, JPN6009003052, 10 March 1997 (1997-03-10), JP, pages 164 - 166, ISSN: 0001234601 *
山本 淳、小野口 哲: "解説:Java開発ツール", 日経バイト, vol. 特別増刊号,第171号, JPN6009003055, 8 November 1997 (1997-11-08), JP, pages 160 - 163, ISSN: 0001234600 *
植田 省司: "組み込み機器の統合開発環境CodeWarrior 第1回:すべてのターゲットで共通の開発環境を目指し", INTERFACE, vol. 第24巻,第3号, JPN6009003048, 6 February 1998 (1998-02-06), JP, pages 194, ISSN: 0001234603 *
郡山 龍: "インターネットとWWW技術(II)Javaと動的コンテンツ技術", 画像電子学会誌, vol. 第26巻,第2号, JPN6009003050, 25 April 1997 (1997-04-25), JP, pages 123, ISSN: 0001234602 *

Also Published As

Publication number Publication date
US6110226A (en) 2000-08-29
WO1999042925A1 (en) 1999-08-26
AU2772799A (en) 1999-09-06
EP1062575A4 (en) 2005-02-02
EP1062575A1 (en) 2000-12-27

Similar Documents

Publication Publication Date Title
JP2002504725A (ja) 最適化先読みコンパイラを使用したジャバ開発環境
Fernandez Simple and effective link-time optimization of Modula-3 programs
Koshy et al. VMSTAR: synthesizing scalable runtime environments for sensor networks
Engler VCODE: a retargetable, extensible, very fast dynamic code generation system
EP3155517B1 (en) Complex constants
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
Franz Dynamic linking of software components
US20020083416A1 (en) Automatic stub/adapter generator
US7823139B2 (en) Method and system for translating programming languages
WO2007035545A2 (en) Apparatus, method and system for building software by composition
JP2005044347A (ja) 拡張可能なコンパイラおよびツールのインフラストラクチャのための記述言語
KR20020085876A (ko) 객체지향 컴퓨터 프로그램의 로딩
Franz Adaptive compression of syntax trees and iterative dynamic code optimization: Two basic technologies for mobile object systems
CA2236064A1 (en) Method and system for constructing hybrid virtual function tables
Titzer et al. Improving compiler-runtime separation with XIR
Wakeling Compiling lazy functional programs for the Java Virtual Machine
Piumarta The Virtual Processor: Fast, Architecture-Neutral Dynamic Code Generation.
JP2013506171A (ja) 意味論的値を利用するオブジェクト・レベルの互換性及びクラスのサイズ変更
Franz Run-time code generation as a central system service
Franz Beyond Java: An Infrastructure for High-Performance Mobile Code on the World Wide Web.
Lopes On the Design and Implementation of a Virtual Machine for Process Calculi
US11256480B1 (en) Deserialization of stream objects using constant-foldable method handles
Gough Multi-language, multi-target compiler development: Evolution of the Gardens Point compiler project
Johansson et al. HiPE: High Performance Erlang
Bothner Compiling Java for embedded systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060217

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20060418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090427

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091202

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20091210

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20100205