JP2003196106A - プログラム変換方法、コンピュータ装置及びプログラム - Google Patents

プログラム変換方法、コンピュータ装置及びプログラム

Info

Publication number
JP2003196106A
JP2003196106A JP2001387263A JP2001387263A JP2003196106A JP 2003196106 A JP2003196106 A JP 2003196106A JP 2001387263 A JP2001387263 A JP 2001387263A JP 2001387263 A JP2001387263 A JP 2001387263A JP 2003196106 A JP2003196106 A JP 2003196106A
Authority
JP
Japan
Prior art keywords
method call
program
code
execution program
call
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
Application number
JP2001387263A
Other languages
English (en)
Other versions
JP3813087B2 (ja
Inventor
Takeshi Ogasawara
武史 小笠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2001387263A priority Critical patent/JP3813087B2/ja
Priority to US10/325,765 priority patent/US7373641B2/en
Publication of JP2003196106A publication Critical patent/JP2003196106A/ja
Application granted granted Critical
Publication of JP3813087B2 publication Critical patent/JP3813087B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Landscapes

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

Abstract

(57)【要約】 【課題】 コンパイルにおけるプログラムの最適化にお
いて、DCE(デッドコードエリミネーション)による
コード消去をより効果的に行うことを可能とする。 【解決手段】 実行プログラム中のメソッド呼び出しに
おけるオブジェクト参照の使用の状態に基づいて、処理
対象となるメソッド呼び出しを決定し、処理対象として
決定されたメソッド呼び出しをインライン展開し、イン
ライン展開されたメソッド呼び出しにおけるオブジェク
トのインスタンス変数をスカラー化し、インライン展開
及びスカラー化が施された実行プログラムに対してデッ
ドコードエリミネーションを実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータプロ
グラムの最適化方法に関し、特に計算結果が使用されな
い計算(不使用計算)を削除して最適化を行う方法に関
する。
【0002】
【従来の技術】今日、複雑なソフトウェアは、機能毎に
コンポーネント化されて設計されることが一般的であ
る。この場合、各コンポーネントは、様々なプログラム
で共通に使える機能を提供するよう設計される。そうし
たソフトウェアをJavaに代表されるようなオブジェ
クト指向言語で書く場合、各機能はクラス、オブジェク
ト、メソッドに分類され、実現される。そして、ある機
能を利用したいとき、プログラムはオブジェクトを生成
してメソッドを呼ぶ。
【0003】こうしたオブジェクト指向的なソフトウェ
アの設計では、計算結果の全てを必ずしも必要としない
場合がある。例えば、2つの情報を含むオブジェクトが
値の授受に使われるとき、プログラムの場所によっては
片方の情報しか使わない場合などである。その場合、使
わない情報のための計算は、無駄な処理であり、そのよ
うな無駄な処理の存在がソフトウェアの実行性能に大き
な影響を与えてしまう場合もある。
【0004】コンパイラによるプログラムの最適化技術
としてデッドコードエリミネーション(dead code elim
ination:DCE)という手法(dead store eliminatio
nとも言う)が知られている。これは、コンパイルの対
象内におけるメソッドなどを解析することにより、計算
結果が使われないと判断されるコードを消去する最適化
技術である。こうしたコードには、コントロールフロー
上の不到達コード(unreachable code)、解決済みの条
件分岐(resolved conditionals)、使われない値を定
義するコード(dead store)がある。具体的な手法とし
ては、CFG(Context Free Grammar)やSSA形式
(Static Single Assignment Form)上で、定数伝搬(c
onstant propagation)やコピー伝搬(copy propagatio
n)などの前向きデータフロー(forward dataflow)最
適化と組み合わせて、定義値の使用者(reaching use)
を解析する後ろ向きデータフロー(backward dataflo
w)最適化を行う。
【0005】
【発明が解決しようとする課題】しかしながら、上述し
たDCEによるプログラムの最適化技術は、数値計算の
ように複雑な計算式の無駄を削減する点では効果的だ
が、Java等のコンポーネント化されたオブジェクト
指向言語では機能しにくいという欠点があった。その大
きな理由は次の2つである。1つは、DCEの削除対象
がメソッド内のコードに限られることである。通常、J
avaのようなオブジェクト指向言語では、1つの情報
を作るために複数あるいは多段のメソッド呼び出しが行
われるのが普通である。そのような多段のメソッド呼び
出しが行われている場合にはDCEによる削除対象とな
らない。もう1つの理由は、ヒープに書かれた値はグロ
ーバルに参照可能であり、そうしたグローバルな値につ
いてDCEはreaching use解析できないことである。通
常、Javaのオブジェクトはヒープ上に作られる。そ
のため、DCEによっては使用者(reaching use)を解
析できず、コードを削除することができない。
【0006】図7は、オブジェクト指向言語によるプロ
グラムのメソッド呼び出しの一例を示す図である。図7
に示すプログラムの部分は、オブジェクト参照vが定義
され(v's def)、その使用(use)がオブジェクトvを
レシーバとするメソッドmtd1の呼び出しである(v's us
e)場合を表す。この例では、メソッドmtd1はオブジェ
クトvのインスタンス変数i1に値1を代入してメソッド
mtd2を呼び、メソッドmtd2はオブジェクトvのインスタ
ンス変数i2に値2を代入する。この場合、オブジェクト
vのインスタンス変数に値を代入した結果が、他で使用
されない場合であっても、当該オブジェクトvがメソッ
ドmtd1呼び出しに使われているので、DCEでは削除さ
れない。
【0007】図7に示したオブジェクトvのインスタン
ス変数i1、i2への値の代入計算の結果は、共に使用され
ない。すなわちdead storeであり、この代入計算は無駄
な計算である。しかしながら、実際にオブジェクトを使
用しない場合であっても、メソッド呼び出しのために見
かけ上は使用されるように見え、さらにオブジェクトへ
の書き込みがグローバル扱いされるため、DCEによる
最適化単独では、上記のような無駄な計算を削除できな
い。
【0008】そこで本発明は、メソッド呼び出しを無視
すれば使用者(reaching use)がないようなオブジェク
ト参照の定義を対象とし、そのオブジェクトを操作する
計算を削除する最適化方法を実現することを目的とす
る。
【0009】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、次のように構成されたプログラム変換方
法として実現される。すなわち、このプログラム変換方
法は、オブジェクト指向プログラミング言語で記述され
た実行プログラムのソースコードを読み込み、機械語コ
ードに変換するプログラム変換方法であって、メモリか
ら処理対象である実行プログラムを読み出し、この実行
プログラム中のメソッド呼び出しに関して、このメソッ
ド呼び出し中のオブジェクト参照の使用が、オブジェク
トの要素が活用されない引数であるかどうかを調べるス
テップと、この実行プログラム中の所定のメソッド呼び
出しに関して、このメソッド呼び出しが当該メソッド呼
び出し中のオブジェクト参照をグローバル化せず、かつ
当該メソッド呼び出し中の全てのオブジェクト参照の使
用が、オブジェクトの要素が活用されない引数である場
合に、デッドコードエリミネーションにより、このメソ
ッド呼び出しにおける所定のコードを消去するステップ
と、コードを消去された実行プログラムをメモリに格納
するステップとを含むことを特徴とする。
【0010】さらに好ましくは、このプログラム変換方
法は、デッドコードエリミネーションによりメソッド呼
び出しのコードを消去するステップに先立って、当該メ
ソッド呼び出しをインライン展開するステップ、及び当
該メソッド呼び出しにおけるオブジェクトのインスタン
ス変数をスカラー化するステップをさらに含む。
【0011】また、本発明による他のプログラム変換方
法は、メモリから処理対象である実行プログラムを読み
出し、この実行プログラム中の所定のメソッド呼び出し
をインライン展開する第1のステップと、インライン展
開されたメソッド呼び出しにおけるオブジェクトのイン
スタンス変数をスカラー化する第2のステップと、第
1、第2のステップが施された実行プログラムに対して
デッドコードエリミネーションを実行する第3のステッ
プと、デッドコードエリミネーションを施された実行プ
ログラムをメモリに格納する第4のステップとを含むこ
とを特徴とする。
【0012】さらに好ましくは、このプログラム変換方
法は、実行プログラム中のメソッド呼び出しに関して、
当該メソッド呼び出し中の全てのオブジェクト参照の使
用が、オブジェクトの要素が活用されない引数であり、
かつ実行プログラム中の所定のメソッド呼び出しが当該
メソッド呼び出し中のオブジェクト参照をグローバル化
しない場合に、当該メソッド呼び出しを前記インライン
展開の対象として決定するステップをさらに含む。
【0013】さらにまた、上記の目的を達成する本発明
は、次のように構成されたコンピュータ装置として実現
される。すなわち、オブジェクト指向プログラミング言
語で記述された実行プログラムのソースコードを読み込
み、機械語コードに変換するコンピュータ装置におい
て、メソッド呼び出しにおけるオブジェクト参照の使用
の状態に基づいて、処理対象となるメソッド呼び出しを
決定する処理対象抽出部と、この処理対象抽出部により
処理対象として決定されたメソッド呼び出しをインライ
ン展開するインライン展開処理部と、このインライン展
開処理部にてインライン展開されたメソッド呼び出しに
おけるオブジェクトのインスタンス変数をスカラー化す
るスカラー化処理部と、インライン展開処理部及びスカ
ラー化処理部による処理が施された実行プログラムに対
してデッドコードエリミネーションを実行するデッドコ
ードエリミネーション実行部とを備えることを特徴とす
る。
【0014】ここで、詳しくは、処理対象抽出部は、実
行プログラム中の所定のメソッド呼び出しに関して、こ
のメソッド呼び出しが当該メソッド呼び出し中のオブジ
ェクト参照をグローバル化せず、かつ当該メソッド呼び
出し中の全てのオブジェクト参照の使用が、オブジェク
トの要素が活用されない引数である場合に、このメソッ
ド呼び出しを処理対象として決定する。実行プログラム
中の所定のメソッドが上記の条件に合致するかについて
は、コード解析部を設けてプログラム変換時に解析を行
うことにより調べても良いし、予め実行プログラムの各
メソッドについて解析を行って結果をデータベースに格
納しておき、プログラム変換時にこのデータベースから
必要な情報を読み出すようにしても良い。さらに、予め
上記の条件に合致するようなメソッドを人為的に定義し
てデータベースに格納しておき、プログラム変換時にこ
のデータベースを参照することもできる。
【0015】上記のコンピュータ装置は、機械語コード
に変換された実行プログラムを実行するプログラム実行
部をさらに備える構成とすることもできる。さらにま
た、本発明は、コンピュータを制御して上述したプログ
ラム変換方法や各種の機能を実現するプログラムとして
実現することができる。このプログラムは、磁気ディス
クや光ディスク、半導体メモリ、その他の記録媒体に格
納して配布したり、ネットワークを介して配信したりす
ることにより提供することができる。
【0016】
【発明の実施の形態】以下、添付図面に示す実施の形態
に基づいて、この発明を詳細に説明する。まず、本発明
の概要を説明する。オブジェクト参照の使用(use)
が、オブジェクトの要素が活用されないメソッド呼び出
しの引数であって、かつオブジェクト参照がメソッド呼
び出しでグローバル化(エスケープ)しない場合、その
使用(use)をファントムユース(phantom use)と呼ぶ
ことにする。
【0017】本発明では、あるコードが定義するオブジ
ェクトの使用がファントムユースのみであると解析でき
たとき、そのファントムユースのメソッド呼び出しをイ
ンライン展開する。次に、そのオブジェクトの各インス
タンス変数をスカラー化する。そしてDCE(dead cod
e elimination)を行う。これにより、グローバルに他
へ影響を及ぼす計算、あるいは計算結果が使用される計
算を残し、計算結果が使用されない計算だけが削除され
る。
【0018】図1は、本実施の形態による最適化方法を
実現するコンピュータシステムのシステム構成を示す図
である。図1を参照すると、本実施の形態におけるコン
ピュータシステムは、ソースプログラム(入力コード)
をコンパイルするコンパイラ100と、コンパイラ10
0にてコンパイルされたオブジェクトプログラム(出力
コード)を実行して種々の処理を行うプログラム実行部
200と、メモリ300とを備える。コンパイラ100
及びプログラム実行部200は、パーソナルコンピュー
タやワークステーションなどのコンピュータシステムに
おけるプログラム制御されたCPUにて実現される。メ
モリ300は、コンピュータ装置のメインメモリであ
り、RAM等で実現される。メモリ300には、本実施
の形態で用いられるファントムユースデータベース31
0が格納される。また、図示しないが、CPUを制御し
てコンパイラ100として動作させるためのプログラム
やコンパイルの対象となるプログラムが格納される。な
お、メモリ300に格納されるファントムユースデータ
ベース310及びプログラムは、必要に応じて、適宜磁
気ディスクその他の記録媒体に保存されることは言うま
でもない。
【0019】図1において、コンパイラ100は、バイ
トコード(byte code)で記述された入力コードを入力
して処理し、機械語で記述された出力コードを生成して
出力する。この入力コードの入力は、コード生成装置4
00にて生成された入力コードを直接入力したり、コー
ド生成装置400にて生成された入力コードを記憶した
記憶装置500から入力したり、ネットワーク600上
に存在するコード生成装置400や記憶装置500から
ネットワーク600を介して入力したりすることにより
行われる。コンパイラ100により生成された出力コー
ドは、プログラム実行部200により実行される。な
お、本実施の形態において、コンパイラ100は、Ja
vaにおけるJIT(Just In Time)コンパイラのよう
な、実行プログラムを実行する際に動的に実行プログラ
ムのコンパイル処理を行うコンパイラであっても良い
し、ソースプログラムを予めコンパイルして生成された
オブジェクトプログラムを実行プログラムとする使用形
態におけるコンパイラであっても良い。
【0020】図2は、本実施の形態におけるコンパイラ
100の構成を説明する図である。図2を参照すると、
コンパイラ100は、本実施の形態による最適化の対象
となるメソッド呼び出しを抽出する処理対象抽出部11
0と、処理対象抽出部110にて利用されるファントム
ユースに関する情報を解析するファントムユース解析を
行うファントムユース解析部120と、メソッド呼び出
しのインライン展開を行うインライン展開処理部130
と、オブジェクト構造体のスカラー化を行うスカラー化
処理部140と、デッドコードエリミネーション(DC
E)を行うDCE実行部150とを備える。図2に示し
たコンパイラ100の各構成要素は、コンピュータプロ
グラムにより制御されたCPUにて実現される仮想的な
ソフトウェアブロックである。CPUを制御する当該コ
ンピュータプログラムは、CD−ROMやフロッピー
(登録商標)ディスクなどの記録媒体に格納して配布し
たり、ネットワークを介して伝送したりすることにより
提供される。なお、図2に示したコンパイラ100の構
成要素は、本実施の形態における特徴的な機能に関する
ものである。図示しないが、実際にはコンパイラ100
は、入力コードの字句解析や構文解析、機械語のコード
生成、各種の最適化処理といったコンパイル処理におけ
る一般的な機能を有することは言うまでもない。
【0021】上記構成において、処理対象抽出部110
は、メモリ300からコンパイル対象であるプログラム
を読み込み、当該プログラム中から、本実施の形態にお
いて最終的にDCEによる最適化を行う対象となるメソ
ッド呼び出しを抽出する。具体的には、データフロー解
析によりオブジェクトの使用(use)を特定すると共
に、エスケープ解析(Escape Analysis)によりメソッ
ド呼び出しがオブジェクトをグローバル化するかどうか
を調べ、オブジェクトの使用(use)がファントムユー
スのみであれば、当該メソッド呼び出しを最適化の対象
とする。そして、最適化の対象とされたメソッド呼び出
しについての情報をインライン展開処理部130に渡
す。なお、処理対象抽出部110に読み込まれるプログ
ラムは、オブジェクトコード(実行可能コード)に変換
され、必要な最適化処理が施されたものである。
【0022】本実施の形態では、オブジェクト構造体定
義に対して当該定義を参照してメソッド呼び出しを行う
とき、メソッド呼び出しが当該オブジェクトをグローバ
ル化(エスケープ)させず、かつオブジェクト構造体の
要素の定義だけを行う場合、すなわちそのメソッド呼び
出しにおけるオブジェクト参照をファントムユースする
だけの場合に注目する。グローバル化するメソッドかど
うかは、エスケープ解析を活用して識別することができ
る。エスケープ解析において、グローバル化せず、プロ
グラムのある地点で定義されたオブジェクト構造体の各
要素に関して、当該要素の使用(use)がファントムユ
ースのみであると解析できたとき、そのファントムユー
スのメソッド呼び出しが、本実施の形態による最適化の
対象である。
【0023】ここで、ファントムユースについて、さら
に詳細に説明する。まず、所定のメソッドmの呼び出し
(コールサイト)csに引数p(要素ベクタ)を渡すと
き、メソッドmの引数pに関する使用セットus(m,
p)を次の数1式に示すように定義する。
【数1】
【0024】また、メソッドMのコールサイトcsの引
数pに関する到達使用セットrus(M,cs,p)を
次の数2式に示すように定義する。
【数2】
【0025】以上のように定義された使用セットus
(m,p)及び到達使用セットrus(M,cs,p)
に基づき、ファントムユースは次のように定義される。
所定のメソッドMが含むコールサイト集合をCS(M)
とし、そのうちの所定の要素csに関して、当該要素c
sに渡される引数pについてds(t(cs),p)の
i d=1かつrus(M,cs,p)のpi u=1である
ならば、引数pのi番目の要素をcsのファントムユー
スと呼ぶ。ここで、t(cs)は、コールサイトcsか
ら呼ばれるメソッドあるいはその全ての候補メソッドで
ある。
【0026】上記の定義に基づいて、ファントム関数ph
antom(pi,f)は、プログラム地点fにおいて引数pのi
番目の要素がファントムユースであるとき値1を返し、
それ以外では値0を返す。処理対象抽出部110は、コ
ンパイル対象であるメソッドMの引数pで示される各オ
ブジェクト構造体(以下、オブジェクト構造体pとも記
述する)の定義に対し、到達する使用(use)の各地点
fに関して、ファントム関数phantom(pi,f)が返す値を
調べる。したがって、メソッドMにおいて、オブジェク
ト構造体pの定義がグローバル化せず、その使用(us
e)が全てファントムユースであるとき、当該メソッド
Mは、後のインライン展開、スカラー化及びDCEの処
理対象となる。
【0027】ファントムユース解析部120は、上述し
たプログラム地点fにおける引数pのi番目の要素がフ
ァントムユースか否かを調べるコード解析手段であり、
ファントム関数phantom(pi,f)の値1または値0を返す
処理を実行する。この解析処理により得られた1または
0の値が、処理対象抽出部110による上記の処理で使
われる。なお、ファントムユース解析部120による解
析処理は、コンパイル時に処理対象抽出部110による
上記の動作に伴って実行しても良いが、コンパイルとは
別処理としてコード解析のみを単独で実行することも可
能である。この場合、得られた解析結果は、メモリ30
0のファントムユースデータベース310に格納され、
コンパイル時に処理対象抽出部110によって読み出さ
れ、使用される。
【0028】また、ファントム関数の値をコード解析に
よって得るのではなく、プログラムの作成に際して予め
定義して与えることも可能である。この場合、プログラ
マ等により定義されたファントム関数の値がメモリ30
0のファントムユースデータベース310に格納され、
使用される。したがって、このような実施態様ではファ
ントムユース解析部120は必須の構成要件ではなくな
る。さらにこの場合、メソッド呼び出しの削除の効果に
関して静的な解析や実行履歴の保存などによりプログラ
ム実行前に分かる情報や、プログラム実行中に得られる
プロファイル情報により、削除効果の高いメソッドを選
んでインライン展開の対象とし、最適化を行うこととす
れば、コンパイル資源を節約することができる。
【0029】インライン展開処理部130は、処理対象
抽出部110にて最適化の対象とされたメソッド、すな
わち、オブジェクト構造体pの定義がグローバル化せ
ず、その使用(use)が全てファントムユースであるよ
うなメソッドをメモリ300から入力し、インライン展
開する。インライン展開されたコードは、スカラー化処
理部140に渡される。
【0030】スカラー化処理部140は、インライン展
開処理部130にてインライン展開されたメソッドにお
けるオブジェクト定義をスカラー化する。オブジェクト
定義をスカラー化されたコードは、DCE実行部150
に渡される。
【0031】DCE実行部150は、インライン展開及
びスカラー化がなされたメソッドをDCEにより消去す
る。DCEによる最適化が行われたコードは、コンパイ
ラ100によるコンパイルの結果であるオブジェクトプ
ログラムとしてメモリ300に格納される。
【0032】図3は、上記のように構成された本実施の
形態のコンパイラ100による最適化処理の流れを説明
するフローチャートである。また、図4は、オブジェク
ト指向言語によるプログラムの所定のメソッド呼び出し
に対して本実施の形態による最適化処理を実行した様子
を示す図である。図4に示すプログラムの部分におい
て、オブジェクト参照vが定義され(v'sdef)、その使
用(use)がオブジェクトvをレシーバとするメソッドm
td1の呼び出しである(v's use)。メソッドmtd1はオブ
ジェクトvのインスタンス変数i1に値1を代入してメソ
ッドmtd2を呼び、メソッドmtd2はオブジェクトvのイン
スタンス変数i2に値2を代入する。したがって、このオ
ブジェクトvのインスタンス変数に値を代入した結果
が、他で使用されない場合であっても、当該オブジェク
トvがメソッドmtd1呼び出しに使われているので、従来
の単純なDCEでは削除されない。なお、以下の説明で
は、オブジェクトvは図4に示した部分以外では使用さ
れていないものとする。
【0033】図3を参照すると、本実施の形態では、ま
ず処理対象抽出部110が図4に示したメソッドMの命
令列を入力する(ステップ301)。そして、入力され
た命令列中で、未処理のオブジェクトの定義点を探す
(ステップ302)。未処理のオブジェクトの定義点が
存在するならば、次に当該命令列中で、当該定義点が到
達する使用点の集合を探す(ステップ303、30
4)。そのような到達使用点の集合が存在しなければ、
当該定義点については処理済みと判断してステップ30
2へ戻り、未処理の他のオブジェクトの定義点を探す
(ステップ305)。
【0034】一方、当該定義点が到達する使用点の集合
が存在するならば、次に処理対象抽出部110は、ファ
ントムユース解析部120を用いて、当該集合中で、使
用点と当該使用点が参照するオブジェクト要素の組のそ
れぞれに関して、ファントム関数が値1を返すかどうか
を調べる(ステップ305、306)。そして、少なく
とも1つの使用点とオブジェクト要素の組について、条
件「そのオブジェクト要素の全ての使用点でファントム
関数が値1を返す」が満たされるならば、上記の条件を
満たす使用点とオブジェクト要素の組を、インライン展
開の対象であるメソッド呼び出し点としてメモリ300
の所定の領域に登録する(ステップ307、308)。
そして、ステップ302に戻り、未処理の他のオブジェ
クトの定義点を探す。また、上記の条件を満足する使用
点とオブジェクト要素の組が1つも存在しない場合は、
当該定義点については処理済みと判断してステップ30
2へ戻り、未処理の他のオブジェクトの定義点を探す
(ステップ307)。
【0035】ステップ302において、全てのオブジェ
クトの定義点についてステップ303移行の処理を実行
したと判断されたならば、処理対象抽出部110からイ
ンライン展開処理部130へ処理が移行する。インライ
ン展開処理部130は、ステップ308においてメモリ
300に格納された登録内容に基づき、登録されている
オブジェクト要素のオブジェクトを使って呼び出される
メソッドをインライン展開する(ステップ309)。こ
のインライン展開により、図4に示すように、多段のメ
ソッド呼び出しが1つのメソッド内のコードに書き換え
られる。
【0036】次に、スカラー化処理部140が、ステッ
プ308においてメモリ300に格納された登録内容に
基づき、登録されたオブジェクト要素のオブジェクト定
義をスカラー化する(ステップ310)。このスカラー
化により、図4に示すように、オブジェクト定義がロー
カル化される。
【0037】最後に、DCE実行部150が、処理対象
であったメソッドMを含むプログラムに対してDCEに
よるコード消去を行う(ステップ311)。図4に示す
ように、単純なDCEでは消去できなかったオブジェク
トvに関するコードが、ステップ310までの処理によ
りインライン展開されスカラー化されたことによって消
去される。
【0038】次に、具体的なオブジェクトに対する最適
化の例を示す。オブジェクト参照の定義で典型的なもの
に、newによる、オブジェクトの生成がある。図5は、
このnewによるクラスSampleClassのインスタンス生成に
対して本実施の形態による最適化を実行した様子を示す
図である。図5に示す例は、クラスSampleClassのイン
スタンス生成によりオブジェクト参照vが定義され、そ
の使用(use)がオブジェクトvをレシーバとするメソ
ッドmtd1の呼び出しである場合を表す。ここで、メソッ
ドmtd1はオブジェクトvのインスタンス変数i1に値1を
代入してメソッドmtd2を呼び、メソッドmtd2はオブジェ
クトvのインスタンス変数i2に値2を代入する。オブジ
ェクトvがメソッドmtd1呼び出しに使われているので、
従来の単純なDCEでは何も削除しない。
【0039】本実施の形態では、処理対象抽出部110
において、データフロー解析によりinvoke v.mtd1(I)V
コードだけがオブジェクトvの使用(use)と分かる。
また、エスケープ解析によりメソッドmtd1はオブジェク
トvをグローバル化しないと分かる。結果として、オブ
ジェクトvの使用(use)はファントムユースのみであ
ることが分かる。そこで、処理対象抽出部110によ
り、これらのメソッド呼び出しが最適化の対象とされ
る。そして、図5に示すように、インライン展開処理部
130によりメソッドmtd1及びメソッドmtd2がインライ
ン展開され、スカラー化処理部140によりスカラー化
が行われる。各スカラー編集への代入はデッドストアで
あるので、DCE実行部150により削除される。以上
のようにして、無駄なコードを削除できた。
【0040】図6は、図5と同じく、newによるクラスS
ampleClassのインスタンス生成に対して本実施の形態に
よる最適化を実行した様子を示す図であるが、ここでは
メソッドmtd2が副作用を持つ例を示す。この場合も、オ
ブジェクトvがメソッドmtd1呼び出しに使われているの
で、従来の単純なDCEでは何も削除しない。本実施の
形態では、メソッドmtd2において、オブジェクトvのイ
ンスタンス変数i2に値2を代入すると共に、グローバル
変数であるclass_vを1つカウントアップする。
【0041】処理対象抽出部110において、データフ
ロー解析によりinvoke v.mtd1(I)Vコードだけがオブジ
ェクトvの使用(use)と分かり、エスケープ解析によ
りメソッドmtd1はオブジェクトvをグローバル化しない
と分かり、結局オブジェクトvの使用(use)はファン
トムユースのみであると分かる。したがって、処理対象
抽出部110によりメソッドmtd1及びメソッドmtd2が最
適化の対象とされ、インライン展開処理部130により
メソッドmtd1及びメソッドmtd2をインライン展開し、ス
カラー化処理部140によりスカラー化を行う。そし
て、デッドストアであるスカラー編集への代入部分が、
DCE実行部150により削除される。
【0042】一方、class_vを1つカウントアップする
コードは、newで生成されたオブジェクトの変数ではな
く、外部から観測できるコードであるため、デッドスト
アとならず、消去対象とはならない。すなわち、本実施
の形態によれば、インライン展開されたコード中に、st
atic変数あるいは他オブジェクトへの代入などグローバ
ル値に関する計算や、使用者(reaching use)がある計
算、すなわちデッドストアとならない計算が存在する場
合、当該計算は消去されずに残り、使用されない結果に
関する無駄な計算だけが削除されることとなる。
【0043】
【発明の効果】以上説明したように、本発明によれば、
メソッド呼び出しを無視すれば使用者(reaching use)
がないようなオブジェクト参照の定義を対象とし、その
オブジェクトを操作する計算を削除する最適化方法を実
現することができる。
【図面の簡単な説明】
【図1】 本実施の形態による最適化方法を実現するコ
ンピュータシステムのシステム構成を示す図である。
【図2】 本実施の形態におけるコンパイラの構成を説
明する図である。
【図3】 本実施の形態のコンパイラによる最適化処理
の流れを説明するフローチャートである。
【図4】 オブジェクト指向言語によるプログラムの所
定のメソッド呼び出しに対して本実施の形態による最適
化処理を実行した様子を示す図である。
【図5】 newによるクラスSampleClassのインスタンス
生成に対して本実施の形態による最適化を実行した様子
を示す図である。
【図6】 newによる他のクラスSampleClassのインスタ
ンス生成に対して本実施の形態による最適化を実行した
様子を示す図であり、メソッドmtd2が副作用を持つ例を
示す。
【図7】 オブジェクト指向言語によるプログラムのメ
ソッド呼び出しの一例を示す図である。
【符号の説明】
100…コンパイラ、110…処理対象抽出部、120
…ファントムユース解析部、130…インライン展開処
理部、140…スカラー化処理部、150…DCE(デ
ッドコードエリミネーション)実行部、200…プログ
ラム実行部、300…メモリ、310…ファントムユー
スデータベース、400…コード生成装置、500…記
憶装置、600…ネットワーク
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小笠原 武史 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B081 AA09 CC21 CC41

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクト指向プログラミング言語で
    記述された実行プログラムのソースコードを読み込み、
    機械語コードに変換するプログラム変換方法において、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中のメソッド呼び出しに関して、当
    該メソッド呼び出し中のオブジェクト参照の使用が、オ
    ブジェクトの要素が活用されない引数であるかどうかを
    調べるステップと、 前記実行プログラム中の所定のメソッド呼び出しに関し
    て、当該メソッド呼び出しが当該メソッド呼び出し中の
    オブジェクト参照をグローバル化せず、かつ当該メソッ
    ド呼び出し中の全てのオブジェクト参照の使用が、オブ
    ジェクトの要素が活用されない引数である場合に、デッ
    ドコードエリミネーションにより当該メソッド呼び出し
    における所定のコードを消去するステップと、 前記コードを消去された実行プログラムをメモリに格納
    するステップとを含むことを特徴とするプログラム変換
    方法。
  2. 【請求項2】 前記デッドコードエリミネーションによ
    りメソッド呼び出しのコードを消去するステップに先立
    って、当該メソッド呼び出しをインライン展開するステ
    ップをさらに含むことを特徴とする請求項1に記載のプ
    ログラム変換方法。
  3. 【請求項3】 前記デッドコードエリミネーションによ
    りメソッド呼び出しのコードを消去するステップに先立
    って、当該メソッド呼び出しにおけるオブジェクトのイ
    ンスタンス変数をスカラー化するステップをさらに含む
    ことを特徴とする請求項1に記載のプログラム変換方
    法。
  4. 【請求項4】 オブジェクト指向プログラミング言語で
    記述された実行プログラムのソースコードを読み込み、
    機械語コードに変換するプログラム変換方法において、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中の所定のメソッド呼び出しをイン
    ライン展開する第1のステップと、 インライン展開された前記メソッド呼び出しにおけるオ
    ブジェクトのインスタンス変数をスカラー化する第2の
    ステップと、 前記第1、第2のステップが施された前記実行プログラ
    ムに対してデッドコードエリミネーションを実行する第
    3のステップと、 デッドコードエリミネーションを施された実行プログラ
    ムをメモリに格納する第4のステップとを含むことを特
    徴とするプログラム変換方法。
  5. 【請求項5】 前記実行プログラム中のメソッド呼び出
    しに関して、当該メソッド呼び出し中の全てのオブジェ
    クト参照の使用が、オブジェクトの要素が活用されない
    引数である場合に、当該メソッド呼び出しを前記インラ
    イン展開の対象として決定するステップをさらに含むこ
    とを特徴とする請求項4に記載のプログラム変換方法。
  6. 【請求項6】 前記実行プログラム中の所定のメソッド
    呼び出しが当該メソッド呼び出し中のオブジェクト参照
    をグローバル化しない場合に、当該メソッド呼び出しを
    前記インライン展開の対象として決定するステップをさ
    らに含むことを特徴とする請求項4に記載のプログラム
    変換方法。
  7. 【請求項7】 オブジェクト指向プログラミング言語で
    記述された実行プログラムのソースコードを読み込み、
    機械語コードに変換するコンピュータ装置において、 メソッド呼び出しにおけるオブジェクト参照の使用の状
    態に基づいて、処理対象となるメソッド呼び出しを決定
    する処理対象抽出部と、 前記処理対象抽出部により処理対象として決定されたメ
    ソッド呼び出しをインライン展開するインライン展開処
    理部と、 前記インライン展開処理部にてインライン展開された前
    記メソッド呼び出しにおけるオブジェクトのインスタン
    ス変数をスカラー化するスカラー化処理部と、 前記インライン展開処理部及び前記スカラー化処理部に
    よる処理が施された実行プログラムに対してデッドコー
    ドエリミネーションを実行するデッドコードエリミネー
    ション実行部とを備えることを特徴とするコンピュータ
    装置。
  8. 【請求項8】 前記処理対象抽出部は、前記実行プログ
    ラム中の所定のメソッド呼び出しに関して、当該メソッ
    ド呼び出しが当該メソッド呼び出し中のオブジェクト参
    照をグローバル化せず、かつ当該メソッド呼び出し中の
    全てのオブジェクト参照の使用が、オブジェクトの要素
    が活用されない引数である場合に、当該メソッド呼び出
    しを処理対象として決定することを特徴とする請求項7
    に記載のコンピュータ装置。
  9. 【請求項9】 前記実行プログラム中のメソッド呼び出
    しに関して、当該メソッド呼び出し中のオブジェクト参
    照の使用が、オブジェクトの要素が活用されない引数で
    あるかどうかを調べるコード解析部をさらに備え、 前記処理対象抽出部は、前記コード解析部の解析結果に
    基づいて処理対象となるメソッド呼び出しを決定するこ
    とを特徴とする請求項7に記載のコンピュータ装置。
  10. 【請求項10】 オブジェクト指向プログラミング言語
    で記述されたプログラムのソースコードをコンパイルし
    て機械語コードに変換するコンパイラと、 機械語コードに変換された当該プログラムを実行するプ
    ログラム実行部とを備え、 前記コンパイラは、 前記プログラム中の所定のメソッド呼び出しに関して、
    当該メソッド呼び出しが当該メソッド呼び出し中のオブ
    ジェクト参照をグローバル化せず、かつ当該メソッド呼
    び出し中の全てのオブジェクト参照の使用が、オブジェ
    クトの要素が活用されない引数である場合に、当該メソ
    ッド呼び出しを処理対象とする処理対象抽出部と、 前記処理対象抽出部により処理対象として決定されたメ
    ソッド呼び出しをインライン展開するインライン展開処
    理部と、 前記インライン展開処理部にてインライン展開された前
    記メソッド呼び出しにおけるオブジェクトのインスタン
    ス変数をスカラー化するスカラー化処理部と、 前記インライン展開処理部及び前記スカラー化処理部に
    よる処理が施された実行プログラムに対してデッドコー
    ドエリミネーションを実行するデッドコードエリミネー
    ション実行部とを備えることを特徴とするコンピュータ
    装置。
  11. 【請求項11】 コンピュータを制御して、オブジェク
    ト指向プログラミング言語で記述された実行プログラム
    のソースコードを機械語コードに変換するプログラムで
    あって、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中のメソッド呼び出しに関して、当
    該メソッド呼び出し中のオブジェクト参照の使用が、オ
    ブジェクトの要素が活用されない引数であるかどうかを
    調べる処理と、 前記実行プログラム中の所定のメソッド呼び出しに関し
    て、当該メソッド呼び出しが当該メソッド呼び出し中の
    オブジェクト参照をグローバル化せず、かつ当該メソッ
    ド呼び出し中の全てのオブジェクト参照の使用が、オブ
    ジェクトの要素が活用されない引数である場合に、デッ
    ドコードエリミネーションにより当該メソッド呼び出し
    における所定のコードを消去する処理と、 前記コードを消去された実行プログラムをメモリに格納
    する処理とを前記コンピュータに実行させることを特徴
    とするプログラム。
  12. 【請求項12】 前記デッドコードエリミネーションに
    よりメソッド呼び出しのコードを消去する処理に先立っ
    て、当該メソッド呼び出しをインライン展開する処理
    を、前記コンピュータにさらに実行させることを特徴と
    する請求項11に記載のプログラム。
  13. 【請求項13】 前記デッドコードエリミネーションに
    よりメソッド呼び出しのコードを消去する処理に先立っ
    て、当該メソッド呼び出しにおけるオブジェクトのイン
    スタンス変数をスカラー化する処理を前記コンピュータ
    にさらに実行させることを特徴とする請求項11に記載
    のプログラム。
  14. 【請求項14】 コンピュータを制御して、オブジェク
    ト指向プログラミング言語で記述された実行プログラム
    のソースコードを機械語コードに変換するプログラムで
    あって、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中のメソッド呼び出しにおけるオブ
    ジェクト参照の使用の状態に基づいて、処理対象となる
    メソッド呼び出しを決定する手段と、 メモリから前記処理対象である実行プログラムを読み出
    し、処理対象として決定された前記メソッド呼び出しを
    インライン展開する手段と、 インライン展開された前記メソッド呼び出しにおけるオ
    ブジェクトのインスタンス変数をスカラー化する手段
    と、 前記インライン展開及び前記スカラー化が施された前記
    実行プログラムに対してデッドコードエリミネーション
    を実行する手段として前記コンピュータを機能させるこ
    とを特徴とするプログラム。
  15. 【請求項15】 前記コンピュータの機能として実現さ
    れる前記処理対象となるメソッド呼び出しを決定する手
    段は、前記実行プログラム中の所定のメソッド呼び出し
    に関して、当該メソッド呼び出しが当該メソッド呼び出
    し中のオブジェクト参照をグローバル化せず、かつ当該
    メソッド呼び出し中の全てのオブジェクト参照の使用
    が、オブジェクトの要素が活用されない引数である場合
    に、当該メソッド呼び出しを処理対象として決定するこ
    とを特徴とする請求項14に記載のプログラム。
  16. 【請求項16】 前記実行プログラム中のメソッド呼び
    出しに関して、当該メソッド呼び出し中のオブジェクト
    参照の使用が、オブジェクトの要素が活用されない引数
    であるかどうかを調べる手段として、前記コンピュータ
    をさらに機能させ、 前記処理対象となるメソッド呼び出しを決定する手段
    は、前記メソッド呼び出しに関して調べた結果に基づい
    て処理対象となるメソッド呼び出しを決定することを特
    徴とする請求項14に記載のプログラム。
  17. 【請求項17】 コンピュータを制御してオブジェクト
    指向プログラミング言語で記述された実行プログラムの
    ソースコードを機械語コードに変換するプログラムを、
    当該コンピュータが読み取り可能に記録した記録媒体で
    あって、 前記プログラムは、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中のメソッド呼び出しに関して、当
    該メソッド呼び出し中のオブジェクト参照の使用が、オ
    ブジェクトの要素が活用されない引数であるかどうかを
    調べる処理と、 前記実行プログラム中の所定のメソッド呼び出しに関し
    て、当該メソッド呼び出しが当該メソッド呼び出し中の
    オブジェクト参照をグローバル化せず、かつ当該メソッ
    ド呼び出し中の全てのオブジェクト参照の使用が、オブ
    ジェクトの要素が活用されない引数である場合に、デッ
    ドコードエリミネーションにより当該メソッド呼び出し
    における所定のコードを消去する処理と、 前記コードを消去された実行プログラムをメモリに格納
    する処理とを前記コンピュータに実行させることを特徴
    とする記録媒体。
  18. 【請求項18】 コンピュータを制御してオブジェクト
    指向プログラミング言語で記述された実行プログラムの
    ソースコードを機械語コードに変換するプログラムを、
    当該コンピュータが読み取り可能に記録した記録媒体で
    あって、 前記プログラムは、 メモリから処理対象である実行プログラムを読み出し、
    当該実行プログラム中のメソッド呼び出しにおけるオブ
    ジェクト参照の使用の状態に基づいて、処理対象となる
    メソッド呼び出しを決定する手段と、 メモリから前記処理対象である実行プログラムを読み出
    し、処理対象として決定された前記メソッド呼び出しを
    インライン展開する手段と、 インライン展開された前記メソッド呼び出しにおけるオ
    ブジェクトのインスタンス変数をスカラー化する手段
    と、 前記インライン展開及び前記スカラー化が施された前記
    実行プログラムに対してデッドコードエリミネーション
    を実行する手段として前記コンピュータを機能させるこ
    とを特徴とする記録媒体。
JP2001387263A 2001-12-20 2001-12-20 プログラム変換方法、コンピュータ装置及びプログラム Expired - Fee Related JP3813087B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001387263A JP3813087B2 (ja) 2001-12-20 2001-12-20 プログラム変換方法、コンピュータ装置及びプログラム
US10/325,765 US7373641B2 (en) 2001-12-20 2002-12-19 Method, computer unit and program for converting a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001387263A JP3813087B2 (ja) 2001-12-20 2001-12-20 プログラム変換方法、コンピュータ装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2003196106A true JP2003196106A (ja) 2003-07-11
JP3813087B2 JP3813087B2 (ja) 2006-08-23

Family

ID=27596154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001387263A Expired - Fee Related JP3813087B2 (ja) 2001-12-20 2001-12-20 プログラム変換方法、コンピュータ装置及びプログラム

Country Status (2)

Country Link
US (1) US7373641B2 (ja)
JP (1) JP3813087B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
JP2015507793A (ja) * 2011-12-23 2015-03-12 ザ アリゾナ ボード オブ リージェンツ オン ビハーフ オブ ザ ユニバーシティー オブ アリゾナ データベース管理システムにおけるマイクロ特化の方法
US10365900B2 (en) 2011-12-23 2019-07-30 Dataware Ventures, Llc Broadening field specialization
JP2022521127A (ja) * 2019-02-26 2022-04-06 インテル・コーポレーション コンパイラのためのワークロード指向定数伝播
US12045653B2 (en) 2017-06-22 2024-07-23 Dataware Ventures, Llc Field specialization to reduce memory-access stalls and allocation requests in data-intensive applications

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370321B2 (en) * 2002-11-14 2008-05-06 Microsoft Corporation Systems and methods to read, optimize, and verify byte codes for a multiplatform jit
JP3956131B2 (ja) * 2002-12-26 2007-08-08 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム変換装置、プログラム変換方法及びプログラム
US7356802B2 (en) * 2003-09-29 2008-04-08 International Business Machines Corporation Automatic customization of classes
US7624449B1 (en) * 2004-01-22 2009-11-24 Symantec Corporation Countering polymorphic malicious computer code through code optimization
US7797690B2 (en) * 2005-03-15 2010-09-14 International Business Machines Corporation System, method and program product to optimize code during run time
US8032874B1 (en) * 2006-01-20 2011-10-04 Xilinx, Inc. Generation of executable threads having source code specifications that describe network packets
US20080016029A1 (en) * 2006-07-11 2008-01-17 Mariam John Optimizing a query to a database
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
JP5039948B2 (ja) * 2007-10-30 2012-10-03 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムを最適化するコンパイラ
CA2675686C (en) * 2009-08-27 2011-10-11 Ibm Canada Limited - Ibm Canada Limitee Object collocation
US10733099B2 (en) 2015-12-14 2020-08-04 Arizona Board Of Regents On Behalf Of The University Of Arizona Broadening field specialization
AU2016228166A1 (en) * 2016-09-13 2018-03-29 Canon Kabushiki Kaisha Visualisation for guided algorithm design to create hardware friendly algorithms
WO2021225901A1 (en) * 2020-05-04 2021-11-11 Lingua Robotica, Inc. Techniques for converting natural speech to programming code
US11593080B1 (en) 2021-12-17 2023-02-28 International Business Machines Corporation Eliminating dead stores

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0689187A (ja) 1992-09-08 1994-03-29 Hitachi Ltd インライン展開最適化方法
JPH06202875A (ja) 1992-12-28 1994-07-22 Nec Corp インライン展開による最適化を行うコンパイラ
US5857105A (en) * 1997-02-05 1999-01-05 Hewlett-Packard Company Compiler for reducing number of indirect calls in an executable code
JP2000207226A (ja) 1999-01-19 2000-07-28 Toshiba Corp コ―ド最適化装置、言語処理装置及びコ―ド最適化方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006243838A (ja) * 2005-02-28 2006-09-14 Toshiba Corp プログラム開発装置
US7917899B2 (en) 2005-02-28 2011-03-29 Kabushiki Kaisha Toshiba Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JP2015507793A (ja) * 2011-12-23 2015-03-12 ザ アリゾナ ボード オブ リージェンツ オン ビハーフ オブ ザ ユニバーシティー オブ アリゾナ データベース管理システムにおけるマイクロ特化の方法
US10365900B2 (en) 2011-12-23 2019-07-30 Dataware Ventures, Llc Broadening field specialization
US12045653B2 (en) 2017-06-22 2024-07-23 Dataware Ventures, Llc Field specialization to reduce memory-access stalls and allocation requests in data-intensive applications
JP2022521127A (ja) * 2019-02-26 2022-04-06 インテル・コーポレーション コンパイラのためのワークロード指向定数伝播
JP7287743B2 (ja) 2019-02-26 2023-06-06 インテル・コーポレーション コンパイラのためのワークロード指向定数伝播
US11922152B2 (en) 2019-02-26 2024-03-05 Intel Corporation Workload oriented constant propagation for compiler

Also Published As

Publication number Publication date
US7373641B2 (en) 2008-05-13
US20030149969A1 (en) 2003-08-07
JP3813087B2 (ja) 2006-08-23

Similar Documents

Publication Publication Date Title
JP3813087B2 (ja) プログラム変換方法、コンピュータ装置及びプログラム
US7725883B1 (en) Program interpreter
US6233733B1 (en) Method for generating a Java bytecode data flow graph
US5606697A (en) Compiler system for language processing program
US7784039B2 (en) Compiler, compilation method, and compilation program
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US6934940B2 (en) Source code transformation-temporary object reduction
US20110067018A1 (en) Compiler program, compilation method, and computer system
US7418699B2 (en) Method and system for performing link-time code optimization without additional code analysis
US20100199269A1 (en) Program optimization device and program optimization method
KR20010086159A (ko) 자바 프로그램들 및 이를 위한 소프트웨어 프러덕트의플랫폼 특정 효율 강화를 위한 방법
JP2002259135A (ja) プログラムの最適化方法及びこれを用いたコンパイラ
US8291397B2 (en) Compiler optimized function variants for use when return codes are ignored
JP2002091777A (ja) コンパイラ及びそのレジスタ割付方法
US10013244B2 (en) Apparatus and method to compile a variadic template function
US8762974B1 (en) Context-sensitive compiler directives
JP4768984B2 (ja) コンパイル方法、コンパイルプログラムおよびコンパイル装置
US20030172194A1 (en) Global constant pool to allow deletion of constant pool entries
JP3790707B2 (ja) プログラム変換方法、これを用いたコンピュータ装置及びプログラム
JPH09128246A (ja) コンパイラ装置
JP2017091070A (ja) 実行可能コード生成プログラムおよび実行可能コード生成装置
US20060048012A1 (en) Context sensitive debug streams with output throttling controls
JPH0689187A (ja) インライン展開最適化方法
US7043721B2 (en) Initial object capacity determination
JPH11212807A (ja) プログラム実行方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060216

TRDD Decision of grant or rejection written
RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060502

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060502

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060530

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100609

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110609

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees