JPH10507016A - ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ - Google Patents

ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ

Info

Publication number
JPH10507016A
JPH10507016A JP8508759A JP50875996A JPH10507016A JP H10507016 A JPH10507016 A JP H10507016A JP 8508759 A JP8508759 A JP 8508759A JP 50875996 A JP50875996 A JP 50875996A JP H10507016 A JPH10507016 A JP H10507016A
Authority
JP
Japan
Prior art keywords
source code
compressed representation
changes
code module
compilation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP8508759A
Other languages
English (en)
Other versions
JP3802058B2 (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.)
Graphics Properties Holdings Inc
Original Assignee
Silicon Graphics Inc
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 Silicon Graphics Inc filed Critical Silicon Graphics Inc
Publication of JPH10507016A publication Critical patent/JPH10507016A/ja
Application granted granted Critical
Publication of JP3802058B2 publication Critical patent/JP3802058B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Abstract

(57)【要約】 複数のソース・コード・モジュールを有するコンパイル・ユニットを条件付きで再コンパイルするシステム、方法およびコンパイラ・プリプロセッサ(114)は、ソース・コード・モジュールの1つを選択することによって動作し、選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要があるか否かを判断する。その生成が必要であると判断されれば、選択されたソース・コード・モジュールの新しい圧縮表現が生成される。選択されたソース・コード・モジュールの新しい圧縮表現と選択されたソース・コード・モジュールの元の圧縮表現との間の変更が判別される。これらの変更の各々は互換性のある変更または互換性のない変更と分類される(926)。互換性のない変更はコンパイル・ユニットの再コンパイルを必要とする変更である。互換性のある変更はコンパイル・ユニットの再コンパイルを必要としない変更である。変更のいずれかが互換性のない変更と分類されているときにコンパイル・ユニットは再コンパイルされる(816)。

Description

【発明の詳細な説明】 ソフトウェア・コンパイル・ユニットを条件付きでコンパイルする システム、方法およびコンパイラ・プリプロセッサ 発明の背景 発明の分野 本発明は、一般的にはコンパイル・ユニット(単位)をコンパイルすることに 関し、より具体的には、コンパイル・ユニットのコンポーネントが互換性のない 形で変更されたときのみコンパイル・ユニットを再コンパイルすることに関する 。 関連技術 ソフトウェア・コンパイル・ユニットは、「メイン」ソフトウェア・プログラ ムと1つまたは2つ以上のヘッダ・ファイルを含んでいるのが代表的である。ヘ ッダ・ファイルは「メイン」プログラムに置かれている(またはヘッダ・ファイ ル自体に置かれている)該当のソフトウェア・ステートメントを使用して明示的 にコンパイル・ユニットの中に組み込まれている。例えば、周知のCコンピュー タ・プログラミング言語では、ヘッダ・ファイルをコンパイル・ユニットに組み 込むために「インクルード("include")」ステートメントが使用されている。例 えば、次のステートメントは、 #include "a.h" "a.h"と名付けたヘッダ・ファイルをコンパイル・ユニットに組み入れるために 「メイン」プログラムの中に挿入されている。これらはインクルード・ステート メントを使用してコンパイル・ユニットに挿入されるので、ヘッダ・ファイルは 「インクルード・ファイル(include file)」とも呼ばれている。なお、本明細書 では、これらの用語(つまり、「ヘッダ・ファイル」と「インクルード・ファイ ル」)は同じ意味をもつものとして使用されている。 従来は、「メイン」プログラムはコンパイル・ユニットがコンパイルされると 、常にそのヘッダ・ファイルのすべてと一緒にコンパイルされている。周知のU NIXシステムでは、そのコンポーネント部分のいずれかが(つまり、「メイン 」プログラムおよび/またはヘッダ・ファイルのいずれか)が変更されたときだ け、"make"ユーティリティがコンパイル・ユニットをコンパイルするように動作 している。 しかるに、そのコンポーネント部分の1つまたは2つ以上が、コンパイル・ユ ニットがコンパイルされた最後の時刻以後に変更されなかった場合でも、コンパ イル・ユニットを再コンパイルしないで済むことがよくある。例えば、コンパイ ル・ユニットのコンポーネントのフォーマットだけが変更された場合は、コンパ イル・ユニットを再コンパイルする必要はない。しかし、従来は、そのコンポー ネント部分になんらかの変更が行なわれると、常にコンパイル・ユニットが再コ ンパイルされている。従って、従来のコンパイラは不要なコンパイル・オペレー ションを行なっていた。その結果、従来のコンパイラによるシステム資源の利用 は非効率的であった。 発明の概要 要約して説明すると、本発明は、複数のソース・コード・モジュールからなる コンパイル・ユニット(compilation unit)を条件付きで再コンパイル(condition al recompilation)するシステムおよび方法を目的としている。本発明はソース ・コード・モジュールの1つを選択し、選択されたソース・コード・モジュール の新しい圧縮表現(new condensed representation)を生成する必要があるかどう か判断することによって動作する。次に、本発明は、選択されたソース・コード ・モジュールの新しい圧縮表現と選択されたソース・コード・モジュールの元の 圧縮表現(old condensed representation)との間に変更があるかどうかを判別す る。これらの変更の各々は、互換性のある変更(compatible change)または互換性のない変更(incompatible change)のどちらかに分類される 。互換性のない変更とは、コンパイル・ユニットの再コンパイルを必要とする変 更である。互換性のある変更とは、コンパイル・ユニットの再コンパイルを必要 としない変更である。本発明によれば、コンパイル・ユニットの再コンパイルは 、変更のいずれかが互換性のない変更であると分類されたときだけ行なわれる。 本発明のその他の特徴および利点は、本発明の種々実施例のオペレーションお よび構造と共に、添付図面を参照して以下で詳しく説明する。なお、添付図面に おいて、同一または機能的に類似のエレメントは類似の参照符号を付けて示され ている。 図面の簡単な説明 以下、添付図面を参照して本発明を説明する。図面において、 図1は本発明の好適実施例によるコンピュータ・システムを示すブロック図で ある。 図2、図3A〜図3C、および図4〜図7は、図1のコンピュータ・システム の記憶デバイスにストアできるファイルのタイプと、そのようなファイルの好ま しいフォーマットを示す図である。 図8〜図10は本発明の好ましいオペレーションを示すフローチャートである 。 図11〜図14は本発明のオペレーションを説明するために使用されるタイム ラインである。 図15は図14に示すタイムラインに関する解析の要約テーブルである。 好適実施例の詳細な説明 図1は本発明の好適実施例によるコンピュータ・システム102を示すブロッ ク図である。好ましくは、コンピュータ・システム102は、シリコン・グ ラフィックス(Silicon Graphics)社(Mountain View,CA)製のIrix 5.2オペレー ティング・システムが稼働しているインディ・ワークステーション(Indy Workst ation)が使用されているが、これとは別に、他の適当なコンピュータ・システム を使用することも可能である。コンピュータ・システム102はバス106に接 続されたプロセッサ104を搭載している。好ましくは、プロセッサ104はSi licon Graphics社製のMIPS R4000シリーズCPUであるが、これとは別に、他の 適当なCPUを使用することも可能である。 バス106には記憶デバイス108も接続されており、これはランダムアクセ スメモリ(random access memory - RAM)、リードオンリメモリ(read only me mory - ROM)、二次記憶デバイス(secondary storage device)(ハードディス クなど)、またはこれらのデバイスの任意の組合せにすることが可能である。 プロセッサ104はコントロール・ロジック110に従って動作する。このよ うなコントロール・ロジック(control logic)110は好ましくは、ソフトウェ ア・コンパイラ112やコンパイラ・プリプロセッサ(compiler pre-processor) 114のように、記憶デバイス108にストア(格納)された1つまたは2つ以 上のコンピュータ・プログラムを表している。従って、プロセッサ104は、こ のようなコンピュータ・プログラムに含まれる命令に従って動作する。このよう なコンピュータ・プログラムは好ましくはC、C++、Pascalおよび/またはアセ ンブラで書かれているが、これとは別に、他の適当なコンピュータ・プログラミ ング言語を使用することも可能である。 なお、ソフトウェア・コンパイラ112とコンパイラ・プリプロセッサ114 は単一のコンピュータ・プログラムの部分を表している場合もあれば、異種のコ ンピュータ・プログラムを表している場合もある。同様に、コントロール・ロジ ック110はハードウェア・ステートマシン(hardware state machine)で実現 されている場合もある。 ある実施例では、本発明は、コントロール・ロジック110がそこに記録され ているコンピュータが読取り可能な媒体(computer readable media)を備えたコ ンピュータ・プログラム・プロダクトになっている。コントロール・ロジック 110は公知の手段を使用して記憶デバイス108にロードされ、プロセッサ1 04によって実行される。 記憶デバイス108にはソース・ファイル116もストアされている。図2に 示すように、ソース・ファイル116は、例えば、「メイン」ソース・ファイル 202(図2では、"main.c"と名付けられている)を含んでいる。「メイン」ソ ース・ファイル202の例の一部は図4に示されている。この例示の「メイン」 ソース・ファイル202は3つの「インクルード("include")」ステートメント を含んでいるが、これらのステートメントは公知のように実行されてインクルー ド・ファイル"a.h"、"b.h"、および"c.h"のコードを「メイン」ソース・ファイル 202に組み込むように働く。 再び図1を参照するに、記憶デバイス108はヘッダ・ファイル120(イン クルード・ファイルおよびソース・コード・モジュールとも呼ばれる)もストア している。図3Bに示すように、ヘッダ・ファイル120は"a.h"、"b.h"、"c.h "、"d.h"、および"e.h" ヘッダ・ファイルを含んでいるが、これらのヘッダ・フ ァイルは、それぞれ、参照符号304,306,308,310、および312 で示されている。"a.h"ヘッダ・ファイルのように、例示のヘッダ・ファイルの 部分は図5に示されている。この例示の"a.h"ヘッダ・ファイル304は種々の 宣言(declaration)ステートメント(図5には、〈first declaration〉および〈 second declaration〉と名付けられている)を含んでいる。また、この例示の"a .h"ヘッダ・ファイル304は2つの「インクルード」ステートメントも含んで おり、これらのステートメントは公知のように実行されて、"d.h"ヘッダ・ファ イル310と"e.h"ヘッダ・ファイル312のコードを"a.h"ヘッダ・ファイル3 04に組み込むように働く。以上から理解されるように、ヘッダ・ファイル12 0がソース・コード・モジュールを表わしているのは、これらがソース・コード (例えば、バイナリ・コードではなく)を含んでいるからである。 再び図1を参照するに、記憶デバイス108には、事前コンパイル済み(pre-c ompiled)ヘッダ・ファイル122もストアされている。この分野の当業者ならば 理解されるように、事前コンパイル済みヘッダ・ファイルはヘッダ・ファイルの 圧縮バイナリ表現(condensed,binary representation)になっている。好まし くは、事前コンパイル済みヘッダ・ファイルの形態は、コンパイラがコンパイル 時の期間にソース・ステートメントを内部表現するために使用する形態と同一に なっている。このような事前コンパイル済みヘッダ・ファイルは、事前コンパイ ル済みヘッダ・ファイルに含まれる宣言の、コンパイラによる内部処理の多くが 事前に行なわれているので(事前コンパイル済みファイルの作成時に)、コンパ イラへの読込みがオリジナル・ヘッダ・ファイルよりも高速化されている。図3 Cに示すように、事前コンパイル済みヘッダ・ファイルは、それぞれが"a.h"、" b.h"、"c.h"、および"d.h"ヘッダ・ファイル304,306,308,310に 対応している"a.x"、"b.x"、"c.x"、および"d.x"事前コンパイル済みヘッダ・フ ァイル314,316,318,320を含んでいる。 図6は"a.x"ファイル314のように、事前コンパイル済みヘッダ・ファイル の例を示している。"a.x"ファイル314はフィールド606と610を含み、 これらのフィールドは、"a.h"ヘッダ・ファイルに入っている宣言のコンパイラ 内部表現(図5には、〈first declaration〉および〈second declaration〉と 名付けられている)を収めている。"a.x"ファイル314はフィールド608と 612も含んでおり、これらのフィールドは、"d.h"と"c.h"ヘッダ・ファイル3 10,312の組込みを可能にする(ソフトウェア・リンカの動作期間に)情報 を収めている。さらに、"a.x"ファイル314はヘッダ・ファイル604を含ん でいる。ヘッダ・ファイル604は"a.x"ファイル314の以前のバージョンに 関するヒストリ(活動記録)情報(historical information)を収めている。この ヘッダ・ファイル604については、以下で詳しく説明する。 再び図1を参照するに、記憶デバイス108には、オブジェクト・ファイル(o bject file)もストアされている。オブジェクト・ファイルはマシン命令(機械 語命令)が集まったものである。1つまたは2つ以上のオブジェクト・ファイル が1つにリンクされて、実行可能プログラムが作られる。図3Aに示すように、 このようなオブジェクト・ファイル118は、「メイン」オブジェクト・ファイ ル302(図3では、"main.o"と名付けている)を含んでおり、これは「メイン 」ソース・ファイル202とそのヘッダ・ファイルのコンパイル済みバイナリ・ バージョンである。 本発明の好適実施例によれば、コンパイラ・プリプロセッサ114とソフトウ ェア・コンパイラ112はコンパイル・ユニットをコンパイルして、コンパイル ・ユニットのコンパイル済みオブジェクト・コード・バージョン(つまり、オブ ジェクト・ファイル)を生成するように動作する。ついで、ソフトウェア・リン カ(図示せず)を使用すると、公知のように、コンパイル・ユニットのオブジェ クト・コード・バージョンから実行可能ファイル(executable file)を生成する ことができる。なお、このソフトウェア・リンカは本発明の一部ではないので、 ここで詳しく説明することは省略する。実行可能ファイルは、図1に示すコンピ ュータ・システム102のように、コンピュータ・システムによって実行される 。 以下では、コンパイラ・プリプロセッサ114とソフトウェア・コンパイラ1 12のオペレーションの概要について説明する。なお、説明の便宜上、コンパイ ルされるコンパイル・ユニットは、次のようなソフトウェア・エレメント(softw are elements)を含んでいるものとする。すなわち、図4に示す「メイン」ソー ス・ファイル202と、図3Bに示す"a.h"、"b.h"、"c.h"、"d.h"、および"e.h "ヘッダ・ファイル304,306,308,310,312であるが、その場 合、"a.h"ヘッダ・ファイル304の詳細は図5に示すようになっている。 このコンパイル・ユニットのコンパイルは、一般的に次のように行なわれる。 まず、コンパイラ・プリプロセッサ114はコンパイル・ユニットを解析し、そ のコンパイル・ユニットを再コンパイルする必要があるかどうかを判断する。一 般的には、コンパイル・ユニットがコンパイルされた最後の時刻以後にコンパイ ル・ユニットが変更されていなければ、そのコンパイル・ユニットを再コンパイ ルする必要はない。また、本発明によれば、コンパイル・ユニットがコンパイル された最後の時刻以後にコンパイル・ユニットが変更されていても、その変更が 「互換性のある変更」である限り、そのコンパイル・ユニットを再コンパイルす る必要がない。なにが「互換性のある変更」であるかについては、以下で説明す る。 次に、コンパイルが必要であると判断されていれば、コンパイラ112はコン パイル・ユニットをコンパイルする。コンパイラ112は、公知の、適切なコン パイル技法を用いてコンパイル・ユニットをコンパイルする。このようなコンパ イル技法は言語によって特定されているものである。例えば、コンパイルを必要 とするヘッダ・ファイルがC++コンピュータ・プログラミング言語で書かれてい れば、コンパイラ112はC++コンピュータ・プログラミング言語に見合った公 知のコンパイル技法を用いてそのコンパイル機能を実行する。 以下では、コンパイラ・プリプロセッサ114はコンパイル・ユニットをどの ように解析して、コンパイル・ユニットの再コンパイルが必要かどうかを判断す るかを、図8に示すフローチャートを参照しながら説明する。説明の便宜上、フ ローチャート802のオペレーションは、それが適切であれば、上記の例を用い て説明することにする。具体的には、以下の説明では、コンパイルされるコンパ イル・ユニットは、図4に示す「メイン」ソース・ファイル202および図3B に示す"a.h"、"b.h"、"c.h"、"d.h"、および"e.h"ヘッダ・ファイル304,3 06,308,310,312を含んでいるものとし、その場合、"a.h"ヘッダ ・ファイル304の詳細は図5に示すようになっている。フローチャート802 はステップ804から始まり、そこでコントロール(制御)は即時にステップ8 05に渡される。 ステップ805において、コンパイラ・プリプロセッサ114はソース・ファ イルのオブジェクト・コード・バージョン(つまり、オブジェクト・ファイル) が存在するかどうかを判断する。また、コンパイラ・プリプロセッサ114はソ ース・ファイルとその中で参照されているマクロがコンパイル・ユニットがコン パイルされた最後の時刻以後に未変更のままであるかどうかも判断する。(1)ソ ース・ファイルのオブジェクト・コード・バージョンが存在しないか、あるいは (2)その中で参照されているマクロがコンパイル・ユニットがコンパイルされた 最後の時刻以後に変更されていれば、ステップ807が実行され、そこでコンパ イラ・プリプロセッサ114は再コンパイル・フラグ(recompile flag)(これに ついては、以下に述べる)を「真(true)」にセットする。ここで説明している例 では、コンパイラ・プリプロセッサ114は、"main.c"202(図2)のオブジ ェクト・ファイル表現である、"main.o"302(図3A)が存在するかどうか を、ステップ805で判断する。"main.c"202とその中で参照されているマク ロが"main.c"がコンパイルされた最後の時刻以後に変更されていないとすれば、 ステップ806が実行される。 本発明によれば、再コンパイル・フラグ(recompile flag)は各コンパイル・ユ ニットと関連づけられている。この再コンパイル・フラグは、好ましくは、記憶 デバイス108のような、ランダムアクセスメモリ(RAM)に保存されている 。再コンパイル・フラグは、コンパイル・ユニットを再コンパイルする必要があ るかどうかを示している。具体的に説明すると、再コンパイル・フラグがセット されていれば(つまり、値が"1"にセットされていれば)、コンパイル・ユニッ トを再コンパイルする必要があることを意味する(ステップ816。これは下述 する)。ヘッダ・ファイルと関連づけられた再コンパイル・フラグがクリアされ ていれば、そのヘッダ・ファイルを再コンパイルする必要があることを意味する (ステップ815。これは下述する)。 ステップ806で、コンパイラ・プリプロセッサ114は、コンパイル・ユニ ットに関連づけられた再コンパイル・フラグをクリアする(つまり、値をゼロま たは論理「偽(false)」にセットする)。 ステップ808で、コンパイラ・プリプロセッサ114はコンパイル・ユニッ トの中で参照されているヘッダ・ファイル304,306,308,310,3 12の1つを選択し、解析する。説明の便宜上、"d.h"ヘッダ・ファイル310 がこのステップ808で選択されたものとする。 ステップ810で、コンパイラ・プリプロセッサ114はステップ808で選 択されたヘッダ・ファイル(つまり、"d.h"ヘッダ・ファイル310)を解析し 、このヘッダ・ファイルが変更されたことによる、コンパイル・ユニットの再コ ンパイルが必要かどうかを判断する。コンパイラ・プリプロセッサ114がコン パイル・ユニットの再コンパイルが必要であると判断すると、プリプロセッサ1 14は再コンパイル・フラグを論理「真」にセットする。プリプロセッサ114 がステップ810をどうように実行するかは、以下で詳しく説明する。 ステップ812で、プリプロセッサ114は処理すべきヘッダ・ファイル30 4,306,308,310,312が他にもあるかどうかを判断する。ス テップ808で以前に選択され、解析されたヘッダ・ファイル304,306, 308,310,312は再処理する必要はない。処理すべきヘッダ・ファイル が他にも残っていれば、コントロールはステップ808に戻され、残っているヘ ッダ・ファイルの1つを選択する。 ステップ814で、ヘッダ・ファイルのすべてが処理されると(この判断はス テップ812で行なわれる)、プリプロセッサ114は、(コンパイル・ユニッ トに関連づけれた)再コンパイル・フラグが論理「真」にセットされているかど うかを判断する。再コンパイル・フラグがセットされていなければ、ステップ8 15に示すようにコンパイル・ユニットを再コンパイルする必要はない。 再コンパイル・フラグがセットされていれば、プリプロセッサ114は、ステ ップ816において、コンパイル・ユニットをコンパイルするようにコンパイラ 112に指示する。 ステップ815または816のどちらかが実行されたあと、フローチャート8 02のオペレーションはステップ818に示すように完了する。 次に、コンパイラ・プリプロセッサ114が、選択されたヘッダ・ファイル( ステップ808で選択されたもの)をステップ810でどのように解析するかを 、図9のフローチャート902を参照しながら説明する。フローチャート902 はステップ810を実行するときのプリプロセッサ114のオペレーションを示 している。フローチャート902はステップ904から開始し、そこでコントロ ールは即時にステップ906に渡される。 ステップ906で、プリプロセッサ114は、選択されたヘッダ・ファイルに 対応する事前コンパイル済みヘッダ・ファイルが存在するかどうかを判断する。 そのような事前コンパイル済みヘッダ・ファイルが存在すれば、ステップ908 が実行される。存在しなければ、ステップ930が実行される。 例えば、"e.h"ヘッダ・ファイル312がステップ808で選択されたものと する(図8)。この場合は、プリプロセッサ114は、選択されたヘッダ・ファ イル(つまり、"e.h"ヘッダ・ファイル312)に対応する事前コンパイル済み ヘッダ・ファイルが存在しないものと、ステップ906で判断する(図3Cを参 照)。その結果、ステップ930が実行される。ステップ930で、プリプロ セッサ114は、選択されたヘッダ・ファイル(つまり、"e.h"ヘッダ・ファイ ル312)に対応する事前コンパイル済みヘッダ・ファイル("e.x"と名付けて いる)を公知の言語固有のコンパイル技法を用いて生成するようにコンパイラ1 12に指示する。この新しい事前コンパイル済みヘッダ・ファイルは他の事前コ ンパイル済みヘッダ・ファイル122と一緒に記憶デバイス108にストアされ る。ステップ932で、プリプロセッサ114は再コンパイル・フラグをセット する。ステップ932が実行されたあと、フローチャート902のオペレーショ ンはステップ916に示すように完了する。 次に、例えば、"b.h"ヘッダ・ファイル306がステップ808で選択された ものとする(図8)。この場合は、プリプロセッサ114は、選択されたヘッダ ・ファイル(つまり、"b.h"ヘッダ・ファイル306)に対応する事前コンパイ ル済みヘッダ・ファイルが存在するものと、ステップ906で判断する(図3C を参照)。その結果、ステップ908が実行される。 ステップ908で、プリプロセッサ114は選択されたヘッダ・ファイルに対 応する事前コンパイル済みヘッダ・ファイルがあらかじめ定義された、いくつか の必要条件を満足しているかどうかを判断する。事前コンパイル済みヘッダ・フ ァイルが事前定義された必要条件のすべてを満足していれば、そのヘッダ・ファ イルの事前コンパイル済みヘッダ・ファイルは再生成する必要がない。逆に、事 前コンパイル済みヘッダ・ファイルが事前定義の必要条件のすべてを満足してい なければ、現行の事前コンパイル済みヘッダ・ファイルは更新されていないので (out-of-date)、ヘッダ・ファイルの事前コンパイル済みヘッダ・ファイルを再 生成する必要がある。 プリプロセッサ114がステップ908をどのように実行するかは図10のフ ローチャート1002に示されている。このフローチャート1002はステップ 1004から始まり、そこでコントロールは即時にステップ1006に渡される 。 ステップ1006で、プリプロセッサ114は、事前コンパイル済みヘッダ・ ファイルが選択されたヘッダ・ファイルより新しいかどうか(つまり、事前コン パイル済みヘッダ・ファイルの作成日が選択されたヘッダ・ファイルの作成日よ りも時間的に最近であるかどうか)を判断する。基本的には、ステップ1006 でプリプロセッサ114は選択されたヘッダ・ファイルが事前コンパイル済みヘ ッダ・ファイルが生成された最後の時刻以後に変更されたかどうかを判断する。 選択されたヘッダ・ファイルが事前コンパイル済みヘッダ・ファイルが生成され た最後の時刻以後に変更されていれば(つまり、事前コンパイル済みヘッダ・フ ァイルが選択されたヘッダ・ファイルよりも新しくなければ)、プリプロセッサ 114は選択されたヘッダ・ファイルの事前コンパイル済みヘッダ・ファイルを 再生成する必要があると判断する。従って、プリプロセッサ114は事前コンパ イル済みヘッダ・ファイルが必要条件を満足していないと判断する(ステップ1 012)。そうでなければ、ステップ1008が実行され、次の必要条件と突き 合わせて事前コンパイル済みヘッダ・ファイルが評価される。 ステップ1006の間におけるプリプロセッサ114のオペレーションはそれ ぞれ図11と12に示すタイムライン1102と1202の例に示されている。 まず、図12に示すタイムライン1202から説明することにする。タイムライ ン1202に示すように、選択されたヘッダ・ファイル("b.h"ヘッダ・ファイ ル306)は時刻t1に作成され、時刻t3に変更されている。対応する事前コン パイル済みヘッダ・ファイル("b.x"事前コンパイル済みヘッダ・ファイル31 6)は時刻t2に最後に変更されている。プリプロセッサ114は時刻t4にス テップ1006を実行する。タイムライン1202を基準にして、プリプロセッ サは事前コンパイル済みヘッダ・ファイルが選択されたヘッダ・ファイルよりも 新しくないと、ステップ1006で判断する。従って、(上述した)ステップ1 012が実行される。 図11のタイムライン1102に示すように、選択されたヘッダ・ファイル( "b.h"ヘッダ・ファイル306)は時刻t1 に作成されている。対応する事前コ ンパイル済みヘッダ・ファイル("b.x"ヘッダ・ファイル316)は時刻t2に 最後に生成されている。プリプロセッサ114は時刻t3にステップ1006を 実行する。タイムライン1102を基準にして、プリプロセッサ114は事前コ ンパイル済みヘッダ・ファイルが選択されたヘッダ・ファイルよりも新しいと、 ステップ1006で判断する。従って、ステップ1008が実行される。 ステップ1008で、プリプロセッサ114は、選択されたヘッダ・ファイル に収められたマクロ(もしあれば)が対応するヘッダ・ファイルが最後に生成さ れたときと同じであるかどうかを判断する。代表例として、マクロは次のように 定義されている。 #define macroname expansion tokens または #define macroname(parameter,parameter)expansion tokens 上記において、expansion tokensは、コンパイルされる言語で合法的(legal)で あるトークン(ワード、シンボルなど)の集合を表している。コンパイラ112 はこれらのマクロ名の1つに一致するワードをソースの中で見つけると(この定 義の後に続くどこかで)、そのワードと、そのあとに続くパラメータ・リストが あれば、そのリストをマクロ定義に指定されたexpansion tokens(展開トークン )で置き換える。マクロはこの分野では公知である。 選択されたヘッダ・ファイルに収められたマクロが対応する事前コンパイル済 みヘッダ・ファイルが最後に生成されたときと同じでなければ、プリプロセッサ 114は、選択されたヘッダ・ファイルの事前コンパイル済みヘッダ・ファイル を再生成する必要があると判断する。従って、プリプロセッサ114は事前コン パイル済みヘッダ・ファイルが必要条件を満足していないと判断する(ステップ 1012)。逆に、選択されたヘッダ・ファイルに収められたマクロが対応する 事前コンパイル済みヘッダ・ファイルが最後に生成されたときと同じであれば、 プリプロセッサ114は必要条件のすべてが満足されていると判断する(ステッ プ1010)。 再び図9を参照するに、プリプロセッサ114が、事前コンパイル済みヘッダ ・ファイルが必要条件を満足していないと、ステップ908で判断していれば、 ステップ918が実行される。ステップ918で、プリプロセッサ114は選択 されたヘッダ・ファイルの事前コンパイル済みヘッダ・ファイルを、公知の言語 固有のコンパイル技法を用いて再生成するようにコンパイラ112に指示する。 この新しい事前コンパイル済みヘッダ・ファイルは他の事前コンパイル済みヘッ ダ・ファイルと一緒に記憶デバイス108にストアされる。このような事前 コンパイル済みヘッダ・ファイル122はステップ908で解析された元の事前 コンパイル済みヘッダ・ファイル(選択されたヘッダ・ファイルと関連がある) も含んでいる。 ステップ920で、プリプロセッサ114は新しい事前コンパイル済みヘッダ ・ファイルを元の事前コンパイル済みヘッダ・ファイルと比較し、これらの2フ ァイル間の変更(この変更は最後にコンパイルされた時刻以後の、選択されたヘ ッダ・ファイルの変更を反映している)を記録する。ステップ922で、プリプ ロセッサ114はこれらの変更の各々を、互換性のある変更または互換性のない 変更のどちらかに分類する。互換性のない変更はコンパイル・ユニットの再コン パイルを必要とする変更である。言い換えれば、選択されたヘッダ・ファイルが 互換性のない変更を含んでいれば、コンパイル・ユニットは再コンパイルしなけ ればならない(すなわち、この変更はコンパイル・ユニットと互換性がないので 、コンパイル・ユニットの再コンパイルが必要になる)。互換性のある変更はコ ンパイル・ユニットの再コンパイルを必要としない変更である。言い換えれば、 選択されたヘッダ・ファイルが互換性のある変更だけを含み、互換性のない変更 を含んでいなければ、コンパイル・ユニットを再コンパイルする必要はない(す なわち、この変更はコンパイル・ユニットと互換性があるので、再コンパイルは 必要でない)。 何を互換性のある変更とみなし、何を互換性のない変更とみなすかは、プログ ラミング言語によって異なっている。例えば、周知のCコンピュータ・プログラ ミング言語では、次のものが互換性のある変更としている。すなわち、(1)外部 ルーチンと変数の新しいタイプと新しい宣言の追加、(2)ソース・ファイルまた はインクルード・ファイルに入っている既存のソース・コードを変更するような 新マクロの追加、(3)フォーマットの変更、などである。一般的に、上記は周知 のC++コンピュータ・プログラミング言語でも互換性のある変更を表している。 Cコンピュータ・プログラミング言語では、他の多くの言語の場合と同じように 、次のものが互換性のない変更としている。すなわち、メンバをレコードにまた はクラスに追加すること(C++などの、オブジェクト指向言語の場合)、メンバ をレコードまたはクラスから削除すること、レコードまたはクラスのメンバの タイプを変更すること、新しいデータ・タイプを追加すること、既存のデータ・ タイプを変更すること、新しい関数を追加すること、などである。他の特定のコ ンピュータ・プログラミング言語の場合の、その他の互換性のある変更と互換性 のない変更は、この分野の当業者に自明のことである。 ステップ924で、プリプロセッサ114は新しい事前コンパイル済みヘッダ ・ファイル(ステップ918で生成されたもの)のヘッダ604(図6)を、ス テップ920で判別され、ステップ922で分類された変更に関するステータス (状況)情報で更新する。ヘッダ604の好ましいフォーマットは図7に示され ている。好ましくは、ヘッダ604の第1フィールド702には、プリプロセッ サ114は、新しい事前コンパイル済みヘッダ・ファイルがいつ生成されたかに 対応する日付と時刻をストアする。言い換えれば、プリプロセッサ114はステ ップ918が実行されたときの日付と時刻をこのフィールド702に入れる。ヘ ッダ604の第2フィールド704には、プリプロセッサ114は、最後の互換 性のある変更がいつ行なわれたかに対応する日付と時刻をストアする。例えば、 新しい事前コンパイル済みヘッダ・ファイルが互換性のある変更を含んでいれば 、新しい事前コンパイル済みヘッダ・ファイルがいつ生成されたかに対応する日 付と時刻(つまり、ステップ918が実行された時の日付と時刻)は、第2フィ ールド704にストアされる。逆に、新しい事前コンパイル済みヘッダ・ファイ ルが互換性のある変更を含んでいなければ、プリプロセッサ114は元の事前コ ンパイル済みヘッダ・ファイルのヘッダ604の第2フィールド704から日付 と時刻情報を抜き出し、その情報を新しい事前コンパイル済みヘッダ・ファイル のヘッダ604の第2フィールド704にストアする。 ヘッダ604の第3フィールド706には、プリプロセッサ114は最後の互 換性のない変更がいつ行なわれたかに対応する日付と時刻を入れる。例えば、新 しい事前コンパイル済みヘッダ・ファイルが互換性のない変更を含んでいれば、 新しい事前コンパイル済みヘッダ・ファイルがいつ生成されたかに対応する日付 と時刻(つまり、ステップ918が実行されたときの日付と時刻)が第3フィー ルド706にストアされる。逆に、新しい事前コンパイル済みヘッダ・ファイル が互換性のない変更を含んでいなければ、プリプロセッサ114は元の事前コン パイル済みヘッダ・ファイルのヘッダ604の第3フィールド706から日付と 時刻情報を抜き出し、その情報を新しい事前コンパイル済みヘッダ・ファイルの ヘッダ604の第3フィールド706にストアする。 ステップ926で、プリプロセッサ114は、いずれかの変更がステップ92 2で互換性のない変更と分類されていたかどうかを判断する。どの変更も互換性 のない変更と分類されていなければ、フローチャート902のオペレーションは ステップ916に示すように完了する。逆に、1つまたは2つ以上の変更が互換 性のない変更と分類されていれば、ステップ928が実行される。ステップ92 8で、プリプロセッサ114は再コンパイル・フラグを論理「眞」にセットする 。ステップ928が実行されたあと、フローチャート902のオペレーションは ステップ916に示すように完了する。 再びステップ908を参照するに、上述したように、選択されたヘッダ・ファ イルに対応する事前コンパイル済みヘッダ・ファイルがいくつかの事前定義の必 要条件を満足しているとプリプロセッサ114がステップ908で判断していれ ば、ステップ910が実行される。 ステップ910で、プリプロセッサ114は事前コンパイル済みヘッダ・ファ イルがコンパイル・ユニットが最後にコンパイルされた時刻以後に作成されたか どうかを判断する。事前コンパイル済みヘッダ・ファイルがコンパイル・ユニッ トが最後にコンパイルされた時刻以後に作成されたものであれば、コンパイル・ ユニットを再コンパイルする必要がある。そうでなければ、コンパイル・ユニッ トを再コンパイルする必要はない。 例えば、図13に示すタイムライン1302の例を考えてみる。ここで、"a.h "ヘッダ・ファイル304がステップ808で選択されたものとする(図8)。 このタイムライン1302では、"main"ソース・ファイル202と"a.h"ヘッダ ・ファイル(つまり、選択されたヘッダ・ファイル)は時刻t1 に作成され、時 刻t2にコンパイルされている。従って、時刻t2はコンパイル・ユニットが最 後にコンパイルされた時刻を表している。"a.h"ヘッダ・ファイル304は時刻 t3に変更されている。"a.x"事前コンパイル済みヘッダ・ファイル314は時 刻t4に再生成されている。プリプロセッサ114は時刻t5にス テップ910を実行している。このタイムライン1302の例では、プリプロセ ッサ114は、"a.x"事前コンパイル済み314がコンパイル・ユニットが最後 にコンパイルされた時刻(時刻t2)以後に作成されたものと(時刻t4)ステ ップ910で判断することになる。 事前コンパイル済みヘッダ・ファイルがコンパイル・ユニットがコンパイルさ れた最後の時刻以後に作成されたものでないと、プリプロセッサ114がステッ プ910で判断していれば、フローチャート902のオペレーションはステップ 916に示すように完了する。逆に、事前コンパイル済みヘッダ・ファイルがコ ンパイル・ユニットがコンパイルされた最後の時刻以後に作成されたものである と、プリプロセッサ114が判断していれば(図13のタイムライン1302に 示すように)、ステップ912が実行される。 ステップ912で、プリプロセッサ114はコンパイル・ユニットがコンパイ ルされた最後の時刻以後に、互換性のある変更だけが選択されたヘッダ・ファイ ルに行なわれていたかどうかを判断する。この判断は選択されたヘッダ・ファイ ルに関連する、最も最近に生成された事前コンパイル済みヘッダ・ファイルのヘ ッダ604を参照することによって行なわれる(図7を参照)。互換性のある変 更だけが行なわれていれば(従って、互換性のない変更が行なわれていなければ )、コンパイル・ユニットを再コンパイルする必要はない。逆に、互換性のない 変更が行なわれていれば、コンパイル・ユニットを再コンパイルする必要がある 。 例えば、図14に示すタイムライン1402の例を考えてみる。この例でも、 "a.h"ヘッダ・ファイル304がステップ808で選択されたものとする(図8 )。このタイムライン1402では、"main"ソース・ファイル202と"a.h"ヘ ッダ・ファイル304(つまり、選択されたヘッダ・ファイル)は時刻t1 に作 成され、時刻t2にコンパイルされている。"a.h"ヘッダ・ファイル304は時 刻t4に互換性のない変更で変更されている。"a.x"事前コンパイル済みヘッダ ・ファイル314″は時刻t5に再生成されている。"a.h"ヘッダ・ファイル3 04は時刻t7に互換性のある変更だけで変更され、"a.x"事前コンパイル済み ヘッダ・ファイル314は時刻t8に再生成されている。プリプロセッサ 114は時刻t10にステップ912を実行する。 ステップ912で行なわれる解析は、コンパイル・ユニットが最後にいつコン パイルされたかによって左右される。コンパイル・ユニットが最後に時刻t3に コンパイルされていれば(または、時刻t3より以前(例えば、時刻t2)にコ ンパイルされていれば)、コンパイル・ユニットを再コンパイルする必要がある 。これが事実であるのはコンパイル・ユニットが最後にコンパイルされた時刻( 時刻t3)以後に1つまたは2つ以上の互換性のない変更が"a.h"ヘッダ・ファ イル304に行なわれている(時刻t4)からである。 コンパイル・ユニットが最後に時刻t6にコンパイルされていれば、コンパイ ル・ユニットを再コンパイルする必要はない。これが事実であるのは、コンパイ ル・ユニットがコンパイルされた最後の時刻(時刻t6)以後に互換性のある変 更だけが"a.h"ヘッダ・ファイル304に行なわれている(時刻t7)からであ る。 コンパイル・ユニットが最後に時刻t9にコンパイルされていれば、コンパイ ル・ユニットを再コンパイルする必要がある。これが事実であるのは、"a.x"事 前コンパイル済みヘッダ・ファイル314が時刻t8に最後に作成されており、 これは、コンパイル・ユニットが最後にコンパイルされた時刻である時刻t9よ りも前であるためである。 タイムライン104の上記解析は、図15に示すテーブル1502に要約され ている。 ステップ912で、コンパイル・ユニットがコンパイルされた最後の時刻以後 に互換性のある変更だけが選択されたヘッダ・ファイルに行なわれていたと、プ リプロセッサ114が判断していれば、フローチャート902のオペレーション はステップ916に示すように完了する。逆に、コンパイル・ユニットがコンパ イルされた最後の時刻以後に1つまたは2つ以上の互換性のない変更が選択され たヘッダ・ファイルに行なわれていたと、プリプロセッサ114が判断していれ ば、ステップ914が実行される。ステップ914で、プリプロセッサ114は 再コンパイル・フラグをセットする。ステップ914が実行されたあと、フロー チャート902のオペレーションはステップ916に示すように完了する。 以上、本発明の種々の実施例について説明してきたが、これらの実施例は単な る例示であり、本発明はこれらの実施例に限定されないことはもちろんである。 従って、本発明の範囲は上述した実施例のいずれによっても限定されず、以下の 請求の範囲およびその等価的事項によってのみ規定されるべきものである。
【手続補正書】 【提出日】1997年2月27日 【補正内容】 (1)請求の範囲を別紙の通り補正する。 (2)明細書第2頁第21行から同頁最終行「本発明は 〜 を判別する。」 を以下に補正する。 「本発明は、複数のソース・コード・モジュールを有するコンパイル・ユニッ トであって、ソース・コード・モジュールは非コンパイル・ユニットであり、コ ンパイル・ユニットのコンパイル時に該コンパイル・ユニットに明示的に組み込 まれている、コンパイル・ユニットと、ソース・コード・モジュールの1つとを 選択する。 次に本発明は、選択されたソース・コード・モジュールの新しい圧縮表現(new condensed representation)を生成する必要があるか否かを判断し、必要があれ ば選択されたソース・コード・モジュールの新しい圧縮表現を生成する。 そして、選択されたソース・コード・モジュールの新しい圧縮表現と選択され たソース・コード・モジュールの元の圧縮表現(old condensed representation) との間に変更があるかどうかを判別する。」 請求の範囲 1.複数のソース・コード・モジュールを有するコンパイル・ユニットを条件付 きで再コンパイルする方法であって、 (1)(i) 複数のソース・コード・モジュールを有するコンパイル・ユニット であって、該ソース・コード・モジュールは非コンパイル・ユニットであり、お よび前記コンパイル・ユニットのコンパイル時に該コンパイル・ユニットに明示 的に組み込まれているコンパイル・ユニットと、 (ii)該ソース・コード・モジュールの1つと を選択するステップと、 (2)前記選択されたソース・コード・モジュールの新しい圧縮表現を生成す る必要があるか否かを判断するステップと、 (3)前記ステップ(2)の判断を条件として該選択されたソース・コード・ モジュールの新しい圧縮表現を生成するステップと、 (4)該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選 択されたソース・コード・モジュールの元の圧縮表現との間の変更を判別するス テップと、 (5)前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分 類するステップであって、互換性のない変更は該コンパイル・ユニットの再コン パイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニットの 再コンパイルを必要としない変更であるステップと、 (6)該変更のいずれかが互換性のない変更であると分類されたとき、該コン パイル・ユニットの再コンパイルを可能にするステップと を具えたことを特徴とする方法。 2.請求項1に記載の方法において、 (7)前記ソース・コード・モジュールの各々について前記ステップ(1)か ら(6)までを実行するステップをさらに具えたことを特徴とする方法。 3.請求項1に記載の方法において、前記ステップ(2)は、 前記圧縮表現が前記選択されたソース・コード・モジュールよりも古いか否か を判断するステップと、 該圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断され たときに、該選択されたソース・コード・モジュールの新しい圧縮表現を生成す る必要があると判断するステップと を有することを特徴とする方法。 4.請求項1に記載の方法において、前記ステップ(2)は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現の生成時以後に変更されていたか否かを判断するステップ と、 前記マクロ・ステートメントが該元の圧縮表現の生成時以後に変更されていた と判断されたときに、該選択されたソース・コード・モジュールの新しい圧縮表 現を生成する必要があると判断するステップと を有することを特徴とする方法。 5.請求項1に記載の方法において、前記ステップ(5)および(6)は、 前記変更のいずれかが互換性のない変更と分類されたとき、前記コンパイル・ ユニットに関連づけられた再コンパイル・フラグをあらかじめ決めた値にセット するステップと、 該コンパイル・ユニットが前記あらかじめ決めた値にセットされていれば、該 コンパイル・ユニットのコンパイルを可能にするステップと を有することを特徴とする方法。 6.請求項1に記載の方法において、前記ステップ(1)(ii)と(2)との間に 実行されるステップであって、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断するステップと、 該ソース・コード・モジュールの圧縮表現が存在しないと判断されたときには 、該選択されたソース・コード・モジュールの圧縮表現を生成するステップと、 前記コンパイル・ユニットのコンパイルを可能にするステップと をさらに具えたことを特徴とする方法。 7.請求項1に記載の方法であって、前記選択されたソース・コード・モジュー ルの新しい圧縮表現を生成する必要がないと前記ステップ(2)において判断さ れたときに実行されるステップであって、 前記元の圧縮表現が前記コンパイル・ユニットがコンパイルされた最後の時刻 以後に生成されたか否かを判断するステップと、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断するステップ と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在すると判断さ れたときのみ該コンパイル・ユニットのコンパイルを可能にするステップと をさらに具えたことを特徴とする方法。 8.複数のソース・コード・モジュールを有するコンパイル・ユニットを条件付 きで再コンパイルするシステムであって、 複数のソース・コード・モジュールを有するコンパイル・ユニットを選択する コンパイル・ユニット選択手段であって、前記ソース・コード・モジュールは非 コンパイル・ユニットであり、前記コンパイル・ユニットのコンパイル時に該コ ンパイル・ユニットに明示的に組み込まれているコンパイル・ユニット選択手段 と、 前記ソース・コード・モジュールの1つを選択するモジュール選択手段と、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 があるか否かを判断するモジュール生成判断手段と、 前記モジュール生成判断手段の前記判断を条件として、該選択されたソース・ コード・モジュールの新しい圧縮表現を生成する圧縮表現生成手段と、 該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選択され たソース・コード・モジュールの元の圧縮表現との間の変更を判別する変更判別 手段と、 前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分類する 変更分類手段であって、互換性のない変更は前記コンパイル・ユニットの再コン パイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニットの 再コンパイルを必要としない変更である変更分類手段と、 該変更のいずれかが互換性のない変更と分類されたときに、該コンパイル・ユ ニットの再コンパイルを可能にするコンパイル可能手段と を具えたことを特徴とするシステム。 9.請求項8に記載のシステムにおいて、前記モジュール生成判断手段は、 前記元の圧縮表現が前記選択されたソース・コード・モジュールよりも古いか 否かを判断する手段と、 該元の圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断 されたときに、該選択されたソース・コード・モジュールの新しい圧縮表現を生 成する必要があると判断する手段と を有することを特徴とするシステム。 10.請求項8に記載のシステムにおいて、前記モジュール生成判断手段は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現が生成された時刻以後に変更されたか否かを判断する手段 と、 前記マクロ・ステートメントが該元の圧縮表現が生成された時刻以後に変更さ れたと判断されたときに、該選択されたソース・コード・モジュールの新しい圧 縮表現を生成する必要があると判断する手段と を有することを特徴とするシステム。 11.請求項8に記載のシステムにおいて、前記変更分類手段は、前記変更のい ずれかが互換性のない変更であると分類されたときに、前記コンパイル・ユニッ トに関連づけられた再コンパイル・フラグをあらかじめ定義した値にセットする 手段を有し、および前記コンパイル可能手段は前記再コンパイル・フラグが前記 あらかじめ定義した値にセットされたときに、該コンパイル・ユニットのコンパ イルを可能にする手段を有することを特徴とするシステム。 12.請求項8に記載のシステムにおいて、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断する手段と、 該選択されたソース・コード・モジュールの圧縮表現が存在しないと判断され たときに、該ソース・コード・モジュールの圧縮表現を生成する手段と、 前記コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするシステム。 13.請求項8に記載のシステムにおいて、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 がないと前記モジュール生成判断手段によって判断されたときに、前記元の圧縮 表現が前記コンパイル・ユニットがコンパイルされた最後の時刻以後に生成され たか否かを判断する手段と、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断する手段と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在するときのみ 該コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするシステム。 14.複数のソース・コード・モジュールを有するコンパイル・ユニットを再コ ンパイルする必要があるか否かを判断するコンパイラ・プリプロセッサであって 、 複数のソース・コード・モジュールを有するコンパイル・ユニットを選択する コンパイル・ユニット選択手段であって、前記ソース・コード・モジュールは非 コンパイル・ユニットであり、前記コンパイル・ユニットのコンパイル時に該コ ンパイル・ユニットに明示的に組み込まれているコンパイル・ユニット選択手段 と、 前記ソース・コード・モジュールの1つを選択するモジュール選択手段と、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 があるか否かを判断するモジュール生成判断手段と、 前記モジュール生成判断手段の前記判断を条件として、該選択されたソース・ コード・モジュールの新しい圧縮表現を生成する圧縮表現生成手段と、 該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選択され たソース・コード・モジュールの元の圧縮表現との間の変更を判別する変更判別 手段と、 前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分類する 変更分類手段であって、互換性のない変更は前記コンパイル・ユニットの再コン パイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニットの 再コンパイルを必要としない変更である変更分類手段と、 該変更のいずれかが互換性のない変更と分類されているときに、該コンパイル ・ユニットの再コンパイルを可能にするコンパイル可能手段と を具えたことを特徴とするコンパイラ・プリプロセッサ。 15.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記モジュー ル生成判断手段は、 前記元の圧縮表現が前記選択されたソース・コード・モジュールよりも古いか 否かを判断する手段と、 該元の圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断 されたとき、該選択されたソース・コード・モジュールの新しい圧縮表現を生成 する必要があると判断する手段と を有することを特徴とするコンパイラ・プリプロセッサ。 16.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記モジュー ル生成判断手段は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現が生成された時刻以後に変更されたか否かを判断する手段 と、 前記マクロ・ステートメントが該元の圧縮表現が生成された時刻以後に変更さ れたと判断されたとき、該選択されたソース・コード・モジュールの新しい圧縮 表現を生成する必要があると判断する手段と を有することを特徴とするコンパイラ・プリプロセッサ。 17.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記変更分類 手段は、前記変更のいずれかが互換性のない変更であると分類されたとき、前記 コンパイル・ユニットに関連づけられた再コンパイル・フラグをあらかじめ定義 した値にセットする手段を有し、および前記コンパイル可能手段は前記再コンパ イル・フラグが前記あらかじめ定義した値にセットされたときに、該コンパイル ・ユニットのコンパイルを可能にする手段を有することを特徴とするコンパイラ ・プリプロセッサ。 18.請求項14に記載のコンパイラ・プリプロセッサにおいて、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断する手段と、 該選択されたソース・コード・モジュールの圧縮表現が存在しないと判断され たときに、該ソース・コード・モジュールの圧縮表現を生成する手段と、 前記コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするコンパイラ・プリプロセッサ。 19.請求項14に記載のコンパイラ・プリプロセッサにおいて、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 がないと前記モジュール生成判断手段によって判断されたときに、前記元の圧縮 表現が前記コンパイル・ユニットがコンパイルされた最後の時刻以後に生成され たか否かを判断する手段と、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断する手段と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在するときのみ 該コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするコンパイラ・プリプロセッサ。

Claims (1)

  1. 【特許請求の範囲】 1.複数のソース・コード・モジュールを有するコンパイル・ユニットを条件付 きで再コンパイルする方法であって、 (1)前記ソース・コード・モジュールの1つを選択するステップと、 (2)前記選択されたソース・コード・モジュールの新しい圧縮表現を生成す る必要があるか否かを判断するステップと、 (3)ステップ(2)の前記判断を条件として該選択されたソース・コード・ モジュールの新しい圧縮表現を生成するステップと、 (4)該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選 択されたソース・コード・モジュールの元の圧縮表現との間の変更を判別するス テップと、 (5)前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分 類するステップであって、互換性のない変更は前記コンパイル・ユニットの再コ ンパイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニット の再コンパイルを必要としない変更であるステップと、 (6)前記変更のいずれかが互換性のない変更と分類されたとき、該コンパイ ル・ユニットの再コンパイルを可能にするステップと を具えたことを特徴とする方法。 2.請求項1に記載の方法において、 (7)前記ソース・コード・モジュールの各々について前記ステップ(1)か ら(6)までを実行するステップをさらに具えたことを特徴とする方法。 3.請求項1に記載の方法において、前記ステップ(2)は、 前記圧縮表現が前記選択されたソース・コード・モジュールよりも古いか否か を判断するステップと、 該圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断され たときに、該選択されたソース・コード・モジュールの新しい圧縮表現を生成す る必要があると判断するステップと を有することを特徴とする方法。 4.請求項1に記載の方法において、前記ステップ(2)は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現の生成時以後に変更されていたか否かを判断するステップ と、 前記マクロ・ステートメントが該元の圧縮表現の生成時以後に変更されていた と判断されたときに、該選択されたソース・コード・モジュールの新しい圧縮表 現を生成する必要があると判断するステップと を有することを特徴とする方法。 5.請求項1に記載の方法において、前記ステップ(5)および(6)は、 前記変更のいずれかが互換性のない変更と分類されたとき、前記コンパイル・ ユニットに関連づけられた再コンパイル・フラグをあらかじめ決めた値にセット するステップと、 該コンパイル・ユニットが前記あらかじめ決めた値にセットされていれば、該 コンパイル・ユニットのコンパイルを可能にするステップと を有することを特徴とする方法。 6.請求項1に記載の方法において、ステップ(1)と(2)との間に実行され るステップであって、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断するステップと、 該選択されたソース・コード・モジュールの圧縮表現が存在しないと判断され たときに、該選択されたソース・コード・モジュールの圧縮表現を生成するステ ップと、 前記コンパイル・ユニットのコンパイルを可能にするステップと をさらに具えたことを特徴とする方法。 7.請求項1に記載の方法であって、前記選択されたソース・コード・モジュー ルの新しい圧縮表現を生成する必要がないと前記ステップ(2)において判断さ れたときに実行されるステップであって、 前記元の圧縮表現が前記コンパイル・ユニットがコンパイルされた最後の時刻 以後に生成されたか否かを判断するステップと、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断するステップ と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在すると判断さ れたときのみ該コンパイル・ユニットのコンパイルを可能にするステップと をさらに具えたことを特徴とする方法。 8.複数のソース・コード・モジュールを有するコンパイル・ユニットを条件付 きで再コンパイルするシステムであって、 前記ソース・コード・モジュールの1つを選択するモジュール選択手段と、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 があるか否かを判断するモジュール生成判断手段と、 前記モジュール生成判断手段の前記判断を条件として、該選択されたソース・ コード・モジュールの新しい圧縮表現を生成する圧縮表現生成手段と、 該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選択され たソース・コード・モジュールの元の圧縮表現との間の変更を判別する変更判別 手段と、 前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分類する 変更分類手段であって、互換性のない変更は前記コンパイル・ユニットの再コン パイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニットの 再コンパイルを必要としない変更である変更分類手段と、 該変更のいずれかが互換性のない変更と分類されたときに、該コンパイル・ユ ニットの再コンパイルを可能にするコンパイル可能手段と を具えたことを特徴とするシステム。 9.請求項8に記載のシステムにおいて、前記モジュール生成判断手段は、 前記元の圧縮表現が前記選択されたソース・コード・モジュールよりも古いか 否かを判断する手段と、 該元の圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断 されたときに、該選択されたソース・コード・モジュールの新しい圧縮表現を生 成する必要があると判断する手段と を有することを特徴とするシステム。 10.請求項8に記載のシステムにおいて、前記モジュール生成判断手段は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現が生成された時刻以後に変更されたか否かを判断する手段 と、 前記マクロ・ステートメントが該元の圧縮表現が生成された時刻以後に変更さ れたと判断されたときに、該選択されたソース・コード・モジュールの新しい圧 縮表現を生成する必要があると判断する手段と を有することを特徴とするシステム。 11.請求項8に記載のシステムにおいて、前記変更分類手段は、前記変更のい ずれかが互換性のない変更であると分類されたときに、前記コンパイル・ユニッ トに関連づけられた再コンパイル・フラグをあらかじめ定義した値にセットする 手段を有し、および前記コンパイル可能手段は前記再コンパイル・フラグが前記 あらかじめ定義した値にセットされたときに、該コンパイル・ユニットのコンパ イルを可能にする手段を有することを特徴とするシステム。 12.請求項8に記載のシステムにおいて、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断する手段と、 該選択されたソース・コード・モジュールの圧縮表現が存在しないと判断され たときに、該ソース・コード・モジュールの圧縮表現を生成する手段と、 前記コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするシステム。 13.請求項8に記載のシステムにおいて、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 がないと前記モジュール生成判断手段によって判断されたときに、前記元の圧縮 表現が前記コンパイル・ユニットがコンパイルされた最後の時刻以後に生成され たか否かを判断する手段と、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断する手段と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在するときのみ 該コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするシステム。 14.複数のソース・コード・モジュールを有するコンパイル・ユニットを再コ ンパイルする必要があるか否かを判断するコンパイラ・プリプロセッサであって 、 前記ソース・コード・モジュールの1つを選択するモジュール選択手段と、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 があるか否かを判断するモジュール生成判断手段と、 前記モジュール生成判断手段の前記判断を条件として、該選択されたソース・ コード・モジュールの新しい圧縮表現を生成する圧縮表現生成手段と、 該選択されたソース・コード・モジュールの前記新しい圧縮表現と該選択され たソース・コード・モジュールの元の圧縮表現との間の変更を判別する変更判別 手段と、 前記変更の各々を互換性のある変更と互換性のない変更のいずれかに分類する 変更分類手段であって、互換性のない変更は前記コンパイル・ユニットの再コン パイルを必要とする変更であり、互換性のある変更は該コンパイル・ユニットの 再コンパイルを必要としない変更である変更分類手段と、 該変更のいずれかが互換性のない変更と分類されているときに、該コンパイル ・ユニットの再コンパイルを可能にするコンパイル可能手段と を具えたことを特徴とするコンパイラ・プリプロセッサ。 15.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記モジュー ル生成判断手段は、 前記元の圧縮表現が前記選択されたソース・コード・モジュールよりも古いか 否かを判断する手段と、 該元の圧縮表現が該選択されたソース・コード・モジュールよりも古いと判断 されたとき、該選択されたソース・コード・モジュールの新しい圧縮表現を生成 する必要があると判断する手段と を有することを特徴とするコンパイラ・プリプロセッサ。 16.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記モジュー ル生成判断手段は、 前記選択されたソース・コード・モジュールに含まれるマクロ・ステートメン トが前記元の圧縮表現が生成された時刻以後に変更されたか否かを判断する手段 と、 前記マクロ・ステートメントが該元の圧縮表現が生成された時刻以後に変更さ れたと判断されたとき、該選択されたソース・コード・モジュールの新しい圧縮 表現を生成する必要があると判断する手段と を有することを特徴とするコンパイラ・プリプロセッサ。 17.請求項14に記載のコンパイラ・プリプロセッサにおいて、前記変更分類 手段は、前記変更のいずれかが互換性のない変更であると分類されたとき、前記 コンパイル・ユニットに関連づけられた再コンパイル・フラグをあらかじめ定義 した値にセットする手段を有し、および前記コンパイル可能手段は前記再コンパ イル・フラグが前記あらかじめ定義した値にセットされたときに、該コンパイル ・ユニットのコンパイルを可能にする手段を有することを特徴とするコンパイラ ・プリプロセッサ。 18.請求項14に記載のコンパイラ・プリプロセッサにおいて、 前記選択されたソース・コード・モジュールのいずれかの圧縮表現が存在する か否かを判断する手段と、 該選択されたソース・コード・モジュールの圧縮表現が存在しないと判断され たときに、該ソース・コード・モジュールの圧縮表現を生成する手段と、 前記コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするコンパイラ・プリプロセッサ。 19.請求項14に記載のコンパイラ・プリプロセッサにおいて、 前記選択されたソース・コード・モジュールの新しい圧縮表現を生成する必要 がないと前記モジュール生成判断手段によって判断されたときに、前記元の圧縮 表現が前記コンパイル・ユニットがコンパイルされた最後の時刻以後に生成され たか否かを判断する手段と、 該元の圧縮表現が該コンパイル・ユニットがコンパイルされた最後の時刻以後 に生成されたと判断されたときに、該元の圧縮表現の以前のバージョンに対して 、該元の圧縮表現の中に互換性のない変更が存在するか否かを判断する手段と、 少なくとも1つの互換性のない変更が該元の圧縮表現の中に存在するときのみ 該コンパイル・ユニットのコンパイルを可能にする手段と をさらに具えたことを特徴とするコンパイラ・プリプロセッサ。
JP50875996A 1994-08-26 1995-08-02 ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ Expired - Lifetime JP3802058B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/294,823 US5692196A (en) 1994-08-26 1994-08-26 System and method for conditionally compiling a software compilation unit
US08/294,823 1994-08-26
PCT/US1995/009738 WO1996007137A1 (en) 1994-08-26 1995-08-02 System, method, and compiler pre-processor for conditionally compiling a software compilation unit

Publications (2)

Publication Number Publication Date
JPH10507016A true JPH10507016A (ja) 1998-07-07
JP3802058B2 JP3802058B2 (ja) 2006-07-26

Family

ID=23135091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50875996A Expired - Lifetime JP3802058B2 (ja) 1994-08-26 1995-08-02 ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ

Country Status (5)

Country Link
US (1) US5692196A (ja)
JP (1) JP3802058B2 (ja)
DE (1) DE19581754B4 (ja)
GB (1) GB2307073B (ja)
WO (1) WO1996007137A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529799A (ja) * 2004-03-19 2007-10-25 株式会社エヌ・ティ・ティ・ドコモ 変化するベースシステムへとアスペクトをウィービングする方法および装置
JP2011170884A (ja) * 2011-05-12 2011-09-01 Ntt Docomo Inc 変化するベースシステムへとアスペクトをウィービングする方法および装置
JP2014528128A (ja) * 2011-10-24 2014-10-23 グーグル インコーポレイテッド コンパイル用の構文解析済みヘッダ

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519767B1 (en) * 1995-06-07 2003-02-11 Microsoft Corporation Compiler and method for automatically building version compatible object applications
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US6279151B1 (en) * 1998-01-20 2001-08-21 International Business Machines Corporation Method and apparatus for remote source code inclusion
US6185733B1 (en) * 1998-01-20 2001-02-06 International Business Machines Corporation Method and apparatus for remote object code inclusion
US6505343B1 (en) * 1998-12-31 2003-01-07 Intel Corporation Document/view application development architecture applied to ActiveX technology for web based application delivery
WO2004092953A2 (en) * 2003-04-16 2004-10-28 Koninklijke Philips Electronics N.V. Regenerating header files out of preprocessed and afterwards modified source files
US7493604B2 (en) * 2004-10-21 2009-02-17 Microsoft Corporation Conditional compilation of intermediate language code based on current environment
US8151253B2 (en) * 2006-03-27 2012-04-03 Oracle International Corporation Efficient generation of executable file from program files when some of the program files expressly incorporate other program files
KR20080045545A (ko) * 2006-11-20 2008-05-23 삼성전자주식회사 조건부 영역을 전처리하는 방법
CA2675692C (en) * 2009-08-28 2012-03-13 Ibm Canada Limited - Ibm Canada Limitee Compiler-assisted program source code filter
US8775392B1 (en) * 2011-06-07 2014-07-08 The Math Works, Inc. Revision control and configuration management
CN105335137B (zh) 2014-07-23 2019-01-18 国际商业机器公司 用于处理源文件的方法和装置
US9672020B2 (en) * 2014-09-19 2017-06-06 Microsoft Technology Licensing, Llc Selectively loading precompiled header(s) and/or portion(s) thereof

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5201050A (en) * 1989-06-30 1993-04-06 Digital Equipment Corporation Line-skip compiler for source-code development system
US5297284A (en) * 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
US5367683A (en) * 1992-06-26 1994-11-22 Digital Equipment Corporation Smart recompilation of performing matchup/difference after code generation
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529799A (ja) * 2004-03-19 2007-10-25 株式会社エヌ・ティ・ティ・ドコモ 変化するベースシステムへとアスペクトをウィービングする方法および装置
JP2011170884A (ja) * 2011-05-12 2011-09-01 Ntt Docomo Inc 変化するベースシステムへとアスペクトをウィービングする方法および装置
JP2014528128A (ja) * 2011-10-24 2014-10-23 グーグル インコーポレイテッド コンパイル用の構文解析済みヘッダ
JP2016167308A (ja) * 2011-10-24 2016-09-15 グーグル インコーポレイテッド コンパイル用の構文解析済みヘッダ

Also Published As

Publication number Publication date
JP3802058B2 (ja) 2006-07-26
WO1996007137A1 (en) 1996-03-07
US5692196A (en) 1997-11-25
DE19581754B4 (de) 2005-12-29
GB2307073A (en) 1997-05-14
DE19581754T1 (de) 1997-07-17
GB2307073B (en) 1999-07-14
GB9703860D0 (en) 1997-04-16

Similar Documents

Publication Publication Date Title
US6243864B1 (en) Compiler for optimizing memory instruction sequences by marking instructions not having multiple memory address paths
JPH10507016A (ja) ソフトウェア・コンパイル・ユニットを条件付きでコンパイルするシステム、方法およびコンパイラ・プリプロセッサ
US6961931B2 (en) Dependency specification using target patterns
EP1485801A1 (en) Iterative software development environment with prioritized build rules
JPH11212797A (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
CN112882718B (zh) 编译处理方法、装置、设备及存储介质
US8341613B2 (en) Reducing stack space consumption via head-call optimization
US7458071B2 (en) Compilation method, compiler apparatus and compiler
US20040123308A1 (en) Hybird of implicit and explicit linkage of windows dynamic link labraries
US7987457B2 (en) Targeted patching for native generation images
JP5048949B2 (ja) 非同期プログラムフローのモデリングを含むソフトウェアツール
US20030204839A1 (en) Method and apparatus for performing versioning for loop, method and apparatus for collecting array range check information in basic blocks, method for modifying array range check information, method for optimizing array range checks, method for generating codes for array range checks, method and apparatus for eliminating redundant array range checks, method for selecting array range checks, method for modifying array range checks, method for collecting array range checks, and method for determing handling of array range checks
US6983457B2 (en) Compile method for storing source code within object code
JPH06309204A (ja) データ処理方法及びその装置
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
CN114064114A (zh) 一种动态库生成方法及装置
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
JPH09218789A (ja) 分割コンパイル方式
JP3604936B2 (ja) 最適化方法,最適化装置及び記録媒体
JP6447358B2 (ja) ソースコード生成プログラム、ソースコード生成方法およびコンピュータ
JP3018783B2 (ja) コンパイル方式
JPH09274570A (ja) コンパイル方法及びコンパイラシステム
JP2000242504A (ja) コンパイラ装置
JP2000207226A (ja) コ―ド最適化装置、言語処理装置及びコ―ド最適化方法
JP2001125779A (ja) オブジェクト指向型プログラミング言語で記述されたプログラムの構成関係管理装置及び方法並びに記憶媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060208

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060427

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20090512

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20100512

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110512

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110512

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120512

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120512

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130512

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140512

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term