hotspot/src/share/vm/prims/methodHandles.cpp
changeset 20391 7b146c5ebb18
parent 20017 81eba62e9048
child 21107 aa84c4d14e6c
equal deleted inserted replaced
20390:a86c9ed78205 20391:7b146c5ebb18
   185     vmindex = info.itable_index();
   185     vmindex = info.itable_index();
   186     // More importantly, the itable index only works with the method holder.
   186     // More importantly, the itable index only works with the method holder.
   187     receiver_limit = m->method_holder();
   187     receiver_limit = m->method_holder();
   188     assert(receiver_limit->verify_itable_index(vmindex), "");
   188     assert(receiver_limit->verify_itable_index(vmindex), "");
   189     flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT);
   189     flags |= IS_METHOD | (JVM_REF_invokeInterface << REFERENCE_KIND_SHIFT);
       
   190     if (TraceInvokeDynamic) {
       
   191       ResourceMark rm;
       
   192       tty->print_cr("memberName: invokeinterface method_holder::method: %s, receiver: %s, itableindex: %d, access_flags:",
       
   193             Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
       
   194             receiver_limit()->internal_name(), vmindex);
       
   195        m->access_flags().print_on(tty);
       
   196        if (!m->is_abstract()) {
       
   197          tty->print("default");
       
   198        }
       
   199        tty->cr();
       
   200     }
   190     break;
   201     break;
   191 
   202 
   192   case CallInfo::vtable_call:
   203   case CallInfo::vtable_call:
   193     vmindex = info.vtable_index();
   204     vmindex = info.vtable_index();
   194     flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
   205     flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
   195     assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe");
   206     assert(receiver_limit->is_subtype_of(m->method_holder()), "virtual call must be type-safe");
       
   207     if (TraceInvokeDynamic) {
       
   208       ResourceMark rm;
       
   209       tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:",
       
   210             Method::name_and_sig_as_C_string(receiver_limit(), m->name(), m->signature()),
       
   211             receiver_limit()->internal_name(), vmindex);
       
   212        m->access_flags().print_on(tty);
       
   213        if (m->is_default_method()) {
       
   214          tty->print("default");
       
   215        }
       
   216        tty->cr();
       
   217     }
   196     break;
   218     break;
   197 
   219 
   198   case CallInfo::direct_call:
   220   case CallInfo::direct_call:
   199     vmindex = Method::nonvirtual_vtable_index;
   221     vmindex = Method::nonvirtual_vtable_index;
   200     if (m->is_static()) {
   222     if (m->is_static()) {