Mercurial > hg > graal-jvmci-8
changeset 13433:769557390c43
8029415: java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java fails on all platforms with hs25-b61
Summary: Check first that a class is not a dynamically-generated bytecode associated with 1.4 reflection implementation, to emitting an ICCE of an invokespecial IMR of a method in an indirect superinterface.
Reviewed-by: acorn, hseigel
Contributed-by: lois.foltan@oracle.com
author | hseigel |
---|---|
date | Fri, 06 Dec 2013 11:33:10 -0500 |
parents | e84d2afb2fb0 |
children | a150ff9e8efc |
files | src/share/vm/interpreter/linkResolver.cpp |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/interpreter/linkResolver.cpp Tue Dec 03 13:56:10 2013 -0800 +++ b/src/share/vm/interpreter/linkResolver.cpp Fri Dec 06 11:33:10 2013 -0500 @@ -943,8 +943,17 @@ Klass *klass_to_check = !InstanceKlass::cast(current_klass())->is_anonymous() ? current_klass() : InstanceKlass::cast(current_klass())->host_klass(); + // As of the fix for 4486457 we disable verification for all of the + // dynamically-generated bytecodes associated with the 1.4 + // reflection implementation, not just those associated with + // sun/reflect/SerializationConstructorAccessor. + bool is_reflect = JDK_Version::is_gte_jdk14x_version() && + UseNewReflection && + klass_to_check->is_subclass_of( + SystemDictionary::reflect_MagicAccessorImpl_klass()); - if (!InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) { + if (!is_reflect && + !InstanceKlass::cast(klass_to_check)->is_same_or_direct_interface(resolved_klass())) { ResourceMark rm(THREAD); char buf[200]; jio_snprintf(buf, sizeof(buf),