comparison src/share/vm/classfile/genericSignatures.cpp @ 10128:41ed397cc0cd

8006267: InterfaceMethod_ref should allow invokestatic and invokespecial Summary: Lambda changes; spec 0.6.2 - Allow static invokestatic and invokespecial calls to InterfaceMethod_ref Reviewed-by: dholmes, acorn
author bharadwaj
date Thu, 18 Apr 2013 08:05:35 -0700
parents 4735d2c84362
children ef57c43512d6
comparison
equal deleted inserted replaced
10126:63e31ce40bdb 10128:41ed397cc0cd
266 266
267 Symbol* outer_name = ik->constants()->klass_name_at(outer_index); 267 Symbol* outer_name = ik->constants()->klass_name_at(outer_index);
268 Klass* outer = SystemDictionary::find( 268 Klass* outer = SystemDictionary::find(
269 outer_name, class_loader, protection_domain, CHECK_NULL); 269 outer_name, class_loader, protection_domain, CHECK_NULL);
270 if (outer == NULL && !THREAD->is_Compiler_thread()) { 270 if (outer == NULL && !THREAD->is_Compiler_thread()) {
271 outer = SystemDictionary::resolve_super_or_fail(original_name, 271 if (outer_name == ik->super()->name()) {
272 outer_name, class_loader, protection_domain, false, CHECK_NULL); 272 outer = SystemDictionary::resolve_super_or_fail(original_name, outer_name,
273 class_loader, protection_domain,
274 false, CHECK_NULL);
275 }
276 else {
277 outer = SystemDictionary::resolve_or_fail(outer_name, class_loader,
278 protection_domain, false, CHECK_NULL);
279 }
273 } 280 }
274 281
275 InstanceKlass* outer_ik; 282 InstanceKlass* outer_ik;
276 ClassDescriptor* outer_spec = NULL; 283 ClassDescriptor* outer_spec = NULL;
277 if (outer == NULL) { 284 if (outer == NULL) {