2360 if (found_on_bcp) { |
2360 if (found_on_bcp) { |
2361 MutexLocker ml(SystemDictionary_lock, Thread::current()); |
2361 MutexLocker ml(SystemDictionary_lock, Thread::current()); |
2362 spe = invoke_method_table()->find_entry(index, hash, signature, name_id); |
2362 spe = invoke_method_table()->find_entry(index, hash, signature, name_id); |
2363 if (spe == NULL) |
2363 if (spe == NULL) |
2364 spe = invoke_method_table()->add_entry(index, hash, signature, name_id); |
2364 spe = invoke_method_table()->add_entry(index, hash, signature, name_id); |
2365 if (spe->property_oop() == NULL) |
2365 if (spe->property_oop() == NULL) { |
2366 spe->set_property_oop(m()); |
2366 spe->set_property_oop(m()); |
|
2367 // Link m to his method type, if it is suitably generic. |
|
2368 oop mtform = java_lang_invoke_MethodType::form(mt()); |
|
2369 if (mtform != NULL && mt() == java_lang_invoke_MethodTypeForm::erasedType(mtform) |
|
2370 && java_lang_invoke_MethodTypeForm::vmlayout_offset_in_bytes() > 0) { |
|
2371 java_lang_invoke_MethodTypeForm::init_vmlayout(mtform, m()); |
|
2372 } |
|
2373 } |
2367 } else { |
2374 } else { |
2368 non_cached_result = m; |
2375 non_cached_result = m; |
2369 } |
2376 } |
2370 } |
2377 } |
2371 if (spe != NULL && spe->property_oop() != NULL) { |
2378 if (spe != NULL && spe->property_oop() != NULL) { |