hotspot/src/share/vm/interpreter/linkResolver.cpp
changeset 10008 d84de97ad847
parent 9967 9ddc1c490930
child 10250 0794cd144834
equal deleted inserted replaced
10007:43d4a6542551 10008:d84de97ad847
   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