Top

BytecodeStream クラス関連のクラス (BaseBytecodeStream, RawBytecodeStream, BytecodeStream)

これらは, メソッド中の各バイトコード命令の情報にアクセスするためのユーティリティ・クラス.

概要(Summary)

これらのクラスは, 指定した範囲の bytecode に対して iterate 処理を行うためのイテレータクラス.

利用する際には, 以下のコメント中の "Usage:" のように使う.

    ((cite: hotspot/src/share/vm/interpreter/bytecodeStream.hpp))
    // A BytecodeStream is used for fast iteration over the bytecodes
    // of a methodOop.
    //
    // Usage:
    //
    // BytecodeStream s(method);
    // Bytecodes::Code c;
    // while ((c = s.next()) >= 0) {
    //   ...
    // }

なお, 基底クラスである BaseBytecodeStream には以下の二つのサブクラスがある. RawBytecodeStream の方が (rewrite の影響を考えない分だけ) 速い模様.

    ((cite: hotspot/src/share/vm/interpreter/bytecodeStream.hpp))
    // A RawBytecodeStream is a simple version of BytecodeStream.
    // It is used ONLY when we know the bytecodes haven't been rewritten
    // yet, such as in the rewriter or the verifier.

クラス一覧(class list)


BaseBytecodeStream

概要(Summary)

指定範囲の bytecode をたどるためのイテレータクラス(StackObjクラス).

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/interpreter/bytecodeStream.hpp))
    // Here is the common base class for both RawBytecodeStream and BytecodeStream:
    class BaseBytecodeStream: StackObj {

詳細(Details)

See: here for details


RawBytecodeStream

概要(Summary)

BaseBytecodeStream クラスの具象サブクラスの1つ. こちらは rewrite 処理について考慮せずにイテレートする.

    ((cite: hotspot/src/share/vm/interpreter/bytecodeStream.hpp))
    class RawBytecodeStream: public BaseBytecodeStream {

詳細(Details)

See: here for details


BytecodeStream

概要(Summary)

BaseBytecodeStream クラスの具象サブクラスの1つ. こちらは rewrite 処理についても考慮してイテレートする.

    ((cite: hotspot/src/share/vm/interpreter/bytecodeStream.hpp))
    // In BytecodeStream, non-java bytecodes will be translated into the
    // corresponding java bytecodes.

    class BytecodeStream: public BaseBytecodeStream {

詳細(Details)

See: here for details



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