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
Application number
JP2002008904A
Other languages
English (en)
Other versions
JP3790707B2 (ja
Inventor
Motohiro Kawahito
基弘 川人
Hideaki Komatsu
秀昭 小松
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 JP2002008904A priority Critical patent/JP3790707B2/ja
Priority to US10/342,421 priority patent/US7240337B2/en
Publication of JP2003216442A publication Critical patent/JP2003216442A/ja
Application granted granted Critical
Publication of JP3790707B2 publication Critical patent/JP3790707B2/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

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)【要約】 【課題】 プログラムの最適化において、メソッド内の
解析を行うことなく、より効果的にスカラーリプレイス
メントを行えるようにする。 【解決手段】 処理対象である実行プログラムのソース
コードに基づいて機械語コードを生成するコード変換部
110と、この機械語コードによる実行プログラム中の
メソッドに関して、このメソッド内で作成されたオブジ
ェクトがエスケープしていない範囲を求める最適化範囲
決定部120と、このオブジェクトがエスケープしてい
ない範囲内でスカラーリプレイスメントを行うスカラー
リプレイスメント実行部130とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム中のス
カラーリプレイスメント(scalar replacement)によ
り、プログラムの実行効率の向上を図る方法に関する。
【0002】
【従来の技術】プログラムを最適化する手法に、グロー
バルなメモリ上にある変数をメソッド内でローカルな場
所(ローカル変数など)に置き換える、スカラーリプレ
イスメントという手法がある。この最適化は、「メモリ
アクセスのコストを減らす」という効果もあるが、それ
だけではなく、置き換えた変数の生存区間が大きく広が
るため、その後の最適化(共通部分式の除去等)の効果
を大幅に高めるという副次的な効果があることでも知ら
れている。
【0003】このスカラーリプレイスメントを行う場
合、プログラム中に存在するメソッド呼び出しが支障と
なる。すなわち、グローバルなメモリ上にある変数の値
は、呼び出されたメソッド内で変更される可能性がある
ため、単純にメソッド呼び出しを越えて最適化すること
ができなかった。
【0004】従来、メソッド呼び出しを越えてメモリア
クセスを最適化するためには、エスケープアナリシス
(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)
【0005】
【発明が解決しようとする課題】しかしながら、上記の
ように、エスケープアナリシスを用いた最適化は、メソ
ッド内に一個所でもエスケープしている部分がある場合
には、当該メソッドに対して最適化を行うことができな
かった。また、エスケープアナリシスによる呼び出しメ
ソッド内の解析は、多大な処理コストが必要であるた
め、導入することが困難な場合があった。例えば、Ja
vaにおけるJIT(Just In Time)コンパイラのよう
なコンパイル時間に影響を受けるコンパイラに適用する
には、メソッドサイズ等を考慮した非常に厳しい制限が
行われていた。さらに、動的なコール命令などのため
に、呼び出しメソッド内の解析そのものが全くできない
場合もあった。
【0006】そこで、本発明は、プログラムの最適化に
おいて、呼び出しメソッド内の解析を行うことなく、よ
り効果的にスカラーリプレイスメントを行えるようにす
ることを目的とする。
【0007】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、コンピュータを用いてオブジェクト指向
プログラミング言語で記述された実行プログラムのソー
スコードを読み込み、機械語コードに変換する、次のよ
うなプログラム変換方法として実現される。すなわち、
このプログラム変換方法は、処理対象である実行プログ
ラム中のメソッドに関して、このメソッド内で作成され
たオブジェクトがエスケープしていない範囲を求めるス
テップと、このオブジェクトがエスケープしていない範
囲内でスカラーリプレイスメントを行うステップと、ス
カラーリプレイスメントを施された実行プログラムをメ
モリに格納するステップとを含むことを特徴とする。
【0008】ここで、このスカラーリプレイスメントを
実行するステップでは、好ましくは、オブジェクトがエ
スケープしていない範囲内のメソッド呼び出しについ
て、このオブジェクトに対するメモリアクセスが変更さ
れないものとしてスカラーリプレイスメントを実行す
る。また、このオブジェクトがエスケープしていない範
囲を求めるステップは、詳しくは、実行プログラムに対
し、前方データフロー解析によりベーシックブロックご
とに、このメソッド内で作成され、かつエスケープして
いないオブジェクトの集合を求めるステップと、このベ
ーシックブロック内の命令を先頭から順に調べ、各命令
の場所で、このメソッド内で作成され、かつエスケープ
していないオブジェクトの集合を求めるステップとを含
む。
【0009】また、本発明による他のプログラム変換方
法は、処理対象である実行プログラムのソースコードに
基づいて機械語コードを生成するステップと、生成され
た機械語コードによる実行プログラム中のメソッドに関
して、このメソッド内で作成されたオブジェクトが外部
から参照されない範囲で、メソッド呼び出しを越えてス
カラーリプレイスメントを行うステップとを含むことを
特徴とする。
【0010】ここで、このスカラーリプレイスメントを
行うステップは、詳しくは、実行プログラムのベーシッ
クブロックごとに、メソッド内で作成され、かつグロー
バルなメモリに書き込まれていないオブジェクトの集合
を求めることにより、このオブジェクトが外部から参照
されない範囲を決定するステップを含む。
【0011】また、上記の目的を達成する他の本発明
は、オブジェクト指向プログラミング言語で記述された
実行プログラムのソースコードを読み込み、機械語コー
ドに変換する、次のように構成されたコンピュータ装置
として実現される。すなわち、このコンピュータ装置
は、処理対象である実行プログラムのソースコードに基
づいて機械語コードを生成するコード変換部と、この機
械語コードによる実行プログラム中のメソッドに関し
て、このメソッド内で作成されたオブジェクトがエスケ
ープしていない範囲を求める最適化範囲決定部と、この
オブジェクトがエスケープしていない範囲内でスカラー
リプレイスメントを行うスカラーリプレイスメント実行
部とを備えることを特徴とする。
【0012】ここで、このスカラーリプレイスメント実
行部は、好ましくは、オブジェクトがエスケープしてい
ない範囲内のメソッド呼び出しを、当該オブジェクトに
対するメモリアクセスが変更されないものとしてスカラ
ーリプレイスメントを実行する。さらに、最適化範囲決
定部は、より詳しくは、実行プログラムに対し、前方デ
ータフロー解析によりベーシックブロックごとに、メソ
ッド内で作成され、かつエスケープしていないオブジェ
クトの集合を求める第1の手段と、このベーシックブロ
ック内の命令を先頭から順に調べ、各命令の場所で、メ
ソッド内で作成され、かつエスケープしていないオブジ
ェクトの集合を求める第2の手段とを備える。
【0013】また、本発明による他のコンピュータ装置
は、実行プログラムのソースコードに基づいて機械語コ
ードを生成するコード変換部と、コード変換部により生
成された機械語コードの実行プログラムに対し、この実
行プログラム中のメソッドに関して、このメソッド内で
作成されたオブジェクトがエスケープしていない範囲内
でメソッド呼び出しを越えてスカラーリプレイスメント
を行う最適化部とを備えることを特徴とする。
【0014】上記のコンピュータ装置は、機械語コード
に変換された実行プログラムを実行するプログラム実行
部をさらに備える構成とすることもできる。さらにま
た、本発明は、コンピュータを制御して上述したプログ
ラム変換方法や各種の機能を実現するプログラムとして
実現することができる。このプログラムは、磁気ディス
クや光ディスク、半導体メモリ、その他の記録媒体に格
納して配布したり、ネットワークを介して配信したりす
ることにより提供することができる。
【0015】
【発明の実施の形態】以下、添付図面に示す実施の形態
に基づいて、この発明を詳細に説明する。図1は、本実
施の形態による最適化方法を実現するコンピュータシス
テムのシステム構成を示す図である。図1を参照する
と、本実施の形態におけるコンピュータシステムは、ソ
ースプログラム(入力コードまたはソースコード)をコ
ンパイルするコンパイラ100と、コンパイラ100に
てコンパイルされたオブジェクトプログラム(出力コー
ドまたはオブジェクトコード)を実行して種々の処理を
行うプログラム実行部200とを備える。コンパイラ1
00及びプログラム実行部200は、パーソナルコンピ
ュータやワークステーションなどのコンピュータ装置に
おけるプログラム制御されたCPU及びRAM等のメモ
リにて実現される。図示しないメモリには、CPUを制
御してコンパイラ100あるいはプログラム実行部20
0として動作させるためのプログラムやコンパイルの対
象となるプログラムが格納される。なお、メモリに格納
されるプログラムは、必要に応じて、適宜磁気ディスク
その他の記録媒体に退避、保存されることは言うまでも
ない。
【0016】図1において、コンパイラ100は、コー
ド入力部300から所定のプログラム言語やバイトコー
ド(byte code)で記述されたプログラム(コンパイル
対象のプログラム、以下、実行プログラムと称す)のソ
ースコードを入力して処理し、機械語で記述されたオブ
ジェクトコードを生成して出力する。このコード入力部
300は、ソースコードを生成するコード生成装置や、
当該コード生成装置にて生成されたソースコードを記憶
した記憶装置(磁気ディスク装置など)にて実現され
る。また、ネットワーク上に存在するコード生成装置や
記憶装置から当該ネットワークを介してソースコードを
入力するネットワークインターフェイスにて実現するこ
ともできる。コンパイラ100により生成された実行プ
ログラムのオブジェクトコードは、プログラム実行部2
00により実行される。なお、本実施の形態において、
コンパイラ100は、JavaにおけるJIT(Just I
n Time)コンパイラのような、プログラム実行部200
が実行プログラムを実行する際に動的にコンパイル処理
を行うコンパイラであっても良いし、ソースプログラム
を予めコンパイルして生成されたオブジェクトプログラ
ムを実行プログラムとする使用形態におけるコンパイラ
であっても良い。また、コンパイラ100とプログラム
実行部200とは、単一のコンピュータ装置に設けても
良いし、別個のコンピュータ装置においてコンパイラ1
00とプログラム実行部200とを実現する構成として
も良い。
【0017】図2は、本実施の形態におけるコンパイラ
100の構成を説明する図である。本実施の形態のコン
パイラ100は、コンパイルされたプログラムコードに
対して、次の手法による最適化を実行する。すなわち、 ・メソッド内のnew、newarray等で作成されたオブジェ
クトObjについて、エスケープしていない(すなわ
ち、当該メソッドの外から当該オブジェクトObjを参
照できない)範囲R(Obj)を求める。 ・範囲R(Obj)内のメソッド呼び出しに対し、オブ
ジェクトObjに対するメモリアクセスは変更されない
ものとして扱ってスカラーリプレイスメントを行う。
【0018】図2を参照すると、コンパイラ100は、
ソースコードをオブジェクトコードに変換するコード変
換部110と、コード変換部110にて生成されたオブ
ジェクトコードに対して上述した範囲R(Obj)を決
定する最適化範囲決定部120と、最適化範囲決定部1
20により決定された範囲R(Obj)内のメソッド呼
び出しに対してスカラーリプレイスメントを行うスカラ
ーリプレイスメント実行部130とを備える。ここで、
最適化範囲決定部120及びスカラーリプレイスメント
実行部130が上述した最適化を行う最適化部として機
能する。図2に示したコンパイラ100の各構成要素
は、プログラム制御されたCPUにて実現される仮想的
なソフトウェアブロックである。なお、図2に示したコ
ンパイラ100の構成要素は、本実施の形態における特
徴的な機能に関するものである。特に図示しないが、実
際にはコンパイラ100は、コード変換のために必要な
ソースコードの字句解析や構文解析、本実施の形態によ
る最適化以外の各種の最適化処理といったコンパイル処
理における一般的な機能をさらに有することは言うまで
もない。
【0019】上記のように構成されたコンパイラ100
は、処理対象である実行プログラムを入力してメモリに
保持する。そして、当該メモリから実行プログラムを読
み出して字句解析や構文解析を行った後、これらの解析
で得られた情報に基づいて、コード変換部110により
オブジェクトコードを生成する。生成されたオブジェク
トコードはメモリに格納される。
【0020】コンパイラ100の最適化範囲決定部12
0は、コード変換部110にて生成されたオブジェクト
コードをメモリから読み出し、上述したように、このオ
ブジェクトコードを対象として、範囲R(Obj)を求
める。具体的な処理としては、まず、次の数1式で示さ
れる前方データフロー解析を使って、ベーシックブロッ
クnの先頭で「メソッド内でnew、newarray等で作成さ
れ、まだエスケープしていないオブジェクト」と判断さ
れるオブジェクトの集合In(n)を求める。そして、
求まった集合In(n)に基づいて、ベーシックブロッ
クn内の命令を先頭から順に調べながら、各命令の場所
で「メソッド内でnew, newarray等で作成され、まだエ
スケープしていないオブジェクト」の集合を求め、当該
集合に含まれるオブジェクトの範囲を範囲R(Obj)
とする。
【数1】 ここで、Gen(n)は、ベーシックブロックn内でne
w、newarray等で作成され、ベーシックブロックnの最
後の点で、まだエスケープしていないオブジェクトの集
合である。Kill(n)は、ベーシックブロックn内
でエスケープするオブジェクトの集合である。また、ベ
ーシックブロックとは、ストレートコード、すなわちコ
ントロールフローが途中に入ることもなく、途中から出
ることもないようなコード列の範囲をブロックで認識し
たものである。
【0021】図3は、最適化範囲決定部120にて実行
される、前方データフロー解析によりオブジェクトの集
合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を計算する)を実際
に計算している部分である。
【0022】ステップ303またはステップ305にお
いて、ベーシックブロックnの直前にベーシックブロッ
ク(ブロックm)が存在しない場合、次に最適化範囲決
定部120は、ステップ302で生成された集合OldIn
と集合Inとを比較する。そして、両者の内容が異なっ
ているならば、changeのフラグを立てる(ステップ30
7)。
【0023】次に、最適化範囲決定部120は、後で集
合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)。
【0024】以上の処理の後、最適化範囲決定部120
は、パラメータnを1加算し(ステップ311)、新た
なnの値がベーシックブロックの数に達したかどうかを
調べる。そして、nの値がベーシックブロックの数に達
するまで(すなわち、全てのベーシックブロックに対し
て処理が終了するまで)ステップ302乃至ステップ3
10の処理を繰り返す(ステップ312)。全てのベー
シックブロックに対して処理が終了したならば、次に最
適化範囲決定部120は、changeのフラグが立っている
集合があるかどうかを調べ、全てのchangeのフラグが立
たなくなるまで(すなわち、収束するまで)ステップ3
01乃至ステップ312の処理を繰り返す(ステップ3
13)。
【0025】上述したように、最適化範囲決定部120
は、この後、上記のようにして求まった集合In(n)
に基づいて、ベーシックブロックn内の命令を先頭から
順に調べ、範囲R(Obj)を決定する。
【0026】コンパイラ100のスカラーリプレイスメ
ント実行部130は、最適化範囲決定部120にて決定
された範囲R(Obj)内のメソッド呼び出しについ
て、オブジェクトObjに対するメモリアクセスは変更
されないものとして扱って(すなわち、メソッド呼び出
しを越えて)、スカラーリプレイスメントを行う。そし
てさらに、スカラーリプレイスメントされたメソッド呼
び出し命令の処理の中で、「メソッド呼び出しでメモリ
の値が変わる可能性があるので、このメソッド呼び出し
を越えて最適化できない」という処理をしている部分
を、次のように2つの場合に応じた処理に変更する。・
当該部分がこの命令の場所で求まった、メソッド内でne
w、newarray等で作成され、まだエスケープしていない
オブジェクトの集合であるならば、このメソッド呼び出
しでオブジェクト内のメモリの値が絶対に変わらないの
で、このメソッド呼び出しを越えて最適化できる。・当
該部分がこの命令の場所で求まった、メソッド内でne
w、newarray等で作成され、まだエスケープしていない
オブジェクトの集合でないならば、このメソッド呼び出
しでオブジェクト内のメモリの値が変わる可能性がある
ので、このメソッド呼び出しを越えて最適化できない。
図4は、この処理の変更のアルゴリズムを示す図であ
る。以上のようにしてスカラーリプレイスメントによる
最適化を施された実行プログラムは、必要に応じてさら
に他の最適化を施された後にメモリに格納され、プログ
ラム実行部200により読み出されて実行されることと
なる。
【0027】次に、本実施の形態を実際のプログラムに
適用した場合の最適化の実行例を説明する。図5は、適
用対象のプログラムを例示する図である。図5に示すプ
ログラムにおいて、従来のエスケープアナリシスでは、
メソッド呼び出しfoo(D, E)が存在するため、このメソ
ッド呼び出しfoo(D, E)の中を解析し、Obj.xの値が変わ
らないことが保証されなければ、Obj.xのアクセスを最
適化することができない。この解析に多大な処理コスト
を要する他、メソッド呼び出しによっては、そのような
解析ができないために、スカラーリプレイスメントによ
る最適化を行うことができない。
【0028】本実施の形態では、図5のプログラムに対
して、まず最適化範囲決定部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)と
なる。
【0029】次に、スカラーリプレイスメント実行部1
30により、範囲R(Obj)に対するスカラーリプレ
イスメントが行われる。図7は、図6に示した範囲R
(Obj)に対してスカラーリプレイスメントを実行し
た様子を示す図である。図7において、3行目のfoo(D,
E)について、当該部分がメソッド内でnewによって作成
され、まだエスケープしていないオブジェクトの集合に
含まれていることから、オブジェクトObjは、ここのfoo
の中から絶対にアクセスできないことがわかる。したが
って、Objに対するメモリアクセスに関し、このメソッ
ドコールをKillにする必要は無い。また、4行目は、ス
カラーリプレイスメントにより、b = a(2行目参照)
に置き換えられ、メモリからのロードがなくなっている
(最適化されている)。
【0030】これに対して、6行目のfoo(D, E)は5行
目のD.obj = ObjによりObjがエスケープした後のメソッ
ド呼び出しであるため、変数の値が呼び出されたメソッ
ドfoo(D, E)内で変更される可能性がある。そのため、
次のc=Obj.x;は4行目のように最適化することはできな
い。
【0031】以上のようにして、本実施の形態によれ
ば、メソッド中に他のメソッドに対するメソッド呼び出
しが存在していても、当該メソッド内で定義されたオブ
ジェクトに関して、当該オブジェクトがエスケープしな
い範囲でスカラーリプレイスメントによる最適化を行う
ことが可能となる。また、メソッドが動的なコール命令
を含む場合にも、以上の手法をそのまま利用して、当該
メソッド内で定義されたオブジェクトに関して、当該オ
ブジェクトがエスケープしない範囲でスカラーリプレイ
スメントによる最適化を行うことが可能となる。さら
に、エスケープアナリシスによる解析が不要であるた
め、当該解析処理に要する処理コストが削減され、Ja
vaにおけるJITコンパイラのような動的なコンパイ
ラに好適である。
【0032】
【発明の効果】以上説明したように、本発明によれば、
プログラムの最適化において、メソッド内の解析を行う
ことなく、より効果的にスカラーリプレイスメントを行
うことが可能となる。
【図面の簡単な説明】
【図1】 本実施の形態による最適化方法を実現するコ
ンピュータシステムのシステム構成を示す図である。
【図2】 本実施の形態におけるコンパイラの構成を説
明する図である。
【図3】 本実施の形態の最適化範囲決定部によるオブ
ジェクトの集合In(n)を求める処理の詳細を説明す
るフローチャートである。
【図4】 本実施の形態のスカラーリプレイスメントを
行った後における処理の変更のアルゴリズムを示す図で
ある。
【図5】 本実施の形態の適用対象であるプログラムを
例示する図である。
【図6】 図5のプログラムに対して、範囲R(Ob
j)を決定した様子を示す図である。
【図7】 図6に示した範囲R(Obj)に対してスカ
ラーリプレイスメントを実行した様子を示す図である。
【符号の説明】
100…コンパイラ、110…コード変換部、120…
最適化範囲決定部、130…スカラーリプレイスメント
実行部、200…プログラム実行部、300…コード入
力部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川人 基弘 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 (72)発明者 小松 秀昭 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 東京基礎研究所 内 Fターム(参考) 5B081 AA09 CC28

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータを用いて、オブジェクト指
    向プログラミング言語で記述された実行プログラムのソ
    ースコードを読み込み、機械語コードに変換するプログ
    ラム変換方法において、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラム中のメソッドに関して、当該メ
    ソッド内で作成されたオブジェクトがエスケープしてい
    ない範囲を求めるステップと、 前記オブジェクトがエスケープしていない範囲内でスカ
    ラーリプレイスメントを行うステップと、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納するステップとを含むことを特徴とす
    るプログラム変換方法。
  2. 【請求項2】 前記スカラーリプレイスメントを実行す
    るステップは、前記オブジェクトがエスケープしていな
    い範囲内のメソッド呼び出しについて、当該オブジェク
    トに対するメモリアクセスが変更されないものとしてス
    カラーリプレイスメントを実行するステップを含むこと
    を特徴とする請求項1に記載のプログラム変換方法。
  3. 【請求項3】 前記オブジェクトがエスケープしていな
    い範囲を求めるステップは、 前記実行プログラムに対し、前方データフロー解析によ
    りベーシックブロックごとに、前記メソッド内で作成さ
    れ、かつエスケープしていないオブジェクトの集合を求
    めるステップと、 前記ベーシックブロック内の命令を先頭から順に調べ、
    各命令の場所で、前記メソッド内で作成され、かつエス
    ケープしていないオブジェクトの集合を求めるステップ
    とを含むことを特徴とする請求項1に記載のプログラム
    変換方法。
  4. 【請求項4】 コンピュータを用いて、オブジェクト指
    向プログラミング言語で記述された実行プログラムのソ
    ースコードを読み込み、機械語コードに変換するプログ
    ラム変換方法において、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラムのソースコードに基づいて前記
    機械語コードを生成し、生成された機械語コードによる
    実行プログラムをメモリに格納するステップと、 前記メモリから前記機械語コードによる実行プログラム
    を読み出し、当該実行プログラム中のメソッドに関し
    て、当該メソッド内で作成されたオブジェクトが外部か
    ら参照されない範囲で、メソッド呼び出しを越えてスカ
    ラーリプレイスメントを行うステップと、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納するステップとを含むことを特徴とす
    るプログラム変換方法。
  5. 【請求項5】 前記スカラーリプレイスメントを行うス
    テップは、 前記実行プログラムのベーシックブロックごとに、前記
    メソッド内で作成され、かつグローバルなメモリに書き
    込まれていないオブジェクトの集合を求めることによ
    り、当該オブジェクトが外部から参照されない範囲を決
    定するステップを含むことを特徴とする請求項4に記載
    のプログラム変換方法。
  6. 【請求項6】 オブジェクト指向プログラミング言語で
    記述された実行プログラムのソースコードを読み込み、
    機械語コードに変換するコンピュータ装置において、 処理対象である前記実行プログラムのソースコードに基
    づいて前記機械語コードを生成するコード変換部と、 前記実行プログラム中のメソッドに関して、当該メソッ
    ド内で作成されたオブジェクトがエスケープしていない
    範囲を求める最適化範囲決定部と、 前記最適化範囲決定部にて求められた前記オブジェクト
    がエスケープしていない範囲内でスカラーリプレイスメ
    ントを行うスカラーリプレイスメント実行部とを備える
    ことを特徴とするコンピュータ装置。
  7. 【請求項7】 前記スカラーリプレイスメント実行部
    は、前記オブジェクトがエスケープしていない範囲内の
    メソッド呼び出しを、当該オブジェクトに対するメモリ
    アクセスが変更されないものとしてスカラーリプレイス
    メントを実行することを特徴とする請求項6に記載のコ
    ンピュータ装置。
  8. 【請求項8】 前記最適化範囲決定部は、 前記実行プログラムに対し、前方データフロー解析によ
    りベーシックブロックごとに、前記メソッド内で作成さ
    れ、かつエスケープしていないオブジェクトの集合を求
    める第1の手段と、 前記ベーシックブロック内の命令を先頭から順に調べ、
    各命令の場所で、前記メソッド内で作成され、かつエス
    ケープしていないオブジェクトの集合を求める第2の手
    段とを備えることを特徴とする請求項6に記載のコンピ
    ュータ装置。
  9. 【請求項9】 オブジェクト指向プログラミング言語で
    記述された実行プログラムのソースコードを読み込み、
    機械語コードに変換するコンピュータ装置において、 前記実行プログラムのソースコードに基づいて前記機械
    語コードを生成するコード変換部と、 前記コード変換部により生成された前記機械語コードの
    実行プログラムに対し、当該実行プログラム中のメソッ
    ドに関して、当該メソッド内で作成されたオブジェクト
    がエスケープしていない範囲内でメソッド呼び出しを越
    えてスカラーリプレイスメントを行う最適化部とを備え
    ることを特徴とするコンピュータ装置。
  10. 【請求項10】 オブジェクト指向プログラミング言語
    で記述されたプログラムのソースコードをコンパイルし
    て機械語コードに変換するコンパイラと、 機械語コードに変換された当該プログラムを実行するプ
    ログラム実行部とを備え、 前記コンパイラは、 前記実行プログラムのソースコードに基づいて前記機械
    語コードを生成するコード変換部と、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラム中のメソッドに関して、当該メ
    ソッド内で作成されたオブジェクトがエスケープしてい
    ない範囲を求める最適化範囲決定部と、 前記最適化範囲決定部にて求められた前記オブジェクト
    がエスケープしていない範囲内で、当該範囲内のメソッ
    ド呼び出しを越えてスカラーリプレイスメントを行うス
    カラーリプレイスメント実行部と、 を備えることを特徴とするコンピュータ装置。
  11. 【請求項11】 コンピュータを制御して、オブジェク
    ト指向プログラミング言語で記述された実行プログラム
    のソースコードを機械語コードに変換するプログラムで
    あって、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラム中のメソッドに関して、当該メ
    ソッド内で作成されたオブジェクトがエスケープしてい
    ない範囲を求める処理と、 前記オブジェクトがエスケープしていない範囲内でスカ
    ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納する処理とを前記コンピュータに実行
    させることを特徴とするプログラム。
  12. 【請求項12】 前記スカラーリプレイスメントを実行
    する処理において、前記オブジェクトがエスケープして
    いない範囲内のメソッド呼び出しを、当該オブジェクト
    に対するメモリアクセスが変更されないものとしてスカ
    ラーリプレイスメントを、前記コンピュータに実行させ
    ることを特徴とする請求項11に記載のプログラム。
  13. 【請求項13】 前記オブジェクトがエスケープしてい
    ない範囲を求める処理は、 前記実行プログラムに対し、前方データフロー解析によ
    りベーシックブロックごとに、前記メソッド内で作成さ
    れ、かつエスケープしていないオブジェクトの集合を求
    める処理と、 前記ベーシックブロック内の命令を先頭から順に調べ、
    各命令の場所で、前記メソッド内で作成され、かつエス
    ケープしていないオブジェクトの集合を求める処理とを
    含むことを特徴とする請求項11に記載のプログラム。
  14. 【請求項14】 コンピュータを制御して、オブジェク
    ト指向プログラミング言語で記述された実行プログラム
    のソースコードを機械語コードに変換するプログラムで
    あって、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラムのソースコードに基づいて前記
    機械語コードを生成し、生成された機械語コードによる
    実行プログラムをメモリに格納する処理と、 前記メモリから前記機械語コードによる実行プログラム
    を読み出し、当該実行プログラム中のメソッドに関し
    て、当該メソッド内で作成されたオブジェクトが外部か
    ら参照されない範囲で、メソッド呼び出しを越えてスカ
    ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納する処理とを前記コンピュータに実行
    させることを特徴とするプログラム。
  15. 【請求項15】 前記スカラーリプレイスメントを行う
    処理は、 前記実行プログラムのベーシックブロックごとに、前記
    メソッド内で作成され、かつグローバルなメモリに書き
    込まれていないオブジェクトの集合を求めることによ
    り、当該オブジェクトが外部から参照されない範囲を決
    定する処理を含むことを特徴とする請求項14に記載の
    プログラム。
  16. 【請求項16】 コンピュータを制御してオブジェクト
    指向プログラミング言語で記述された実行プログラムの
    ソースコードを機械語コードに変換するプログラムを、
    当該コンピュータが読み取り可能に記録した記録媒体で
    あって、 前記プログラムは、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラム中のメソッドに関して、当該メ
    ソッド内で作成されたオブジェクトがエスケープしてい
    ない範囲を求める処理と、 前記オブジェクトがエスケープしていない範囲内でスカ
    ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納する処理とを前記コンピュータに実行
    させることを特徴とする記録媒体。
  17. 【請求項17】 コンピュータを制御してオブジェクト
    指向プログラミング言語で記述された実行プログラムの
    ソースコードを機械語コードに変換するプログラムを、
    当該コンピュータが読み取り可能に記録した記録媒体で
    あって、 前記プログラムは、 メモリから処理対象である前記実行プログラムを読み出
    し、当該実行プログラムのソースコードに基づいて前記
    機械語コードを生成し、生成された機械語コードによる
    実行プログラムをメモリに格納する処理と、 前記メモリから前記機械語コードによる実行プログラム
    を読み出し、当該実行プログラム中のメソッドに関し
    て、当該メソッド内で作成されたオブジェクトが外部か
    ら参照されない範囲で、メソッド呼び出しを越えてスカ
    ラーリプレイスメントを行う処理と、 前記スカラーリプレイスメントを施された実行プログラ
    ムをメモリに格納する処理とを前記コンピュータに実行
    させることを特徴とする記録媒体。
JP2002008904A 2002-01-17 2002-01-17 プログラム変換方法、これを用いたコンピュータ装置及びプログラム Expired - Fee Related JP3790707B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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