Top

ciBytecodeStream, ciSignatureStream 及び ciExceptionHandlerStream クラス (ciBytecodeStream, ciSignatureStream, ciExceptionHandlerStream)

これらは, JIT Compiler 用のクラス. より具体的に言うと, メソッド内の情報 (メソッド中のバイトコード, メソッドの型を表す文字列(Signature String), メソッドの例外ハンドラ) に対して iterate 処理するためのユーティリティ・クラス (See: here for details).

クラス一覧(class list)


ciBytecodeStream

概要(Summary)

JIT Compiler の作業中に使われる一時オブジェクト(StackObjクラス).

メソッド中のバイトコードに対して iterate 処理するためのイテレータクラス.

なお, このクラスは Constant Pool の中身にアクセスする機能も提供している. このため, JIT コンパイラは Constant Pool に関するデータ構造については知る必要がない.

また, HotSpot 独自の _fast 系の bytecode (See: here and here for details) についても, ciBytecodeStream の内部で元々の bytecode に戻している (そのため, これらについても JIT コンパイラは知る必要はない).

    ((cite: hotspot/src/share/vm/ci/ciStreams.hpp))
    // The class is used to iterate over the bytecodes of a method.
    // It hides the details of constant pool structure/access by
    // providing accessors for constant pool items.  It returns only pure
    // Java bytecodes; VM-internal _fast bytecodes are translated back to
    // their original form during iteration.
    class ciBytecodeStream : StackObj {

詳細(Details)

See: here for details


ciSignatureStream

概要(Summary)

JIT Compiler の作業中に使われる一時オブジェクト(StackObjクラス).

メソッドの型を表す文字列(Signature String)に対して iterate 処理するためのイテレータクラス.

    ((cite: hotspot/src/share/vm/ci/ciStreams.hpp))
    // ciSignatureStream
    //
    // The class is used to iterate over the elements of a method signature.
    class ciSignatureStream : public StackObj {

使われ方(Usage)

以下の箇所で(のみ)使用されている.

詳細(Details)

See: here for details


ciExceptionHandlerStream

概要(Summary)

JIT Compiler の作業中に使われる一時オブジェクト(StackObjクラス).

メソッドの例外ハンドラ(Exception Handler)情報に対して iterate 処理するためのイテレータクラス.

    ((cite: hotspot/src/share/vm/ci/ciStreams.hpp))
    // ciExceptionHandlerStream
    //
    // The class is used to iterate over the exception handlers of
    // a method.
    class ciExceptionHandlerStream : public StackObj {

使われ方(Usage)

以下の箇所で(のみ)使用されている.

詳細(Details)

See: here for details



This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.