hotspot/src/share/vm/oops/arrayKlass.cpp
// Initialization of vtables and mirror object is done separatly from base_create_array_klass,
// since a GC can happen. At this point all instance variables of the arrayKlass must be setup.
void arrayKlass::complete_create_array_klass(arrayKlassHandle k, KlassHandle super_klass, TRAPS) {
{- -------------------------------------------
(1) (ResourceMark)
---------------------------------------- -}
ResourceMark rm(THREAD);
{- -------------------------------------------
(1)
---------------------------------------- -}
k->initialize_supers(super_klass(), CHECK);
{- -------------------------------------------
(1) klassVtable::initialize_vtable() を呼んで vtable を作成する.
---------------------------------------- -}
k->vtable()->initialize_vtable(false, CHECK);
{- -------------------------------------------
(1) java_lang_Class::create_mirror() を呼んで
mirror オブジェクト(Java レベルのクラスオブジェクト)を生成する.
---------------------------------------- -}
java_lang_Class::create_mirror(k, CHECK);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.