mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 19:44:41 +02:00
8029415: java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java fails on all platforms with hs25-b61
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
This commit is contained in:
parent
cd7d5ca125
commit
2078c58bbf
1 changed files with 10 additions and 1 deletions
|
@ -943,8 +943,17 @@ void LinkResolver::linktime_resolve_special_method(methodHandle& resolved_method
|
|||
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),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue