hotspot/src/share/vm/prims/jni.cpp
static instanceOop alloc_object(jclass clazz, TRAPS) {
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
{- -------------------------------------------
(1) Klass::check_valid_for_instantiation を呼んで,
インスタンスを作れるクラスだと確認しておく.
(Klass::check_valid_for_instantiation() もしくはサブクラスでオーバーライドしたメソッドが呼び出される)
インスタンスが作れないクラスの場合には, ここで例外が出る.
---------------------------------------- -}
Klass::cast(k())->check_valid_for_instantiation(false, CHECK_NULL);
{- -------------------------------------------
(1) instanceKlass::initialize() で, リンク&初期化を(もしまだ行われていなければ)実行しておく?? #TODO
---------------------------------------- -}
instanceKlass::cast(k())->initialize(CHECK_NULL);
{- -------------------------------------------
(1) instanceKlass::allocate_instance() を呼んでメモリを確保する.
---------------------------------------- -}
instanceOop ih = instanceKlass::cast(k())->allocate_instance(THREAD);
{- -------------------------------------------
(1) 結果をリターン
---------------------------------------- -}
return ih;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.