JP2001325110A - Complier device and its in-line development system - Google Patents
Complier device and its in-line development systemInfo
- Publication number
- JP2001325110A JP2001325110A JP2000147445A JP2000147445A JP2001325110A JP 2001325110 A JP2001325110 A JP 2001325110A JP 2000147445 A JP2000147445 A JP 2000147445A JP 2000147445 A JP2000147445 A JP 2000147445A JP 2001325110 A JP2001325110 A JP 2001325110A
- Authority
- JP
- Japan
- Prior art keywords
- expansion
- inline
- call
- unit
- processing
- 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.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は、コンパイラ装置及
びそのインライン展開方式に関し、特に高級言語で記述
された原始プログラムを機械実行可能な形式の目的プロ
グラムへと翻訳するコンパイラ装置及びそのインライン
展開方式に関する。The present invention relates to a compiler device and an inline expansion method thereof, and more particularly to a compiler device for translating a source program written in a high-level language into a machine-executable target program and an inline expansion method thereof. .
【0002】[0002]
【従来の技術】従来より、コンパイラ装置におけるコー
ド最適化の1つとして、インライン展開方式が存在す
る。このインライン展開方式は、原始プログラム中の関
数(副手続き)を呼出している部分(呼出し部分)に対
して、関数呼出しのコード(”call…”といったコ
ード)を生成する代わりに、呼び出される関数を実際の
コードで置換する、すなわち、コードを直接展開すると
いう方法である。2. Description of the Related Art Conventionally, as one of code optimizations in a compiler device, there is an inline expansion method. In this inline expansion method, instead of generating a function call code (code such as "call ...") for a part (calling part) of a source program that calls a function (subprocedure), the function to be called is replaced with It is a method of replacing with actual code, that is, directly expanding the code.
【0003】一般的に、あるプログラム(単にプログラ
ムと言う場合は、原始プログラムも目的プログラムも包
含した概念を示すものである)が関数呼出しを含む場合
には、呼び出される関数内で使用されるレジスタの退避
及び復帰や呼び出される関数のスタックフレームの生成
及び削除等の処理が必要になるため、そのプログラムの
実行速度が遅くなるという弊害が生じていた。In general, when a program (which is simply called a program indicates a concept including both a source program and a target program) includes a function call, a register used in the called function is used. Processing such as saving and restoring of a program, and generation and deletion of a stack frame of a called function, the execution speed of the program is reduced.
【0004】インライン展開処理が実行されると、呼び
出される関数が呼出し部分の一部となるため、先述した
ような関数呼出し時の弊害を回避することができるの
で、プログラムの実行速度を向上することができる。従
って、このようなインライン展開方式は、コード最適化
の手法の1つとして採用されている。When the inline expansion processing is executed, the function to be called becomes a part of the calling part. Therefore, it is possible to avoid the above-described adverse effect at the time of calling the function, thereby improving the execution speed of the program. Can be. Therefore, such an inline expansion method is adopted as one of code optimization techniques.
【0005】一方で、インライン展開を行なうと、呼び
出される関数が複数の呼出し場所に展開されるため、全
体としてコードサイズが増大することが多いという問題
が生じていた。On the other hand, when inline expansion is performed, a function to be called is expanded to a plurality of call locations, and thus the problem that the code size as a whole often increases.
【0006】このため、インライン展開を行なう際に
は、実行速度向上とコードサイズ増大化とを考慮して、
例えば、特開昭61−264441号公報に開示される
「コンパイラ処理方式」のように、呼び出される関数に
対してインライン(inline)指定子を付与する方法によ
り展開を指示する方法が行なわれてきた。For this reason, when performing inline expansion, taking into account an increase in execution speed and an increase in code size,
For example, a method of instructing expansion by a method of assigning an inline specifier to a called function, such as a "compiler processing method" disclosed in JP-A-61-264441, has been used. .
【0007】図9〜図11は、従来のコンパイラ装置の
インライン展開方式において、呼出し場所によって、展
開の効果の違いが出る場合を示すプログラムの例であ
る。従来のインライン展開方式においては、図9に示さ
れるプログラムの第1行目に存在する「fun」の定義
に、インライン(inline)指定子が付与されることによ
って、第18行目及び第19行目にある呼出し場所が共
に展開される。FIGS. 9 to 11 show examples of programs showing a case where the effect of the expansion differs depending on the calling place in the inline expansion method of the conventional compiler device. In the conventional inline expansion method, an inline specifier is added to the definition of “fun” existing on the first line of the program shown in FIG. The call places in the eye are expanded together.
【0008】このインライン展開によって、図9のプロ
グラムは、図10に示されるように変形される。図10
に示されるプログラムの第8行目〜第12行目までは、
全て定数計算することが可能であり、コード最適化処理
によって、さらに図11に示されるように変形される。By the inline expansion, the program shown in FIG. 9 is modified as shown in FIG. FIG.
8 to 12 of the program shown in
All the constants can be calculated, and further modified by the code optimizing process as shown in FIG.
【0009】図9のプログラムの第18行目の展開に対
応するコードは、図11において第8行目のみであるの
に対し、図9のプログラムの第19行目の展開に対応す
るコードは、図11において第10行目〜第14行目と
なる。The code corresponding to the expansion on the 18th line of the program in FIG. 9 is only the 8th line in FIG. 11, whereas the code corresponding to the expansion on the 19th line in the program in FIG. 11, the 10th to 14th rows are shown.
【0010】つまり、図9のプログラムの第18行目及
び第19行目の呼出しは、同じ関数を呼出しているが、
展開に伴うコードサイズの量が大きく異なっていること
が分かる。従って、コードサイズの増大を避ける必要が
ある場合には、これら2つの呼出しのうち、第18行目
のものだけをインライン展開するべきである。That is, the calls on the 18th and 19th lines of the program in FIG. 9 call the same function,
It can be seen that the amount of code size accompanying development is greatly different. Therefore, if it is necessary to avoid an increase in code size, only the one on line 18 of these two calls should be expanded inline.
【0011】このようなインライン展開を行う従来例1
として、特開平02−135529号公報に開示される
「コンパイル方式」がある。このコンパイル方式は、オ
ブジェクトコード生成時にインライン展開を行うことに
よって、呼出し時に伴う負荷を軽減することを目的とす
るものである。Conventional example 1 for performing such inline expansion
There is a “compilation method” disclosed in Japanese Patent Application Laid-Open No. 02-135529. The purpose of this compilation method is to reduce the load associated with calling by performing inline expansion at the time of object code generation.
【0012】[0012]
【発明が解決しようとする課題】しかしながら、上述さ
れるような従来のインライン展開方式においては、ある
関数が展開に適しているとされると、その関数に対する
すべての呼出しがインライン展開されてしまうため、同
じ関数を呼出している複数の呼出し場所での展開の効果
の違いを有効に活用することはできなかった。However, in the conventional inline expansion method as described above, if a certain function is considered suitable for expansion, all calls to the function are expanded inline. However, it was not possible to make effective use of the difference in the effects of expansion at a plurality of call locations calling the same function.
【0013】また、従来例1においては、指定によって
インライン展開すると判定された呼出しは、展開指示を
付与した呼出し命令として出力され、オブジェクトプロ
グラムを生成する段階 (直前)にインライン展開が行わ
れるため、インライン展開により可能となる様々な最適
化による効果を受けることができないという問題があっ
た。In the first conventional example, a call determined to perform inline expansion by designation is output as a call instruction to which an expansion instruction has been added, and inline expansion is performed at the stage (immediately before) of generating an object program. There was a problem that the effects of various optimizations enabled by inline expansion could not be obtained.
【0014】ここで効果とは、呼出し命令及び戻り命令
がなくなることによる実行性能の向上や、どんな副作用
があるか分からない関数呼出し命令がなくなることによ
りその後の最適化範囲が拡大する、というものである。Here, the effect means that the execution performance is improved by eliminating the call instruction and the return instruction, and that the subsequent optimization range is expanded by eliminating the function call instruction whose unknown side effect is eliminated. is there.
【0015】さらに、従来例1においては、範囲を指定
し、その範囲内にある呼出しを一律に展開しているが、
同一の範囲内に存在する呼出しであっても、展開後の最
適化による効果が大きく異なる場合があり、範囲指定の
場合には、このような場合に対処することができないと
いう問題があった。Further, in the prior art 1, a range is designated and calls within the range are uniformly developed.
Even if the calls exist within the same range, the effect of the optimization after expansion may greatly differ, and there is a problem that such a case cannot be dealt with when the range is specified.
【0016】本発明は、上述されるような問題点を解消
するために成されたものであり、インライン展開を呼び
出される関数単位で制御するのではなく、同じ関数を呼
出していても、呼出し場所によって、インライン展開に
よる最終的なコード性能向上効果が異なる場合に、有効
なインライン展開を行なうことができるようにすること
を目的とする。SUMMARY OF THE INVENTION The present invention has been made to solve the above-described problem. Instead of controlling the inline expansion for each function to be called, even if the same function is called, the location of the call can be changed. It is an object of the present invention to enable effective inline expansion when the final effect of code performance improvement by inline expansion is different.
【0017】より詳細には、ユーザがインライン展開に
よる最終的なコード性能向上効果が見込める呼出し場所
をコンパイラの外部から指定することにより、より効率
的なインライン展開を実現するコンパイラ装置及びその
インライン展開方式を提供することを目的とする。More specifically, a compiler device for realizing more efficient inline expansion by designating a call location from the outside of the compiler where a user can expect a final code performance improvement effect by inline expansion, and an inline expansion method therefor The purpose is to provide.
【0018】[0018]
【課題を解決するための手段】前記課題を解決するため
に、請求項1記載の発明は、原始プログラムを入力し、
インライン展開処理を行った後、最適化を行うことで目
的プログラムを出力するコンパイラ装置であって、イン
ライン展開を指定する展開指定情報に基づいて、最適化
の効果が大きいと見込まれる呼出し場所のみを選択的に
インライン展開することを特徴とする。According to a first aspect of the present invention, there is provided an apparatus for inputting a source program, comprising the steps of:
A compiler device that outputs a target program by performing optimization after performing inline expansion processing. Based on expansion specification information that specifies inline expansion, only a call place that is expected to have a large effect of optimization is specified. It is characterized by selective inline expansion.
【0019】請求項2記載の発明は、請求項1記載の発
明において、コンパイラ装置は、原始プログラムの構文
意味を解析し、中間言語形式のプログラムに変換する構
文意味解析手段と、構文意味解析手段により変換された
中間言語形式のプログラムをインライン展開するインラ
イン展開手段と、インライン展開手段によりインライン
展開された中間言語形式のプログラムのコード最適化を
行うコード最適化手段と、コード最適化手段によりコー
ド最適化された中間言語形式のプログラムのレジスタ割
り付けを行うレジスタ割付手段と、レジスタ割付手段に
よりレジスタ割り付けされた中間言語形式のプログラム
から目的プログラムを生成するコード生成手段と、を有
して構成されることを特徴とする。According to a second aspect of the present invention, in the first aspect of the present invention, the compiler device analyzes a syntactic meaning of the source program, and converts the syntactic meaning into a program in an intermediate language format; Inline expansion means for inline-expanding the intermediate language format program converted by the program, code optimization means for optimizing the code of the intermediate language format program inline-expanded by the inline expansion means, and code optimization by the code optimization means Register allocating means for allocating registers of a converted intermediate language format program, and code generating means for generating a target program from the intermediate language format program allocated by the register allocating means. It is characterized by.
【0020】請求項3記載の発明は、請求項2記載の発
明において、インライン展開手段は、原始プログラムの
すべての呼出し場所に対するインライン展開処理を完了
したか否かを判定する展開処理完了判定部と、展開処理
完了判定部にて処理未完了と判定された呼出し場所の位
置情報を取得する位置情報取得部と、展開指定情報を参
照する参照部と、位置情報取得部により取得された呼出
し場所が、参照手段により参照された展開指定情報に該
当する呼出し場所であるか否かを判定する判定部と、判
定部により位置情報取得部にて取得された呼出し場所が
展開指定情報にて指定される呼出し場所である場合に
は、インライン展開処理を実行するインライン展開処理
実行部と、を有することを特徴とする。According to a third aspect of the present invention, in the second aspect of the invention, the inline expansion means includes an expansion processing completion determination unit for determining whether or not the inline expansion processing has been completed for all call locations of the source program. A location information acquisition unit that acquires location information of a call place determined to be incomplete by the deployment process completion determination unit, a reference unit that refers to deployment specification information, and a call location acquired by the location information acquisition unit. A determining unit that determines whether or not the call location corresponds to the deployment designation information referred to by the reference unit, and the call location acquired by the location information acquisition unit by the determination unit is designated by the deployment designation information And an inline expansion processing execution unit for executing the inline expansion processing when the location is the calling place.
【0021】請求項4記載の発明は、請求項3記載の発
明において、インライン展開手段は、展開処理完了判定
部によりすべての呼出し場所に対してのインライン展開
処理が完了したと判定された場合には、展開指定情報に
て展開指定される呼出し場所以外のうち、適当と判断さ
れるものについて、インライン展開処理を実行すること
を特徴とする。According to a fourth aspect of the present invention, in the third aspect of the invention, the inline expansion means determines that the inline expansion processing has been completed for all the call locations by the expansion processing completion determination section. Is characterized in that an inline expansion process is executed for a call place other than the call place specified by the expansion specification information, which is determined to be appropriate.
【0022】請求項5記載の発明は、請求項2記載の発
明において、インライン展開手段は、原始プログラムの
すべての呼出し場所に対してのインライン展開処理を完
了したか否かを判定する展開処理完了判定部と、展開処
理完了判定部にて処理未完了と判定された呼出し場所の
位置情報を取得する位置情報取得部と、展開指定情報を
参照する参照部と、位置情報取得部により取得された呼
出し場所が、参照部により参照された展開指定情報に該
当する呼出し場所であるか否かを判定する判定部と、判
定部により位置情報取得部程にて取得された呼出し場所
が展開指定情報にて指定される呼出し場所である場合に
は、インライン展開処理を実行するインライン展開処理
実行部とを有し、展開処理完了判定部によりすべての呼
出し場所に対しての処理が完了したと判定された場合に
は、インライン展開処理を終了することを特徴とする。According to a fifth aspect of the present invention, in accordance with the second aspect of the present invention, the inline expansion means completes expansion processing for determining whether or not inline expansion processing has been completed for all calling locations of the source program. A determining unit, a position information obtaining unit that obtains position information of a call place determined to be incomplete by the expansion processing completion determining unit, a reference unit that refers to expansion specification information, and a position information obtaining unit that obtains A determining unit that determines whether or not the calling location is a calling location corresponding to the expansion specification information referred to by the reference unit; and the calling location acquired by the determination unit in the location information obtaining unit is included in the expansion specification information. If the call location is specified by a call, an inline expansion processing execution unit that executes inline expansion processing is provided. If the process is determined to have completed, characterized by terminating the inlining process.
【0023】請求項6記載の発明は、請求項1から5の
いずれか1項に記載の発明において、展開指定情報は、
外部からのユーザ入力により指定されることを特徴とす
る。The invention according to claim 6 is the invention according to any one of claims 1 to 5, wherein the expansion designation information is:
It is specified by an external user input.
【0024】請求項7記載の発明は、請求項1または2
記載の発明において、原始プログラムは、展開指定情報
が埋め込まれていることを特徴とする。The invention according to claim 7 is the invention according to claim 1 or 2
In the described invention, the source program is characterized in that expansion designation information is embedded.
【0025】請求項8記載の発明は、請求項7記載の発
明において、インライン展開手段は、原始プログラムの
すべての呼出し場所に対してのインライン展開処理を完
了したか否かを判定する展開処理完了判定部と、展開処
理完了判定部にて処理未完了と判定された呼出し場所の
位置情報を取得する位置情報取得部と、原始プログラム
に埋め込まれている展開指定情報を参照する参照部と、
位置情報取得部により取得された呼出し場所が、参照部
により参照された展開指定情報に該当する呼出し場所で
あるか否かを判定する判定部と、判定部により位置情報
取得部にて取得された呼出し場所が展開指定情報にて指
定される呼出し場所である場合には、インライン展開処
理を実行するインライン展開処理実行部と、を有するこ
とを特徴とする。According to an eighth aspect of the present invention, in the seventh aspect of the present invention, the inline expansion means completes expansion processing for determining whether or not inline expansion processing has been completed for all call locations of the source program. A determining unit, a position information obtaining unit that obtains position information of a call place determined to be incomplete by the expansion processing completion determination unit, a reference unit that refers to expansion specification information embedded in the source program,
A determination unit that determines whether the call location acquired by the location information acquisition unit is a call location corresponding to the expansion designation information referenced by the reference unit, and a determination unit that acquires the call location by the location information acquisition unit. When the call location is a call location specified by the expansion designation information, the image processing apparatus further includes an inline expansion processing execution unit that executes inline expansion processing.
【0026】請求項9記載の発明は、請求項8記載の発
明において、インライン展開手段は、展開処理完了判定
部によりすべての呼出し場所に対してのインライン展開
処理が完了したと判定された場合には、展開指定情報に
て展開指定される呼出し場所以外のうち、適当と判断さ
れるものについて、インライン展開処理を実行すること
を特徴とする。According to a ninth aspect of the present invention, in the invention of the eighth aspect, the inline expansion means determines that the inline expansion processing has been completed for all the call locations by the expansion processing completion determination section. Is characterized in that an inline expansion process is executed for a call place other than the call place specified by the expansion specification information, which is determined to be appropriate.
【0027】請求項10記載の発明は、請求項2記載の
発明において、インライン展開手段は、展開指定情報を
参照する参照部と、参照部により参照された展開指定情
報にて指定される呼出し場所の展開処理が完了したか否
かを判定する展開処理完了判定部と、展開処理完了判定
部にて処理未完了と判定された呼出し場所を検索する検
索部と、検索部により検索された呼出し場所に対しての
インライン展開処理を実行するインライン展開処理実行
部と、を有することを特徴とする。According to a tenth aspect of the present invention, in the second aspect of the invention, the inline expansion means includes: a reference section for referencing the expansion specification information; and a call location specified by the expansion specification information referred to by the reference section. Expansion processing completion determining unit that determines whether or not the expansion processing has been completed, a search unit that searches for a call location determined to be incomplete by the expansion processing completion determination unit, and a call location searched by the search unit And an inline expansion processing execution unit that executes an inline expansion processing for.
【0028】請求項11記載の発明は、請求項10記載
の発明において、インライン展開手段は、処理完了判定
部により展開指定情報により指定されたすべての呼出し
場所に対しての展開処理が完了したと判定された場合に
は、展開指定情報にて展開指定される呼出し場所以外の
うち、適当と判断されるものについて、インライン展開
処理を実行することを特徴とする。According to an eleventh aspect of the present invention, in the tenth aspect of the present invention, the inline expansion unit determines that the expansion processing has been completed for all the calling locations specified by the expansion specification information by the processing completion determination unit. When it is determined, the inline expansion processing is performed for a call location other than the call location specified by the expansion specification information that is determined to be appropriate.
【0029】請求項12記載の発明は、原始プログラム
を入力し、インライン展開処理を行った後、最適化を行
うことで目的プログラムを出力するコンパイラにおける
インライン展開方式であって、インライン展開を指定す
る展開指定情報に基づいて、最適化の効果が大きいと見
込まれる呼出し場所のみを選択的にインライン展開する
ことを特徴とする。According to a twelfth aspect of the present invention, there is provided an inline expansion method in a compiler which inputs a source program, performs inline expansion processing, and then performs optimization to output a target program, and specifies inline expansion. On the basis of the expansion designation information, only the call place where the effect of the optimization is expected to be large is selectively inline expanded.
【0030】請求項13記載の発明は、請求項12記載
の発明において、コンパイラは、原始プログラムの構文
意味を解析し、中間言語形式のプログラムに変換する構
文意味解析部と、構文意味解析部により変換された中間
言語形式のプログラムをインライン展開するインライン
展開部と、インライン展開部によりインライン展開され
た中間言語形式のプログラムのコード最適化を行うコー
ド最適化部と、コード最適化部によりコード最適化され
た中間言語形式のプログラムのレジスタ割り付けを行う
レジスタ割付部と、レジスタ割付部によりレジスタ割り
付けられた中間言語形式のプログラムから目的プログラ
ムを生成するコード生成部と、を有して構成されること
を特徴とする。According to a thirteenth aspect of the present invention, in the twelfth aspect of the present invention, the compiler analyzes the syntax and semantics of the source program, and converts the syntax into a program in an intermediate language format. Inline expansion unit that inlines the converted intermediate language format program, code optimization unit that optimizes the code of the intermediate language format program that is inline expanded by the inline expansion unit, and code optimization that is performed by the code optimization unit A register allocating unit for allocating registers of the programmed intermediate language format program, and a code generating unit for generating a target program from the intermediate language format program allocated by the register allocating unit by the register allocating unit. Features.
【0031】請求項14記載の発明は、請求項13記載
の発明において、インライン展開部は、原始プログラム
のすべての呼出し場所に対するインライン展開処理を完
了したか否かを判定する展開処理完了判定工程と、展開
処理完了判定工程にて処理未完了と判定された呼出し場
所の位置情報を取得する位置情報取得工程と、展開指定
情報を参照する参照工程と、位置情報取得工程により取
得された呼出し場所が、参照工程により参照された展開
指定情報に該当する呼出し場所であるか否かを判定する
判定工程と、判定工程により位置情報取得工程により取
得された呼出し場所が展開指定情報にて指定される呼出
し場所である場合には、インライン展開処理を実行する
インライン展開処理実行工程と、を有することを特徴と
する。According to a fourteenth aspect of the present invention, in accordance with the thirteenth aspect of the present invention, the inline expansion section includes an expansion processing completion determination step of determining whether or not the inline expansion processing has been completed for all the calling locations of the source program. The location information acquisition step of acquiring the location information of the call place determined to be incomplete in the deployment process completion determination step, the reference step of referring to the deployment designation information, and the call location acquired by the location information acquisition step A determining step of determining whether or not the calling place corresponds to the expansion specifying information referred to by the reference step; and a calling in which the calling place obtained by the position information obtaining step by the determining step is specified by the expansion specifying information. If the location is a place, an inline expansion processing execution step of executing an inline expansion processing is provided.
【0032】請求項15記載の発明は、請求項14記載
の発明において、インライン展開部は、展開処理完了判
定工程によりすべての呼出し場所に対してのインライン
展開処理が完了したと判定された場合には、展開指定情
報にて展開指定される呼出し場所以外のうち、適当と判
断されるものについて、インライン展開処理を実行する
ことを特徴とする。According to a fifteenth aspect of the present invention, in the invention according to the fourteenth aspect, the inline expansion unit determines that the inline expansion processing has been completed for all the call locations in the expansion processing completion determination step. Is characterized in that an inline expansion process is executed for a call place other than the call place specified by the expansion specification information, which is determined to be appropriate.
【0033】請求項16記載の発明は、請求項13記載
の発明において、インライン展開部は、原始プログラム
のすべての呼出し場所に対してのインライン展開処理を
完了したか否かを判定する展開処理完了判定工程と、展
開処理完了判定工程にて処理未完了と判定された呼出し
場所の位置情報を取得する位置情報取得工程と、展開指
定情報を参照する参照工程と、位置情報取得工程により
取得された呼出し場所が、参照工程により参照された展
開指定情報に該当する呼出し場所であるか否かを判定す
る判定工程と、判定工程により位置情報取得工程により
取得された呼出し場所が展開指定情報にて指定される呼
出し場所である場合には、インライン展開処理を実行す
るインライン展開処理実行工程とを有し、展開処理完了
判定工程によりすべての呼出し場所に対しての処理が完
了したと判定された場合には、インライン展開処理を終
了することを特徴とする。According to a sixteenth aspect of the present invention, in accordance with the thirteenth aspect, the inline expansion unit determines whether or not the inline expansion processing has been completed for all the calling locations of the source program. A determination step, a position information acquisition step of acquiring position information of a call place determined to be incomplete in the expansion processing completion determination step, a reference step of referring to the expansion designation information, and a position information acquisition step. A determining step of determining whether the calling location is a calling location corresponding to the expansion specification information referred to by the reference step, and the calling location acquired by the location information obtaining step by the determination step is designated by the expansion specification information If it is a call place to be executed, it has an inline expansion processing execution step of executing inline expansion processing, When the processing for calling location Te is determined to have been completed, characterized by terminating the inlining process.
【0034】請求項17記載の発明は、請求項12から
16のいずれか1項に記載の発明において、展開指定情
報は、外部からのユーザ入力により指定されることを特
徴とする。According to a seventeenth aspect, in any one of the twelfth to sixteenth aspects, the expansion designation information is designated by an external user input.
【0035】請求項18記載の発明は、請求項12また
は13記載の発明において、原始プログラムは、展開指
定情報が埋め込まれていることを特徴とする。According to an eighteenth aspect of the present invention, in the twelfth or thirteenth aspect, the source program has expansion designation information embedded therein.
【0036】請求項19記載の発明は、請求項18記載
の発明において、インライン展開部は、原始プログラム
のすべての呼出し場所に対してのインライン展開処理を
完了したか否かを判定する展開処理完了判定工程と、展
開処理完了判定工程にて処理未完了と判定された呼出し
場所の位置情報を取得する位置情報取得工程と、原始プ
ログラムに埋め込まれている展開指定情報を参照する参
照工程と、位置情報取得工程により取得された呼出し場
所が、参照工程により参照された展開指定情報に該当す
る呼出し場所であるか否かを判定する判定工程と、判定
工程により位置情報取得工程により取得された呼出し場
所が展開指定情報にて指定される呼出し場所である場合
には、インライン展開処理を実行するインライン展開処
理実行工程と、を有することを特徴とする。According to a nineteenth aspect of the present invention, in accordance with the eighteenth aspect of the present invention, the inline expansion section determines whether or not the inline expansion processing has been completed for all calling locations of the source program. A determining step, a position information obtaining step of obtaining position information of a calling place determined to be incomplete in the expansion processing completion determining step, a reference step of referring to expansion specification information embedded in the source program, and a position A judging step of judging whether or not the calling place acquired by the information acquiring step is a calling place corresponding to the expansion designation information referred to by the reference step; and a calling place acquired by the position information acquiring step by the judging step. Is a call place specified by the expansion specification information, an inline expansion processing execution step of executing inline expansion processing Characterized in that it.
【0037】請求項20記載の発明は、請求項19記載
の発明において、インライン展開部は、展開処理完了判
定工程によりすべての呼出し場所に対してのインライン
展開処理が完了したと判定された場合には、展開指定情
報にて展開指定される呼出し場所以外のうち、適当と判
断されるものについて、インライン展開処理を実行する
ことを特徴とする。According to a twentieth aspect of the present invention, in accordance with the nineteenth aspect, the inline expansion section determines that the inline expansion processing has been completed for all the call locations in the expansion processing completion determination step. Is characterized in that an inline expansion process is executed for a call place other than the call place specified by the expansion specification information, which is determined to be appropriate.
【0038】請求項21記載の発明は、請求項13記載
の発明において、インライン展開部は、展開指定情報を
参照する参照工程と、参照工程により参照された展開指
定情報にて指定される呼出し場所の展開処理が完了した
か否かを判定する展開処理完了判定工程と、展開処理完
了判定工程にて処理未完了と判定された呼出し場所を検
索する検索工程と、検索工程により検索された呼出し場
所に対してのインライン展開処理を実行するインライン
展開処理実行工程と、を有することを特徴とする。According to a twenty-first aspect of the present invention, in the thirteenth aspect, the inline expansion section includes a reference step for referencing the expansion specification information, and a calling location specified by the expansion specification information referred to in the reference step. Expansion processing completion determining step of determining whether or not the expansion processing has been completed, a search step of searching for a call place determined to be incomplete in the expansion processing completion determination step, and a call place searched by the search step And an inline expansion process execution step of executing an inline expansion process for.
【0039】請求項22記載の発明は、請求項21記載
の発明において、インライン展開部は、処理完了判定工
程により展開指定情報により指定されたすべての呼出し
場所に対しての展開処理が完了したと判定された場合に
は、展開指定情報にて展開指定される呼出し場所以外の
うち、適当と判断されるものについて、インライン展開
処理を実行することを特徴とする。According to a twenty-second aspect of the present invention, in the twenty-first aspect of the present invention, the inline expansion unit determines that the expansion processing has been completed for all the call locations specified by the expansion specification information in the processing completion determination step. When it is determined, the inline expansion processing is performed for a call location other than the call location specified by the expansion specification information that is determined to be appropriate.
【0040】〈作用〉本発明のコンパイラ装置及びその
インライン展開方式は、原始プログラムから目的プログ
ラムを生成するコンパイラにおいて、呼出し場所を指定
してインライン展開を行う。<Operation> The compiler device and the inline expansion method of the present invention perform inline expansion by designating a call location in a compiler that generates a target program from a source program.
【0041】また、本発明のコンパイラ装置及びそのイ
ンライン展開方式では、インライン展開部が、原始プロ
グラム中に存在する呼出し場所の位置情報を抽出し、外
部からの指定により提供される展開指定情報との比較を
行ない、呼出し場所が展開指定されていた場合にインラ
イン展開を行う。Further, in the compiler apparatus and the inline expansion method of the present invention, the inline expansion unit extracts the position information of the call place existing in the source program, and extracts the position information from the expansion specification information provided by the external specification. Performs comparison and performs inline expansion if the call location is specified to be expanded.
【0042】[0042]
【発明の実施の形態】次に、添付図面を参照しながら本
発明の実施形態であるコンパイラ装置及びそのインライ
ン展開方式を詳細に説明する。図1から図8を参照する
と、本発明に係るコンパイラ装置及びそのインライン展
開方式の実施の形態が示されている。DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Next, a compiler device and an inline expansion method according to an embodiment of the present invention will be described in detail with reference to the accompanying drawings. FIG. 1 to FIG. 8 show an embodiment of a compiler device and an inline expansion system according to the present invention.
【0043】図1は、本発明の実施形態であるインライ
ン展開方式が適用されるコンパイラ装置の概略構成を示
すブロック図である。図1において、本発明の実施形態
におけるコンパイラ1は、原始プログラム(ソースプロ
グラム)Aを入力し、目的プログラム(オブジェクトプ
ログラム)Bを出力する言語処理系であり、構文意味解
析部11と、インライン展開部12と、コード最適化部
13と、レジスタ割付部14と、コード生成部15と、
を有して構成されている。FIG. 1 is a block diagram showing a schematic configuration of a compiler device to which an inline expansion method according to an embodiment of the present invention is applied. In FIG. 1, a compiler 1 according to an embodiment of the present invention is a language processing system that inputs a source program (source program) A and outputs a target program (object program) B. Unit 12, a code optimizing unit 13, a register allocating unit 14, a code generating unit 15,
Is configured.
【0044】原始プログラム(ソースプログラム)A
は、プログラミング言語の文法に基づいて作成されたプ
ログラムであり、この原始プログラムAをコンパイラや
インタプリタ等で機械語に翻訳したものが目的プログラ
ム(オブジェクトプログラム)Bである。Source program (source program) A
Is a program created based on the grammar of a programming language. A target program (object program) B is obtained by translating this source program A into a machine language by a compiler, an interpreter or the like.
【0045】構文意味解析部11は、フロントエンドと
も称され、原始プログラムAの字句解析、構文解析、意
味解析等を行い、中間言語形式に変換する。The syntactic and semantic analysis unit 11 performs lexical analysis, syntactic analysis, semantic analysis and the like of the source program A, and converts it into an intermediate language format.
【0046】インライン展開部12は、構文意味解析部
11により中間言語形式に変換された原始プログラムA
に存在する呼出し場所の位置情報を取得し、外部からの
展開指定に基づいてインライン展開を行う。The inline expansion unit 12 converts the source program A converted into the intermediate language format by the syntactic and semantic analysis unit 11.
Gets the location information of the call place existing in, and performs inline expansion based on the external expansion specification.
【0047】コード最適化部13は、インライン展開部
12によりインライン展開された原始プログラムAに最
適化処理を行う。The code optimizing unit 13 performs optimization processing on the source program A expanded inline by the inline expanding unit 12.
【0048】レジスタ割付部14は、コード最適化部1
3により最適化された原始プログラムAにレジスタ割り
付け処理を行う。The register allocating unit 14 is a code optimizing unit 1
3. A register allocation process is performed on the source program A optimized in step 3.
【0049】コード生成部15は、レジスタ割付部14
によるレジスタ割り付け処理が行われた原始プログラム
Aから目的プログラムBを生成して出力する。The code generation unit 15 includes a register allocation unit 14
A target program B is generated and output from the source program A that has been subjected to the register allocation processing.
【0050】〈第1の実施形態〉図2は、本発明の第1
の実施形態におけるインライン展開部にて実現されるイ
ンライン展開方式の処理例を示すフローチャートであ
る。図2において、本発明の実施形態におけるインライ
ン展開部12にてインライン展開処理を開始すると、入
力される原始プログラムAにおける全呼出し場所に対す
る処理を完了したか否かを判定する(ステップS2
1)。ここでの判定は、後述するステップ22〜25の
処理が終了したか否かを判定するものである。<First Embodiment> FIG. 2 shows a first embodiment of the present invention.
13 is a flowchart illustrating a processing example of an inline expansion method realized by the inline expansion unit according to the embodiment. In FIG. 2, when the inline expansion processing is started by the inline expansion unit 12 in the embodiment of the present invention, it is determined whether or not the processing for all the call locations in the input source program A is completed (step S2).
1). The determination here is for determining whether or not the processing of steps 22 to 25 described later has been completed.
【0051】ステップS21において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
している」と判定した場合には(ステップS21/は
い)、その他のインライン展開、すなわち、展開指定フ
ァイルに基づくインライン展開以外のインライン展開処
理を実行する(ステップS26)。If it is determined in step S21 that the processing for all the call locations in the source program A is "finished" (step S21 / Yes), the other inline expansion, that is, the expansion specification file (Step S26).
【0052】このステップS26においては、展開指定
ファイルに応じた展開の結果、ある関数への呼出しが1
つになった時に、その関数を無条件に展開する。In step S26, as a result of the expansion according to the expansion specification file, the call to a certain function is 1
When it becomes one, the function is unconditionally expanded.
【0053】ステップS21において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
していない」と判定した場合には(ステップS21/い
いえ)、処理中の呼出し場所の位置情報を取得し(ステ
ップS22)、外部からの指定に基づく展開指定ファイ
ルを参照し(ステップS23)、ステップS22で取得
された位置情報の呼出し場所が展開指定ファイルにて指
定されているか否かを判定する(ステップS24)。In step S21, if it is determined that the processing for all the calling places in the source program A is "not finished" (step S21 / No), the position information of the calling place being processed is acquired. (Step S22), and refers to the development designation file based on the designation from the outside (Step S23), and determines whether the calling location of the position information acquired in Step S22 is designated by the development designation file (Step S22). Step S24).
【0054】ステップS24において、展開指定ファイ
ルにて指定されている呼出し場所でないと判定された場
合は(ステップS24/いいえ)、ステップS21の処
理へと移行し、再度すべての呼出し場所に対する処理が
完了したか否かを判定する。If it is determined in step S24 that the call location is not the call location specified in the expansion designation file (step S24 / NO), the process proceeds to step S21, and the processing for all the call locations is completed again. It is determined whether or not it has been performed.
【0055】ステップS24において、展開指定ファイ
ルにて指定されている呼出し場所であると判定された場
合は(ステップS24/はい)、当該呼出し場所に対す
るインライン展開処理を行った後(ステップS25)、
ステップS21の処理へと移行し、再度すべての呼出し
場所に対する処理が完了したか否かを判定する。If it is determined in step S24 that the call location is specified by the expansion designation file (step S24 / Yes), the inline expansion process is performed on the call location (step S25).
The process shifts to the process of step S21, and it is determined again whether or not the processes for all the calling locations are completed.
【0056】次に、本発明の第1の実施形態であるイン
ライン展開方式の具体例を図3を参照しながら説明す
る。図3(A)は、ソースコードで表現された原始プロ
グラムである。この原始プログラムに基づいて本発明の
実施形態であるインライン展開方式が適用される場合を
以下に説明する。Next, a specific example of the inline expansion system according to the first embodiment of the present invention will be described with reference to FIG. FIG. 3A shows a source program represented by a source code. A case where the inline expansion method according to the embodiment of the present invention is applied based on this source program will be described below.
【0057】図3(A)において、従来の関数単位のイ
ンライン展開方式では、例えば、第11行目で定義され
ている「func」という関数がインライン展開指定さ
れている場合には、第5行目及び第7行目の「fun
c」の呼出しが共に展開され、「func」が展開指定
されていない場合には、共に展開されなかった。In FIG. 3A, in the conventional function-based inline expansion method, for example, when the function “func” defined on the eleventh line is designated for inline expansion, the fifth line And the 7th line "fun
If the call of “c” is expanded and “func” is not specified to be expanded, they are not expanded together.
【0058】これに対し、本発明の実施形態であるイン
ライン展開方式によれば、第5行目及び第7行目にある
呼出し場所に対して個別に展開指定を行なうことができ
る。On the other hand, according to the inline expansion method according to the embodiment of the present invention, it is possible to individually specify expansion for the call locations on the fifth and seventh lines.
【0059】図3(B)には、図3(A)に示すソース
コードに対応する展開指定ファイル(図2のステップ2
3に相当)が示されている。この展開指定ファイルにお
いて、第1行目の「#」で始まる行は、注釈行であり、
展開処理動作に対して影響を与えるものではない。FIG. 3B shows an expansion designation file (step 2 in FIG. 2) corresponding to the source code shown in FIG.
3). In this expansion specification file, the line beginning with “#” on the first line is a comment line,
It does not affect the expansion processing operation.
【0060】第3行目は、展開指定であり、行番号7、
文番号1に存在する「func」への呼出しを展開する
という意味である。The third line is an expansion designation.
This means that a call to “func” existing in statement number 1 is expanded.
【0061】なお、図3(B)に示した展開指定ファイ
ルの形式は、呼出し場所が特定される形式のものであれ
ば、上述される形式と異なるものであっても適用するこ
とが可能である。It should be noted that the format of the expansion designation file shown in FIG. 3B can be applied even if the format is different from the format described above, as long as the format specifies the calling place. is there.
【0062】図3(A)のソースコードに対して、図3
(B)に示す展開指定ファイルが与えられた場合は、第
5行目に存在する呼出し場所は、展開指定されていない
ので展開されず、第7行目に存在する呼出し場所は、展
開指定されているのでインライン展開処理が行なわれ
る。The source code shown in FIG.
When the expansion specification file shown in (B) is given, the call location existing on the fifth line is not expanded because expansion is not specified, and the call location existing on the seventh line is specified expansion. Therefore, inline expansion processing is performed.
【0063】〈第2の実施形態〉図4は、本発明の第2
の実施形態におけるインライン展開部にて実現されるイ
ンライン展開方式の処理例を示すフローチャートであ
る。本発明の第2の実施形態は、すべての呼出し場所に
対して、展開指定ファイルの情報を参照することによっ
て、インライン展開を行った後、一切のインライン展開
を行なわないという点で、本発明の第1の実施形態と相
違するものである。<Second Embodiment> FIG. 4 shows a second embodiment of the present invention.
13 is a flowchart illustrating a processing example of an inline expansion method realized by the inline expansion unit according to the embodiment. The second embodiment of the present invention is different from the first embodiment in that, by referring to the information of the expansion specification file for all the calling locations, after performing the inline expansion, no inline expansion is performed. This is different from the first embodiment.
【0064】図4において、本発明の第2の実施形態に
おけるインライン展開部12にてインライン展開処理を
開始すると、入力される原始プログラムAにおける全呼
出し場所に対する処理を完了したか否かを判定する(ス
テップS41)。ここでの判定は、後述するステップ4
2〜44の処理が終了したか否かを判定するものであ
る。In FIG. 4, when the inline expansion processing is started by the inline expansion unit 12 according to the second embodiment of the present invention, it is determined whether or not the processing for all the call locations in the input source program A has been completed. (Step S41). This determination is made in step 4 described later.
It is determined whether or not the processing of steps 2 to 44 has been completed.
【0065】ステップS41において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
している」と判定した場合には(ステップS41/は
い)、一切のインライン展開処理を行わずに処理を終了
する。If it is determined in step S41 that the processing for all the call locations in the source program A is "finished" (step S41 / Yes), the processing is performed without performing any inline expansion processing. To end.
【0066】ステップS41において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
していない」と判定した場合には(ステップS41/い
いえ)、処理中の呼出し場所の位置情報を取得し(ステ
ップS42)、外部からの指定に基づく展開指定ファイ
ルを参照し(ステップS43)、ステップS42で取得
された位置情報の呼出し場所が展開指定ファイルにて指
定されているか否かを判定する(ステップS44)。If it is determined in step S41 that the processing for all the call locations in the source program A has not been completed (step S41 / NO), the position information of the call location being processed is acquired. (Step S42), and refers to the expansion specification file based on the external specification (Step S43), and determines whether the calling location of the position information acquired in Step S42 is specified in the expansion specification file (Step S42). Step S44).
【0067】ステップS44において、展開指定ファイ
ルにて指定されている呼出し場所でないと判定された場
合は(ステップS44/いいえ)、ステップS41の処
理へと移行し、再度すべての呼出し場所に対する処理が
完了したか否かを判定する。If it is determined in step S44 that the location is not the calling location specified in the expansion designation file (step S44 / NO), the process proceeds to step S41, and the processing for all the calling locations is completed again. It is determined whether or not it has been performed.
【0068】ステップS44において、展開指定ファイ
ルにて指定されている呼出し場所であると判定された場
合は(ステップS44/はい)、当該呼出し場所に対す
るインライン展開処理を行った後(ステップS45)、
ステップS41の処理へと移行し、再度すべての呼出し
場所に対する処理が完了したか否かを判定する。If it is determined in step S44 that the call location is specified by the expansion designation file (step S44 / Yes), the inline expansion process is performed on the call location (step S45).
The process shifts to step S41, and it is determined again whether or not the processing for all the calling locations has been completed.
【0069】〈第3の実施形態〉図5は、本発明の第3
の実施形態におけるインライン展開部にて実現されるイ
ンライン展開方式の処理例を示すフローチャートであ
る。本発明の第3の実施形態は、呼出し場所が展開指定
さているかどうかの判定の際に、展開指定ファイルでは
なく、オプション指定情報を参照するという点におい
て、本発明の第1の実施形態と相違するものである。<Third Embodiment> FIG. 5 shows a third embodiment of the present invention.
13 is a flowchart illustrating a processing example of an inline expansion method realized by the inline expansion unit according to the embodiment. The third embodiment of the present invention differs from the first embodiment of the present invention in that, when determining whether or not a calling place is specified to be expanded, an option specification information is referred to instead of an expansion specification file. Is what you do.
【0070】図5において、本発明の第3の実施形態に
おけるインライン展開部12にてインライン展開処理を
開始すると、入力される原始プログラムAにおける全呼
出し場所に対する処理を完了したか否かを判定する(ス
テップS51)。ここでの判定は、後述するステップ5
2〜54の処理が終了したか否かを判定するものであ
る。In FIG. 5, when the inline expansion process is started by the inline expansion unit 12 according to the third embodiment of the present invention, it is determined whether or not the processing for all the call locations in the input source program A has been completed. (Step S51). This determination is made in step 5 described later.
It is determined whether or not the processing of steps 2 to 54 has been completed.
【0071】ステップS51において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
している」と判定した場合には(ステップS51/は
い)、その他のインライン展開、すなわち、オプション
指定に基づくインライン展開以外のインライン展開処理
を実行する(ステップS56)。If it is determined in step S51 that the processing for all the call locations in the source program A is "finished" (step S51 / Yes), the other inline expansion, that is, the option designation is performed. An inline expansion process other than the inline expansion based on the inline expansion is executed (step S56).
【0072】ステップS51において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
していない」と判定した場合には(ステップS51/い
いえ)、処理中の呼出し場所の位置情報を取得し(ステ
ップS52)、外部からの指定に基づくオプション指定
を参照し(ステップS53)、ステップS52で取得さ
れた位置情報の呼出し場所がオプション指定にて展開指
定されているか否かを判定する(ステップS54)。If it is determined in step S51 that the processing for all the call locations in the source program A has not been completed (step S51 / NO), the position information of the call location being processed is acquired. (Step S52), referring to the option designation based on the designation from the outside (Step S53), it is determined whether or not the calling location of the position information acquired in Step S52 is expanded and designated by the option designation (Step S52). S54).
【0073】ステップS54において、オプション指定
にて展開指定されている呼出し場所でないと判定された
場合は(ステップS54/いいえ)、ステップS51の
処理へと移行し、再度すべての呼出し場所に対する処理
が完了したか否かを判定する。If it is determined in step S54 that the call place is not the call place specified by the option specification (step S54 / NO), the process proceeds to step S51, and the processing for all the call places is completed again. It is determined whether or not it has been performed.
【0074】ステップS54において、オプション指定
にて展開指定されている呼出し場所であると判定された
場合は(ステップS54/はい)、当該呼出し場所に対
するインライン展開処理を行った後(ステップS5
5)、ステップS51の処理へと移行し、再度すべての
呼出し場所に対する処理が完了したか否かを判定する。If it is determined in step S54 that the called place is expanded and specified by the option specification (step S54 / Yes), inline expansion processing is performed for the called place (step S5).
5), the process proceeds to step S51, and it is determined again whether or not the processes for all the calling locations have been completed.
【0075】ステップS53におけるオプション指定の
情報形式としては、例えば、−expand 7,1,
funcといった形式のオプション指定情報とすること
ができるが、呼出し場所が特定できる形式であればこの
形式と異なるものであってもよい。As the information format of the option designation in step S53, for example, -expand 7,1,1,
The option designation information may be in the form of a function such as func, but may be different from this format as long as the call location can be specified.
【0076】〈第4の実施形態〉図6は、本発明の第4
の実施形態におけるインライン展開部にて実現されるイ
ンライン展開方式の処理例を示すフローチャートであ
る。本発明の第4の実施形態は、展開指定ファイルを別
ファイルとして用意するのでなく、原始プログラム中に
埋め込み、展開指定ファイルやオプション指定を参照す
ることなく、原始プログラムの呼出し直前に展開指定が
あるか否かを判定し、インライン展開を行う点におい
て、本発明の第1〜第3の実施形態と相違するものであ
る。<Fourth Embodiment> FIG. 6 shows a fourth embodiment of the present invention.
13 is a flowchart illustrating a processing example of an inline expansion method realized by the inline expansion unit according to the embodiment. In the fourth embodiment of the present invention, the development specification file is not prepared as a separate file, but is embedded in the source program, and the expansion specification is specified immediately before the calling of the source program without referring to the expansion specification file or the option specification. This is different from the first to third embodiments of the present invention in that it is determined whether or not the inline expansion is performed.
【0077】図6において、本発明の第4の実施形態に
おけるインライン展開部12にてインライン展開処理を
開始すると、入力される原始プログラムAにおける全呼
出し場所に対する処理を完了したか否かを判定する(ス
テップS61)。ここでの判定は、後述するステップ6
2〜64の処理が終了したか否かを判定するものであ
る。In FIG. 6, when the inline expansion processing is started by the inline expansion unit 12 in the fourth embodiment of the present invention, it is determined whether or not the processing for all the call locations in the input source program A has been completed. (Step S61). This determination is made in step 6 described later.
It is to determine whether or not the processes 2 to 64 have been completed.
【0078】ステップS61において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
している」と判定した場合には(ステップS61/は
い)、原始プログラムAに埋め込まれている展開指定以
外のインライン展開処理を実行する(ステップS6
5)。If it is determined in step S61 that the processing for all the call locations in the source program A is "finished" (step S61 / Yes), the expansion designation embedded in the source program A is specified. (Step S6)
5).
【0079】ステップS61において、原始プログラム
Aにおけるすべての呼出し場所に対しての処理を「終了
していない」と判定した場合には(ステップS61/い
いえ)、処理中の呼出し場所の位置情報を取得し(ステ
ップS62)、原始プログラムAにおける呼出し場所の
直前に展開指定があるか否かを判定する(ステップS6
3)。If it is determined in step S61 that the processing for all the call locations in the source program A has not been completed (step S61 / NO), the position information of the call location being processed is acquired. Then (step S62), it is determined whether or not there is an expansion designation immediately before the calling place in the source program A (step S6).
3).
【0080】ステップS63において、原始プログラム
Aの呼出し場所直前に展開指定がないと判定された場合
は(ステップS63/いいえ)、ステップS61の処理
へと移行し、再度すべての呼出し場所に対する処理が完
了したか否かを判定する。If it is determined in step S63 that there is no expansion specification immediately before the calling location of the source program A (step S63 / NO), the process proceeds to step S61, and the processing for all the calling locations is completed again. It is determined whether or not it has been performed.
【0081】ステップS63において、原始プログラム
Aの呼出し場所直前に展開指定があると判定された場合
は(ステップS63/はい)、当該呼出し場所に対する
インライン展開処理を行った後(ステップS64)、ス
テップS61の処理へと移行し、再度すべての呼出し場
所に対する処理が完了したか否かを判定する。In step S63, if it is determined that there is an expansion designation immediately before the call location of the source program A (step S63 / Yes), the inline expansion process is performed on the call location (step S64), and then step S61 is performed. Then, it is determined again whether or not the processing for all the call locations has been completed.
【0082】図7は、原始プログラム中に展開指定情報
を埋め込んだ原始プログラムの例を示す図である。図7
において、第7行目に埋め込まれた「#pragma」
命令が、直後の行に示される文番号1に存在する呼出し
場所の展開を指定している。FIG. 7 is a diagram showing an example of a source program in which expansion designation information is embedded in the source program. FIG.
, “#Pragma” embedded in the seventh line
The instruction specifies the expansion of the call location existing at statement number 1 shown in the line immediately after.
【0083】〈第5の実施形態〉図8は、本発明の第5
の実施形態におけるインライン展開部にて実現されるイ
ンライン展開方式の処理例を示すフローチャートであ
る。本発明の第5の実施形態は、原始プログラムA中の
すべての呼出し場所に対して処理を行なうのではなく、
展開指定ファイル中に存在するすべての呼出し場所に対
する展開処理を行なうという点において、本発明の第1
〜第4の実施形態と相違するものである。<Fifth Embodiment> FIG. 8 shows a fifth embodiment of the present invention.
13 is a flowchart illustrating a processing example of an inline expansion method realized by the inline expansion unit according to the embodiment. In the fifth embodiment of the present invention, instead of performing processing for all the call locations in the source program A,
According to the first aspect of the present invention, expansion processing is performed on all call locations existing in the expansion specification file.
To the fourth embodiment.
【0084】図8において、本発明の第5の実施形態に
おけるインライン展開部12にてインライン展開処理を
開始すると、外部からの指定に基づく展開指定ファイル
を参照し(ステップS81)、入力される原始プログラ
ムAにおける展開指定されたすべての呼出し場所に対す
る処理を完了したか否かを判定する(ステップS8
2)。ここでの判定は、後述するステップ83〜84の
処理が終了したか否かを判定するものである。In FIG. 8, when the inline expansion processing is started by the inline expansion unit 12 in the fifth embodiment of the present invention, an expansion specification file based on an external specification is referenced (step S81), and the input primitive is input. It is determined whether or not the processing for all the call locations designated to be expanded in the program A has been completed (step S8).
2). This determination is for determining whether or not the processing of steps 83 to 84 described later has been completed.
【0085】ステップS82において、参照した展開指
定ファイルにて指定されているすべての呼出し場所に対
しての処理を「終了している」と判定した場合には(ス
テップS82/はい)、その他のインライン展開、すな
わち、展開指定ファイルに基づくインライン展開以外の
インライン展開処理を実行する(ステップS85)。If it is determined in step S82 that the processing for all the call locations specified in the referred expansion specification file is "finished" (step S82 / Yes), the other inline Expansion, that is, inline expansion processing other than inline expansion based on the expansion specification file is executed (step S85).
【0086】ステップS82において、参照した展開指
定ファイルにて指定されるすべての呼出し場所に対して
の処理を「終了していない」と判定した場合には(ステ
ップS82/いいえ)、指定された呼出し場所を検索し
(ステップS83)、当該検索された呼出し場所に対す
るインライン展開処理をを行った後(ステップS8
4)、ステップS82の処理へと移行し、再度、展開指
定ファイルにより指定された呼出し場所のインライン展
開処理が完了しているか否かを判定する。If it is determined in step S82 that the processing for all the call locations specified by the referred expansion specification file is not "finished" (step S82 / NO), the specified call After searching for a place (step S83), an inline expansion process is performed for the searched calling place (step S8).
4), the process proceeds to step S82, and it is determined again whether or not the inline expansion process at the calling location specified by the expansion specification file has been completed.
【0087】本発明の第5の実施形態によれば、展開指
定ファイルにより展開指定される呼出し場所の数は、必
ず、原始プログラム中のすべての呼出し場所の数以下な
ので、処理の繰り返し回数を削減することができ、展開
処理の高速化を図ることができる。According to the fifth embodiment of the present invention, the number of call locations specified by the expansion specification file is always equal to or less than the number of all call locations in the source program. And the speed of the expansion process can be increased.
【0088】なお、上述される実施形態は、本発明の好
適な実施形態であり、本発明の要旨を逸脱しない範囲内
において種々変形して実施することが可能である。例え
ば、本発明の第5の実施形態に示されるステップS82
における判定処理において、展開指定されたすべての呼
出し場所に対してのインライン展開処理が終了した場合
には、展開指定された呼出し場所以外のインライン展開
処理を行わないようにすることで、インライン展開処理
の高速化を図ることが可能である。The above-described embodiment is a preferred embodiment of the present invention, and can be variously modified and implemented without departing from the gist of the present invention. For example, step S82 shown in the fifth embodiment of the present invention.
When the inline expansion processing is completed for all the call locations specified for expansion in the judgment processing in, the inline expansion processing is performed by not performing the inline expansion processing except for the call location specified for expansion. Can be speeded up.
【0089】[0089]
【発明の効果】以上の説明より明らかなように、本発明
のコンパイラ装置及びそのインライン展開方式によれ
ば、原始プログラム中の呼出し場所毎にインライン展開
を指定することができることにより、呼出し場所毎にイ
ンライン展開による最終的なコード性能向上効果が異な
る場合に、従来のような関数毎のインライン展開指定よ
りも効率的にインライン展開を指定することができる。As is apparent from the above description, according to the compiler apparatus and the inline expansion method of the present invention, inline expansion can be designated for each call place in a source program, and therefore, for each call place, When the final effect of improving the code performance by the inline expansion is different, the inline expansion can be specified more efficiently than the conventional inline expansion specification for each function.
【0090】また、本発明のコンパイラ装置及びそのイ
ンライン展開方式によれば、展開指定ファイルやオプシ
ョン指定というように、外部からインライン展開を指定
する呼出し場所を指定することができる。Further, according to the compiler apparatus and the inline expansion method of the present invention, it is possible to externally specify a call place for specifying inline expansion such as an expansion specification file or an option specification.
【0091】また、本発明のコンパイラ装置及びそのイ
ンライン展開方式によれば、すべての呼出し場所に対し
て、展開指定情報を参照してのインライン展開を行った
後、他のインライン展開を一切行わないので、展開処理
を高速化することができる。Further, according to the compiler apparatus and the inline expansion method of the present invention, after performing inline expansion with reference to expansion specification information for all call locations, no other inline expansion is performed. Therefore, the expansion processing can be speeded up.
【0092】また、本発明のコンパイラ装置及びそのイ
ンライン展開方式によれば、展開指定情報を別途用意す
る必要がなく、原始プログラム中に埋め込むことができ
るので、呼出し場所の直前にインライン展開指定がある
か否かに基づいて展開処理を行うことができる。Further, according to the compiler apparatus and the inline expansion method of the present invention, since there is no need to separately prepare expansion specification information and it is possible to embed it in the source program, there is an inline expansion specification immediately before the calling place. The expansion processing can be performed based on whether or not.
【0093】また、本発明のコンパイラ装置及びそのイ
ンライン展開方式によれば、展開指定情報にて指定され
る呼出し場所に対してのインライン展開処理のみを行う
ので、さらに展開処理を高速化することができる。Further, according to the compiler apparatus and the inline expansion method of the present invention, only the inline expansion processing is performed for the call location specified by the expansion specification information, so that the expansion processing can be further speeded up. it can.
【0094】さらに、本発明のコンパイラ装置及びその
インライン展開方式によれば、すべての呼出し場所に対
して展開指定される呼出し場所の数は、必ず、原始プロ
グラム中のすべての呼出し場所の数以下なので、処理の
繰り返し回数を削減することができ、展開処理の高速化
を図ることができる。Further, according to the compiler device and the inline expansion method of the present invention, the number of call locations specified for expansion for all call locations is always less than the number of all call locations in the source program. Thus, the number of repetitions of the processing can be reduced, and the speed of the development processing can be increased.
【図1】本発明の実施形態であるインライン展開方式が
適用されるコンパイラ装置の概略構成を示すブロック図
である。FIG. 1 is a block diagram illustrating a schematic configuration of a compiler device to which an inline expansion method according to an embodiment of the present invention is applied.
【図2】本発明の第1の実施形態におけるインライン展
開部の動作例を示すフローチャートである。FIG. 2 is a flowchart illustrating an operation example of an inline expansion unit according to the first embodiment of the present invention.
【図3】本発明の第1の実施形態における原始プログラ
ムと展開指定ファイルの具体例を示す図である。FIG. 3 is a diagram showing a specific example of a source program and an expansion designation file according to the first embodiment of the present invention.
【図4】本発明の第2の実施形態におけるインライン展
開部の動作例を示すフローチャートである。FIG. 4 is a flowchart illustrating an operation example of an inline expansion unit according to a second embodiment of the present invention.
【図5】本発明の第3の実施形態におけるインライン展
開部の動作例を示すフローチャートである。FIG. 5 is a flowchart illustrating an operation example of an inline expansion unit according to a third embodiment of the present invention.
【図6】本発明の第4の実施形態におけるインライン展
開部の動作例を示すフローチャートである。FIG. 6 is a flowchart illustrating an operation example of an inline expansion unit according to a fourth embodiment of the present invention.
【図7】本発明の第4の実施形態における原始プログラ
ムの具体例を示す図である。FIG. 7 is a diagram illustrating a specific example of a source program according to a fourth embodiment of the present invention.
【図8】本発明の第5の実施形態におけるインライン展
開部の動作例を示すフローチャートである。FIG. 8 is a flowchart illustrating an operation example of an inline expansion unit according to a fifth embodiment of the present invention.
【図9】従来のインライン展開方式を示す第1の具体例
を示す図である。FIG. 9 is a diagram showing a first specific example showing a conventional inline expansion method.
【図10】従来のインライン展開方式を示す第2の具体
例を示す図である。FIG. 10 is a diagram showing a second specific example showing a conventional inline expansion method.
【図11】従来のインライン展開方式を示す第3の具体
例を示す図である。FIG. 11 is a diagram showing a third specific example showing a conventional inline expansion method.
1 コンパイラ 11 構文意味解析部 12 インライン展開部 13 コード最適化部 14 レジスタ割付部 15 コード生成部 A 原始プログラム B 目的プログラム DESCRIPTION OF SYMBOLS 1 Compiler 11 Syntactic and semantic analysis part 12 Inline expansion part 13 Code optimization part 14 Register allocation part 15 Code generation part A Source program B Objective program
Claims (22)
開処理を行った後、最適化を行うことで目的プログラム
を出力するコンパイラ装置であって、 インライン展開を指定する展開指定情報に基づいて、前
記最適化の効果が大きいと見込まれる呼出し場所のみを
選択的にインライン展開することを特徴とするコンパイ
ラ装置。1. A compiler device for inputting a source program, performing inline expansion processing, and then performing optimization to output a target program, wherein the compiler apparatus performs optimization based on expansion specification information for specifying inline expansion. A compiler device characterized by selectively inline-expanding only those call locations that are expected to have a large effect.
のプログラムに変換する構文意味解析手段と、 前記構文意味解析手段により変換された前記中間言語形
式のプログラムをインライン展開するインライン展開手
段と、 前記インライン展開手段によりインライン展開された前
記中間言語形式のプログラムのコード最適化を行うコー
ド最適化手段と、 前記コード最適化手段によりコード最適化された前記中
間言語形式のプログラムのレジスタ割り付けを行うレジ
スタ割付手段と、 前記レジスタ割付手段によりレジスタ割り付けられた前
記中間言語形式のプログラムから目的プログラムを生成
するコード生成手段と、 を有して構成されることを特徴とする請求項1記載のコ
ンパイラ装置。2. The compiler apparatus according to claim 1, further comprising: a syntactic and semantic analyzing unit configured to analyze the syntactic and semantic of the source program and convert the syntactic and semantic into a program in an intermediate language format; Inline expansion means for performing inline expansion; code optimization means for performing code optimization of the program in the intermediate language format inline expanded by the inline expansion means; and the intermediate language format code optimized by the code optimization means Register allocating means for allocating registers of the program, and code generating means for generating a target program from the program in the intermediate language format, the registers being allocated by the register allocating means. The compiler device according to claim 1.
ライン展開処理を完了したか否かを判定する展開処理完
了判定部と、 前記展開処理完了判定部にて処理未完了と判定された呼
出し場所の位置情報を取得する位置情報取得部と、 前記展開指定情報を参照する参照部と、 前記位置情報取得部により取得された呼出し場所が、前
記参照手段により参照された前記展開指定情報に該当す
る呼出し場所であるか否かを判定する判定部と、 前記判定部により前記位置情報取得部にて取得された呼
出し場所が前記展開指定情報にて指定される呼出し場所
である場合には、インライン展開処理を実行するインラ
イン展開処理実行部と、 を有することを特徴とする請求項2記載のコンパイラ装
置。3. An expansion processing completion determining unit that determines whether inline expansion processing has been completed for all calling locations of the source program, and processing not completed by the expansion processing completion determining unit. A position information acquisition unit that acquires the position information of the call place determined to be; a reference unit that refers to the deployment designation information; and the call place acquired by the position information acquisition unit is referred to by the reference unit. A determination unit that determines whether or not the call location corresponds to the expansion designation information; and the call location acquired by the position information acquisition unit by the determination unit is a call location specified by the deployment specification information. 3. The compiler device according to claim 2, further comprising: an inline expansion processing execution unit that executes an inline expansion processing.
してのインライン展開処理が完了したと判定された場合
には、前記展開指定情報にて展開指定される呼出し場所
以外のうち、適当と判断されるものについて、インライ
ン展開処理を実行することを特徴とする請求項3記載の
コンパイラ装置。4. The inline expansion unit, when the expansion processing completion determination unit determines that inline expansion processing has been completed for all call locations, expansion is designated by the expansion specification information. 4. The compiler apparatus according to claim 3, wherein an inline expansion process is executed for an item other than the call place determined to be appropriate.
ンライン展開処理を完了したか否かを判定する展開処理
完了判定部と、 前記展開処理完了判定部にて処理未完了と判定された呼
出し場所の位置情報を取得する位置情報取得部と、 前記展開指定情報を参照する参照部と、 前記位置情報取得部により取得された呼出し場所が、前
記参照部により参照された前記展開指定情報に該当する
呼出し場所であるか否かを判定する判定部と、 前記判定部により前記位置情報取得部程にて取得された
呼出し場所が前記展開指定情報にて指定される呼出し場
所である場合には、インライン展開処理を実行するイン
ライン展開処理実行部とを有し、 前記展開処理完了判定部によりすべての呼出し場所に対
しての処理が完了したと判定された場合には、インライ
ン展開処理を終了することを特徴とする請求項2記載の
コンパイラ装置。5. An expansion processing completion determining unit that determines whether inline expansion processing has been completed for all calling locations of the source program, and an expansion processing completion determination unit. A position information acquisition unit that acquires position information of a call place determined to be incomplete, a reference unit that refers to the expansion designation information, and a call place acquired by the position information acquisition unit is referenced by the reference unit. A determination unit that determines whether or not the call location corresponds to the specified deployment specification information; and a call location acquired by the determination unit in the location information acquisition unit is specified by the deployment specification information. If it is a calling place, it has an inline expansion processing execution unit that executes inline expansion processing, and the expansion processing completion determination unit 3. The compiler according to claim 2, wherein when it is determined that the processing is completed, the inline expansion processing is terminated.
る請求項1から5のいずれか1項に記載のコンパイラ装
置。6. The compiler device according to claim 1, wherein the expansion designation information is designated by an external user input.
請求項1または2記載のコンパイラ装置。7. The compiler according to claim 1, wherein the source program has the expansion designation information embedded therein.
ンライン展開処理を完了したか否かを判定する展開処理
完了判定部と、 前記展開処理完了判定部にて処理未完了と判定された呼
出し場所の位置情報を取得する位置情報取得部と、 前記原始プログラムに埋め込まれている展開指定情報を
参照する参照部と、 前記位置情報取得部により取得された呼出し場所が、前
記参照部により参照された前記展開指定情報に該当する
呼出し場所であるか否かを判定する判定部と、 前記判定部により前記位置情報取得部にて取得された呼
出し場所が前記展開指定情報にて指定される呼出し場所
である場合には、インライン展開処理を実行するインラ
イン展開処理実行部と、 を有することを特徴とする請求項7記載のコンパイラ装
置。8. The expansion processing completion determining unit that determines whether or not the inline expansion processing has been completed for all calling locations of the source program, and the expansion processing completion determination unit A position information acquisition unit that acquires position information of a call place determined to be incomplete, a reference unit that refers to expansion designation information embedded in the source program, and a call place acquired by the position information acquisition unit A determination unit that determines whether or not the call location corresponds to the deployment designation information referred to by the reference unit; and the call location acquired by the location information acquisition unit by the determination unit is the deployment designation. 8. An inline expansion processing execution unit that executes an inline expansion processing when the call location is specified by the information. Compiler device as described.
してのインライン展開処理が完了したと判定された場合
には、前記展開指定情報にて展開指定される呼出し場所
以外のうち、適当と判断されるものについて、インライ
ン展開処理を実行することを特徴とする請求項8記載の
コンパイラ装置。9. The inline expansion unit, when the expansion processing completion determination unit determines that inline expansion processing has been completed for all call locations, expansion is specified by the expansion specification information. 9. The compiler apparatus according to claim 8, wherein an inline expansion process is executed for an item other than the calling place that is determined to be appropriate.
される呼出し場所の展開処理が完了したか否かを判定す
る展開処理完了判定部と、 前記展開処理完了判定部にて処理未完了と判定された呼
出し場所を検索する検索部と、 前記検索部により検索された呼出し場所に対してのイン
ライン展開処理を実行するインライン展開処理実行部
と、 を有することを特徴とする請求項2記載のコンパイラ装
置。10. The inline expansion unit includes: a reference unit that refers to the expansion specification information; and whether or not expansion processing of a call location specified by the expansion specification information referred to by the reference unit is completed. A deployment process completion determining unit for determining, a search unit for searching for a call place determined to be incomplete by the deployment process completion determination unit, and an inline deployment process for the call location searched for by the search unit 3. The compiler apparatus according to claim 2, further comprising: an inline expansion processing execution unit that executes the processing.
されたすべての呼出し場所に対しての展開処理が完了し
たと判定された場合には、前記展開指定情報にて展開指
定される呼出し場所以外のうち、適当と判断されるもの
について、インライン展開処理を実行することを特徴と
する請求項10記載のコンパイラ装置。11. The inline expansion unit, when the processing completion determination unit determines that expansion processing for all call locations specified by the expansion specification information has been completed, the expansion specification information 11. The compiler device according to claim 10, wherein an inline expansion process is executed for a call place other than the call place designated to be expanded as determined to be appropriate.
展開処理を行った後、最適化を行うことで目的プログラ
ムを出力するコンパイラにおけるインライン展開方式で
あって、 インライン展開を指定する展開指定情報に基づいて、前
記最適化の効果が大きいと見込まれる呼出し場所のみを
選択的にインライン展開することを特徴とするインライ
ン展開方式。12. An inline expansion method in a compiler for inputting a source program, performing inline expansion processing, and then performing optimization to output a target program, based on expansion specification information for specifying inline expansion. An inline expansion method which selectively inlines only a call place where the effect of the optimization is expected to be large.
のプログラムに変換する構文意味解析部と、 前記構文意味解析部により変換された前記中間言語形式
のプログラムをインライン展開するインライン展開部
と、 前記インライン展開部によりインライン展開された前記
中間言語形式のプログラムのコード最適化を行うコード
最適化部と、 前記コード最適化部によりコード最適化された前記中間
言語形式のプログラムのレジスタ割り付けを行うレジス
タ割付部と、 前記レジスタ割付部によりレジスタ割り付けられた前記
中間言語形式のプログラムから目的プログラムを生成す
るコード生成部と、 を有して構成されることを特徴とする請求項12記載の
インライン展開方式。13. A syntactic and semantic analysis unit for analyzing the syntactic and semantic of the source program and converting the syntactic and semantic program into an intermediate language format program, and in-line converting the intermediate language format program converted by the syntactic and semantic analysis unit An inline expansion unit to be expanded; a code optimization unit that optimizes the code of the intermediate language format program inline expanded by the inline expansion unit; and an intermediate language format code optimized by the code optimization unit. A program comprising: a register allocating unit for allocating registers of a program; and a code generating unit for generating a target program from the program in the intermediate language format allocated by the register allocating unit. Item 12. The inline expansion method according to Item 12.
ライン展開処理を完了したか否かを判定する展開処理完
了判定工程と、 前記展開処理完了判定工程にて処理未完了と判定された
呼出し場所の位置情報を取得する位置情報取得工程と、 前記展開指定情報を参照する参照工程と、 前記位置情報取得工程により取得された呼出し場所が、
前記参照工程により参照された前記展開指定情報に該当
する呼出し場所であるか否かを判定する判定工程と、 前記判定工程により前記位置情報取得工程により取得さ
れた呼出し場所が前記展開指定情報にて指定される呼出
し場所である場合には、インライン展開処理を実行する
インライン展開処理実行工程と、 を有することを特徴とする請求項13記載のインライン
展開方式。14. An expansion processing completion determining step of determining whether or not inline expansion processing has been completed for all call locations of the source program, and processing not completed in the expansion processing completion determining step. Position information acquisition step of acquiring the position information of the call place determined to be, and a reference step of referring to the expansion designation information, and the call place acquired by the position information acquisition step,
A determination step of determining whether or not the call location corresponds to the deployment designation information referred to by the reference step; and the call location acquired by the position information acquisition step in the determination step is the deployment designation information. 14. The inline expansion system according to claim 13, further comprising: an inline expansion process execution step of executing an inline expansion process when the call location is specified.
対してのインライン展開処理が完了したと判定された場
合には、前記展開指定情報にて展開指定される呼出し場
所以外のうち、適当と判断されるものについて、インラ
イン展開処理を実行することを特徴とする請求項14記
載のインライン展開方式。15. The inline expansion section, when it is determined in the expansion processing completion determination step that inline expansion processing has been completed for all call locations, expansion is specified by the expansion specification information. 15. The inline expansion method according to claim 14, wherein an inline expansion process is executed for a portion other than the call location that is determined to be appropriate.
ンライン展開処理を完了したか否かを判定する展開処理
完了判定工程と、 前記展開処理完了判定工程にて処理未完了と判定された
呼出し場所の位置情報を取得する位置情報取得工程と、 前記展開指定情報を参照する参照工程と、 前記位置情報取得工程により取得された呼出し場所が、
前記参照工程により参照された前記展開指定情報に該当
する呼出し場所であるか否かを判定する判定工程と、 前記判定工程により前記位置情報取得工程により取得さ
れた呼出し場所が前記展開指定情報にて指定される呼出
し場所である場合には、インライン展開処理を実行する
インライン展開処理実行工程とを有し、 前記展開処理完了判定工程によりすべての呼出し場所に
対しての処理が完了したと判定された場合には、インラ
イン展開処理を終了することを特徴とする請求項13記
載のインライン展開方式。16. The expansion processing completion determining step of determining whether inline expansion processing has been completed for all calling locations of the source program, and the expansion processing completion determining step A position information acquisition step of acquiring position information of a call place determined to be incomplete, a reference step of referring to the expansion designation information, and a call place acquired by the position information acquisition step,
A determination step of determining whether or not the call location corresponds to the deployment designation information referred to by the reference step; and the call location acquired by the position information acquisition step in the determination step is the deployment designation information. If it is a designated calling place, the method has an inline expanding process executing step of executing an inline expanding process, and it has been determined that the processing for all the calling places has been completed by the expanding process completion determining step. 14. The inline expansion method according to claim 13, wherein the inline expansion processing is terminated in such a case.
る請求項12から16のいずれか1項に記載のインライ
ン展開方式。17. The inline expansion method according to claim 12, wherein the expansion specification information is specified by an external user input.
請求項12または13記載のインライン展開方式。18. The inline expansion method according to claim 12, wherein the expansion designation information is embedded in the source program.
ンライン展開処理を完了したか否かを判定する展開処理
完了判定工程と、 前記展開処理完了判定工程にて処理未完了と判定された
呼出し場所の位置情報を取得する位置情報取得工程と、 前記原始プログラムに埋め込まれている展開指定情報を
参照する参照工程と、 前記位置情報取得工程により取得された呼出し場所が、
前記参照工程により参照された前記展開指定情報に該当
する呼出し場所であるか否かを判定する判定工程と、 前記判定工程により前記位置情報取得工程により取得さ
れた呼出し場所が前記展開指定情報にて指定される呼出
し場所である場合には、インライン展開処理を実行する
インライン展開処理実行工程と、 を有することを特徴とする請求項18記載のインライン
展開方式。19. The expansion processing completion determining step of determining whether or not the inline expansion processing has been completed for all calling locations of the source program, and the expansion processing completion determining step A position information acquisition step of acquiring position information of a call place determined to be incomplete, a reference step of referencing expansion designation information embedded in the source program, and a call place acquired by the position information acquisition step But,
A determination step of determining whether or not the call location corresponds to the deployment designation information referred to by the reference step; and the call location acquired by the position information acquisition step in the determination step is the deployment designation information. 19. The inline expansion system according to claim 18, further comprising: an inline expansion process executing step of executing an inline expansion process when the call location is designated.
対してのインライン展開処理が完了したと判定された場
合には、前記展開指定情報にて展開指定される呼出し場
所以外のうち、適当と判断されるものについて、インラ
イン展開処理を実行することを特徴とする請求項19記
載のインライン展開方式。20. The inline expansion section, when it is determined in the expansion processing completion determination step that inline expansion processing has been completed for all call locations, expansion is specified by the expansion specification information. 20. The inline expansion method according to claim 19, wherein an inline expansion process is executed for a part other than the calling place that is determined to be appropriate.
定される呼出し場所の展開処理が完了したか否かを判定
する展開処理完了判定工程と、 前記展開処理完了判定工程にて処理未完了と判定された
呼出し場所を検索する検索工程と、 前記検索工程により検索された呼出し場所に対してのイ
ンライン展開処理を実行するインライン展開処理実行工
程と、 を有することを特徴とする請求項13記載のインライン
展開方式。21. The inline expansion section, wherein: a reference step of referring to the expansion specification information; and whether or not expansion processing of a call place specified by the expansion specification information referred to in the reference step is completed. A deployment process completion determination step for determining; a search step for searching for a call place determined to be incomplete in the deployment process completion determination step; and an inline deployment process for the call place searched for in the search step. The inline expansion method according to claim 13, further comprising: performing an inline expansion process to be executed.
定されたすべての呼出し場所に対しての展開処理が完了
したと判定された場合には、前記展開指定情報にて展開
指定される呼出し場所以外のうち、適当と判断されるも
のについて、インライン展開処理を実行することを特徴
とする請求項21記載のインライン展開方式。22. The inline expansion unit, when the processing completion determination step determines that expansion processing has been completed for all call locations specified by the expansion specification information, the expansion specification information 22. The inline expansion method according to claim 21, wherein an inline expansion process is executed for a call place other than the call location specified to be expanded as determined to be appropriate.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000147445A JP2001325110A (en) | 2000-05-15 | 2000-05-15 | Complier device and its in-line development system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000147445A JP2001325110A (en) | 2000-05-15 | 2000-05-15 | Complier device and its in-line development system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001325110A true JP2001325110A (en) | 2001-11-22 |
Family
ID=18653631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000147445A Pending JP2001325110A (en) | 2000-05-15 | 2000-05-15 | Complier device and its in-line development system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001325110A (en) |
-
2000
- 2000-05-15 JP JP2000147445A patent/JP2001325110A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2811990B2 (en) | Program processing device and program processing method | |
US5606697A (en) | Compiler system for language processing program | |
CN110149800B (en) | Apparatus for processing abstract syntax tree associated with source code of source program | |
US20140189660A1 (en) | Control flow analysis methods and computing devices for converting cobol-sourced programs to object-oriented program structures | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JPH08339304A (en) | Method and apparatus for generation of platform standard object file containing machine independence code | |
JP3813087B2 (en) | Program conversion method, computer apparatus and program | |
US6986129B2 (en) | System and method for java preprocessor | |
JP4462676B2 (en) | Program conversion device, compiler device, and computer-readable recording medium recording program conversion program | |
JP2008305337A (en) | Program converter, program conversion method, program, storage medium, debugging device, debugging method and program development system | |
US20050144605A1 (en) | Information processing system and code generation method | |
JP2001325110A (en) | Complier device and its in-line development system | |
JP2007226589A (en) | Program conversion system | |
GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
JP3327674B2 (en) | Program translation apparatus and method | |
KR100345401B1 (en) | Method and apparatus for binary program translation | |
JPH0683597A (en) | Object oriented program development device and object oriented program development method | |
JP2011113148A (en) | Macro development method and preprocessor | |
JPH0561687A (en) | Processing system for compiler | |
JPH0573335A (en) | Automatic in-line development system for program | |
JP2003067195A (en) | Optimization compile method and optimization compile device | |
JP2004246924A (en) | Application generator development support device and application generator development support method | |
JPH10116197A (en) | Program analyzing method | |
JPH10171656A (en) | Script language processor | |
JP2001005655A (en) | Device and method for aiding development of application generator |