hotspot/src/share/vm/interpreter/linkResolver.cpp
changeset 10008 d84de97ad847
parent 9967 9ddc1c490930
child 10250 0794cd144834
--- a/hotspot/src/share/vm/interpreter/linkResolver.cpp	Wed Jun 22 14:45:37 2011 -0700
+++ b/hotspot/src/share/vm/interpreter/linkResolver.cpp	Thu Jun 23 17:14:06 2011 -0700
@@ -294,6 +294,16 @@
   Symbol*  method_signature  = pool->signature_ref_at(index);
   KlassHandle  current_klass(THREAD, pool->pool_holder());
 
+  if (pool->has_preresolution()
+      || (resolved_klass() == SystemDictionary::MethodHandle_klass() &&
+          methodOopDesc::is_method_handle_invoke_name(method_name))) {
+    methodOop result_oop = constantPoolOopDesc::method_at_if_loaded(pool, index);
+    if (result_oop != NULL) {
+      resolved_method = methodHandle(THREAD, result_oop);
+      return;
+    }
+  }
+
   resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK);
 }