8006267: InterfaceMethod_ref should allow invokestatic and invokespecial

Lambda changes; spec 0.6.2 - Allow static invokestatic and invokespecial calls to InterfaceMethod_ref

Reviewed-by: dholmes, acorn
This commit is contained in:
Bharadwaj Yadavalli 2013-04-18 08:05:35 -07:00
parent 54b7ae1ff9
commit f63b13e379
4 changed files with 44 additions and 12 deletions

View file

@ -268,8 +268,15 @@ ClassDescriptor* ClassDescriptor::parse_generic_signature(
Klass* outer = SystemDictionary::find(
outer_name, class_loader, protection_domain, CHECK_NULL);
if (outer == NULL && !THREAD->is_Compiler_thread()) {
outer = SystemDictionary::resolve_super_or_fail(original_name,
outer_name, class_loader, protection_domain, false, CHECK_NULL);
if (outer_name == ik->super()->name()) {
outer = SystemDictionary::resolve_super_or_fail(original_name, outer_name,
class_loader, protection_domain,
false, CHECK_NULL);
}
else {
outer = SystemDictionary::resolve_or_fail(outer_name, class_loader,
protection_domain, false, CHECK_NULL);
}
}
InstanceKlass* outer_ik;