JP4768984B2 - コンパイル方法、コンパイルプログラムおよびコンパイル装置 - Google Patents
コンパイル方法、コンパイルプログラムおよびコンパイル装置 Download PDFInfo
- Publication number
- JP4768984B2 JP4768984B2 JP2004352558A JP2004352558A JP4768984B2 JP 4768984 B2 JP4768984 B2 JP 4768984B2 JP 2004352558 A JP2004352558 A JP 2004352558A JP 2004352558 A JP2004352558 A JP 2004352558A JP 4768984 B2 JP4768984 B2 JP 4768984B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- address storage
- storage table
- method address
- derived
- 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.)
- Active
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
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)
Description
前記ソースプログラムから中間コードを生成する中間コード生成ステップと、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出ステップと、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライド(over ride:再定義)していない場合に、それぞれのクラスの前記メソッドアドレス格納テーブルを併合することによって、両方のクラスに共通に使用可能なメソッドと一方のクラスに使用可能なメソッドからなるメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成したメソッドアドレス格納テーブルの先頭アドレス値に更新することにより前記中間コードを最適化するメソッドアドレス格納テーブル最適化ステップと、
最適化された前記中間コードをオブジェクトコードに変換するオブジェクトコード変換ステップとを含むものである。
図8は、プログラム記憶部D1に記憶されているヘッダファイルおよびソースプログラムの一例を示す。以下では、このヘッダファイルおよびソースプログラムを入力した場合のコンパイラの動作を説明する。
具体例1の前提条件のうち、クラスの継承関係を使用しないという前提の場合を考える。この場合、クラスの継承関係を使用するか否かの判定処理(S27)までは、具体例1と同様の処理が行われ、図9の仮想関数テーブル情報が抽出されている。次に、メソッドアドレス包含解析サブステップ(S30)が実施されることになる。
具体例1の前提条件のうち、「file1.cpp」の範囲で解析する指令を取りやめ、ソースプログラム全体に対して解析を行う場合を考える。
D2 生成コード記憶部
Claims (27)
- オブジェクト指向言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイル方法であって、
前記ソースプログラムから中間コードを生成する中間コード生成ステップと、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出ステップと、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライドしていない場合に、それぞれのクラスの前記メソッドアドレス格納テーブルを併合することによって、両方のクラスに共通に使用可能なメソッドと一方のクラスに使用可能なメソッドからなるメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成したメソッドアドレス格納テーブルの先頭アドレス値に更新することにより前記中間コードを最適化するメソッドアドレス格納テーブル最適化ステップと、
最適化された前記中間コードをオブジェクトコードに変換するオブジェクトコード変換ステップとを含むことを特徴とするコンパイル方法。 - 前記解析対象情報抽出ステップは、少なくともファイル名、または関数名、またはクラス名を含む解析範囲限定情報がコンパイラに与えられた場合に、指定された解析範囲に限定して前記メソッドアドレス格納テーブル情報、クラス情報、関数参照情報を抽出する請求項1に記載のコンパイル方法。
- 前記解析対象情報抽出ステップは、定義はされているものの参照はされていない実行時確定メソッドが存在する場合に、定義はされているものの参照はされていないすべての実行時確定メソッドを、クラス情報から削除し、かつすべてのメソッドアドレス格納テーブルより削除し、さらに削除後のメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス番号を更新する請求項1または請求項2に記載のコンパイル方法。
- 前記メソッドアドレス格納テーブル最適化ステップは、基底クラスに対して、少なくとも1つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合に、前記基底クラスのメソッドアドレス格納テーブルを削除し、さらに前記基底クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項1から請求項3までのいずれか一項に記載のコンパイル方法。
- 前記メソッドアドレス格納テーブル最適化ステップは、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義していない場合に、新規に実行時確定メソッドを定義していない派生クラスのメソッドアドレス格納テーブルを削除し、さらにその派生クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない他方の派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項1から請求項3までのいずれか一項に記載のコンパイル方法。
- 前記メソッドアドレス格納テーブル最適化ステップは、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義している場合で、かつ両方の派生クラスがさらに派生クラスを持たない場合に、派生クラスを持たない一方の派生クラスのメソッドアドレス格納テーブルに、他方の派生クラスで新規に定義した実行時確定メソッドのアドレスを追加したメソッドアドレス格納テーブルを新たに生成し、さらに両方の派生クラスのメソッドアドレス格納テーブルを削除し、さらに両方のメソッドアドレス格納テーブルポインタを、新たに生成したメソッドアドレス格納テーブルの先頭アドレス値に更新し、さらに新たに生成されたメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス値を更新することにより、前記中間コードを最適化する請求項1から請求項3までのいずれか一項に記載のコンパイル方法。
- 前記メソッドアドレス格納テーブル最適化ステップは、各クラスのメソッドアドレス格納テーブルを比較し、一方のメソッドアドレス格納テーブルに格納されているメソッドアドレス値が、他方のメソッドアドレス格納テーブルの先頭位置に包含されている場合に、包含されている側のメソッドアドレス格納テーブルを削除し、包含されているメソッドアドレス格納テーブルを指していたクラスのメソッドアドレス格納テーブルポインタを、包含している側のメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項1から請求項3までのいずれか一項に記載のコンパイル方法。
- 前記メソッドアドレス格納テーブル最適化ステップは、最適化実施内容を表示させる指令がコンパイラに与えられた場合に、少なくとも最適化の対象となった前記メソッドアドレス格納テーブルを参照していたクラス、最適化前の前記メソッドアドレス格納テーブル、最適化後の前記メソッドアドレス格納テーブルを標準出力に出力する請求項1から請求項7までのいずれか一項に記載のコンパイル方法。
- 前記オブジェクト指向言語をC++言語、前記実行時確定メソッドを仮想関数、前記メソッドアドレス格納テーブルを仮想関数テーブル、前記メソッドアドレス格納テーブルポインタを仮想関数テーブルポインタとする請求項1から請求項8までのいずれか一項に記載のコンパイル方法。
- オブジェクト指向言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイルプログラムであって、
前記ソースプログラムから中間コードを生成する中間コード生成機能と、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出機能と、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライドしていない場合に、それぞれのクラスの前記メソッドアドレス格納テーブルを併合することによって、両方のクラスに共通に使用可能なメソッドと一方のクラスに使用可能なメソッドからなるメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成したメソッドアドレス格納テーブルの先頭アドレス値に更新することにより前記中間コードを最適化するメソッドアドレス格納テーブル最適化機能と、
最適化された前記中間コードをオブジェクトコードに変換するオブジェクトコード変換機能とをコンピュータに実現させることを特徴とするコンパイルプログラム。 - 前記解析対象情報抽出機能は、少なくともファイル名、または関数名、またはクラス名を含む解析範囲限定情報がコンパイラに与えられた場合に、指定された解析範囲に限定して前記メソッドアドレス格納テーブル情報、クラス情報、関数参照情報を抽出する請求項10に記載のコンパイルプログラム。
- 前記解析対象情報抽出機能は、定義はされているものの参照はされていない実行時確定メソッドが存在する場合に、定義はされているものの参照はされていないすべての実行時確定メソッドを、クラス情報から削除し、かつすべてのメソッドアドレス格納テーブルより削除し、さらに削除後のメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス番号を更新する請求項10または請求項11に記載のコンパイルプログラム。
- 前記メソッドアドレス格納テーブル最適化機能は、基底クラスに対して、少なくとも1つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合に、前記基底クラスのメソッドアドレス格納テーブルを削除し、さらに前記基底クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項10から請求項12までのいずれか一項に記載のコンパイルプログラム。
- 前記メソッドアドレス格納テーブル最適化機能は、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義していない場合に、新規に実行時確定メソッドを定義していない派生クラスのメソッドアドレス格納テーブルを削除し、さらにその派生クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない他方の派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項10から請求項12までのいずれか一項に記載のコンパイルプログラム。
- 前記メソッドアドレス格納テーブル最適化機能は、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義している場合で、かつ両方の派生クラスがさらに派生クラスを持たない場合に、派生クラスを持たない一方の派生クラスのメソッドアドレス格納テーブルに、他方の派生クラスで新規に定義した実行時確定メソッドのアドレスを追加したメソッドアドレス格納テーブルを新たに生成し、さらに両方の派生クラスのメソッドアドレス格納テーブルを削除し、さらに両方のメソッドアドレス格納テーブルポインタを、新たに生成したメソッドアドレス格納テーブルの先頭アドレス値に更新し、さらに新たに生成されたメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス値を更新することにより、前記中間コードを最適化する請求項10から請求項12までのいずれか一項に記載のコンパイルプログラム。
- 前記メソッドアドレス格納テーブル最適化機能は、各クラスのメソッドアドレス格納テーブルを比較し、一方のメソッドアドレス格納テーブルに格納されているメソッドアドレス値が、他方のメソッドアドレス格納テーブルの先頭位置に包含されている場合に、包含されている側のメソッドアドレス格納テーブルを削除し、包含されているメソッドアドレス格納テーブルを指していたクラスのメソッドアドレス格納テーブルポインタを、包含している側のメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項10から請求項12までのいずれか一項に記載のコンパイルプログラム。
- 前記メソッドアドレス格納テーブル最適化機能は、最適化実施内容を表示させる指令がコンパイラに与えられた場合に、少なくとも最適化の対象となった前記メソッドアドレス格納テーブルを参照していたクラス、最適化前の前記メソッドアドレス格納テーブル、最適化後の前記メソッドアドレス格納テーブルを標準出力に出力する請求項10から請求項16までのいずれか一項に記載のコンパイルプログラム。
- 前記オブジェクト指向言語をC++言語、前記実行時確定メソッドを仮想関数、前記メソッドアドレス格納テーブルを仮想関数テーブル、前記メソッドアドレス格納テーブルポインタを仮想関数テーブルポインタとする請求項10から請求項17までのいずれか一項に記載のコンパイルプログラム。
- オブジェクト指向言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイル装置であって、
前記ソースプログラムから中間コードを生成する中間コード生成手段と、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出手段と、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライドしていない場合に、それぞれのクラスの前記メソッドアドレス格納テーブルを併合することによって、両方のクラスに共通に使用可能なメソッドと一方のクラスに使用可能なメソッドからなるメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成したメソッドアドレス格納テーブルの先頭アドレス値に更新することにより前記中間コードを最適化するメソッドアドレス格納テーブル最適化手段と、
最適化された前記中間コードをオブジェクトコードに変換するオブジェクトコード変換手段とを備えたコンパイル装置。 - 前記解析対象情報抽出手段は、少なくともファイル名、または関数名、またはクラス名を含む解析範囲限定情報がコンパイラに与えられた場合に、指定された解析範囲に限定して前記メソッドアドレス格納テーブル情報、クラス情報、関数参照情報を抽出する請求項19に記載のコンパイル装置。
- 前記解析対象情報抽出手段は、定義はされているものの参照はされていない実行時確定メソッドが存在する場合に、定義はされているものの参照はされていないすべての実行時確定メソッドを、クラス情報から削除し、かつすべてのメソッドアドレス格納テーブルより削除し、さらに削除後のメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス番号を更新する請求項19または請求項20に記載のコンパイル装置。
- 前記メソッドアドレス格納テーブル最適化手段は、基底クラスに対して、少なくとも1つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合に、前記基底クラスのメソッドアドレス格納テーブルを削除し、さらに前記基底クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項19から請求項21までのいずれか一項に記載のコンパイル装置。
- 前記メソッドアドレス格納テーブル最適化手段は、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義していない場合に、新規に実行時確定メソッドを定義していない派生クラスのメソッドアドレス格納テーブルを削除し、さらにその派生クラスのメソッドアドレス格納テーブルポインタを、前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない他方の派生クラスのメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項19から請求項21までのいずれか一項に記載のコンパイル装置。
- 前記メソッドアドレス格納テーブル最適化手段は、基底クラスに対して、少なくとも2つの派生クラスが前記基底クラスの実行時確定メソッドを1つもオーバーライドしていない場合で、かつ両方の派生クラスが新規に実行時確定メソッドを定義している場合で、かつ両方の派生クラスがさらに派生クラスを持たない場合に、派生クラスを持たない一方の派生クラスのメソッドアドレス格納テーブルに、他方の派生クラスで新規に定義した実行時確定メソッドのアドレスを追加したメソッドアドレス格納テーブルを新たに生成し、さらに両方の派生クラスのメソッドアドレス格納テーブルを削除し、さらに両方のメソッドアドレス格納テーブルポインタを、新たに生成したメソッドアドレス格納テーブルの先頭アドレス値に更新し、さらに新たに生成されたメソッドアドレス格納テーブルに対する実行時確定メソッドのインデックス値を更新することにより、前記中間コードを最適化する請求項19から請求項21までのいずれか一項に記載のコンパイル装置。
- 前記メソッドアドレス格納テーブル最適化手段は、各クラスのメソッドアドレス格納テーブルを比較し、一方のメソッドアドレス格納テーブルに格納されているメソッドアドレス値が、他方のメソッドアドレス格納テーブルの先頭位置に包含されている場合に、包含されている側のメソッドアドレス格納テーブルを削除し、包含されているメソッドアドレス格納テーブルを指していたクラスのメソッドアドレス格納テーブルポインタを、包含している側のメソッドアドレス格納テーブルの先頭アドレス値に更新することにより、前記中間コードを最適化する請求項19から請求項21までのいずれか一項に記載のコンパイル装置。
- 前記メソッドアドレス格納テーブル最適化手段は、最適化実施内容を表示させる指令がコンパイラに与えられた場合に、少なくとも最適化の対象となった前記メソッドアドレス格納テーブルを参照していたクラス、最適化前の前記メソッドアドレス格納テーブル、最適化後の前記メソッドアドレス格納テーブルを標準出力に出力する請求項19から請求項25までのいずれか一項に記載のコンパイル装置。
- 前記オブジェクト指向言語をC++言語、前記実行時確定メソッドを仮想関数、前記メソッドアドレス格納テーブルを仮想関数テーブル、前記メソッドアドレス格納テーブルポインタを仮想関数テーブルポインタとする請求項19から請求項26までのいずれか一項に記載のコンパイル装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004352558A JP4768984B2 (ja) | 2004-12-06 | 2004-12-06 | コンパイル方法、コンパイルプログラムおよびコンパイル装置 |
US11/289,678 US7624390B2 (en) | 2004-12-06 | 2005-11-30 | Optimizing compiling of object oriented source code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004352558A JP4768984B2 (ja) | 2004-12-06 | 2004-12-06 | コンパイル方法、コンパイルプログラムおよびコンパイル装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006163686A JP2006163686A (ja) | 2006-06-22 |
JP4768984B2 true JP4768984B2 (ja) | 2011-09-07 |
Family
ID=36575731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004352558A Active JP4768984B2 (ja) | 2004-12-06 | 2004-12-06 | コンパイル方法、コンパイルプログラムおよびコンパイル装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7624390B2 (ja) |
JP (1) | JP4768984B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0607068D0 (en) * | 2006-04-07 | 2006-05-17 | Symbian Software Ltd | Improvement relating to method of embedding software in computing devices |
JP2009528608A (ja) * | 2006-03-01 | 2009-08-06 | ノキア コーポレイション | ライブラリ中の特定の関数をアウトライン化することによるコードサイズ削減 |
US7926022B2 (en) * | 2006-04-07 | 2011-04-12 | Lawson Software, Inc. | Surrogate-based and extends-based context look-up |
JP2009169864A (ja) * | 2008-01-18 | 2009-07-30 | Panasonic Corp | コンパイル方法およびコンパイルプログラム |
JP5574394B2 (ja) * | 2008-02-20 | 2014-08-20 | 日本電気株式会社 | Osイメージ縮小プログラムおよびosイメージ縮小プログラムを記録した記録媒体 |
JP2010026851A (ja) * | 2008-07-22 | 2010-02-04 | Panasonic Corp | コンパイラによる最適化方法 |
JP4959781B2 (ja) * | 2009-12-22 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクト生成地点記録方法およびプログラム |
US20120102473A1 (en) * | 2010-10-23 | 2012-04-26 | International Business Machines Corporation | Abstract method removal for reduced memory footprint with optimizer tool |
US8707278B2 (en) * | 2010-11-09 | 2014-04-22 | Nec Laboratories America, Inc. | Embedding class hierarchy into object models for multiple class inheritance |
JP5976930B2 (ja) * | 2012-08-08 | 2016-08-24 | インテル コーポレイション | バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング |
US20220342655A1 (en) * | 2021-04-22 | 2022-10-27 | STMicroelectronics (Grand Ouest) SAS | Microcontroller, computer program product, and method for adding an additional function to a computer program |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5327562A (en) * | 1992-05-06 | 1994-07-05 | Microsoft Corporation | Method for implementing virtual function tables in a compiler for an object-oriented programming language |
JPH06266562A (ja) * | 1993-03-15 | 1994-09-22 | Nec Corp | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 |
JPH0934709A (ja) * | 1995-07-17 | 1997-02-07 | Hitachi Ltd | クラス情報表示方法 |
DE19535519C2 (de) | 1995-09-25 | 1999-03-04 | Ibm | Verfahren zur Reduzierung des Umfanges von Computerprogrammen |
JPH11212789A (ja) * | 1998-01-21 | 1999-08-06 | Matsushita Electric Ind Co Ltd | プログラム翻訳装置、プロセッサ及びプログラム翻訳装置に適用されるプログラムを記録した記録媒体 |
US6760905B1 (en) | 2000-09-21 | 2004-07-06 | Curl Corporation | Lazy compilation of template-generated classes in dynamic compilation execution environments |
JP2003280922A (ja) * | 2002-03-26 | 2003-10-03 | Hitachi Ltd | コードサイズ削減方法 |
JP2004126863A (ja) * | 2002-10-01 | 2004-04-22 | Nippon Telegr & Teleph Corp <Ntt> | オブジェクト管理装置とその方法、およびプログラム |
JP2005141380A (ja) | 2003-11-05 | 2005-06-02 | Matsushita Electric Ind Co Ltd | テンプレートコンパイル方法 |
US7171649B1 (en) * | 2004-01-12 | 2007-01-30 | Sun Microsystems, Inc. | Optimizing safe downcasting in an object-oriented programming language |
-
2004
- 2004-12-06 JP JP2004352558A patent/JP4768984B2/ja active Active
-
2005
- 2005-11-30 US US11/289,678 patent/US7624390B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2006163686A (ja) | 2006-06-22 |
US20060123198A1 (en) | 2006-06-08 |
US7624390B2 (en) | 2009-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139896B (zh) | 扩展虚拟机指令集体系架构 | |
JP4183399B2 (ja) | 複数言語のコンパイル方法及びシステム | |
CN108920133B (zh) | 跨语言编程方法、装置、电子设备及存储介质 | |
US6286134B1 (en) | Instruction selection in a multi-platform environment | |
US20180136914A1 (en) | Programming Language with Extensions using a Strict Meta-Model | |
US8997040B2 (en) | Variable closure | |
US5778212A (en) | Interprocedural analysis user interface | |
US9182980B2 (en) | Expansion and reduction of source code for code refactoring | |
US7624390B2 (en) | Optimizing compiling of object oriented source code | |
US7823139B2 (en) | Method and system for translating programming languages | |
US20090328012A1 (en) | Compiler in a managed application context | |
AU2892200A (en) | Automatic stub/adapter generator | |
JP4806060B2 (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
US20120110444A1 (en) | Help Document Animated Visualization | |
CN110149800A (zh) | 一种用于处理与源程序的源代码相关联的抽象语法树的装置 | |
US20090328016A1 (en) | Generalized expression trees | |
US7747991B2 (en) | Program converting method | |
US7458071B2 (en) | Compilation method, compiler apparatus and compiler | |
US20110010696A1 (en) | Duplicate virtual function table removal | |
US20090187897A1 (en) | Compiling method and compiling program | |
US20100042982A1 (en) | Optimization of imperative implementation of compositional content | |
JP2002116917A (ja) | オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ | |
US20200356384A1 (en) | Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics | |
EP1046985A2 (en) | File portability techniques | |
KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071129 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110111 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110223 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110617 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4768984 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140624 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |