JP2000347872A - 例外を正規制御フローとして処理する方法及び装置 - Google Patents

例外を正規制御フローとして処理する方法及び装置

Info

Publication number
JP2000347872A
JP2000347872A JP2000122769A JP2000122769A JP2000347872A JP 2000347872 A JP2000347872 A JP 2000347872A JP 2000122769 A JP2000122769 A JP 2000122769A JP 2000122769 A JP2000122769 A JP 2000122769A JP 2000347872 A JP2000347872 A JP 2000347872A
Authority
JP
Japan
Prior art keywords
code
exception
computer
source code
internal representation
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
JP2000122769A
Other languages
English (en)
Inventor
Jr Clifford N Click
エヌ. クリック, ジュニア クリフォード
Christopher A Vick
エー. ヴィック クリストファー
Michael H Paleczny
エイチ. パレッツィニィ マイケル
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems 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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000347872A publication Critical patent/JP2000347872A/ja
Pending 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/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】例外を正規プログラム制御フローの一部として
処理する方法及び装置を開示する。 【解決手段】本発明の一つの様態によると、オブジェク
トベースシステムにおいて例外を処理する方法が、ソー
スコードを得るステップを備える。この場合、ソースコ
ードには、例外検査に関する命令を明示的に指定するコ
ードセグメントが含まれる。また、この方法は、少なく
とも一部例外検査関連の呼出しを削除することにより、
ソースコードの最終内部表現を作成するステップ、最終
内部表現関連の機械コードを生成するステップも備え
る。一実施例では、該方法が、機械コードを実行するス
テップを更に備える。

Description

【発明の詳細な説明】
【0001】(発明の分野)本発明は、一般に、ソフト
ウェアアプリケーションの実行を向上させる方法及び装
置に関する。より詳細には、本発明は、例外をコンピュ
ータプログラム正規制御の一部として処理する方法及び
装置に関する。
【0002】(従来の技術)コンピュータプログラムの
実行効率を向上させるため、多くのコンピュータプログ
ラムが「最適化」される。コンピュータプログラムの最
適化は、一般に、実質的に使用されないコンピュータコ
ードの部分を削除する役割を果たす。また、コンピュー
タプログラムの最適化により、計算操作の再構築化が行
われ、計算全体がより効率的に実行されるようになる。
その結果、コンピュータ資源の消費が削減される。
【0003】オプティマイザは、例えば、C++、FO
RTRAN、Javaバイトコード等のプログラミング
言語で書かれたコンピュータプログラムを、より速いプ
ログラムに効果的に変換するよう構成される。より速
い、又は最適化されたプログラムには、一般に、元の、
或いは前もって変換されたコンピュータプログラムに観
測される動作と、ほぼ完全に等しい観測可能な動作が含
まれる。具体的には、最適化プログラムには、その関連
する元のプログラムと同じ数学的動作が含まれる。しか
し、最適化プログラムでは、一般に、より少ない計算で
同じ数学的動作が再現される。
【0004】一般に、オプティマイザは、コンピュータ
プログラムに関連する例外を処理するよう構成される。
当業者であれば分かるように、通常、例外とは、正規制
御フロー外の処理を要求する事象、又は状態を指す。
「例外」という名称が示唆するように、まれな、又は例
外的な事象で使われる。正規の処理で例外を使用するこ
とは可能であるが、例外処理は、通常まれなエラー状態
に関連する。コンピュータプログラムに関連する例外に
は、通常、配列範囲検査又は無効ポインタアクセスのど
ちらかが含まれる。
【0005】範囲検査は、配列参照が配列領域内にある
かどうか確認するため、コンピュータプログラム内で実
施される。範囲検査を処理するため、コンピュータプロ
グラムに特殊コードが含まれる。配列参照が、配列領域
内にないとき、例外が立てられ、参照が配列領域外であ
ることが示される。
【0006】無効ポインタ参照には、一般に、どのよう
な有効メモリ位置も指さないポインタの使用が伴う。あ
るプログラミング言語、例えば、カリフォルニア州パロ
アルト、サンマイクロシステムズ社開発によるJava
(商標)プログラミング言語では、ポインタは、有効メ
モリ位置を指すか、又はヌル値のどちらかとなる。ま
た、ヌルポインタ冗長試験、つまり「ヌル検査」が行わ
れる場合もある。第1の試験で、ポインタがヌル値では
ないことが判明した場合、ポインタがヌル値かどうかの
判定を行う第2の試験が、冗長試験である。当業者であ
れは分かるように、ヌルポインタ試験は、ポインタに関
連する内容をロードしようとするとき、暗黙のうちに実
行される。
【0007】図1(a)は、ポインタをロードするコマ
ンドを含む、よってヌル検査を暗に含むソースコードを
示す図である。ソースコード102には、レジスタ内に
ポインタに関連する内容をロードするコマンド、又は命
令が含まれる。例えば、コマンド103は、ポインタ
「ptr1」を通してフィールド「A」の内容をロード
するコマンドである。このようなコマンドが発生する
と、中央処理装置[CPU]ハードウェアが、そのポイ
ンタが有効なポインタかどうか判定する検査を行う。J
ava(商標)プログラミング言語では、唯一無効なポ
インタはヌルポインタである。よって、CPUハードウ
ェアによる検査は、本質的にはヌルポインタの検査であ
る。コマンド104も、ポインタ「ptr1」を通して
ロードを行うコマンドである。一般的に、ポインタ「p
tr1」がナルかどうかの判定はコマンド103に関し
てすでに行われているが、コマンド104に関して、ポ
インタ「ptr1」に関する本質的に冗長な検査が行わ
れる。ソースコード102は、ソースコード102の最
適化を行うオプティマイザ106に提供される。最適化
処理が終了すると、ソースコード102に関連する機械
コード110が生成される。
【0008】ヌルポインタの識別に応じて例外がスロー
されると、通常その例外を処理するため、テーブルがア
クセスされる。このようなテーブルは、例外処理用の適
当なコードセグメントに対して、例外の型のマッピング
を行うルックアップテーブルであることが多い。図1
(b)は、例外を処理し、その例外処理過程でルックア
ップテーブルにアクセスするコードを示す図である。コ
ード152には、異なる型の例外をスローするための呼
出しが含まれる。「TrueException」をス
ローする機能への呼出し154があると、結果的にアク
セスされるのはルックアップテーブル160となる。具
体的には、「TrueException」は、「Tr
ueException」のスローに関連した適当なコ
ードセグメント等、ルックアップテーブル160内への
指標として使用される。図示のように、結局、コードセ
グメント157が、呼出し154によりアクセスされ
る。同様に、「FalseException」をスロ
ーする機能への呼出し156は、ルックアップテーブル
160を通してコードセグメント158へのマッピング
を行う。
【0009】一般に、例外がスローされるたびに、例え
ば、「TrueException」をスローする機能
に呼出しがあると、例外オブジェクトへの記憶域が割当
てられる。即ち、スローされた各例外について、例外オ
ブジェクトが作成される。このような例外オブジェクト
は、当業者であれば分かるように、使用されないことが
多い。しかし、例外オブジェクトが使用されることも考
えられ、従って最適化処理中にオプティマイザによって
削除されないことが考えられる。その結果、他の使用の
ためにメモリスペース再割当てが行われないため、例外
オブジェクト及び例外オブジェクトが占めるメモリスペ
ースの初期化時間が浪費されてしまう。
【0010】Java(商標)プログラミング言語等の
プログラミング言語では、通常正確な例外処理が必要と
される。正確な例外処理には、一般に、例外検査が再命
令されず、削除もされないことが要求される。このよう
に、冗長コードが、前記ヌルポインタ例外等の例外処理
に関連することが多い。
【0011】所定の例外処理コードは、例外処理に比較
的効果的であるが、例外を処理するコードが冗長である
ことが多いため、例外処理コードを含むソースコードの
最適化が完全でないことがある。換言すれば、最適化処
理において、できるかぎり最適化されたプログラムが生
成されないことがある。プログラムが、完全に最適化さ
れないと、プログラムの効率的実行は不可能である。更
に、前記のように、例外がスローされる毎に、例外オブ
ジェクトへの記憶域割当てが行われる。例外オブジェク
トは一般に使用されないため、冗長例外コードから作成
される冗長例外オブジェクトにより、コンピュータシス
テムに関連した浪費メモリスペースが増えることにな
る。
【0012】正確な例外処理を有するプログラムを更に
最適化するため、通常、オプティマイザに、例外処理用
の特別最適化技術が含まれる。これら特別最適化技術で
は、オプティマイザへのカスタムコード付加が要求され
る。このカスタムコードは、しばしば微妙なバグの原因
となる。更に、このようなカスタムコードは、オプティ
マイザの残りの部分とよく統合されないことが多く、オ
プティマイザの能力が完全であれば削除が可能なはずの
例外検査が、削除不可能となる。
【0013】従って、例外処理の効率的方法が望まれ
る。具体的には、オプティマイザが、正規プログラム制
御フローの一部として例外を処理可能とすることによ
り、冗長例外検査をほぼ削除する方法及び装置が必要で
ある。
【0014】(発明の概要)本発明は、例外を、正規プ
ログラム制御フローの一部として処理することに関す
る。本発明の一つの様態によると、オブジェクトベース
システムにおいて例外を処理する方法が、例外検査に関
する命令を明示的に指定するコードセグメントを含むソ
ースコードを得るステップを備える。この方法は、少な
くとも一部例外検査に関連する呼出しを削除することに
より、ソースコードの最終内部表現を作成し、最終内部
表現関連の機械コードを生成するステップを備える。一
実施例では、該方法が、機械コードを実行するステップ
を更に備える。
【0015】例外処理を正規プログラム制御フローに統
合することにより、例外処理効率が上がる。例えば、正
規プログラム制御フローの一部として処理される例外
は、正規制御フロー内で冗長検査を削除する機構により
冗長検査を削除させる。また、決して使用されることの
ない例外オブジェクトについては、例外が、正規プログ
ラム制御フローの一部として処理されるときに削除され
る。即ち、オプティマイザが既に不使用コードを削除し
ており、本発明では例外関連のコードも削除される。こ
れにより、例外オブジェクト資源が開放される。
【0016】本発明の別の様態によると、例外関連のコ
ード部分を有するソースコード作成方法が、まずソース
コードを得るステップを備える。ソースコードには、第
1コード部内に収まる第1コード部が含まれる。そし
て、第1コード部が、第2コード部に対して冗長かどう
か判定するステップ及びソースコードを内部表現に変換
するステップを備える。内部表現へのソースコードの変
換では、第1コード部が、第2コード部に対して冗長と
判定されると、ソースコードから第1コード部が削除さ
れる。一実施例では、内部表現が、機械コードに更に変
換される。
【0017】本発明の前記、他利点は、次の詳細な説明
を読み、添付の様々な図を検討することにより明白とな
る。
【0018】(実施例の詳細な説明)カリフォルニア州
パロアルト、サンマイクロシステムズ社開発によるJa
va(商標)プログラミング言語等のプログラミング言
語では、正確な例外処理が要求されることが多い。正確
な例外処理では、一般に、特定領域でどのような例外も
起きず、所定例外処理コードの実施も必要ではないこと
が証明されない限り、例外検査の再命令、又は削除は行
わないことが要求される。各例外に、その例外処理のた
めのコードが必要となる。このように、冗長コードは、
ヌルポインタ例外等の例外処理に関連することが多い。
例えば、冗長コードは、特定ポインタがヌルかどうかの
試験に存在する。この場合、試験が、特定ポインタがヌ
ルであることを既に判定した後に行われることが前提と
なる。当業者であれば分かるように、ヌルポインタは、
一般に、メモリは参照しないが、そのかわりヌル値を含
むポインタである。ヌルポインタが参照されると、どの
ような例外もスローされない。
【0019】ポインタがヌルであるかどうか判定するた
めの冗長例外処理過程は、特定ポインタがヌルポインタ
でないことが既に判定されている場合、不必要であり、
また非効率でもある。例外処理では、所定例外処理コー
ドが比較的効果的であるが、冗長例外処理コードを含む
ソースコードの最適化が、完全であるとは一般に考えら
れない。つまり、そのようなソースコードはまだ最適化
される余地があるということである。プログラムが完全
に最適化されないと、そのプログラムの実行は、いくぶ
ん非効率となる。
【0020】コンピュータプログラムの正規制御フロー
内に明示的に例外処理命令を含むことにより、オプティ
マイザによるコンピュータプログラムの変換が可能とな
り、冗長例外処理に関連する命令が削除される。換言す
れば、例外処理命令をコンピュータプログラム内に明示
的にコード化することで、コンピュータプログラムが最
適化され、冗長例外処理コードの削除が可能となる。更
に、コンピュータプログラムの正規フロー内への例外処
理の統合は、例外スローの際作成されるオブジェクト
を、最適化過程で削除可能とする役割を果たす。従っ
て、統合された例外処理を有するプログラムから生成さ
れる機械コードは、通常、所定例外処理コードを有する
プログラムから生成される機械コードより効率よく実行
される。
【0021】図2は、本発明の実施例による正規プログ
ラム制御フロー内に例外処理を統合するオプティマイザ
を示す図である。例外フロー、例えば例外処理に関連す
るプログラムフローを明示的に指定するソースコード2
02が、オプティマイザ222に入力される。オプティ
マイザ222は、一般に、数学演算上ソースコード20
2に相当する機械コード242に、ソースコード202
を変換するよう構成される。
【0022】好適実施例では、オプティマイザ222
が、Java(商標)プログラミング言語等の言語を基
に、ソースコード202の中間内部表現226を作成す
る。中間内部表現226は、中間内部表現226関連の
プログラムフローが、実質的には最適化されない点にお
いて、ソースコード202の「リテラル」の表現と考え
られる。中間内部表現226には、例外をスローするた
めの機能に対する呼出し228が含まれる。このような
機能は、特定例外関連のコードセグメントに対して、特
定例外のマッピングを行うルックアップテーブルにアク
セス可能である。ルックアップテーブルのマッピング
は、一実施例では従来の「goto」コマンドに変換可
能である。
【0023】オプティマイザは、余分の「goto」コ
マンドをその正規処理の一部として削除するよう構成さ
れる。また、オプティマイザ222は、不使用、例えば
デッドコードが最終内部表現230から削除されるよ
う、中間内部表現226の最適化も行う。最終内部表現
230は、機械コード242を作成するため、オプティ
マイザ222により使用される。図示するように、中間
内部表現226に存在する呼出し228は、最終内部表
現230から削除されるが、一方最終内部表現230
は、演算上中間内部表現226に相当するものとして扱
うことが可能である。換言すれば、最終内部表現230
は、実質的に中間内部表現226を簡単にしたものであ
る。例外をスローする機能の呼出し228を削除するす
ることにより、スローされた例外に応じて作成される不
使用例外オブジェクトを、ほぼ削除することができる。
【0024】本発明に実施例による機械コード作成プロ
セスに関連するステップを、図3を参照に説明する。こ
のプロセスでは、例外処理が、正規制御フローに統合さ
れる。まず、ステップ302において、機械コード作成
プロセス300が開始され、オプティマイザにより、暗
黙の例外フローを有するプログラムが得られる。暗黙の
例外フローを有するプログラムの例を、以下図4を参照
に説明する。
【0025】オプティマイザによりプログラムが得られ
ると、ステップ304において、プログラムの中間内部
表現が作成される。一般に、プログラム中間内部表現
は、すべての暗黙の例外フローを明示させ、また明示さ
れた例外検査を含む。また、中間内部表現には、例外ハ
ンドラの呼出しも含まれる。ステップ306において、
この中間内部表現の最適化が行われる。最適化処理中
は、オプティマイザが、他の最適化に加え、例外呼出し
関連のほぼ全ての冗長例外検査、デッドコードの削除を
行う。即ち、オプティマイザにより、不使用コードを削
除することにより、中間内部表現が最適化される。他の
最適化には、それに限定するわけでなはいが、例外スロ
ー関連のテーブルルックアップの実行、「goto」命
令へのスロー命令の変換が含まれる。
【0026】プロセスは、ステップ306からステップ
308に進み、そこで、中間内部表現からプログラム最
終内部表現が作成される。当業者であれば分かるよう
に、最終内部表現は、対応する中間内部表現から不使用
コード、又はデッドコードが削除されるとき生成され
る。図2を参照し上述したように、最終内部表現は、例
外処理を正規制御フロー内に統合する。ステップ308
におけるプログラム最終表現作成の後、オプティマイザ
により、最終内部表現から機械コードが作成される。機
械コードが作成されると、例外処理を正規制御フロー内
に統合する機械コード作成プロセスが作成される。
【0027】前記のように、暗黙の例外フローを有する
コンピュータプログラムを最適化するオプティマイザに
より、冗長例外検査の削除が可能となる。図4は、本発
明の実施例に従って冗長例外検査を削除するため、オプ
ティマイザにより処理される明示された例外フローを有
するコンピュータプログラムを示す図である。オプティ
マイザ410は、一般に、機械コード420、つまりオ
プティマイザ410作成の機械コードに関連する実行を
最適化するため、ソースコード402から不使用コード
部を削除するよう構成される。更に、オプティマイザ4
10は、通常、ソースコード402内で実行される演算
の検査を行い、不必要な、例えば冗長な演算の削除も行
う。
【0028】例外フローを明示的に指定するソースコー
ド402には、ポインタ「ptr1」がヌルポインタと
判定されるとき例外をスローする命令404が含まれ
る。ポインタ「ptr1」がヌルポインタと判定される
と、ソースコード402関連の正規制御フローの一部と
して、追加の命令406、408が処理される。命令4
08は、ポインタ「ptr1」がヌルポインタかどうか
の冗長試験である。これは、命令404において、結果
的にポインタ「ptr1」がヌルポインタではないと判
定されるとき、正規制御フロー内で到達できるのは、命
令408のみだからである。オプティマイザ410は、
命令408が、命令404に照らして不要であることを
判定するよう構成される。オプティマイザ410が、命
令408が冗長であることを判定すると、オプティマイ
ザ410は、命令408を削除し、機械コード420を
作成することができる。機械コード420では、レジス
タRZのロードが、レジスタRYのロードの上に引き上
げられ、それにより比較的遅い除算(DIV)命令がよ
り早く実行開始可能となる。その結果、RYローディン
グと除算命令が、時間的に重なり、より速いプログラム
が作成される。図3を参照し上述したように、一実施例
では、オプティマイザ410は、内部表現(図示せず)
の正規制御フロー内への例外処理の統合も行い、よって
機械コード420も統合される。
【0029】図5は、本発明に適した通常の汎用コンピ
ュータシステムを示す図である。コンピュータシステム
1030には、主記憶装置1034(通常、ランダムア
クセスメモリ、RAM)、主記憶装置1036(通常、
読出し専用メモリ、ROM)を含むメモリ装置に接続さ
れる任意の数のプロセッサ1032(中央処理装置、C
PUとも称する)が含まれる。
【0030】コンピュータシステム1030、より詳細
にはCPU1032は、当業者であれば分かるように、
仮想計算機を支持するよう構成できる。コンピュータシ
ステム1030上に支持される仮想計算機の一例とし
て、図6に示す以下のものが上げられる。従来より公知
のように、ROMは、CPU1032に対して一方向に
データ及び命令を転送するする役割を果たす。一方、R
AMは、通常双方向にデータ及び命令を転送するために
使用される。CPU1032には、一般に任意の数のプ
ロセッサが含まれる。主記憶装置1034、1036に
は、両方とも適当であればどのようなコンピュータ読出
し可能媒体も含まれる。二次記憶媒体1038は、通常
大容量メモリ装置であり、これも双方向でCPU103
2に接続され、追加の記憶容量を提供する。大容量メモ
リ装置1038は、コンピュータ読出し可能媒体であ
り、コンピュータコード、データ等を含むプログラムの
記憶の際使用可能である。通常、大容量メモリ装置10
38は、一般に主記憶装置1034、1036より遅い
ハードディスク、テープ等の記憶媒体である。大容量メ
モリ装置1038は、磁気、又は紙テープリーダ、他よ
く知られた装置の形態を取ることができる。ここで、大
容量メモリ装置1038内に保持される情報は、適当で
あれば、仮想計算機としてのRAM1036の一部とし
て標準的に内蔵可能である。CD−ROM等、特定の主
記憶装置1034も、CPU1032に対して一方向に
データを渡すことができる。
【0031】CPU1032も、一つ以上の入出力装置
1040に接続される。入出力装置1040には、限定
するわけではないが、ビデオモニタ、トラックボール、
マウス、キーボード、マイクロフォン、タッチセンセィ
ティブディスプレイ、変換器カードリーダ、磁気、又は
紙テープリーダ、タブレット、スタイラス、音声、又は
手書き認識器等の装置、他当然ながらコンピュータ等の
よく知らた入力装置が含まれる。最後に、CPU103
2は、ネットワーク接続1012を使用し、コンピュー
タ、又は電気通信ネットワーク、例えばローカルエリア
ネットワーク、インターネット、イントラネット等、に
任意に接続可能である。このようなネットワーク接続
で、CPU1032は、前記方法ステップの実行中に、
ネットワークから情報を受信したり、そこに送信したり
することが可能となることが考えられる。このような情
報は、CPU1032を使い実行される一連の命令とし
て表されることが多く、例えば、搬送波内のコンピュー
タデータ信号の形態で、ネットワークに対して受信、送
信したりすることができる。
【0032】前記のように、仮想計算機は、コンピュー
タシステム1030上で実行可能である。図6は、図5
のコンピュータシステム1030により支持され、本発
明の実施に適した仮想計算機を示す図である。コンピュ
ータプログラム、例えば、カリフォルニア州パロアル
ト、サンマイクロシステムズ社開発によるJava(商
標)プログラミング言語で書かれたコンピュータプログ
ラムが実行されると、ソースコード1110が、コンパ
イル時間環境1105内のコンパイラ1120に提供さ
れる。コンパイラ1120により、ソースコード111
0は、バイトコード1130に書き換えられる。一般
に、ソースコード1110は、そのソフトウェア開発者
が作成するときに、バイトコード1130に書き換えら
れる。
【0033】バイトコード1130は、一般に、再生、
ダウンロード、又はネットワーク、例えば図5のネット
ワーク1012を通して分配されたり、或いは図5の主
記憶装置1034等の記憶装置に記憶されたりする。本
実施例では、バイトコード1130は、プラットフォー
ム独立である。即ち、バイトコード1130は、適当な
仮想計算機1140を運行しているほぼどのようなコン
ピュータシステム上でも実行可能である。例えば、Ja
va(商標)環境では、バイトコード1130は、Ja
va(商標)仮想計算機を運行しているコンピュータシ
ステム上で実行できる。
【0034】バイトコード1130は、仮想計算機11
40を含むルーチン環境1135に提供される。ルーチ
ン環境1135は、一般に、図5のCPU1032等の
プロセッサを使い実行できる。仮想計算機1140に
は、コンパイラ1142、インタプリタ1144、ルー
チンシステム1146が含まれる。バイトコード113
0は、一般にコンパイラ1142、インタプリタ114
4のどちらか一方に提供される。
【0035】バイトコード1130がコンパイラ114
2に提供されると、前記のように、バイトコード113
0内に含まれる方法が、機械命令にコンパイルされる。
他方、バイトコード1130がインタプリタ1144に
提供されると、バイトコード1130は、一度に1バイ
トコードずつインタプリタ1144内に読み込まれる。
次に、インタプリタ1144は、各バイトコードがイン
タプリタ1144内に読み込まれる毎に、各バイトコー
ドが定義する操作を実行する。一般に、インタプリタ1
144は、ほぼ継続的に、バイトコード1130を処理
し、バイトコード1130関連の操作を実行する。
【0036】オペレーティングシステム1160からあ
る方法が呼び出されると、該方法が、解釈された方法と
して発動されるものと判定されると、ルーチンシステム
1146が、その方法をインタプリタ1144から得
る。一方、該方法が、コンパイルされた方法として発動
されるものと判定されると、ルーチンシステム1146
は、コンパイラ1142を作動させる。次に、コンパイ
ラ1142が、バイトコード1130から機械命令を生
成し、機械言語命令を実行する。一般に、機械言語命令
は、仮想計算機1140が終了すると廃棄される。
【0037】以上、本発明の実施例を2、3説明した
が、本発明の精神、範囲を超えることなく、他多くの具
体的形態が可能である。例えば、明示された例外フロー
を指定するソースコードから、機械コードを作成する関
連したステップは、再命令、削除、付加が可能である。
一般に、本発明の方法に関するステップは、本発明の精
神、範囲を超えることなく、その記録、削除、付加が可
能である。
【0038】コンピュータプログラムの正規制御フロー
の一部としての例外処理を、Java(商標)環境を基
に一般的に説明したが、そのような例外処理は、適当で
あればほぼどのような環境でも実施可能である。例え
ば、Java(商標)仮想計算機関連の環境の代わり
に、他の仮想計算機関連の環境が実施可能である。従っ
て、本例は、例示的なものであり、何ら限定を加えるも
のでもない。また、本発明は、ここでの詳細な説明に限
定されるわけではなく、前記特許請求の範囲内での修正
が可能である。
【図面の簡単な説明】
本発明は、添付図面に基づく前記説明で明らかである
が、ここで各図は次のとおりである。
【図1】(a)は、ヌル検査と機械コードを暗黙に含む
ソースコードを示す図であり、この場合機械コードは、
ソースコードに関連した、オプティマイザにより生成さ
れたものであり、(b)は、例外を正規実行の一部とし
て処理する機械コードを示す図である。
【図2】本発明の一実施例による例外処理を正規プログ
ラム制御フローに変換するオプティマイザの動作を示す
図であり、この場合区オプティマイザは、例外を使用す
るプログラム上で作動される。
【図3】本発明の一実施例による明示的な例外フローを
有するソースコードの最適化関連ステップを示すプロセ
スフロー図である。
【図4】本発明の一実施例によるオプティマイザによっ
て処理済みの明示的な例外フローを有するコンピュータ
プログラムを示す図である。
【図5】本発明を実施するのに好適な汎用コンピュータ
システムを示す図である。
【図6】図5のコンピュータシステムにより支持され、
本発明を実施するのに好適な仮想計算機を示す図であ
る。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリフォード エヌ. クリック, ジュ ニア アメリカ合衆国, カリフォルニア州, サン ノゼ, ウォーレイス ドライヴ 955 (72)発明者 クリストファー エー. ヴィック アメリカ合衆国, カリフォルニア州, サン ノゼ, リオ グランデ ドライヴ 5290 (72)発明者 マイケル エイチ. パレッツィニィ アメリカ合衆国, カリフォルニア州, サニーヴェイル, アリバ ドライヴ 241 ナンバー 10

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトベースシステムにおける例
    外を処理するコンピュータ実施の方法において、 例外チェックに関する命令を明示的に指定するコードセ
    グメントを含むソースコードを得るステップと、 前記例外チェック関連の呼出を削除することを含む、前
    記ソースコードの最終内部表現を作成するステップと、 前記最終内部表現を使用し機械コードを生成するステッ
    プとを備えるコンピュータ実施の方法。
  2. 【請求項2】 前記機械コードを実行するステップを更
    に備える請求項1に記載のコンピュータ実施の方法。
  3. 【請求項3】 前記ソースコードの最終内部表現を作成
    するステップが、前記例外を、前記ソースコードに関連
    する制御フローの一部として処理するこを含む請求項1
    又は2の何れか1項に記載のコンピュータ実施の方法。
  4. 【請求項4】 前記ソースコードの最終内部表現を作成
    するステップが、前記例外チェック処理を最適化するこ
    とを更に含む請求項3に記載のコンピュータ実施の方
    法。
  5. 【請求項5】 前記ソースコードを書き込むステップを
    更に備え、前記ソースコードを書き込むステップが、前
    記例外チェックに関する命令を明示的に指定する前記コ
    ードセグメントを書き込むことを含む前記請求項の何れ
    かに記載のコンピュータ実施の方法。
  6. 【請求項6】 前記最終内部表現を作成するステップ
    が、前記例外チェック関連の機能を呼び出し、前記例外
    関連機能の呼出しに応じ、前記例外チェック関連のオブ
    ジェクトを作成することを含む請求項1〜5の何れか1
    項に記載のコンピュータ実施の方法。
  7. 【請求項7】 前記最終内部表現を作成するステップ
    が、前記例外チェック関連のオブジェクトを破棄するこ
    とを更に含む請求項6に記載のコンピュータ実施の方
    法。
  8. 【請求項8】 前記例外チェックが、ヌルポインタチェ
    ック、又は範囲チェックのどちらかである請求項1〜7
    の何れか1項に記載のコンピュータ実施の方法。
  9. 【請求項9】 例外処理用コンピュータシステムにおい
    て、プロセッサと、 例外チェックに関する命令を明示的に指定するコードセ
    グメントを生成するソースコードジェネレータと、 少なくとも部分的に前記例外チェック関連の呼出しを削
    除することにより、ソースコードの最終内部表現を作成
    する最適化装置と、 前記最終内部表現を使用する、機械コードを生成する機
    械コードジェネレータとを備えるコンピュータシステ
    ム。
  10. 【請求項10】 前記最適化装置が、前記例外を、前記
    ソースコード関連の制御フローの一部として更に処理す
    る請求項9に記載のコンピュータシステム。
  11. 【請求項11】 前記最適化装置が、更に前記例外チェ
    ック関連の機能を呼び出し、前記例外チェック関連の機
    能呼出しに応じ、前記例外チェック関連のオブジェクト
    を作成する請求項9又は10の何れか1項に記載のコン
    ピュータシステム。
  12. 【請求項12】 前記最適化装置が、更に前記例外チェ
    ック関連のオブジェクトを破棄する請求項9〜11の何
    れか1項に記載のコンピュータシステム。
  13. 【請求項13】 オブジェクトベースシステムにおける
    例外を処理するためのコンピュータプログラム製品にお
    いて、 例外チェックに関する命令を明示的に指定するコードセ
    グメントを含むソースコードを得るためのコンピュータ
    コードと、 前記例外チェック関連の呼出しを削除するためのコンピ
    ュータコードを含む前記ソースコードの最終内部表現を
    作成するためのコンピュータコードと、 前記最終内部表現を使用し機械コードを生成するための
    コンピュータコードと、前記コンピュータコードを記憶
    するコンピュータ読出し可能媒体を備えるコンピュータ
    プログラム製品。
  14. 【請求項14】 前記コンピュータ読出し可能媒体が、
    搬送波、CD−ROM、ハードディスク、フロッピー
    (登録商標)ディスク、テープドライブ、フラッシュメ
    モリ内のデータ信号よりなるグループから選択される請
    求項13に記載のコンピュータプログラム製品。
  15. 【請求項15】 例外関連の複数のコード部を含むソー
    スコードの表現を作成するためのコンピュータ実施の方
    法において、 前記複数のコード部から選択された第1コード部が、前
    記複数のコード部から選択された第2コード部内に収容
    される前記例外関連の複数のコード部を含む前記ソース
    コードを得るステップと、 前記第1コード部が、前記第2コード部に対して冗長か
    どうか判定するステップと、 前記第1コード部が、前記第2コード部に対して冗長で
    あることが判定されると、前記第1コード部を、前記第
    2コード部から削除することを含む前記ソースコードを
    内部表現に変換するステップとを備えるコンピュータ実
    施の方法。
  16. 【請求項16】 前記内部表現を機械コードに変換する
    ステップを更に備える請求項15に記載のコンピュータ
    実施の方法。
  17. 【請求項17】 各前記第1、第2コード部が、特定例
    外を投入すべきかどうかの判定を含み、前記特定例外を
    投入すべきでない場合、前記第1コード部が前記第2コ
    ード部に対して冗長かどうかの判定に、前記第1コード
    部が、いつ前記ソースコードと関連するプログラム制御
    フローにより到達されるかの判定が含まれる請求項15
    又は16の何れか1項に記載のコンピュータ実施の方
    法。
  18. 【請求項18】 前記特定例外を投入すべきでない場
    合、前記ソースコード関連のプログラム制御フローが前
    記第1コード部に到達すると判定されると、前記第1コ
    ード部が、前記第2コード部に対して冗長であることが
    判定される請求項17に記載のコンピュータ実施の方
    法。
JP2000122769A 1999-04-23 2000-04-24 例外を正規制御フローとして処理する方法及び装置 Pending JP2000347872A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/298,354 US6363522B1 (en) 1999-04-23 1999-04-23 Method and apparatus for handling exceptions as normal control flow
US09/298354 1999-04-23

Publications (1)

Publication Number Publication Date
JP2000347872A true JP2000347872A (ja) 2000-12-15

Family

ID=23150143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000122769A Pending JP2000347872A (ja) 1999-04-23 2000-04-24 例外を正規制御フローとして処理する方法及び装置

Country Status (6)

Country Link
US (1) US6363522B1 (ja)
EP (1) EP1049011A3 (ja)
JP (1) JP2000347872A (ja)
CN (1) CN1197003C (ja)
AU (1) AU774192B2 (ja)
CA (1) CA2306519A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7086066B2 (en) * 2000-03-31 2006-08-01 Schlumbergersema Telekom Gmbh & Co. Kg System and method for exception handling
JP3974742B2 (ja) * 2000-04-14 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル装置、最適化方法および記録媒体
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
CA2356018A1 (en) * 2001-08-29 2003-02-28 Ibm Canada Limited-Ibm Canada Limitee Http connector
US20030135788A1 (en) * 2002-01-11 2003-07-17 Raj Prakash Profile feedback assisted null check removal
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7146606B2 (en) 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7120898B2 (en) 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7685581B2 (en) 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US7669193B1 (en) * 2003-09-25 2010-02-23 Lantronix, Inc. Program transformation using flow-sensitive type constraint analysis
GB2412192B (en) * 2004-03-18 2007-08-29 Advanced Risc Mach Ltd Function calling mechanism
US7802080B2 (en) * 2004-03-24 2010-09-21 Arm Limited Null exception handling
US20060005169A1 (en) * 2004-06-30 2006-01-05 International Business Machines Corporation Software development system and method
JP4626963B2 (ja) * 2004-11-15 2011-02-09 パラマウントベッド株式会社 サイドレールを備えたベッド
TWI283192B (en) * 2004-12-21 2007-07-01 Ind Tech Res Inst A flat-plate type static dust-connecting device
US7539983B2 (en) * 2005-01-14 2009-05-26 Microsoft Corporation Tool for processing software programs using modified live-ness definition
US7797690B2 (en) * 2005-03-15 2010-09-14 International Business Machines Corporation System, method and program product to optimize code during run time
US8161470B2 (en) * 2007-08-31 2012-04-17 International Business Machines Corporation Systems, methods, and computer products for automated injection of java bytecode instructions for java load time optimization via runtime checking with upcasts
US8250544B2 (en) * 2008-03-05 2012-08-21 Microsoft Corporation Annotating exception information in a computer program
US8495606B2 (en) * 2008-11-14 2013-07-23 Oracle America, Inc. Redundant exception handling code removal
US9052984B2 (en) * 2009-02-26 2015-06-09 International Business Machines Corporation Exception declaration refactoring to reduce memory footprint
US8612928B2 (en) * 2010-04-07 2013-12-17 Microsoft Corporation Generating exception-based component models from non-exception-based models
KR101962248B1 (ko) * 2012-03-16 2019-03-27 삼성전자주식회사 재구성 가능 프로세서의 검증 지원 장치 및 방법
US10055209B2 (en) * 2015-01-12 2018-08-21 Red Hat, Inc. Resource closing
CN110674622B (zh) * 2018-07-03 2022-12-20 百度在线网络技术(北京)有限公司 可视化图表生成方法、系统、存储介质及电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642765A (en) * 1985-04-15 1987-02-10 International Business Machines Corporation Optimization of range checking
IL100987A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Method and device for encoding
IL100990A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher
IL100986A (en) * 1991-02-27 1997-01-10 Digital Equipment Corp Method for compiling code
US5668999A (en) * 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5875335A (en) * 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
US5838978A (en) * 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
US5778233A (en) * 1996-10-11 1998-07-07 International Business Machines Corporation Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program
US5905895A (en) * 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
JPH1139169A (ja) * 1997-07-18 1999-02-12 Toshiba Corp コンパイル方法,コンパイラ,例外ハンドラ及びプログラム記憶媒体
US6047125A (en) * 1997-10-01 2000-04-04 Sun Microsystems, Inc. Garbage collection system for improved use of memory by removal of reference conflicts
US6128774A (en) * 1997-10-28 2000-10-03 Necula; George C. Safe to execute verification of software
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6131187A (en) * 1998-08-17 2000-10-10 International Business Machines Corporation Method and system for translating exception handling semantics of a bytecode class file
US6202145B1 (en) * 1998-12-14 2001-03-13 International Business Machines Corporation System and method for eliminating a ring transition while executing in protected mode

Also Published As

Publication number Publication date
AU2891900A (en) 2000-10-26
US6363522B1 (en) 2002-03-26
EP1049011A2 (en) 2000-11-02
CA2306519A1 (en) 2000-10-23
AU774192B2 (en) 2004-06-17
EP1049011A3 (en) 2007-02-28
CN1197003C (zh) 2005-04-13
CN1271890A (zh) 2000-11-01

Similar Documents

Publication Publication Date Title
JP2000347872A (ja) 例外を正規制御フローとして処理する方法及び装置
AU780946B2 (en) Method and apparatus for debugging optimized code
EP4099153B1 (en) Extending a virtual machine instruction set architecture
US6601235B1 (en) Method and apparatus for dynamically deoptimizing compiled activations
US6907519B2 (en) Systems and methods for integrating emulated and native code
EP2348406B1 (en) Endian conversion tool
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
US20060248523A1 (en) Annotation management
JP2000347876A (ja) スタック・スロット割当て方法および装置
EP0945790B1 (en) Method and apparatus for implementing fast subclass and subtype checks
CN100378657C (zh) 用于改进java方法调用速度的方法和装置
US20070169069A1 (en) Method and apparatus for using pre-translated files in a virtual machine
US8261251B2 (en) Modification of array access checking in AIX
US8099723B2 (en) Referencing a constant pool in a java virtual machine
US6901591B1 (en) Frameworks for invoking methods in virtual machines
JPH10133884A (ja) 推測的なコードを含むプログラミング・コードを実行する方法
JP3049814B2 (ja) マイクロコンピュータの言語処理装置
US11875168B2 (en) Optimizing execution of foreign method handles on a virtual machine
KR100649799B1 (ko) 고속 서브-클레스 검사 및 서브-타입 검사를 컴퓨터에 의해 구현하는 방법 그 시스템
JP3906669B2 (ja) 例外処理の翻訳方法
JP2000267901A (ja) ソフトウェア実行システム
JPH1185531A (ja) 言語処理装置およびその言語処理装置を実現するプログラムが記録された記憶媒体
JPH10149292A (ja) コンパイラ
JPS62105240A (ja) 共通式の最適化処理に対するレジスタ割当て方式