JP2006163686A - コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体 - Google Patents
コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体 Download PDFInfo
- Publication number
- JP2006163686A JP2006163686A JP2004352558A JP2004352558A JP2006163686A JP 2006163686 A JP2006163686 A JP 2006163686A JP 2004352558 A JP2004352558 A JP 2004352558A JP 2004352558 A JP2004352558 A JP 2004352558A JP 2006163686 A JP2006163686 A JP 2006163686A
- Authority
- JP
- Japan
- Prior art keywords
- address storage
- storage table
- class
- 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.)
- Granted
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)
Abstract
【解決手段】中間コードからメソッドアドレス格納テーブル情報と、クラス情報と、関数参照情報とを抽出して解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライドしていない場合に、それぞれのクラスのメソッドアドレス格納テーブルを削除し、両方のクラスに共通に使用可能なメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成した両方のクラスに共通に使用可能なメソッドアドレス格納テーブルの先頭アドレス値に更新することで、異なるクラス間で冗長に生成されるメソッドアドレス格納テーブルを削除し、オブジェクトコードサイズを削減することができる。
【選択図】図1
Description
前記ソースプログラムから中間コードを生成する中間コード生成ステップと、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出ステップと、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを1つもオーバーライド(over ride:再定義)していない場合に、それぞれのクラスの前記メソッドアドレス格納テーブルを削除し、両方のクラスに共通に使用可能なメソッドアドレス格納テーブルを生成し、両方のクラスのメソッドアドレス格納テーブルポインタを、生成した前記両方のクラスに共通に使用可能なメソッドアドレス格納テーブルの先頭アドレス値に更新することにより前記中間コードを最適化するメソッドアドレス格納テーブル最適化ステップと、
最適化された前記中間コードをオブジェクトコードに変換するオブジェクトコード変換ステップとを含むものである。
図8は、プログラム記憶部D1に記憶されているヘッダファイルおよびソースプログラムの一例を示す。以下では、このヘッダファイルおよびソースプログラムを入力した場合のコンパイラの動作を説明する。
具体例1の前提条件のうち、クラスの継承関係を使用しないという前提の場合を考える。この場合、クラスの継承関係を使用するか否かの判定処理(S27)までは、具体例1と同様の処理が行われ、図9の仮想関数テーブル情報が抽出されている。次に、メソッドアドレス包含解析サブステップ(S30)が実施されることになる。
具体例1の前提条件のうち、「file1.cpp」の範囲で解析する指令を取りやめ、ソースプログラム全体に対して解析を行う場合を考える。
D2 生成コード記憶部
Claims (28)
- オブジェクト指向言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイル方法であって、
前記ソースプログラムから中間コードを生成する中間コード生成ステップと、
前記中間コードから少なくともメソッドアドレス格納テーブル、前記メソッドアドレス格納テーブルを指しているメソッドアドレス格納テーブルポインタ、前記メソッドアドレス格納テーブルに対応するメソッドインデックス番号を含むメソッドアドレス格納テーブル情報と、少なくとも基底クラス名、派生クラス名、新規実行時確定メソッド名、オーバーライドメソッド名を含むクラス情報と、各メソッドがプログラム内で参照されているかどうかを示す関数参照情報とを抽出する解析対象情報抽出ステップと、
抽出した解析対象情報を解析し、あるクラスに対して、他のクラスが実行時確定メソッドを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までのいずれかに記載のコンパイル装置。
- 請求項1から請求項9までのいずれかに記載のコンパイル方法における各ステップをプログラムとして記録したコンピュータ読み取り可能なコンパイル用の記録媒体。
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 true JP2006163686A (ja) | 2006-06-22 |
JP4768984B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011133919A (ja) * | 2009-12-22 | 2011-07-07 | Internatl Business Mach Corp <Ibm> | オブジェクト生成地点記録方法およびプログラム |
Families Citing this family (10)
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 |
CN101395580B (zh) * | 2006-03-01 | 2012-06-20 | 诺基亚公司 | 通过在库中描绘特定函数减小代码大小 |
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 | コンパイラによる最適化方法 |
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 |
CN103443763B (zh) * | 2012-08-08 | 2016-10-05 | 英特尔公司 | 包含对重写虚拟函数的调用的支持的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 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06103085A (ja) * | 1992-05-06 | 1994-04-15 | Microsoft Corp | オブジェクト指向型プログラム言語のためのコンパイラに仮想ファンクションテーブルをインプリメントする方法 |
JPH06266562A (ja) * | 1993-03-15 | 1994-09-22 | Nec Corp | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 |
JPH0934709A (ja) * | 1995-07-17 | 1997-02-07 | Hitachi Ltd | クラス情報表示方法 |
JPH11212789A (ja) * | 1998-01-21 | 1999-08-06 | Matsushita Electric Ind Co Ltd | プログラム翻訳装置、プロセッサ及びプログラム翻訳装置に適用されるプログラムを記録した記録媒体 |
JP2003280922A (ja) * | 2002-03-26 | 2003-10-03 | Hitachi Ltd | コードサイズ削減方法 |
JP2004126863A (ja) * | 2002-10-01 | 2004-04-22 | Nippon Telegr & Teleph Corp <Ntt> | オブジェクト管理装置とその方法、およびプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19535519C2 (de) * | 1995-09-25 | 1999-03-04 | Ibm | Verfahren zur Reduzierung des Umfanges von Computerprogrammen |
US6760905B1 (en) * | 2000-09-21 | 2004-07-06 | Curl Corporation | Lazy compilation of template-generated classes in dynamic compilation execution environments |
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
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06103085A (ja) * | 1992-05-06 | 1994-04-15 | Microsoft Corp | オブジェクト指向型プログラム言語のためのコンパイラに仮想ファンクションテーブルをインプリメントする方法 |
JPH06266562A (ja) * | 1993-03-15 | 1994-09-22 | Nec Corp | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 |
JPH0934709A (ja) * | 1995-07-17 | 1997-02-07 | Hitachi Ltd | クラス情報表示方法 |
JPH11212789A (ja) * | 1998-01-21 | 1999-08-06 | Matsushita Electric Ind Co Ltd | プログラム翻訳装置、プロセッサ及びプログラム翻訳装置に適用されるプログラムを記録した記録媒体 |
JP2003280922A (ja) * | 2002-03-26 | 2003-10-03 | Hitachi Ltd | コードサイズ削減方法 |
JP2004126863A (ja) * | 2002-10-01 | 2004-04-22 | Nippon Telegr & Teleph Corp <Ntt> | オブジェクト管理装置とその方法、およびプログラム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011133919A (ja) * | 2009-12-22 | 2011-07-07 | Internatl Business Mach Corp <Ibm> | オブジェクト生成地点記録方法およびプログラム |
US8495647B2 (en) | 2009-12-22 | 2013-07-23 | International Business Machines Corporation | Method and program for recording object allocation site |
Also Published As
Publication number | Publication date |
---|---|
JP4768984B2 (ja) | 2011-09-07 |
US7624390B2 (en) | 2009-11-24 |
US20060123198A1 (en) | 2006-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139896B (zh) | 扩展虚拟机指令集体系架构 | |
JP4183399B2 (ja) | 複数言語のコンパイル方法及びシステム | |
US8997040B2 (en) | Variable closure | |
US5778212A (en) | Interprocedural analysis user interface | |
CN108920133B (zh) | 跨语言编程方法、装置、电子设备及存储介质 | |
US8997070B2 (en) | Extension mechanism for scripting language compiler | |
US8479178B2 (en) | Compiler in a managed application context | |
US7624390B2 (en) | Optimizing compiling of object oriented source code | |
US5812855A (en) | System and method for constaint propagation cloning for unknown edges in IPA | |
US7823139B2 (en) | Method and system for translating programming languages | |
JP4806060B2 (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
AU2892100A (en) | Instruction selection in a multi-platform environment | |
AU2892200A (en) | Automatic stub/adapter generator | |
US20090328016A1 (en) | Generalized expression trees | |
US7747991B2 (en) | Program converting method | |
US20100218174A1 (en) | Dynamic compiling and loading at runtime | |
US7458071B2 (en) | Compilation method, compiler apparatus and compiler | |
JP2003196106A (ja) | プログラム変換方法、コンピュータ装置及びプログラム | |
US20090187897A1 (en) | Compiling method and compiling program | |
US20110010696A1 (en) | Duplicate virtual function table removal | |
US20100042982A1 (en) | Optimization of imperative implementation of compositional content | |
JP2002116917A (ja) | オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ | |
CN109032572B (zh) | 一种基于字节码的java程序方法内联的方法 | |
US20200356384A1 (en) | Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics | |
JP6651974B2 (ja) | 情報処理装置、コンパイル方法及びコンパイラプログラム |
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 |