JP2003216442A - プログラム変換方法、これを用いたコンピュータ装置及びプログラム - Google Patents
プログラム変換方法、これを用いたコンピュータ装置及びプログラムInfo
- Publication number
- JP2003216442A JP2003216442A JP2002008904A JP2002008904A JP2003216442A JP 2003216442 A JP2003216442 A JP 2003216442A JP 2002008904 A JP2002008904 A JP 2002008904A JP 2002008904 A JP2002008904 A JP 2002008904A JP 2003216442 A JP2003216442 A JP 2003216442A
- Authority
- JP
- Japan
- Prior art keywords
- program
- execution program
- range
- memory
- code
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
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
解析を行うことなく、より効果的にスカラーリプレイス
メントを行えるようにする。 【解決手段】 処理対象である実行プログラムのソース
コードに基づいて機械語コードを生成するコード変換部
110と、この機械語コードによる実行プログラム中の
メソッドに関して、このメソッド内で作成されたオブジ
ェクトがエスケープしていない範囲を求める最適化範囲
決定部120と、このオブジェクトがエスケープしてい
ない範囲内でスカラーリプレイスメントを行うスカラー
リプレイスメント実行部130とを備える。
Description
カラーリプレイスメント(scalar replacement)によ
り、プログラムの実行効率の向上を図る方法に関する。
バルなメモリ上にある変数をメソッド内でローカルな場
所(ローカル変数など)に置き換える、スカラーリプレ
イスメントという手法がある。この最適化は、「メモリ
アクセスのコストを減らす」という効果もあるが、それ
だけではなく、置き換えた変数の生存区間が大きく広が
るため、その後の最適化(共通部分式の除去等)の効果
を大幅に高めるという副次的な効果があることでも知ら
れている。
合、プログラム中に存在するメソッド呼び出しが支障と
なる。すなわち、グローバルなメモリ上にある変数の値
は、呼び出されたメソッド内で変更される可能性がある
ため、単純にメソッド呼び出しを越えて最適化すること
ができなかった。
クセスを最適化するためには、エスケープアナリシス
(Escape Analysis)と呼ばれる技術を用いて呼び出さ
れるメソッドの中を解析し、その解析結果に基づいて最
適化を行う方法があった。この方法では、メソッド内の
newやnewarray等で作成されるオブジェクトに関して、
そのメソッド内の全ての場所で当該メソッドの外から当
該オブジェクトを参照できない(これをエスケープして
いないという)場合に限り、当該オブジェクトのメモリ
をヒープ領域ではなくスタック領域にとることにより最
適化が行われる。なお、エスケープアナリシスについて
は、例えば、次の文献1、2に詳細に記載されている。 文献1:Escape Analysis for Java(In Proceedings o
f the 1999 ACM SIGPLANConference on Object-Oriente
d Programming, Systems, Languages, and Application
s(以下、OOPSLA)'99) 文献2:Compositional Pointer and Escape Analysis
for Java Programs (OOPSLA'99)
ように、エスケープアナリシスを用いた最適化は、メソ
ッド内に一個所でもエスケープしている部分がある場合
には、当該メソッドに対して最適化を行うことができな
かった。また、エスケープアナリシスによる呼び出しメ
ソッド内の解析は、多大な処理コストが必要であるた
め、導入することが困難な場合があった。例えば、Ja
vaにおけるJIT(Just In Time)コンパイラのよう
なコンパイル時間に影響を受けるコンパイラに適用する
には、メソッドサイズ等を考慮した非常に厳しい制限が
行われていた。さらに、動的なコール命令などのため
に、呼び出しメソッド内の解析そのものが全くできない
場合もあった。
おいて、呼び出しメソッド内の解析を行うことなく、よ
り効果的にスカラーリプレイスメントを行えるようにす
ることを目的とする。
め、本発明は、コンピュータを用いてオブジェクト指向
プログラミング言語で記述された実行プログラムのソー
スコードを読み込み、機械語コードに変換する、次のよ
うなプログラム変換方法として実現される。すなわち、
このプログラム変換方法は、処理対象である実行プログ
ラム中のメソッドに関して、このメソッド内で作成され
たオブジェクトがエスケープしていない範囲を求めるス
テップと、このオブジェクトがエスケープしていない範
囲内でスカラーリプレイスメントを行うステップと、ス
カラーリプレイスメントを施された実行プログラムをメ
モリに格納するステップとを含むことを特徴とする。
実行するステップでは、好ましくは、オブジェクトがエ
スケープしていない範囲内のメソッド呼び出しについ
て、このオブジェクトに対するメモリアクセスが変更さ
れないものとしてスカラーリプレイスメントを実行す
る。また、このオブジェクトがエスケープしていない範
囲を求めるステップは、詳しくは、実行プログラムに対
し、前方データフロー解析によりベーシックブロックご
とに、このメソッド内で作成され、かつエスケープして
いないオブジェクトの集合を求めるステップと、このベ
ーシックブロック内の命令を先頭から順に調べ、各命令
の場所で、このメソッド内で作成され、かつエスケープ
していないオブジェクトの集合を求めるステップとを含
む。
法は、処理対象である実行プログラムのソースコードに
基づいて機械語コードを生成するステップと、生成され
た機械語コードによる実行プログラム中のメソッドに関
して、このメソッド内で作成されたオブジェクトが外部
から参照されない範囲で、メソッド呼び出しを越えてス
カラーリプレイスメントを行うステップとを含むことを
特徴とする。
行うステップは、詳しくは、実行プログラムのベーシッ
クブロックごとに、メソッド内で作成され、かつグロー
バルなメモリに書き込まれていないオブジェクトの集合
を求めることにより、このオブジェクトが外部から参照
されない範囲を決定するステップを含む。
は、オブジェクト指向プログラミング言語で記述された
実行プログラムのソースコードを読み込み、機械語コー
ドに変換する、次のように構成されたコンピュータ装置
として実現される。すなわち、このコンピュータ装置
は、処理対象である実行プログラムのソースコードに基
づいて機械語コードを生成するコード変換部と、この機
械語コードによる実行プログラム中のメソッドに関し
て、このメソッド内で作成されたオブジェクトがエスケ
ープしていない範囲を求める最適化範囲決定部と、この
オブジェクトがエスケープしていない範囲内でスカラー
リプレイスメントを行うスカラーリプレイスメント実行
部とを備えることを特徴とする。
行部は、好ましくは、オブジェクトがエスケープしてい
ない範囲内のメソッド呼び出しを、当該オブジェクトに
対するメモリアクセスが変更されないものとしてスカラ
ーリプレイスメントを実行する。さらに、最適化範囲決
定部は、より詳しくは、実行プログラムに対し、前方デ
ータフロー解析によりベーシックブロックごとに、メソ
ッド内で作成され、かつエスケープしていないオブジェ
クトの集合を求める第1の手段と、このベーシックブロ
ック内の命令を先頭から順に調べ、各命令の場所で、メ
ソッド内で作成され、かつエスケープしていないオブジ
ェクトの集合を求める第2の手段とを備える。
は、実行プログラムのソースコードに基づいて機械語コ
ードを生成するコード変換部と、コード変換部により生
成された機械語コードの実行プログラムに対し、この実
行プログラム中のメソッドに関して、このメソッド内で
作成されたオブジェクトがエスケープしていない範囲内
でメソッド呼び出しを越えてスカラーリプレイスメント
を行う最適化部とを備えることを特徴とする。
に変換された実行プログラムを実行するプログラム実行
部をさらに備える構成とすることもできる。さらにま
た、本発明は、コンピュータを制御して上述したプログ
ラム変換方法や各種の機能を実現するプログラムとして
実現することができる。このプログラムは、磁気ディス
クや光ディスク、半導体メモリ、その他の記録媒体に格
納して配布したり、ネットワークを介して配信したりす
ることにより提供することができる。
に基づいて、この発明を詳細に説明する。図1は、本実
施の形態による最適化方法を実現するコンピュータシス
テムのシステム構成を示す図である。図1を参照する
と、本実施の形態におけるコンピュータシステムは、ソ
ースプログラム(入力コードまたはソースコード)をコ
ンパイルするコンパイラ100と、コンパイラ100に
てコンパイルされたオブジェクトプログラム(出力コー
ドまたはオブジェクトコード)を実行して種々の処理を
行うプログラム実行部200とを備える。コンパイラ1
00及びプログラム実行部200は、パーソナルコンピ
ュータやワークステーションなどのコンピュータ装置に
おけるプログラム制御されたCPU及びRAM等のメモ
リにて実現される。図示しないメモリには、CPUを制
御してコンパイラ100あるいはプログラム実行部20
0として動作させるためのプログラムやコンパイルの対
象となるプログラムが格納される。なお、メモリに格納
されるプログラムは、必要に応じて、適宜磁気ディスク
その他の記録媒体に退避、保存されることは言うまでも
ない。
ド入力部300から所定のプログラム言語やバイトコー
ド(byte code)で記述されたプログラム(コンパイル
対象のプログラム、以下、実行プログラムと称す)のソ
ースコードを入力して処理し、機械語で記述されたオブ
ジェクトコードを生成して出力する。このコード入力部
300は、ソースコードを生成するコード生成装置や、
当該コード生成装置にて生成されたソースコードを記憶
した記憶装置(磁気ディスク装置など)にて実現され
る。また、ネットワーク上に存在するコード生成装置や
記憶装置から当該ネットワークを介してソースコードを
入力するネットワークインターフェイスにて実現するこ
ともできる。コンパイラ100により生成された実行プ
ログラムのオブジェクトコードは、プログラム実行部2
00により実行される。なお、本実施の形態において、
コンパイラ100は、JavaにおけるJIT(Just I
n Time)コンパイラのような、プログラム実行部200
が実行プログラムを実行する際に動的にコンパイル処理
を行うコンパイラであっても良いし、ソースプログラム
を予めコンパイルして生成されたオブジェクトプログラ
ムを実行プログラムとする使用形態におけるコンパイラ
であっても良い。また、コンパイラ100とプログラム
実行部200とは、単一のコンピュータ装置に設けても
良いし、別個のコンピュータ装置においてコンパイラ1
00とプログラム実行部200とを実現する構成として
も良い。
100の構成を説明する図である。本実施の形態のコン
パイラ100は、コンパイルされたプログラムコードに
対して、次の手法による最適化を実行する。すなわち、 ・メソッド内のnew、newarray等で作成されたオブジェ
クトObjについて、エスケープしていない(すなわ
ち、当該メソッドの外から当該オブジェクトObjを参
照できない)範囲R(Obj)を求める。 ・範囲R(Obj)内のメソッド呼び出しに対し、オブ
ジェクトObjに対するメモリアクセスは変更されない
ものとして扱ってスカラーリプレイスメントを行う。
ソースコードをオブジェクトコードに変換するコード変
換部110と、コード変換部110にて生成されたオブ
ジェクトコードに対して上述した範囲R(Obj)を決
定する最適化範囲決定部120と、最適化範囲決定部1
20により決定された範囲R(Obj)内のメソッド呼
び出しに対してスカラーリプレイスメントを行うスカラ
ーリプレイスメント実行部130とを備える。ここで、
最適化範囲決定部120及びスカラーリプレイスメント
実行部130が上述した最適化を行う最適化部として機
能する。図2に示したコンパイラ100の各構成要素
は、プログラム制御されたCPUにて実現される仮想的
なソフトウェアブロックである。なお、図2に示したコ
ンパイラ100の構成要素は、本実施の形態における特
徴的な機能に関するものである。特に図示しないが、実
際にはコンパイラ100は、コード変換のために必要な
ソースコードの字句解析や構文解析、本実施の形態によ
る最適化以外の各種の最適化処理といったコンパイル処
理における一般的な機能をさらに有することは言うまで
もない。
は、処理対象である実行プログラムを入力してメモリに
保持する。そして、当該メモリから実行プログラムを読
み出して字句解析や構文解析を行った後、これらの解析
で得られた情報に基づいて、コード変換部110により
オブジェクトコードを生成する。生成されたオブジェク
トコードはメモリに格納される。
0は、コード変換部110にて生成されたオブジェクト
コードをメモリから読み出し、上述したように、このオ
ブジェクトコードを対象として、範囲R(Obj)を求
める。具体的な処理としては、まず、次の数1式で示さ
れる前方データフロー解析を使って、ベーシックブロッ
クnの先頭で「メソッド内でnew、newarray等で作成さ
れ、まだエスケープしていないオブジェクト」と判断さ
れるオブジェクトの集合In(n)を求める。そして、
求まった集合In(n)に基づいて、ベーシックブロッ
クn内の命令を先頭から順に調べながら、各命令の場所
で「メソッド内でnew, newarray等で作成され、まだエ
スケープしていないオブジェクト」の集合を求め、当該
集合に含まれるオブジェクトの範囲を範囲R(Obj)
とする。
w、newarray等で作成され、ベーシックブロックnの最
後の点で、まだエスケープしていないオブジェクトの集
合である。Kill(n)は、ベーシックブロックn内
でエスケープするオブジェクトの集合である。また、ベ
ーシックブロックとは、ストレートコード、すなわちコ
ントロールフローが途中に入ることもなく、途中から出
ることもないようなコード列の範囲をブロックで認識し
たものである。
される、前方データフロー解析によりオブジェクトの集
合In(n)を求める処理の詳細を説明するフローチャ
ートである。図3に示すように、最適化範囲決定部12
0は、まずパラメータn、changeの初期化を行う(ステ
ップ301)。ここで、nはベーシックブロック番号、
changeはデータフロー方程式を解く際の収束判定のフラ
グを意味する。次に、最適化範囲決定部120は、後で
オブジェクトの集合Inの比較を行うため、OldInとい
う集合にコピーを行う(ステップ302)。そして、ベ
ーシックブロックn(図3ではブロックnと表記)の直
前のベーシックブロック(図3ではブロックmと表記)
が存在するかどうかを調べる(ステップ303)。その
ようなベーシックブロック(ブロックm)が存在するな
らば、集合In(n)の内容をIn(n)=Out
(m)とする(ステップ304)。そして、他にベーシ
ックブロックnの直前のベーシックブロック(ブロック
m)が存在するかどうかを調べる(ステップ305)。
そのようなベーシックブロック(ブロックm)が存在す
るならば、集合In(n)の内容をIn(n)=In
(n)∩Out(m)とする(ステップ306)。この
ステップ303からステップ306の処理は、数1式の
最初の式(集合Outから集合Inを計算する)を実際
に計算している部分である。
いて、ベーシックブロックnの直前にベーシックブロッ
ク(ブロックm)が存在しない場合、次に最適化範囲決
定部120は、ステップ302で生成された集合OldIn
と集合Inとを比較する。そして、両者の内容が異なっ
ているならば、changeのフラグを立てる(ステップ30
7)。
合Outの比較を行うため、OldOutという集合にコピー
を行う(ステップ308)。そして、集合Out(n)
の内容をOut(n)=(In(n)−Kill
(n))∪Gen(n)とする(ステップ309)。こ
のステップ309の処理は、数1式の2つ目の式(In
からOutを計算する)を実際に計算している部分であ
る。次に、最適化範囲決定部120は、ステップ308
で生成された集合OldOutと集合Outとを比較する。そ
して、両者の内容が異なっているならば、changeのフラ
グを立てる(ステップ310)。
は、パラメータnを1加算し(ステップ311)、新た
なnの値がベーシックブロックの数に達したかどうかを
調べる。そして、nの値がベーシックブロックの数に達
するまで(すなわち、全てのベーシックブロックに対し
て処理が終了するまで)ステップ302乃至ステップ3
10の処理を繰り返す(ステップ312)。全てのベー
シックブロックに対して処理が終了したならば、次に最
適化範囲決定部120は、changeのフラグが立っている
集合があるかどうかを調べ、全てのchangeのフラグが立
たなくなるまで(すなわち、収束するまで)ステップ3
01乃至ステップ312の処理を繰り返す(ステップ3
13)。
は、この後、上記のようにして求まった集合In(n)
に基づいて、ベーシックブロックn内の命令を先頭から
順に調べ、範囲R(Obj)を決定する。
ント実行部130は、最適化範囲決定部120にて決定
された範囲R(Obj)内のメソッド呼び出しについ
て、オブジェクトObjに対するメモリアクセスは変更
されないものとして扱って(すなわち、メソッド呼び出
しを越えて)、スカラーリプレイスメントを行う。そし
てさらに、スカラーリプレイスメントされたメソッド呼
び出し命令の処理の中で、「メソッド呼び出しでメモリ
の値が変わる可能性があるので、このメソッド呼び出し
を越えて最適化できない」という処理をしている部分
を、次のように2つの場合に応じた処理に変更する。・
当該部分がこの命令の場所で求まった、メソッド内でne
w、newarray等で作成され、まだエスケープしていない
オブジェクトの集合であるならば、このメソッド呼び出
しでオブジェクト内のメモリの値が絶対に変わらないの
で、このメソッド呼び出しを越えて最適化できる。・当
該部分がこの命令の場所で求まった、メソッド内でne
w、newarray等で作成され、まだエスケープしていない
オブジェクトの集合でないならば、このメソッド呼び出
しでオブジェクト内のメモリの値が変わる可能性がある
ので、このメソッド呼び出しを越えて最適化できない。
図4は、この処理の変更のアルゴリズムを示す図であ
る。以上のようにしてスカラーリプレイスメントによる
最適化を施された実行プログラムは、必要に応じてさら
に他の最適化を施された後にメモリに格納され、プログ
ラム実行部200により読み出されて実行されることと
なる。
適用した場合の最適化の実行例を説明する。図5は、適
用対象のプログラムを例示する図である。図5に示すプ
ログラムにおいて、従来のエスケープアナリシスでは、
メソッド呼び出しfoo(D, E)が存在するため、このメソ
ッド呼び出しfoo(D, E)の中を解析し、Obj.xの値が変わ
らないことが保証されなければ、Obj.xのアクセスを最
適化することができない。この解析に多大な処理コスト
を要する他、メソッド呼び出しによっては、そのような
解析ができないために、スカラーリプレイスメントによ
る最適化を行うことができない。
して、まず最適化範囲決定部120により、範囲R(O
bj)が決定される。図6は、図5のプログラムに対し
て、範囲R(Obj)を決定した様子を示す図である。
図6において、2行目から4行目までの、Obj.x = a、f
oo (D, E)、b = Obj.x; の3行は、new(図では大文字
で表記)で定義されたObjがエスケープしていない。そ
して、次のD.obj = Objにおいて、Objをグローバルなメ
モリへ書き込むことにより、このメソッド外からObjが
アクセス可能となるため、Objはエスケープしたと判断
される。そこで、上の3行の範囲が範囲R(Obj)と
なる。
30により、範囲R(Obj)に対するスカラーリプレ
イスメントが行われる。図7は、図6に示した範囲R
(Obj)に対してスカラーリプレイスメントを実行し
た様子を示す図である。図7において、3行目のfoo(D,
E)について、当該部分がメソッド内でnewによって作成
され、まだエスケープしていないオブジェクトの集合に
含まれていることから、オブジェクトObjは、ここのfoo
の中から絶対にアクセスできないことがわかる。したが
って、Objに対するメモリアクセスに関し、このメソッ
ドコールをKillにする必要は無い。また、4行目は、ス
カラーリプレイスメントにより、b = a(2行目参照)
に置き換えられ、メモリからのロードがなくなっている
(最適化されている)。
目のD.obj = ObjによりObjがエスケープした後のメソッ
ド呼び出しであるため、変数の値が呼び出されたメソッ
ドfoo(D, E)内で変更される可能性がある。そのため、
次のc=Obj.x;は4行目のように最適化することはできな
い。
ば、メソッド中に他のメソッドに対するメソッド呼び出
しが存在していても、当該メソッド内で定義されたオブ
ジェクトに関して、当該オブジェクトがエスケープしな
い範囲でスカラーリプレイスメントによる最適化を行う
ことが可能となる。また、メソッドが動的なコール命令
を含む場合にも、以上の手法をそのまま利用して、当該
メソッド内で定義されたオブジェクトに関して、当該オ
ブジェクトがエスケープしない範囲でスカラーリプレイ
スメントによる最適化を行うことが可能となる。さら
に、エスケープアナリシスによる解析が不要であるた
め、当該解析処理に要する処理コストが削減され、Ja
vaにおけるJITコンパイラのような動的なコンパイ
ラに好適である。
プログラムの最適化において、メソッド内の解析を行う
ことなく、より効果的にスカラーリプレイスメントを行
うことが可能となる。
ンピュータシステムのシステム構成を示す図である。
明する図である。
ジェクトの集合In(n)を求める処理の詳細を説明す
るフローチャートである。
行った後における処理の変更のアルゴリズムを示す図で
ある。
例示する図である。
j)を決定した様子を示す図である。
ラーリプレイスメントを実行した様子を示す図である。
最適化範囲決定部、130…スカラーリプレイスメント
実行部、200…プログラム実行部、300…コード入
力部
Claims (17)
- 【請求項1】 コンピュータを用いて、オブジェクト指
向プログラミング言語で記述された実行プログラムのソ
ースコードを読み込み、機械語コードに変換するプログ
ラム変換方法において、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラム中のメソッドに関して、当該メ
ソッド内で作成されたオブジェクトがエスケープしてい
ない範囲を求めるステップと、 前記オブジェクトがエスケープしていない範囲内でスカ
ラーリプレイスメントを行うステップと、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納するステップとを含むことを特徴とす
るプログラム変換方法。 - 【請求項2】 前記スカラーリプレイスメントを実行す
るステップは、前記オブジェクトがエスケープしていな
い範囲内のメソッド呼び出しについて、当該オブジェク
トに対するメモリアクセスが変更されないものとしてス
カラーリプレイスメントを実行するステップを含むこと
を特徴とする請求項1に記載のプログラム変換方法。 - 【請求項3】 前記オブジェクトがエスケープしていな
い範囲を求めるステップは、 前記実行プログラムに対し、前方データフロー解析によ
りベーシックブロックごとに、前記メソッド内で作成さ
れ、かつエスケープしていないオブジェクトの集合を求
めるステップと、 前記ベーシックブロック内の命令を先頭から順に調べ、
各命令の場所で、前記メソッド内で作成され、かつエス
ケープしていないオブジェクトの集合を求めるステップ
とを含むことを特徴とする請求項1に記載のプログラム
変換方法。 - 【請求項4】 コンピュータを用いて、オブジェクト指
向プログラミング言語で記述された実行プログラムのソ
ースコードを読み込み、機械語コードに変換するプログ
ラム変換方法において、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラムのソースコードに基づいて前記
機械語コードを生成し、生成された機械語コードによる
実行プログラムをメモリに格納するステップと、 前記メモリから前記機械語コードによる実行プログラム
を読み出し、当該実行プログラム中のメソッドに関し
て、当該メソッド内で作成されたオブジェクトが外部か
ら参照されない範囲で、メソッド呼び出しを越えてスカ
ラーリプレイスメントを行うステップと、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納するステップとを含むことを特徴とす
るプログラム変換方法。 - 【請求項5】 前記スカラーリプレイスメントを行うス
テップは、 前記実行プログラムのベーシックブロックごとに、前記
メソッド内で作成され、かつグローバルなメモリに書き
込まれていないオブジェクトの集合を求めることによ
り、当該オブジェクトが外部から参照されない範囲を決
定するステップを含むことを特徴とする請求項4に記載
のプログラム変換方法。 - 【請求項6】 オブジェクト指向プログラミング言語で
記述された実行プログラムのソースコードを読み込み、
機械語コードに変換するコンピュータ装置において、 処理対象である前記実行プログラムのソースコードに基
づいて前記機械語コードを生成するコード変換部と、 前記実行プログラム中のメソッドに関して、当該メソッ
ド内で作成されたオブジェクトがエスケープしていない
範囲を求める最適化範囲決定部と、 前記最適化範囲決定部にて求められた前記オブジェクト
がエスケープしていない範囲内でスカラーリプレイスメ
ントを行うスカラーリプレイスメント実行部とを備える
ことを特徴とするコンピュータ装置。 - 【請求項7】 前記スカラーリプレイスメント実行部
は、前記オブジェクトがエスケープしていない範囲内の
メソッド呼び出しを、当該オブジェクトに対するメモリ
アクセスが変更されないものとしてスカラーリプレイス
メントを実行することを特徴とする請求項6に記載のコ
ンピュータ装置。 - 【請求項8】 前記最適化範囲決定部は、 前記実行プログラムに対し、前方データフロー解析によ
りベーシックブロックごとに、前記メソッド内で作成さ
れ、かつエスケープしていないオブジェクトの集合を求
める第1の手段と、 前記ベーシックブロック内の命令を先頭から順に調べ、
各命令の場所で、前記メソッド内で作成され、かつエス
ケープしていないオブジェクトの集合を求める第2の手
段とを備えることを特徴とする請求項6に記載のコンピ
ュータ装置。 - 【請求項9】 オブジェクト指向プログラミング言語で
記述された実行プログラムのソースコードを読み込み、
機械語コードに変換するコンピュータ装置において、 前記実行プログラムのソースコードに基づいて前記機械
語コードを生成するコード変換部と、 前記コード変換部により生成された前記機械語コードの
実行プログラムに対し、当該実行プログラム中のメソッ
ドに関して、当該メソッド内で作成されたオブジェクト
がエスケープしていない範囲内でメソッド呼び出しを越
えてスカラーリプレイスメントを行う最適化部とを備え
ることを特徴とするコンピュータ装置。 - 【請求項10】 オブジェクト指向プログラミング言語
で記述されたプログラムのソースコードをコンパイルし
て機械語コードに変換するコンパイラと、 機械語コードに変換された当該プログラムを実行するプ
ログラム実行部とを備え、 前記コンパイラは、 前記実行プログラムのソースコードに基づいて前記機械
語コードを生成するコード変換部と、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラム中のメソッドに関して、当該メ
ソッド内で作成されたオブジェクトがエスケープしてい
ない範囲を求める最適化範囲決定部と、 前記最適化範囲決定部にて求められた前記オブジェクト
がエスケープしていない範囲内で、当該範囲内のメソッ
ド呼び出しを越えてスカラーリプレイスメントを行うス
カラーリプレイスメント実行部と、 を備えることを特徴とするコンピュータ装置。 - 【請求項11】 コンピュータを制御して、オブジェク
ト指向プログラミング言語で記述された実行プログラム
のソースコードを機械語コードに変換するプログラムで
あって、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラム中のメソッドに関して、当該メ
ソッド内で作成されたオブジェクトがエスケープしてい
ない範囲を求める処理と、 前記オブジェクトがエスケープしていない範囲内でスカ
ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納する処理とを前記コンピュータに実行
させることを特徴とするプログラム。 - 【請求項12】 前記スカラーリプレイスメントを実行
する処理において、前記オブジェクトがエスケープして
いない範囲内のメソッド呼び出しを、当該オブジェクト
に対するメモリアクセスが変更されないものとしてスカ
ラーリプレイスメントを、前記コンピュータに実行させ
ることを特徴とする請求項11に記載のプログラム。 - 【請求項13】 前記オブジェクトがエスケープしてい
ない範囲を求める処理は、 前記実行プログラムに対し、前方データフロー解析によ
りベーシックブロックごとに、前記メソッド内で作成さ
れ、かつエスケープしていないオブジェクトの集合を求
める処理と、 前記ベーシックブロック内の命令を先頭から順に調べ、
各命令の場所で、前記メソッド内で作成され、かつエス
ケープしていないオブジェクトの集合を求める処理とを
含むことを特徴とする請求項11に記載のプログラム。 - 【請求項14】 コンピュータを制御して、オブジェク
ト指向プログラミング言語で記述された実行プログラム
のソースコードを機械語コードに変換するプログラムで
あって、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラムのソースコードに基づいて前記
機械語コードを生成し、生成された機械語コードによる
実行プログラムをメモリに格納する処理と、 前記メモリから前記機械語コードによる実行プログラム
を読み出し、当該実行プログラム中のメソッドに関し
て、当該メソッド内で作成されたオブジェクトが外部か
ら参照されない範囲で、メソッド呼び出しを越えてスカ
ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納する処理とを前記コンピュータに実行
させることを特徴とするプログラム。 - 【請求項15】 前記スカラーリプレイスメントを行う
処理は、 前記実行プログラムのベーシックブロックごとに、前記
メソッド内で作成され、かつグローバルなメモリに書き
込まれていないオブジェクトの集合を求めることによ
り、当該オブジェクトが外部から参照されない範囲を決
定する処理を含むことを特徴とする請求項14に記載の
プログラム。 - 【請求項16】 コンピュータを制御してオブジェクト
指向プログラミング言語で記述された実行プログラムの
ソースコードを機械語コードに変換するプログラムを、
当該コンピュータが読み取り可能に記録した記録媒体で
あって、 前記プログラムは、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラム中のメソッドに関して、当該メ
ソッド内で作成されたオブジェクトがエスケープしてい
ない範囲を求める処理と、 前記オブジェクトがエスケープしていない範囲内でスカ
ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納する処理とを前記コンピュータに実行
させることを特徴とする記録媒体。 - 【請求項17】 コンピュータを制御してオブジェクト
指向プログラミング言語で記述された実行プログラムの
ソースコードを機械語コードに変換するプログラムを、
当該コンピュータが読み取り可能に記録した記録媒体で
あって、 前記プログラムは、 メモリから処理対象である前記実行プログラムを読み出
し、当該実行プログラムのソースコードに基づいて前記
機械語コードを生成し、生成された機械語コードによる
実行プログラムをメモリに格納する処理と、 前記メモリから前記機械語コードによる実行プログラム
を読み出し、当該実行プログラム中のメソッドに関し
て、当該メソッド内で作成されたオブジェクトが外部か
ら参照されない範囲で、メソッド呼び出しを越えてスカ
ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
ムをメモリに格納する処理とを前記コンピュータに実行
させることを特徴とする記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002008904A JP3790707B2 (ja) | 2002-01-17 | 2002-01-17 | プログラム変換方法、これを用いたコンピュータ装置及びプログラム |
US10/342,421 US7240337B2 (en) | 2002-01-17 | 2003-01-14 | Executing scalar replacement in program optimization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002008904A JP3790707B2 (ja) | 2002-01-17 | 2002-01-17 | プログラム変換方法、これを用いたコンピュータ装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003216442A true JP2003216442A (ja) | 2003-07-31 |
JP3790707B2 JP3790707B2 (ja) | 2006-06-28 |
Family
ID=19191466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002008904A Expired - Fee Related JP3790707B2 (ja) | 2002-01-17 | 2002-01-17 | プログラム変換方法、これを用いたコンピュータ装置及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7240337B2 (ja) |
JP (1) | JP3790707B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011013985A (ja) * | 2009-07-02 | 2011-01-20 | Internatl Business Mach Corp <Ibm> | プログラム、装置、および方法 |
US8918622B2 (en) | 2011-01-20 | 2014-12-23 | International Business Machines Corporation | Computer operation control method, program and system |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7117318B1 (en) * | 2003-08-04 | 2006-10-03 | Azul Systems, Inc. | Memory management |
WO2005028627A2 (en) | 2003-09-19 | 2005-03-31 | Netezza Corporation | Performing sequence analysis as a relational join |
US8015556B2 (en) * | 2006-10-12 | 2011-09-06 | International Business Machines Corporation | Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations |
WO2010125960A1 (ja) * | 2009-04-28 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチスレッド上で動作するプログラムのプログラム・コードをロック衝突が少ないプログラム・コードに変換するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム |
US9104577B2 (en) * | 2013-08-27 | 2015-08-11 | International Business Machines Corporation | Optimizing memory bandwidth consumption using data splitting with software caching |
US9823913B2 (en) * | 2015-12-03 | 2017-11-21 | International Business Machines Corporation | Method of adding local variables in place of global in JavaScript |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107418A (en) | 1990-06-11 | 1992-04-21 | Supercomputer Systems Limited Partnership | Method for representing scalar data dependences for an optimizing compiler |
US5710927A (en) * | 1995-06-14 | 1998-01-20 | Kuck & Associates, Inc. | Method of replacing lvalues by variables in programs containing nested aggregates in an optimizing compiler |
US6075942A (en) * | 1998-05-04 | 2000-06-13 | Sun Microsystems, Inc. | Encoding machine-specific optimization in generic byte code by using local variables as pseudo-registers |
US6681385B1 (en) * | 1999-10-07 | 2004-01-20 | Microsoft Corporation | Method and apparatus for determining the relationships and useful lifetime of objects in a program |
US6769004B2 (en) * | 2000-04-27 | 2004-07-27 | Irobot Corporation | Method and system for incremental stack scanning |
US6665865B1 (en) * | 2000-04-27 | 2003-12-16 | Microsoft Corporation | Equivalence class based synchronization optimization |
CA2321018A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Optimizing compilation by forward store movement |
US7185327B2 (en) * | 2001-01-09 | 2007-02-27 | Hewlett-Packard Development Company, L.P. | System and method for optimizing operations via dataflow analysis |
-
2002
- 2002-01-17 JP JP2002008904A patent/JP3790707B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-14 US US10/342,421 patent/US7240337B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011013985A (ja) * | 2009-07-02 | 2011-01-20 | Internatl Business Mach Corp <Ibm> | プログラム、装置、および方法 |
US8336039B2 (en) | 2009-07-02 | 2012-12-18 | International Business Machines Corporation | Program, apparatus, and method of optimizing a Java object |
US8479182B2 (en) | 2009-07-02 | 2013-07-02 | International Business Machines Corporation | Program, apparatus, and method of optimizing a java object |
US8918622B2 (en) | 2011-01-20 | 2014-12-23 | International Business Machines Corporation | Computer operation control method, program and system |
US8930677B2 (en) | 2011-01-20 | 2015-01-06 | International Business Machines Corporation | Computer operation control method, program, and system |
Also Published As
Publication number | Publication date |
---|---|
US7240337B2 (en) | 2007-07-03 |
US20030140336A1 (en) | 2003-07-24 |
JP3790707B2 (ja) | 2006-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7725883B1 (en) | Program interpreter | |
US7966610B2 (en) | Application of optimization techniques to intermediate representations for code generation | |
US6484188B1 (en) | Optimization of garbage collection code in the context of raw native interface function calls in the java programming language | |
US8997040B2 (en) | Variable closure | |
JPH09330233A (ja) | 最適目的コード生成方法 | |
JP2001147819A (ja) | 最適化装置および記録媒体 | |
JPH07129412A (ja) | コンパイル方法及び装置 | |
US8056061B2 (en) | Data processing device and method using predesignated register | |
JP3813087B2 (ja) | プログラム変換方法、コンピュータ装置及びプログラム | |
JP3651774B2 (ja) | コンパイラ及びそのレジスタ割付方法 | |
JPH1139169A (ja) | コンパイル方法,コンパイラ,例外ハンドラ及びプログラム記憶媒体 | |
US20040015925A1 (en) | Method, article of manufacture and apparatus for performing automatic intemodule call linkage optimization | |
JP2003216442A (ja) | プログラム変換方法、これを用いたコンピュータ装置及びプログラム | |
JP4768984B2 (ja) | コンパイル方法、コンパイルプログラムおよびコンパイル装置 | |
JP2009169864A (ja) | コンパイル方法およびコンパイルプログラム | |
US7770152B1 (en) | Method and apparatus for coordinating state and execution context of interpreted languages | |
JP5447774B2 (ja) | プリフェッチ命令生成方法、コンパイラ、及びプログラム | |
JP3871312B2 (ja) | プログラム変換方法、これを用いたデータ処理装置及びプログラム | |
JP4093484B2 (ja) | コンパイラ、コンパイル方法、コンパイルプログラム、及び記録媒体 | |
US20060048116A1 (en) | Method, system and program product for implementing single threaded optimizations in a potentially multi-threaded environment | |
JP3430635B2 (ja) | 定数参照最適化処理装置 | |
JPH11212807A (ja) | プログラム実行方法 | |
JPH0689187A (ja) | インライン展開最適化方法 | |
JPH11175351A (ja) | プログラム変換装置、高級言語プログラム内アセンブラ表現方法および記録媒体 | |
JP2004139369A (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 | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060322 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20060322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060403 |
|
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: 20090407 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100407 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110407 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110407 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |