JP5016288B2 - 最適化処理方法、及びその言語処理系 - Google Patents

最適化処理方法、及びその言語処理系 Download PDF

Info

Publication number
JP5016288B2
JP5016288B2 JP2006284733A JP2006284733A JP5016288B2 JP 5016288 B2 JP5016288 B2 JP 5016288B2 JP 2006284733 A JP2006284733 A JP 2006284733A JP 2006284733 A JP2006284733 A JP 2006284733A JP 5016288 B2 JP5016288 B2 JP 5016288B2
Authority
JP
Japan
Prior art keywords
branch
references
true
result
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.)
Expired - Fee Related
Application number
JP2006284733A
Other languages
English (en)
Other versions
JP2008102740A (ja
Inventor
雄司 千葉
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006284733A priority Critical patent/JP5016288B2/ja
Publication of JP2008102740A publication Critical patent/JP2008102740A/ja
Application granted granted Critical
Publication of JP5016288B2 publication Critical patent/JP5016288B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

本発明は,プログラミング言語向け言語処理系における最適化処理技術に関するものである。
オブジェクト指向のプログラミングでは,条件分岐のコードを記述することがしばしばある。図1のコードは条件分岐のコードであって,2つの条件のいずれかが成立した場合に分岐をおこなう。具体的には,まず,2つの変数o1,o2が格納する参照が等しいか比較し,比較結果が真であれば分岐し,if文に続く中括弧内の処理をおこなう。さもなければ変数o1が指示するインスタンスをレシーバとしてメソッドequals()を呼び出す。ここでメソッドequals()は,引数としてうけとった参照が指示するインスタンスと,レシーバが等価か検証するためのメソッドであるとする。そして,メソッド呼出しの結果が真であれば分岐し,if文に続く中括弧内の処理をおこなう。分岐をおこなわなかった場合にはif文に続く中括弧内の処理を飛ばして処理を先に進める。
ところで,図1のコードは,最初の分岐条件である参照同士の比較を省いた図2のコードと実質的に同じ役割を果たす場合が多い。図1のコードと図2のコードを比較すると,図1の方が,コード量が多いことが判る。それにもかかわらず,プログラマがしばしば,図2のコードではなく,図1のコードを書くことの目的は,メソッド呼出しによる実行速度の劣化を回避することにある。メソッド呼出しの実行に大きなコストがかかることが多く,もし,よりコストの小さい参照同士の比較によって,等価だと確かめることができるなら,その方がメソッド呼出しを回避できる分,実行を高速化できる。
既存のコンパイラは,図1のコードに対して,最適化を適用することがある(非特許文献1)。具体的には,フロー解析の結果,参照同士の比較結果が必ず真または偽になると判った場合には,比較の処理を,真または偽で置き換え,比較の手間を省く。なお,最適化は適用すると必ず性能を改善できる類のものだが,最適化の中には,適用すると逆に性能劣化を招きうるものもある。そこで既存のコンパイラの中には,最適化をどう適用するべきか判断するために,実行プロファイルを用いるものもある(非特許文献2)。
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman: Compilers Principles, Techniques, and Tools, pp.592, Addison-Wesley, 1986. Karl Pettis and Robert C. Hansen: Profile Guided Code Positioning, Proceedings of the ACM SIGPLAN 1990 conference on Programming Language Design and Implementation, pp.16-27, 1990.
図1のコードの実行には,図2のコードを実行する場合より,大きなコストがかかる場合がある。具体的には,参照同士の比較結果が偽の場合,図1のコードではメソッド呼出しに加えて参照同士の比較もおこなうことから,メソッド呼出しのみをおこなう図2のコードより,実行に大きなコストがかかる。したがって参照同士の比較結果が頻繁に偽になる場合には,図1のコードを使うと,図2のコードを使う場合よりも,むしろプログラムの実行が遅くなるという問題がおきる。
本発明は、冗長な参照間の比較を除去することにより実行効率をあげうる、言語処理系における最適化処理方法、及びそのプログラムを提供することを目的とする。
上記目的を達成するため、本発明においては、記憶部と処理部とを有する計算機システムの処理部で実行されるコンパイラにおける最適化処理方法であって,コンパイラによるコンパイル対象のコード中にある条件分岐のうち,2つの参照の指示するインスタンスが等価か否かを参照間の比較演算によって確認し,その演算結果が真であった場合に分岐先に分岐し,真でなければ,2つの参照の指示するインスタンスの等価性を検証するためのメソッドを呼び出し,メソッドの返戻値が真であった場合に分岐先に分岐するものを求め,求めた条件分岐から,参照間の比較演算とその演算結果に応じた分岐を除去しても,実行結果が変化しないか否かを調査し,この調査の結果が真ならば,条件分岐から,参照間の比較演算とその演算結果が真であった場合に分岐する処理を除去する最適化処理方法、及びその言語処理系を構成する。
また,本発明においては、コンパイル対象のプログラムに関する実行プロファイルが利用可能である場合には,条件分岐中にある比較演算結果が真となる頻度を求め,頻度が小さいと判断した場合に限って上記の除去を実施する最適化処理方法、及びその言語処理系を構成する。
なお、本明細書において、「言語処理系」とは、プログラミング言語で記述されたプログラムを計算機上で実行するためのソフトウエアのことを言う。また、プロセッサを処理部、主記憶とハードディスクを記憶部と呼ぶことがある。
冗長な比較演算および分岐処理の除去により,プログラムの実行を高速化できる。
本発明を実施する最良の言語処理系、及びそれを用いた計算機システムは,コンパイラと,ソースコード中にある個々の分岐の分岐確率を求める処理系からなる。分岐確率を求める処理系は,プロファイラや,あるいは分岐確率を静的に解析する処理系,プログラマがソースコード上に記述した分岐確率に関する指示文を解釈する処理系として実現できる。以下、本発明の最良の実施形態を、図面を用いて説明する。
本発明の第一の実施例である、言語処理系とそれを実行する計算機システムを図3に示す。図3の計算機システムはプロセッサ301,主記憶302,ハードディスク303,DVD−ROM(Digital Versatile Disc Read Only Memory)読み取り装置304と,これらを結ぶバス305からなる。図3の計算機システムは,DVD−ROM306から,本実施例の言語処理系307を読み取り,バス305を介してハードディスク303にインストールする。なお、言語処理系のインストールは、DVD−ROM306のような可搬記録媒体を使う場合のみならず、計算機システムの図示されていないネットワークインターフェースを用い、ネットワークからインストールすることも可能である。本実施例の言語処理系を実行する際には,ハードディスク303にインストールした言語処理系307を,バス305を介して主記憶302に読み込み,プロセッサ301で実行する。
さて、図3に明らかなように、言語処理系307は,静的コンパイラ308と実行環境309から構成され,実行環境309は,インタプリタ310と動的コンパイラ311,実行時ライブラリ312を含む。インタプリタ310はプロファイラ313を含み,動的コンパイラ311は最適化処理314を含む。
次に、本実施例の言語処理系307を使って,ソースコード315に記述したプログラムを実行するまでの過程を図4に示す。上述の通り、言語処理系307は主記憶302に読み込まれ,プロセッサ301で実行される。図4の過程では,まず,処理401でソースコード315を静的コンパイラ308によってコンパイルし,中間コード316に変換する。
続いて,処理402で中間コード316をインタプリタ310に入力してプログラムの実行を開始する。処理401でソースコード315を中間コード316に変換する理由は,ソースコード315のままインタプリタ310に解釈実行させると解釈に大きなコストがかかるからである。処理401におけるコンパイル作業では,出力するコードを中間コード316ではなく,機械コードとすることもでき,機械コードにはインタプリタ310を使わずにプロセッサ301で直接実行できるという利点があるが,一方で中間コードには機種非依存性を確保しうるという利点があり,本実施例では,処理401で出力するコードを中間コード316にする。
中間コード316の一実施例を図5に示す。図5の中間コード316は図1のソースコードに対応するもので,まずローカル変数o1,o2の値を読み込んで比較し,結果が真であればラベルEQUAL以下の処理をおこない,さもなくばローカル変数o1,o2を読み込んで仮想メソッドequals()を呼び出し,返戻値が真ならばラベルEQUAL以下の処理をおこない,さもなくばラベルEQUAL以下の処理をスキップしてラベルSKIPの先に進む。
図4に戻り,実行の処理402において,インタプリタ310は中間コード316が含む分岐処理を実行する際に,どちらの方向に分岐したかという情報をプロファイラ313に与え,プロファイラ313は与えられた情報を実行プロファイル403に記録する。実行プロファイル403は主記憶302上に形成される。
実行プロファイル403の一実施例を図6に示す。図6の実行プロファイル403は図5の中間コードを対象として採取したもので,分岐をおこなう中間コードの位置(オフセット)を記述する欄601と,この中間コードを実行した回数を記入する欄602,実際に分岐した回数を記載する欄603を持つ。図6から,図5の中間コードの先頭から2バイト目で分岐する確率が0%で,11バイト目で分岐する確率が50%であることが判る。
図4に戻り,インタプリタ310は実行の処理402の過程で,中間コード316中にある個々のメソッドの実行頻度を求め,頻度が高いものについて,動的コンパイラ311にコンパイルするよう指示する。指示を受け取った動的コンパイラ311は,中間コード316をコンパイルし,機械コード形式の動的コンパイル済みコード404に変換する。このコンパイルの過程で,最適化処理314が適用される。最適化処理314は,実行プロファイル403を参照して,どの分岐に最適化を適用すべきか判断する。
インタプリタ310は,メソッド呼出しを実行する際に,呼出先のメソッドに対応する動的コンパイル済みコード404があるか調べ,あるならば自身で当該メソッドを解釈実行する代わりに,動的コンパイル済みコード404を呼び出す。インタプリタ310および動的コンパイル済みコード404は,それぞれ実行中に実行時ライブラリ312中のメソッドを呼び出すことがある。
動的コンパイラ311の一実施例を図7に示す。図7の動的コンパイラは,まず,処理701において中間コード316を入力として受け取って,コンパイラの内部表現702に変換する。変換の過程で実行プロファイル403を読み込み,分岐を表す内部表現に,分岐確率情報を付与する。
内部表現702の一実施例を図8に示す。図8の内部表現702は図5の中間コード316に対応するもので,5つのノード801〜805からなる。ノード801,802はそれぞれ,中間コード316における1番と2番の局所変数,つまり図1における変数o1,o2を表わす。ノード803は,図5において,オフセット2の位置にある中間コードif_acmpeqに対応する処理,つまり,参照間の比較とその結果による分岐を表わす。ノード803には比較対象,分岐先,分岐確率,後続処理を記入する欄がある。比較対象の欄は,比較をおこなう参照の内部表現への参照を記入する欄で,ノード803では比較対象となる局所変数1および2のノード801,802を参照する。分岐先の欄は,比較結果が真であった場合の分岐先への参照を記入する欄で,ノード803ではラベルEQUAL以下の処理に対応する内部表現を参照する。分岐確率の欄は,分岐が発生する確率を記入するためのものである。ノード803の分岐確率の欄には,分岐確率が0%と記入されているが,この分岐確率は図6に示した実行プロファイル403から求めたものである。後続処理の欄は,分岐しなかった場合に,後続して実行すべき処理を表わす内部表現への参照を記入する欄である。ノード803では,後続処理の欄からノード804を参照する。
ノード804は,図5において,オフセット11の位置にある中間コードifeqに対応する分岐処理を表わす。ノード804には,分岐条件と分岐先,分岐確率,後続処理を記入する欄がある。分岐条件の欄は,分岐をおこなうか否かを定める式の中間表現への参照を記入する欄で,ノード804では分岐条件の欄にノード805への参照が記入されている。分岐先の欄は,分岐条件が真であった場合の分岐先を記入する欄で,ノード804ではラベルEQUAL以下の処理に対応する内部表現を参照する。分岐確率の欄は,分岐が発生する確率を記入するためのものである。ノード804の分岐確率の欄には,分岐確率が50%と記入されているが,この分岐確率は図6の実行プロファイル403から求めたものである。後続処理の欄は,分岐しなかった場合に,後続して実行すべき処理を表わす内部表現への参照を記入する欄である。ノード804では,後続処理の欄から,ラベルSKIP以下の処理に対応する内部表現を参照する。
ノード805は,図5において,オフセット8の位置にある中間コードinvokevirtualに対応する仮想呼出しを表わす。ノード805には,呼出先と引数,後続処理を記入する欄がある。呼出先の欄は,呼出先の仮想関数を記入するための欄で,ノード805では呼出先がメソッドequals()であると記入されている。引数の欄はメソッドに与える引数を表わす内部表現への参照を記入すべき欄である。ノード805の引数の欄からは,引数になる局所変数1および2を表わすノード801,802を参照する。
図7に戻り,処理701が終わったら,内部表現702に対して,本実施例の最適化処理314を適用する。最後に処理703で,最適化後の内部表現702を,動的コンパイル済みコード404に変換する。
次に、最適化処理314の一実施例を図9に示す。図9では,まず処理901で内部表現702を走査して,分岐処理のうち,2つの参照の指示するインスタンスが等価か,まず参照間の比較演算によって確認し,比較結果が真であった場合に分岐し,さもなくば,2つの参照の指示するインスタンスの等価性を検証するためのメソッドを呼び出し,返戻値が真であった場合に分岐するものを求める。
メソッドが等価性を検証するためのものか否か調べる方法は,プログラミング言語に依存するが,たとえばJava(登録商標)言語では,言語処理系が等価性を検証するためのメソッドの宣言を与えるので,呼出先のメソッドが,この宣言に対応するものか,呼出先のメソッドのシグネチャを通じて調べることで,等価性を検証するためのものか否か判断できる。図8の内部表現は,処理901で求める分岐処理に相当する。また,処理901で検出する分岐処理のメソッド呼出しの部分は,必ずしもメソッド呼出しそのものである必要はなく,メソッド呼出しにインライン展開などの最適化を適用したあとの内部表現にもなりうる。
なお,処理901は本実施例の最適化対象の候補となる分岐処理を検出する処理だが,本実施例の最適化対象となる分岐処理は,必ずしも,参照間の比較結果による分岐の直後に,メソッド呼出しの結果による分岐をおこなうものである必要はない。たとえば図10のプログラムでは,変数o1とo2の比較と,メソッド呼出しo1.equals(o2)の間に,変数o3とo4の比較を挟んでおり、参照間の比較結果による分岐の直後に、メソッド呼出しの結果による分岐を行っていない。しかし、本発明においては、図10の変数o1とo2を対象とした比較およびメソッド呼出しの結果による分岐処理を最適化対象にしてもよい。
すなわち、本発明の最適化対象となる分岐処理は,2つの参照の指示するインスタンスが等価か,まず参照間の比較演算によって確認し,比較結果が真であった場合に分岐し,さもなくば,前記2つの参照の指示するインスタンスの等価性を検証するためのメソッドを呼び出し,返戻値が真であった場合に分岐するもので,なおかつ,参照間の比較結果による分岐を除去してもプログラムの実行結果が変化しないものである。ただし本実施例では,処理901で検出する分岐処理は,参照間の比較結果による分岐の直後に,メソッド呼出しの結果による分岐をおこなうものとする。
さて、図9において、処理901に続いて,判断902で,処理901で分岐処理を求められたか調べ,求められたならば処理903に進み,さもなくば最適化をあきらめる。処理903では,求めた分岐処理中にある,参照間の比較結果による分岐がどちらの方向に分岐するか,内部表現中の分岐確率を参照して調べる。続く判断904では前記調査の結果から,参照間の比較結果が真になる確率が低いか判断し,低いと判断したならば処理905に進み,さもなくば最適化をあきらめる。この確率の閾値は、例えば3%に設定される。処理905と,それに続く判断906では,処理901で検出した分岐処理から,参照間の比較と,その結果に応じた分岐を除去しても,プログラムの実行結果が変化しないか調査,判断する。
具体的には,まず,処理905において,内部表現702にフロー解析を適用して,処理901で求めた分岐処理中にあるメソッド呼出しのレシーバがとりうるクラスの集合を求め,続く判断906で分岐処理中にあるメソッド呼出しの呼出先候補となるメソッドの集合を,処理901で求めたレシーバのクラスの集合から求め,求めたメソッドの集合に属する全メソッドが最適化対象メソッド一覧907に載っているか調べる。最適化対象メソッド一覧907は,等価性を検証するメソッドのうち,比較対象の2つの参照が互いに等しいとき,次の2つの条件を満たすものを格納する。
2つの条件の第一は,必ず真を返戻することであり,第二は,返戻までの間に,返戻後の実行に影響をおよぼす副作用を生じないことである。最適化対象メソッド一覧907は,動的コンパイラ311が自動的に生成することも,言語処理系の実装者が手動で作成することもできるが,本実施例では言語処理系307の実装者が手動で作成するものとする。言語処理系307の実装者が最適化対象メソッド一覧907を作成する場合,実行時ライブラリ312中にある等価性を検証するメソッドのうち,前記の2条件を満たすものを最適化対象メソッド一覧907に登録する。この最適化対象メソッド一覧907は、図3に示した動的コンパイラ311の一部として記憶される。最適化対象メソッド一覧907の実施例を図11に示す。図11の最適化対象メソッド一覧907には,条件を満たすメソッドの名前を記録する欄1101があり,唯一,クラスjava.lang.Integerのメソッドequals()が登録されている。
図9に戻り,判断906で全呼出先候補のメソッドが最適化対象メソッド一覧907に載っていたらならば処理908に進み,さもなくば最適化を諦める。処理908では内部表現702に対して最適化を適用し,分岐処理が含む参照の比較と,その結果に応じた分岐を除去する。図8の内部表現702に処理908の最適化処理を適用すると,図12の内部表現702になる。処理908が終わったら最適化は終了である。以上の最適化処理により、プログラムの実行を高速化できる。
ソースコードの一例を示す図。 ソースコードの他の例を示す図。 本発明の第一の実施例の計算機システムの構成を示す図。 第一の実施例の言語処理系307のフローを示す図。 第一の実施例の中間コード316の一実施例を示す図。 第一の実施例の実行プロファイル403の一実施例を示す図。 第一の実施例の動的コンパイラ311の一実施例を示す図。 第一の実施例の内部表現702の一実施例を示す図。 第一の実施例の最適化処理313の一実施例を示す図。 第一の実施例のソースコードの例を示す図。 第一の実施例の最適化対象メソッド一覧907の一実施例を示す図。 第一の実施例の最適化後の内部表現702の一実施例を示す図。
符号の説明
301…プロセッサ、302…主記憶、303…ハードディスク、304…DVD−ROM読み取り装置、305…バス、306…DVD−ROM、307…言語処理系、311…動的コンパイラ、314…最適化処理、702…コンパイラの内部表現、901…最適化候補の分岐処理を求める処理、902…分岐があったか否かの判断、903…分岐確率を求める処理、904…分岐確率が十分低いか否かの判断、905…フロー解析によってレシーバのクラスを求める処理、906…クラスに対応するメソッドが最適化対象か否かの判断、907…最適化対象のメソッド一式を登録する表、908…分岐を除去する処理。

Claims (3)

  1. 記憶部と処理部とを有する計算機システムの前記処理部で実行されるコンパイラにおける最適化処理方法であって,
    前記コンパイラによるコンパイル対象のコード中にある条件分岐のうち,2つの参照の指示するインスタンスが等価か否かを参照間の比較演算によって確認し,前記演算結果が真であった場合に分岐先に分岐し,真でなければ,前記2つの参照の指示するインスタンスの等価性を検証するためのメソッドを呼び出し,前記メソッドの返戻値が真であった場合に前記分岐先に分岐するものを求め,
    求めた前記条件分岐から,前記参照間の比較演算と前記演算結果に応じた分岐を除去しても,当該実行結果が変化しないか否かを調査し,
    前記調査の結果が真ならば,前記条件分岐から,前記参照間の比較演算と前記演算結果が真であった場合に分岐する処理を除去するとともに、
    前記参照間の比較演算と,前記演算結果が真であった場合に分岐する処理を除去するより前に,実行時プロファイルから,前記参照間の比較演算の結果が真となった頻度を求め,
    前記頻度が小さいと判断した場合に,前記除去をおこなう
    最適化処理方法。
  2. 記憶部と処理部とを有する計算機システムのための言語処理系であって、
    前記処理部を、
    コンパイル対象のコード中にある条件分岐のうち,2つの参照の指示するインスタンスが等価か否かを参照間の比較演算によって確認し,前記演算結果が真であった場合に分岐先に分岐し,真でなければ,前記2つの参照の指示するインスタンスの等価性を検証するためのメソッドを呼び出し,前記メソッドの返戻値が真であった場合に前記分岐先に分岐するものを求め,
    求めた前記条件分岐から,前記参照間の比較演算と前記演算結果に応じた分岐を除去しても,実行結果が変化しないか否かを調査し,
    前記調査の結果が真ならば,前記条件分岐から,前記参照間の比較演算と前記演算結果が真であった場合に分岐する処理を除去するとともに、
    前記参照間の比較演算と,前記演算結果が真であった場合に分岐する処理を除去するより前に,実行時プロファイルから,前記参照間の比較演算の結果が真となった頻度を求め,
    前記頻度が小さいと判断した場合に,前記除去をおこなう
    よう実行させる
    言語処理系
  3. 請求項記載の言語処理系であって,
    前記言語処理系は、静的コンパイラと、前記中間コードを実行するインタプリタと動的コンパイラと実行時ライブラリとから構成される実行環境とからなり、
    前記処理部を、
    前記静的コンパイラによって、前記ソースコードを前記中間コードへ変換し、
    前記インタプリタが、前記中間コードが含む分岐処理を実行する際、前記分岐に関する情報を実行プロファイルに記録し、
    前記動的コンパイラが、求めた前記条件分岐から,前記実行時プロファイルを参照して、前記参照間の比較演算と前記演算結果に応じた分岐を除去しても,前記実行結果が変化しないか否かを調査するよう実行させる
    言語処理系
JP2006284733A 2006-10-19 2006-10-19 最適化処理方法、及びその言語処理系 Expired - Fee Related JP5016288B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006284733A JP5016288B2 (ja) 2006-10-19 2006-10-19 最適化処理方法、及びその言語処理系

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006284733A JP5016288B2 (ja) 2006-10-19 2006-10-19 最適化処理方法、及びその言語処理系

Publications (2)

Publication Number Publication Date
JP2008102740A JP2008102740A (ja) 2008-05-01
JP5016288B2 true JP5016288B2 (ja) 2012-09-05

Family

ID=39437025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006284733A Expired - Fee Related JP5016288B2 (ja) 2006-10-19 2006-10-19 最適化処理方法、及びその言語処理系

Country Status (1)

Country Link
JP (1) JP5016288B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013242700A (ja) 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62259141A (ja) * 1986-05-06 1987-11-11 Hitachi Ltd コンパイル方式
JPH07114473A (ja) * 1993-10-19 1995-05-02 Fujitsu Ltd コンパイラの命令列最適化方法
JP2755154B2 (ja) * 1994-02-23 1998-05-20 日本電気株式会社 プログラム変換処理装置およびプログラム変換処理方法
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
JP2000242504A (ja) * 1999-02-19 2000-09-08 Nec Corp コンパイラ装置

Also Published As

Publication number Publication date
JP2008102740A (ja) 2008-05-01

Similar Documents

Publication Publication Date Title
JP3790683B2 (ja) コンピュータ装置、その例外処理プログラム及びコンパイル方法
US6412109B1 (en) Method for optimizing java bytecodes in the presence of try-catch blocks
US11216258B2 (en) Direct function call substitution using preprocessor
JP5415557B2 (ja) デバッギングのためのユーザ・スクリプト・コードの変換
US7725883B1 (en) Program interpreter
US6662362B1 (en) Method and system for improving performance of applications that employ a cross-language interface
EP0905617B1 (en) Method for generating a java bytecode data flow graph
JP6275819B2 (ja) ユーザに指向されかつプロファイル主導の最適化用のフレームワーク
US9946523B2 (en) Multiple pass compiler instrumentation infrastructure
US9645912B2 (en) In-place function modification
JP3284956B2 (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US8387026B1 (en) Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling
US20110067018A1 (en) Compiler program, compilation method, and computer system
US8056061B2 (en) Data processing device and method using predesignated register
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
CN112882718A (zh) 编译处理方法、装置、设备及存储介质
US8423980B1 (en) Methods for handling inlined functions using sample profiles
US20010039653A1 (en) Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program
CN105786465A (zh) 一种脚本语言执行方法及装置
JP5016288B2 (ja) 最適化処理方法、及びその言語処理系
JP2008305337A (ja) プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP5891976B2 (ja) コンパイル実行・管理方法、装置、及びプログラム
US9317308B2 (en) Augmenting profile data with information gathered from a JIT compiler
JP2008102748A (ja) プログラム実行方法、言語処理系、及び実行時ルーチン
RU2390821C1 (ru) Способ динамической инструментации

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

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: 20120605

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: 20120608

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees