methodLineTables データ・ストリング・フォーマット

methodLineTables データ・ストリングは、クラス内の各実行可能単位ごとに 1 つのエントリー を持つテーブルをエンコードします。

methodLineTables テーブル内の各エントリーの値は、対応する実行可能単位の行番号 (classSourceFile データ・ストリングによって名前を指定されたソース・ファイル内の) です。 例えば、テーブル内のエントリー番号 5 は、実行可能単位番号の行番号が 5 であることを表します。

以下に、methodLineTables ストリングの例を示します。
#51+1201#75+11,41
以下に、このストリングの解釈の仕方を示します。
  • 番号記号 (「#」) の直後の数字は、クラスのソース・コード内の完全な行番号を表します。 例では、クラス内の最初のメソッド内の最初の実行可能単位は 51 行目にあります。
  • 正符号 (「+」) の後ろの数字は、1 桁ずつが行数を示していて、 この行数を前の行番号に足すと、次の実行可能単位の行番号が計算できます。 例では、正符号の後ろの数字 (+1201) を使用して、2 番目から 5 番目の実行可能単位の行番号を計算します。
    1. 51 + 1 = 2 番目の実行可能単位の行番号: 52
    2. 52 + 2 = 3 番目の実行可能単位の行番号: 54
    3. 54 + 0 = 4 番目の実行可能単位の行番号: 54 (1 つのソース行に 2 つの実行可能単位がある)
    4. 54 + 1 = 5 番目の実行可能単位の行番号: 55
  • 行番号の増分が負の数である場合や 9 より大きい場合は、実行可能単位の完全な行番号を指定します。 例では、6 番目の実行可能単位は 75 行目にあり、その前の行番号は 55 だったので、それより 20 大きくなります。 このような場合、6 番目の実行可能単位のために完全な行番号を指定します。 そしてここから、相対行番号の計算を再度始めます (#75+11)。
    1. 75 = 6 番目の実行可能単位の行番号
    2. 75 + 1 = 7 番目の実行可能単位の行番号: 76
    3. 76 + 1 = 8 番目の実行可能単位の行番号: 77
  • コンマ (「,」) は、1 つのメソッドが終わり、次のメソッドが始まることを表します。 コンマの後の数字と記号は、上記のとおりに解釈されます。 例では、2 番目のメソッドの最初の実行可能単位の行番号は、前のメソッドで計算された最後の行番号より 4 だけ大きくなります。 このように、コンマの後も相対行番号の計算が続きます (,41)。
    1. 77 + 4 = 2 番目のメソッドの最初の実行可能単位の行番号: 81
    2. 81 + 1 = 2 番目のメソッドの 2 番目の実行可能単位の行番号: 82
注: すべての実行可能単位が、関連したソース情報を持っているわけではありません。 中には、Java™ 言語の セマンティクス (例えば、例外処理、初期化、同期など) を実装するためにコンパイラーによって作成されたものもあります。 このように生成された実行可能単位については、methodLineTables ストリングに 0 の完全行番号が入ります。 完全行番号が 0 であるということは、行番号情報が使用できないことを示します。 メソッド全体にソース情報が無い場合、そのメソッドは、行番号 0 に対応する単一の実行可能単位を持つものとして表示されます。
以下に、methodLineTables ストリングの別の例と、それらの意味を示します。
methodLineTables ストリング 意味
+5 最初のメソッドの最初の実行可能単位の行番号が 10 より小さい場合、 ストリング全体が正符号で始まり、増分が 0 行目から始まることを示します。 この例では、最初のメソッドの最初の実行可能単位は 5 行目から始まります。
+0 最初のメソッドがソース情報を持っていない場合、ストリングは +0 で始まります。 そのようなメソッドに適用される executableUnit プローブ・フラグメントは、メソッドの最初に 1 度だけ挿入されます。
...#437,#457+123... あるメソッドの最初の実行可能単位が、その前のメソッドの最後の実行可能単位より 10 行以上後から 始まる場合、新しいメソッドの最初の実行可能単位のためのパターンは、コンマ、番号記号、および行番号ストリングとなります。 この部分的な例では、新しいメソッドの最初の実行可能単位は、その前のメソッドの最後の実行可能単位の 20 行後から始まります。
...#437,+2... あるメソッドの最後の実行可能単位で「#」表記を必要として、 次のメソッドの最初の実行可能単位はそれほど離れていない場合もあります。 この部分的な例では、あるメソッドの最後の実行可能単位が 437 行目から始まり、 次のメソッドの最初の実行可能単位は 439 行目から始まります。
関連資料
プローブ・フラグメント・データ項目
フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.