Top

StubGenerator クラス


StubGenerator

概要(Summary)

StubCodeGenerator クラスの具象サブクラスの1つ. このクラスは StubRoutines 用のコードを生成する.

(なお, 32bit か 64bit かによってクラス定義が別になっている.)

    ((cite: hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp))
    class StubGenerator: public StubCodeGenerator {
    ((cite: hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp))
    class StubGenerator: public StubCodeGenerator {

使われ方(Usage)

StubGenerator_generate() 内で(のみ)使用されている.

なお, StubRoutine 内のコード生成は以下のように2段階で行われる (universe の初期化との関係上, 一度に全部やると卵と鶏の問題が起こってしまうため. 順番としては, まず stubRoutines_init1() を行った後で universe::genesis(universe の初期化)を行い, 改めて stubRoutines_init2() を行う).

JNI_CreateJavaVM()
-> (HotSpot の起動時処理) (See: here for details)
   -> init_globals()
      ...
      -> stubRoutines_init1()
         -> StubRoutines::initialize1()
            -> StubGenerator_generate()          (第2引数 false で呼び出される)
               -> StubGenerator::StubGenerator() (第2引数 false で呼び出される)
                  -> StubGenerator::generate_initial()
      -> universe_init()
      ...
      -> stubRoutines_init2()
         -> StubRoutines::initialize2()
            -> StubGenerator_generate()          (第2引数 true で呼び出される)
               -> StubGenerator::StubGenerator() (第2引数 true で呼び出される)
                  -> StubGenerator::generate_all()

参考(for your information): StubGenerator_generate() (x86 32bit の場合)

See: here for details

参考(for your information): StubGenerator::StubGenerator() (x86 32bit の場合)

See: here for details

参考(for your information): StubGenerator::generate_initial() (x86 32bit の場合)

(#TODO) See: here for details

参考(for your information): StubGenerator::generate_all() (x86 32bit の場合)

(#TODO) See: here for details

参考(for your information): StubGenerator_generate() (x86 64bit の場合)

See: here for details

参考(for your information): StubGenerator::StubGenerator() (x86 64bit の場合)

See: here for details

参考(for your information): StubGenerator::generate_initial() (x86 64bit の場合)

(#TODO) See: here for details

参考(for your information): StubGenerator::generate_all() (x86 64bit の場合)

(#TODO) See: here for details

内部構造(Internal structure)

内部には, 以下のようなメソッドが定義されている.

詳細(Details)

See: here for details



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