comparison src/share/vm/interpreter/linkResolver.cpp @ 13414:379f11bc04fc

8028438: static superclass method masks default methods Reviewed-by: hseigel, lfoltan, coleenp
author acorn
date Tue, 03 Dec 2013 11:13:14 -0800
parents 7a58803b5069
children 769557390c43
comparison
equal deleted inserted replaced
13413:7a58803b5069 13414:379f11bc04fc
265 // Looks up method in classes, then looks up local default methods 265 // Looks up method in classes, then looks up local default methods
266 void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) { 266 void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
267 Method* result_oop = klass->uncached_lookup_method(name, signature); 267 Method* result_oop = klass->uncached_lookup_method(name, signature);
268 result = methodHandle(THREAD, result_oop); 268 result = methodHandle(THREAD, result_oop);
269 while (!result.is_null() && result->is_static() && result->method_holder()->super() != NULL) { 269 while (!result.is_null() && result->is_static() && result->method_holder()->super() != NULL) {
270 klass = KlassHandle(THREAD, result->method_holder()->super()); 270 KlassHandle super_klass = KlassHandle(THREAD, result->method_holder()->super());
271 result = methodHandle(THREAD, klass->uncached_lookup_method(name, signature)); 271 result = methodHandle(THREAD, super_klass->uncached_lookup_method(name, signature));
272 } 272 }
273 273
274 if (result.is_null()) { 274 if (result.is_null()) {
275 Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods(); 275 Array<Method*>* default_methods = InstanceKlass::cast(klass())->default_methods();
276 if (default_methods != NULL) { 276 if (default_methods != NULL) {