Top


定義場所(file name)

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

説明(description)

(各フィールドの内容については ConstantPoolCacheEntry クラスの説明参照)

名前(function name)

void ConstantPoolCacheEntry::set_interface_call(methodHandle method, int index) {

本体部(body)

  {- -------------------------------------------
  (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.