hotspot/src/share/vm/oops/cpCacheOop.cpp
(各フィールドの内容については ConstantPoolCacheEntry クラスの説明参照)
void ConstantPoolCacheEntry::set_interface_call(methodHandle method, int index) {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(!is_secondary_entry(), "");
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
klassOop interf = method->method_holder();
assert(instanceKlass::cast(interf)->is_interface(), "must be an interface");
{- -------------------------------------------
(1) _f1 を設定 (holder の klassOop)
---------------------------------------- -}
set_f1(interf);
{- -------------------------------------------
(1) _f2 を設定 (itable index)
---------------------------------------- -}
set_f2(index);
{- -------------------------------------------
(1) _flags を設定 (型情報, 等)
---------------------------------------- -}
set_flags(as_flags(as_TosState(method->result_type()), method->is_final_method(), false, false, false, true) | method()->size_of_parameters());
{- -------------------------------------------
(1) _indices を設定
(_indices は set_bytecode_1() で設定)
---------------------------------------- -}
set_bytecode_1(Bytecodes::_invokeinterface);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.