280 ttyLocker ttyl; 281 ResourceMark rm; 282 tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:", 283 Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()), 284 m_klass->internal_name(), vmindex); 285 m->access_flags().print_on(tty); 286 if (m->is_default_method()) { 287 tty->print("default"); 288 } 289 tty->cr(); 290 } 291 break; 292 293 case CallInfo::direct_call: 294 vmindex = Method::nonvirtual_vtable_index; 295 if (m->is_static()) { 296 flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT); 297 } else if (m->is_initializer()) { 298 flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT); 299 } else { 300 flags |= IS_METHOD | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT); 301 } 302 break; 303 304 default: assert(false, "bad CallInfo"); return NULL; 305 } 306 307 // @CallerSensitive annotation detected 308 if (m->caller_sensitive()) { 309 flags |= CALLER_SENSITIVE; 310 } 311 312 Handle resolved_method = info.resolved_method_name(); 313 assert(java_lang_invoke_ResolvedMethodName::vmtarget(resolved_method()) == m(), 314 "Should not change after link resolution"); 315 316 oop mname_oop = mname(); 317 java_lang_invoke_MemberName::set_flags (mname_oop, flags); 318 java_lang_invoke_MemberName::set_method (mname_oop, resolved_method()); 319 java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex); // vtable/itable index | 280 ttyLocker ttyl; 281 ResourceMark rm; 282 tty->print_cr("memberName: invokevirtual method_holder::method: %s, receiver: %s, vtableindex: %d, access_flags:", 283 Method::name_and_sig_as_C_string(m->method_holder(), m->name(), m->signature()), 284 m_klass->internal_name(), vmindex); 285 m->access_flags().print_on(tty); 286 if (m->is_default_method()) { 287 tty->print("default"); 288 } 289 tty->cr(); 290 } 291 break; 292 293 case CallInfo::direct_call: 294 vmindex = Method::nonvirtual_vtable_index; 295 if (m->is_static()) { 296 flags |= IS_METHOD | (JVM_REF_invokeStatic << REFERENCE_KIND_SHIFT); 297 } else if (m->is_initializer()) { 298 flags |= IS_CONSTRUCTOR | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT); 299 } else { 300 // "special" implies a direct call here, regardless of whether we are 301 // dealing with classes or interfaces 302 flags |= IS_METHOD | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT); 303 } 304 break; 305 306 default: assert(false, "bad CallInfo"); return NULL; 307 } 308 309 // @CallerSensitive annotation detected 310 if (m->caller_sensitive()) { 311 flags |= CALLER_SENSITIVE; 312 } 313 314 Handle resolved_method = info.resolved_method_name(); 315 assert(java_lang_invoke_ResolvedMethodName::vmtarget(resolved_method()) == m(), 316 "Should not change after link resolution"); 317 318 oop mname_oop = mname(); 319 java_lang_invoke_MemberName::set_flags (mname_oop, flags); 320 java_lang_invoke_MemberName::set_method (mname_oop, resolved_method()); 321 java_lang_invoke_MemberName::set_vmindex(mname_oop, vmindex); // vtable/itable index |