JPH01240934A - 自動再コンパイル方法 - Google Patents

自動再コンパイル方法

Info

Publication number
JPH01240934A
JPH01240934A JP63067444A JP6744488A JPH01240934A JP H01240934 A JPH01240934 A JP H01240934A JP 63067444 A JP63067444 A JP 63067444A JP 6744488 A JP6744488 A JP 6744488A JP H01240934 A JPH01240934 A JP H01240934A
Authority
JP
Japan
Prior art keywords
module
information
modules
file
recompilation
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
Application number
JP63067444A
Other languages
English (en)
Inventor
Hiroko Yamaguchi
裕子 山口
Akira Hashimoto
明 橋本
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 Microcomputer System Ltd
Hitachi Ltd
Original Assignee
Hitachi Ltd
Hitachi Microcomputer Engineering 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, Hitachi Microcomputer Engineering Ltd filed Critical Hitachi Ltd
Priority to JP63067444A priority Critical patent/JPH01240934A/ja
Publication of JPH01240934A publication Critical patent/JPH01240934A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、複数のモジュールからなる一般のプログラム
を保守する方法に係り、特にあるモジュールを修正した
際に、再コンパイルが必要になったモジュールのみを自
動的に再コンパイルして、リンクし、プログラムを実行
形式にする自動再コンパイル方法に関する。
〔従来の技術〕
特開昭61−169936号において、プログラムの一
部のモジュールを修正した際に、この修正したモジュー
ルを直接・間接に呼ぶモジュールを再コンパイル、再リ
ングして、実行形式にするジョブ制御言語自動発生方式
が論じられている。この方式においては、モジュール間
の呼び出し関係を表わすプログラム階層テーブルを作成
し、参照する方法をとっている。
〔発明が解決しようとする問題点〕
上記従来技術は、モジュール間の呼び出し関係のみを、
再コンパイルするモジュールを決定するための情報とし
ていた。そのため、修正したモジュールを直接・間接に
呼ぶモジュールは、修正による影響をあるなしにかかわ
らず、全て再コンパイルしてしまい、必要のない再コン
パイルが生じる問題があった。
本発明の目的は、再コンパイルが必要なモジュールのみ
を再コンパイルすることを可能にする自動再コンパイル
方法を提供することにある。
〔問題点を解決するための手段〕
上記目的は、モジュールごとにオブジェクト(型、変数
、関数等)の情報、モジュール間の呼び出し関係等を設
定するモジュール情報ファイルを設け、これを用いてオ
ブジェクトを解析することで達成される。解析のために
必要な情報は、(i)モジュール内で置引した各オブジ
ェクトが、該モジュールが呼ぶモジュールのうちのどれ
に依存しているか、(3i)該モジュールを呼ぶモジュ
ールでは、どのオブジェクトを使用しているが、という
ことである。
これらの情報は、次に示す手順で設定する。モジュール
をコンパイルする際に、該モジュールが呼ぶモジュール
の情報ファイルを参照し、このファイルに、上記(ii
)の情報を設定する。該モジュールの情報ファイルには
、上記(i)の情報と、他のいくつかのモジュール内情
報を設定する。
〔作用〕
モジュールをコンパイルした後で修正して再コンパイル
する際、このモジュールの情報ファイルを参照し、内容
を更新する。その際、上記(ii )の情報により、該
モジュールを呼ぶモジュールのうちで、修正のあったオ
ブジェクトを使用しているものがわかるので、これを再
コンパイルする。その際には、やはりモジュール情報フ
ァイルを参照、更新する。この時は、まず上記(i)の
情報を参照して、該モジュールが呼ぶモジュールの修正
による影響を受けるオブジェクトを検出する。影響を受
けるオブジェクトを使用しているモジュールが。
上記(ii)の情報によりわかるので、それを再コンパ
イルする対象とする。
以下、上記の手順を繰り返し、修正による影響を受ける
モジュールを全て再コンパイルしたら、リンクし直して
、実行形式のプログラムを作成する。
〔実施例〕
第1図に1本発明の一実施例の処理フローチャートを示
す。(a)は、モジュールインフォメーションファイル
(以下MIファイルと略記する)を設定する過程、(b
)は、オブジェクト解析の過程を表わす。第2図に実施
例を実現する際に用いるtIファイル1の構成を示す。
MIファイルは、大きく分けて該モジュールをコンパイ
ルする際に設定するモジュール内情報部2と、他モジュ
ールから呼ばれる際に設定する使用状況部3どからなる
。設定情報の詳細を、以下述べる。
モジュール内情報部2は、上記(i)の情報に当たる、
モジュール間で宣言、定義しているオブジェクトについ
てのエントリ情報4.該モジュールが呼ぶモジュール名
5.モジュールを再コンパイルする順番を決定するため
のモジュールのレベル情報6からなり、使用状況部3は
、上記(五)の情報に当たり、該モジュールを呼ぶモジ
ュール名と、呼んで使用するオブジェクト名の組からな
る。
以下、第3図に示すプログラムを修正する場合を例にと
り、実施例の詳細を説明する。このプログラムは4つの
モジュール((a)−M i 、 (b)−Mz、(c
) −Ms、(d)−M4)から成っていて、M。
とMzとがMsを呼び、MsがM4を呼んでいる。
各モジュールをコンパイルする際、モジュールの内部情
報を、各MIファイルに設定していく。
第4図に、本実施例で設定される各MIファイルの内容
((a)−Mi 、(b)  Mz、(c)−Ms。
(d)−M番)を9〜12に示す。
第3図(d)のMlをコンパイルする際に、宣言してい
る型T+ についてのエントリ情報を設定する。T工の
宣言部では、他の箇所で宣言している型Toを使用して
いるので、これを表現するように、MlのM!ファイル
のエントリ情報4を設定する(102)。
次にMaをコンパイルするが、型T2の宣言部で他のモ
ジュールで宣言している型T1を使用しているので、M
aが呼ぶモジュール(ここではMlのみ)のMIファイ
ルを参照する。MlのMIファイルに、T工のエントリ
情報が設定されているので、MaがT1を使用している
という、上記(j)の情報を使用状況部3に設定する(
101)。
MaのMIファイルには、T2がMlに依存しているこ
とがわかったので、これを表現するよう、T2のエント
リ情報4を設定する(102)。
同様に、MlとM2をコンパイルする際に、各モジュー
ルのM丁ファイル13.14に設定する。
本例のプログラムを実行形式にした後、Ma内のToの
宣言を修正したとして、修正による影響を受けるモジュ
ールを再コンパイルしていく処理の過程を、以下に示す
Mlを再コンパイルする際、MlのMIファイルを参照
し、内容を更新する。エントリ情報より、Toの修正が
]lにも影響を及ぼすことがわかる。
使用状況部より、影響を受けたオブジェクトを使用して
いる他モジュールを検出する(104)。
ここでは、T1をMaが使用していることがわかるので
、Maを再コンパイルの対象とする。
MaのMIファイルを参照すると、型T2がT1に依存
していて、T2をMlが使用していることがわかるので
、Mlを再コンパイルの対象とする。
M、 1はMIファイルより、他のモジュールから呼ば
れていないことがわかる。
M2は修正したMlを間接的に呼んでいるが、修正によ
る影響は受けないことがわかり、再コンパイルの対象と
ならない。
再コンパイルが必要なモジュールの再コンパイルが全て
済んだら、リンクし直して実行形式のプログラムを作成
する。再コンパイルやリンクを指令するコマンドは、従
来の技術で作成できる。
次に、モジュールを再コンパイルする順番を決定するた
めの、モジュールのレベル情報について説明する。
第2図のプログラムの場合は、再コンパイルが必要と判
断されたモジュールを即座に再コンパイルしてよい。こ
こで、仮にMlがMaだけでなく、Mlも直接呼んでい
るとする。Mlを再コンパイルするとすぐに、Mlの再
コンパイルが必要であるとわかるが、Maより先にMl
を再コンパイルしても、Maの再コンパイルの後、さら
にMlを再コンパイルしなくてはならなくなる。従がっ
て再コンパイルの順番は、Ml、Ma、Ml とすべき
である、 ′モジュールを階層的に、呼んでいる方を上
位に並べてみて、下にあるモジュールから再コンパイル
していくようにする。そのため、この階層をモジュール
ごとにレベル(数値)で表わし、再コンパイルの対象と
なったモジュールでは、階層が下のものから処理してい
く。
レベルの設定は、モジュールをコンパイルする際に行な
う。たとえば、他のモジュールを1つも呼ばないモジュ
ールのレベルを0とし、他のモジュールを呼んでいるも
のは、呼ばれた方のモジュールのレベル(複数呼ばれて
いる場合は、最大値をとる)に1を加算する方法がある
〔発明の効果〕
本発明により、プログラム中の一部のモジュールを修正
した際に、修正する影響を受けるモジュールのみを再コ
ンパイルすることができる。従って、最低限必要なモジ
ュールの再コンパイルをするので、再コンパイル時の効
率が向上し、経済性を高めることができる。
【図面の簡単な説明】
第1図は、本発明の一実施例の処理のフローチャート、
第2図はモジュール情報(M I )ファイルの一例を
示す説明図、第3図は本発明を適用して再コンパイルを
行なうプログラムの一例を示す説明図、第4図は、第;
3図のプログラムに本発明を適用した際、設定されるモ
ジュール情報ファイルの構成を示す説明図である。

Claims (1)

  1. 【特許請求の範囲】 1、コンパイル時に、モジュール内のオブジェクトの情
    報、モジュール間の関係を表わす情報をファイルに設定
    し、プログラムを修正した際にこれを解析して再コンパ
    イルすべきモジュールを決定することを特徴とする自動
    再コンパイル方法。 2、上記解析の処理を、モジュール内で宣言・定義した
    各オブジェクトが、該モジュールが呼ぶマジユールのう
    ちのどれに依存しているか、該モジュールを呼ぶモジュ
    ールではどのオブジェクトを使用しているか、という情
    報を用いて行なうことを特徴とする第1項記載の自動再
    コンパイル方法。 3、解析の処理内容が、修正による影響を受けるオブジ
    ェクトを検出して、該モジュールを呼んでこのオブジェ
    クトを使用しているモジュールを再コンパイルの対象と
    することを特徴とする第1項記載の自動再コンパイル方
    法。 4、モジュールの情報を設定するファイルに、該モジュ
    ールのプログラム内における階層的位置付けを表わす情
    報を設定することを特徴とする第1項記載の自動再コン
    パイル方法。
JP63067444A 1988-03-23 1988-03-23 自動再コンパイル方法 Pending JPH01240934A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63067444A JPH01240934A (ja) 1988-03-23 1988-03-23 自動再コンパイル方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63067444A JPH01240934A (ja) 1988-03-23 1988-03-23 自動再コンパイル方法

Publications (1)

Publication Number Publication Date
JPH01240934A true JPH01240934A (ja) 1989-09-26

Family

ID=13345105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63067444A Pending JPH01240934A (ja) 1988-03-23 1988-03-23 自動再コンパイル方法

Country Status (1)

Country Link
JP (1) JPH01240934A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683634A (ja) * 1992-02-17 1994-03-25 Internatl Business Mach Corp <Ibm> 障害検出方法
JPH09274570A (ja) * 1996-04-08 1997-10-21 Mitsubishi Electric Corp コンパイル方法及びコンパイラシステム
JP2005505849A (ja) * 2001-10-19 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バイトコードをネイティブコードにコンパイルする方法
JP2006318197A (ja) * 2005-05-12 2006-11-24 Fuji Electric Fa Components & Systems Co Ltd コントローラ支援装置、プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0683634A (ja) * 1992-02-17 1994-03-25 Internatl Business Mach Corp <Ibm> 障害検出方法
JPH09274570A (ja) * 1996-04-08 1997-10-21 Mitsubishi Electric Corp コンパイル方法及びコンパイラシステム
JP2005505849A (ja) * 2001-10-19 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バイトコードをネイティブコードにコンパイルする方法
JP2006318197A (ja) * 2005-05-12 2006-11-24 Fuji Electric Fa Components & Systems Co Ltd コントローラ支援装置、プログラム

Similar Documents

Publication Publication Date Title
US5339424A (en) System and method for compiling and executing a computer program written in more than one programming language
US6961931B2 (en) Dependency specification using target patterns
CN111796831B (zh) 一种多芯片兼容的编译方法和装置
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US20160246622A1 (en) Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
CN112882718A (zh) 编译处理方法、装置、设备及存储介质
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH01240934A (ja) 自動再コンパイル方法
JP2001515240A (ja) オブジェクトコードからプログラムコードへの変換方法
US20060064681A1 (en) Method and system for verifying makefile accuracy
JPH01277934A (ja) パラメータリスト参照方法の切換え方式
JPH09218789A (ja) 分割コンパイル方式
JPH0683597A (ja) オブジェクト指向プログラム開発装置およびオブジェクト指向プログラム開発方法
US20240232666A9 (en) Replacing lambda expressions in a rete network with corresponding code classes
JPH0667871A (ja) プログラム自動更新方式
JP6447358B2 (ja) ソースコード生成プログラム、ソースコード生成方法およびコンピュータ
JP3018783B2 (ja) コンパイル方式
JPH10312291A (ja) コンパイラ装置
JPH07152577A (ja) コンパイル、リンク方法の共通化方式
JPH0566949A (ja) 関数定義コンパイルドコード呼出し方式
JPH03144830A (ja) 並列処理方式
JPH01280829A (ja) モジュール版数整合性チエツク方法
JPH04343140A (ja) コンパイラの最適化処理方法
JPH09319591A (ja) ループ外への条件付き飛び出しがあるループの並列化方式
JPS62239236A (ja) プログラムのコンパイル装置