mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 12:04:39 +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() ?
|
Klass *klass_to_check = !InstanceKlass::cast(current_klass())->is_anonymous() ?
|
||||||
current_klass() :
|
current_klass() :
|
||||||
InstanceKlass::cast(current_klass())->host_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);
|
ResourceMark rm(THREAD);
|
||||||
char buf[200];
|
char buf[200];
|
||||||
jio_snprintf(buf, sizeof(buf),
|
jio_snprintf(buf, sizeof(buf),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue