comparison src/share/vm/interpreter/linkResolver.cpp @ 3785:ddd894528dbc

7056328: JSR 292 invocation sometimes fails in adapters for types not on boot class path Reviewed-by: never
author jrose
date Thu, 23 Jun 2011 17:14:06 -0700
parents 60b8287df30e
children 43f9d800f276
comparison
equal deleted inserted replaced
3784:aabf25fa3f05 3785:ddd894528dbc
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