src/share/vm/interpreter/linkResolver.cpp

changeset 2982
ddd894528dbc
parent 2941
60b8287df30e
child 3035
43f9d800f276
     1.1 --- a/src/share/vm/interpreter/linkResolver.cpp	Wed Jun 22 14:45:37 2011 -0700
     1.2 +++ b/src/share/vm/interpreter/linkResolver.cpp	Thu Jun 23 17:14:06 2011 -0700
     1.3 @@ -294,6 +294,16 @@
     1.4    Symbol*  method_signature  = pool->signature_ref_at(index);
     1.5    KlassHandle  current_klass(THREAD, pool->pool_holder());
     1.6  
     1.7 +  if (pool->has_preresolution()
     1.8 +      || (resolved_klass() == SystemDictionary::MethodHandle_klass() &&
     1.9 +          methodOopDesc::is_method_handle_invoke_name(method_name))) {
    1.10 +    methodOop result_oop = constantPoolOopDesc::method_at_if_loaded(pool, index);
    1.11 +    if (result_oop != NULL) {
    1.12 +      resolved_method = methodHandle(THREAD, result_oop);
    1.13 +      return;
    1.14 +    }
    1.15 +  }
    1.16 +
    1.17    resolve_method(resolved_method, resolved_klass, method_name, method_signature, current_klass, true, CHECK);
    1.18  }
    1.19  

mercurial