JP3226172B2 - インライン展開システム - Google Patents

インライン展開システム

Info

Publication number
JP3226172B2
JP3226172B2 JP24438589A JP24438589A JP3226172B2 JP 3226172 B2 JP3226172 B2 JP 3226172B2 JP 24438589 A JP24438589 A JP 24438589A JP 24438589 A JP24438589 A JP 24438589A JP 3226172 B2 JP3226172 B2 JP 3226172B2
Authority
JP
Japan
Prior art keywords
intermediate language
inline
program
inline expansion
language
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 - Lifetime
Application number
JP24438589A
Other languages
English (en)
Other versions
JPH03105626A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP24438589A priority Critical patent/JP3226172B2/ja
Publication of JPH03105626A publication Critical patent/JPH03105626A/ja
Application granted granted Critical
Publication of JP3226172B2 publication Critical patent/JP3226172B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】 〔概要〕 ソースプログラムを構文・意味解析した中間言語レベ
ルでインライン展開する手続きインライン展開方式に関
し、 ソースプログラムのプログラム単位に構文・意味解析
した中間言語を保存しておき、これを利用して中間言語
レベルでインライン展開し、翻訳性能を向上させること
を目的とし、 ソースプログラムのプログラム単位に構文・意味解析
して生成した中間言語をそれぞれ保存する翻訳情報ファ
イルと、この翻訳情報ファイルからインライン対象の手
続きの中間言語を読み出して展開先の翻訳空間にマージ
し、この中間言語を利用してインライン展開するインラ
イン展開処理部とを備え、このインライン展開処理部に
よってソースプログラムのプログラム単位の中間言語レ
ベルでインライン展開するように構成する。
〔産業上の利用分野〕
本発明は、ソースプログラムを構文・意味解析した中
間言語レベルでインライン展開する手続きインライン展
開方式に関するものである。
〔従来の技術と発明が解決しようとする課題〕
コンパイラにおいて、実行性能(オブジェクト性能)
を向上させる手法として、手続きのインライン(INLIN
E)処理がある。従来、例えば第4図に示すようにある
ソースプログラムを他のソースプログラムにインライン
展開するように、ソースTOソースで行っていた。このた
め、フロー解析が十分に行えず、インライン処理し得な
い手続きがかなり多いと共に、同一ファイルに存在する
手続きしか対象にならないなどの問題があった。
本発明は、ソースプログラムのプログラム単位に構文
・意味解析した中間言語を保存しておき、これを利用し
て中間言語レベルでインライン展開し、翻訳性能を向上
させることを目的としている。
〔課題を解決する手段〕
第1図を参照して課題を解決する手段を説明する。
第1図において、翻訳情報ファイル3は、ソースプロ
グラム1のプログラム単位に構文・意味解析して生成し
た中間言語2をそれぞれ保存するファイルである。
インライン展開処理部4は、翻訳情報ファイル3から
インライン対象の手続きの中間言語2を読み出して展開
先の翻訳空間にマージし、これを利用してインライン展
開するものである。
〔作用〕
本発明は、第1図に示すように、ソースプログラム1
をプログラム単位に構文・意味解析して生成した中間言
語2を翻訳情報ファイル3に保存しておき、インライン
展開処理部4が翻訳情報ファイル3からインライン対象
の手続きの中間言語2を読み出して展開先の翻訳空間に
マージし、これを利用してインライン展開するようにし
ている。
従って、ソースプログラム1のプログラム単位に構文
・意味解析した中間言語2を保存しておき、これを利用
して中間言語レベルでインライン展開することにより、
翻訳性能を向上させることが可能となる。
〔実施例〕
次に、第1図から第3図を用いて本発明の1実施例の
構成および動作を順次詳細に説明する。
第1図において、ソースプログラム1は、インライン
展開の対象となるソースプログラムである。
中間言語2は、ソースプログラム1を構文解析および
意味解析して生成した中間言語(後述する完全DIANx
言)である。
翻訳情報ファイル3は、ソースプログラム1のプログ
ラム単位に構文・意味解析して生成した中間言語2をそ
れぞれ保存するファイルである。
インライン展開処理部4は、翻訳情報ファイル3から
インライン対象の手続きの中間言語2を読み出して展開
先の翻訳空間にマージし、これを利用してインライン展
開するものである。
オブジェクトファイル5は、インライン展開処理部4
によってインライン展開した後の中間言語について、最
適化処理した後、生成したオブジェクトを格納するファ
イルである。
次に、動作を説明する。
第1図において、は、MAINの構文解析と、意味解析
を行う。これは、ソースプログラム1から1行単位に取
り出したMAINのプログラムについて構文解析および意味
解析して中間言語2を生成する(詳細は第3図参
照)。
は、MAINの中間言語2を出力する。これは、で生
成したMAINの中間言語2を翻訳情報ファイル3に図示の
ように書き込んで保存する。
は、SUBの構文解析と、意味解析を行う。これは、
ソースプログラム1から1行単位に取り出したSUBのプ
ログラムについて構文解析および意味解析して中間言語
を生成する(詳細は第3図参照)。
は、SUBの中間言語2を出力する。これは、で生
成したSUBの中間言語2を翻訳情報ファイル3に図示の
ように書き込んで保存する。
は、MAINの中間言語2を入力する。
は、インライン対象の手続きの中間言語2を読み込
み、MAIN内の翻訳空間にマージする。これは、MAIN内の
インライン対象の手続きの中間言語(SUBの中間言語)
2を翻訳情報ファイル3から読み込み、インライン展開
先のMAINの翻訳空間にマージする。これにより、MAIN内
で異なる翻訳単位であるSUBの中間言語2を利用するこ
とが可能となる。
は、MAINの手続き呼び出しを中間言語内でインライ
ン展開する(詳細は第3図参照)。
は、MAINの最適化処理を行う。
は、MAINのオブジェクト生成を行い、オブジェクト
ファイル5に格納する。
は、SUBの中間言語を入力する。
は、の処理(ないし)の処理をSUBについて
も行い、生成したオブジェクトをオブジェクトファイル
5に格納する。
以上のように、ソースプログラム1のプログラム単位
(翻訳単位)に構文解析および意味解析を行って生成し
た中間言語2を翻訳情報ファイル3に保存しておき、イ
ンライン対象の中間言語2が異なる翻訳単位のときに翻
訳情報ファイル3から読み出して自翻訳空間内の中間言
語2にマージし、これを利用してインライン展開を行う
ことにより、インライン展開の処理性能を向上させるこ
とが可能となる。以下順次詳細に説明する。
第2図(イ)は、コンパイラの処理説明図を示す。コ
ンパイラは、ソース解析段として、ソースプログラムを
構文解析して不完全DIANx言を生成するFEI(構文解析
区)、この不完全DIANx言を意味解析して完全DIANx言を
生成するFE2(意味解析区)、およびこの完全DIANx言を
LINDA言に変換するFE3(LINDA変換区)と、LINDA言をも
とに最適化処理を行うMP(最適化処理段)と、最適化処
理を行った後のLINDA言からオブジェクトを生成するBE
(オブジェクト生成段)とから構成されている。ここ
で、コンパイラの中間言語は、矢印を用いて示すよう
に、中間的な言語である不完全DIANx言、完全DIANx言、
LINDA言を総称したものである。本発明は、ソース解析
段内の中間言語である完全DIANx言により、他の手続き
のプログラム情報を交換し、最小のインラインチェック
を行った後、段間中間言語であるLINDA言に変換し、最
適化処理段で最終インライン処理を行うものである。
第2図(ロ)は、インライン処理時のFE1、2、3の
翻訳実行順序を示す。ここで、FE2(意味解析区)から
出力された完全DIANxを入力として、再度、FE2を実行し
て“外部手続きの情報の取り込み(例えばNAIN中にSUB
の情報を取り込み)”を行い、これを取り込んだ完全DI
ANxを生成する。この生成した完全DIANXをFE3(LINDA変
換区)でLINDA言に変換する。このLINDA言をもとに、MP
(最適化処理段)が、フロー解析などを行い、LINDA言
レベルでINLINE展開を行う。また、図中のSPCは、イン
ライン展開の実行前に、実行するプログラム単位の順番
を変更させるためのツールである。このSPCの指示に従
って、FE2が外部手続きの情報を取り込んで実行して完
全DIANxを生成する。以下処理手順を説明する。
(1) ソースAを、、の順序で構文解析および
意味解析して完全DIANx“A"を生成する。
(2) 同様に、ソースBを、、、ソースCを
、、の順序で構文解析および意味解析して完全DI
ANx“B"、“C"をそれぞれ生成する。
(3) PSCが実行順序を決定し、FE2を順次行い、イン
ライン展開して完全DIANx“A′”、“B′”、
“C′”を生成する(第2図(ニ)参照)。そして、以
降、FE3でLINDA言に変換する。
尚、インライン対象の手続は、コンパイラのフロント
エンド部(FE部)で行われる構文解析、意味解析などに
おいて行われる手続であって、具体的には、第2図
(ロ)に示すFE部での各手続である。
また、インライン対象の手続の中間言語は、インライ
ン対象の手続において逐次生成される中間言語をいい、
具体的には、第2図(ロ)に示す不完全DIANx、完全DIA
Nxが該当する。
第2図(ハ)は、インライン展開の動き説明図を示
す。
1)は、直接呼ばれる手続きまでが対象(インライン
展開の対象)となる場合である。この場合には、 段階1:、、ごとにFE1→FE2まで起動する。
段階2:、、ごとにFE2→FE3と起動する。
この段階1、段階2の処理によって、模式的に表す
と、第2図(ニ)1)での展開後に示すように、直接に
呼ばれる手続きのみがインライン展開される。ここで
は、SUB2中のSUB1のみがインライン展開される。
2)は、間接的に呼ばれる手続きまでが対象(インラ
イン展開の対象)となる場合である。この場合には、 段階1:、、ごとにFE1→FE2まで起動する。
段階2:インライン展開の順番を変更する。
段階3:、、の順にFE2→FE3と起動する(第2図
(ロ)PSCが実行順序を決定して起動する)。
この段階1、段階2、段階3の処理によって、模式的
に表すと、第2図(ニ)2)での展開後に示すように、
直接および更に間接的に呼ばれる手続きまでがインライ
ン展開される。ここでは、SUB2中のSUB1が直接にインラ
イン展開され、MAIN中のSUB2中のSUB1が間接的にインラ
イン展開される。
尚、中間言語の翻訳情報ファイルへの保存の仕方は、
各プログラムまたはサブルーチン等の中間言語を作成す
る際に、各FE部が中間言語、そのインデックスファイル
を主記憶内に作成する。翻訳情報ファイルからの中間言
語の読み出し方は、各FE部が主記憶内のインデックスフ
ァイルを参照し、翻訳情報ファイル内の必要な関数等の
中間言語を特定し、主記憶に読み込むようにする。
第3図は、本実施例の具体例説明図を示す。ここで、
はソースプログラム(MAIN)である。はソースプロ
グラム(SUB)である。はMAINを構文解析・意味解析
して生成した中間言語(完全DIANx言)である。はSUB
を構文解析・意味解析して生成した中間言語(完全DIAN
x言)である。はMAINの中間言語にの中間言語を
インライン処理した後の中間言語(完全DIANx言)を示
す。ここで、★を付した部分がインライン処理で生成さ
れた(組み込まれた)中間言語である(詳細は省略す
る)。
〔発明の効果〕
以上説明したように、本発明によれば、ソースプログ
ラムのプログラム単位に構文・意味解析した中間言語を
保存しておき、これを用いて中間言語レベルでインライ
ン展開する構成を採用しているため、インライン展開の
性能を向上させることができる。例えば従来のソースto
ソースによるインライン展開のソース枚数20〜30が限界
であったものが、本発明によれば、中間言語レベルで行
うために論理的には制限なしとなるが、翻訳領域、ワー
キングセット、および翻訳性能の面より、100〜150など
と多くなる。また、詳細なフロー解析を行うため、従来
のソースtoソースでは不可能なインライン展開も可能と
なる。
【図面の簡単な説明】
第1図は本発明の1実施例構成・動作説明図、第2図は
本発明の動作説明図、第3図は本発明の具体例説明図、
第4図は従来技術の説明図を示す。 図中、1はソースプログラム、2は中間言語、3は翻訳
情報ファイル、4はインライン展開処理部、5はオブジ
ェクトファイルを表す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】複数階層の関係を有するプログラムを構文
    ・意味解析した中間言語レベルでインライン展開するイ
    ンライン展開システムにおいて、 各プログラム単位に構文・意味解析して生成した各中間
    言語をそれぞれ保存する翻訳情報ファイルと、 インライン展開の対象となるプログラム内に異なる翻訳
    単位であるプログラムが間接的に呼び出されているか否
    かを判定する判定手段と、 当該判定手段により呼び出されていると判定された場
    合、前記翻訳情報ファイル内から直接的および間接的に
    呼び出されているプログラムの中間言語を、当該主のプ
    ログラムにおける中間言語の呼び出し個所にマージして
    インライン展開するインライン展開部と を備えたことを特徴とするインライン展開システム。
JP24438589A 1989-09-20 1989-09-20 インライン展開システム Expired - Lifetime JP3226172B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24438589A JP3226172B2 (ja) 1989-09-20 1989-09-20 インライン展開システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24438589A JP3226172B2 (ja) 1989-09-20 1989-09-20 インライン展開システム

Publications (2)

Publication Number Publication Date
JPH03105626A JPH03105626A (ja) 1991-05-02
JP3226172B2 true JP3226172B2 (ja) 2001-11-05

Family

ID=17117897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24438589A Expired - Lifetime JP3226172B2 (ja) 1989-09-20 1989-09-20 インライン展開システム

Country Status (1)

Country Link
JP (1) JP3226172B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58168153A (ja) * 1982-03-30 1983-10-04 Fujitsu Ltd デ−タ処理システム
JPS62235643A (ja) * 1986-04-04 1987-10-15 Mitsubishi Electric Corp プログラム言語トランスレ−タ

Also Published As

Publication number Publication date
JPH03105626A (ja) 1991-05-02

Similar Documents

Publication Publication Date Title
CN109254776B (zh) 多语言代码编译方法及编译器
JP2811990B2 (ja) プログラム処理装置及びプログラム処理方法
JP3790683B2 (ja) コンピュータ装置、その例外処理プログラム及びコンパイル方法
JP2602205B2 (ja) データベース・アクセス制御方法
JP3284956B2 (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US7784039B2 (en) Compiler, compilation method, and compilation program
CN101714098A (zh) 通过修改跟踪操作减少跟踪开销
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US20010039653A1 (en) Program conversion method, program conversion apparatus, storage medium for storing program conversion program and program conversion program
JP3226172B2 (ja) インライン展開システム
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
JPH09128246A (ja) コンパイラ装置
CN112445492A (zh) 一种基于antlr4的源码翻译方法
EP1785848A1 (en) Method and apparatus for semantic checking of program code
CN116560667B (zh) 一种基于预编译延迟执行的拆分调度系统及方法
JP2000242504A (ja) コンパイラ装置
JPH07121379A (ja) 複数言語混在コンパイラ
JP3018783B2 (ja) コンパイル方式
JPH03144830A (ja) 並列処理方式
JP2001034482A (ja) コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体
JPH0561687A (ja) コンパイラの処理方式
Deng et al. Static analysis intermediate file analysis optimization strategy
JPH10240545A (ja) 未定義変数検出の最適化コンパイラ装置
JPH05313909A (ja) 中間コードインライン展開機能を有するコンパイラシステム
JPH0358232A (ja) プリプロセッサ呼び出し方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080831

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090831

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090831

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 9

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100831

Year of fee payment: 9