Top


定義場所(file name)

hotspot/src/share/vm/oops/instanceKlass.cpp

説明(description)

// See "The Virtual Machine Specification" section 2.16.5 for a detailed explanation of the class initialization
// process. The step comments refers to the procedure described in that section.
// Note: implementation moved to static method to expose the this pointer.

名前(function name)

void instanceKlass::initialize(TRAPS) {

本体部(body)

  {- -------------------------------------------
  (1) このクラスの初期化が必要であれば, 
      instanceKlass::initialize_impl() を呼んで初期化を行う.

      (コメントによると, これが終了した時点では, 
       クラスは初期化が完了しているか('fully_initialized' になっているか)
       もしくは (再帰的に初期化が呼ばれた場合は) 初期化途中('being_initialized')になっている, 
       とのこと)
      ---------------------------------------- -}

      if (this->should_be_initialized()) {
        HandleMark hm(THREAD);
        instanceKlassHandle this_oop(THREAD, this->as_klassOop());
        initialize_impl(this_oop, CHECK);
        // Note: at this point the class may be initialized
        //       OR it may be in the state of being initialized
        //       in case of recursive initialization!

  {- -------------------------------------------
  (1) (assert)
      (この場合は, クラスの初期化は終わっているはず)
      ---------------------------------------- -}

      } else {
        assert(is_initialized(), "sanity check");
      }
    }

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