292 |
292 |
293 Symbol* method_name = pool->name_ref_at(index); |
293 Symbol* method_name = pool->name_ref_at(index); |
294 Symbol* method_signature = pool->signature_ref_at(index); |
294 Symbol* method_signature = pool->signature_ref_at(index); |
295 KlassHandle current_klass(THREAD, pool->pool_holder()); |
295 KlassHandle current_klass(THREAD, pool->pool_holder()); |
296 |
296 |
|
297 if (pool->has_preresolution() |
|
298 || (resolved_klass() == SystemDictionary::MethodHandle_klass() && |
|
299 methodOopDesc::is_method_handle_invoke_name(method_name))) { |
|
300 methodOop result_oop = constantPoolOopDesc::method_at_if_loaded(pool, index); |
|
301 if (result_oop != NULL) { |
|
302 resolved_method = methodHandle(THREAD, result_oop); |
|
303 return; |
|
304 } |
|
305 } |
|
306 |
297 resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); |
307 resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK); |
298 } |
308 } |
299 |
309 |
300 void LinkResolver::resolve_dynamic_method(methodHandle& resolved_method, KlassHandle& resolved_klass, constantPoolHandle pool, int index, TRAPS) { |
310 void LinkResolver::resolve_dynamic_method(methodHandle& resolved_method, KlassHandle& resolved_klass, constantPoolHandle pool, int index, TRAPS) { |
301 // The class is java.lang.invoke.MethodHandle |
311 // The class is java.lang.invoke.MethodHandle |