8347397: Cleanup of JDK-8169880

Reviewed-by: liach, alanb
This commit is contained in:
Peter Levart 2025-01-10 14:47:01 +00:00
parent c5c4efdaa1
commit beb0e607d3

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1994, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1994, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -1205,18 +1205,13 @@ public final class Class<T> implements java.io.Serializable,
private Class<?>[] getInterfaces(boolean cloneArray) { private Class<?>[] getInterfaces(boolean cloneArray) {
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd == null) { Class<?>[] interfaces = rd.interfaces;
// no cloning required if (interfaces == null) {
return getInterfaces0(); interfaces = getInterfaces0();
} else { rd.interfaces = interfaces;
Class<?>[] interfaces = rd.interfaces;
if (interfaces == null) {
interfaces = getInterfaces0();
rd.interfaces = interfaces;
}
// defensively copy if requested
return cloneArray ? interfaces.clone() : interfaces;
} }
// defensively copy if requested
return cloneArray ? interfaces.clone() : interfaces;
} }
private native Class<?>[] getInterfaces0(); private native Class<?>[] getInterfaces0();
@ -2922,18 +2917,14 @@ public final class Class<T> implements java.io.Serializable,
private Field[] privateGetDeclaredFields(boolean publicOnly) { private Field[] privateGetDeclaredFields(boolean publicOnly) {
Field[] res; Field[] res;
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd != null) { res = publicOnly ? rd.declaredPublicFields : rd.declaredFields;
res = publicOnly ? rd.declaredPublicFields : rd.declaredFields; if (res != null) return res;
if (res != null) return res;
}
// No cached value available; request value from VM // No cached value available; request value from VM
res = Reflection.filterFields(this, getDeclaredFields0(publicOnly)); res = Reflection.filterFields(this, getDeclaredFields0(publicOnly));
if (rd != null) { if (publicOnly) {
if (publicOnly) { rd.declaredPublicFields = res;
rd.declaredPublicFields = res; } else {
} else { rd.declaredFields = res;
rd.declaredFields = res;
}
} }
return res; return res;
} }
@ -2944,10 +2935,8 @@ public final class Class<T> implements java.io.Serializable,
private Field[] privateGetPublicFields() { private Field[] privateGetPublicFields() {
Field[] res; Field[] res;
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd != null) { res = rd.publicFields;
res = rd.publicFields; if (res != null) return res;
if (res != null) return res;
}
// Use a linked hash set to ensure order is preserved and // Use a linked hash set to ensure order is preserved and
// fields from common super interfaces are not duplicated // fields from common super interfaces are not duplicated
@ -2968,9 +2957,7 @@ public final class Class<T> implements java.io.Serializable,
} }
res = fields.toArray(new Field[0]); res = fields.toArray(new Field[0]);
if (rd != null) { rd.publicFields = res;
rd.publicFields = res;
}
return res; return res;
} }
@ -2993,10 +2980,8 @@ public final class Class<T> implements java.io.Serializable,
private Constructor<T>[] privateGetDeclaredConstructors(boolean publicOnly) { private Constructor<T>[] privateGetDeclaredConstructors(boolean publicOnly) {
Constructor<T>[] res; Constructor<T>[] res;
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd != null) { res = publicOnly ? rd.publicConstructors : rd.declaredConstructors;
res = publicOnly ? rd.publicConstructors : rd.declaredConstructors; if (res != null) return res;
if (res != null) return res;
}
// No cached value available; request value from VM // No cached value available; request value from VM
if (isInterface()) { if (isInterface()) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -3005,12 +2990,10 @@ public final class Class<T> implements java.io.Serializable,
} else { } else {
res = getDeclaredConstructors0(publicOnly); res = getDeclaredConstructors0(publicOnly);
} }
if (rd != null) { if (publicOnly) {
if (publicOnly) { rd.publicConstructors = res;
rd.publicConstructors = res; } else {
} else { rd.declaredConstructors = res;
rd.declaredConstructors = res;
}
} }
return res; return res;
} }
@ -3027,18 +3010,14 @@ public final class Class<T> implements java.io.Serializable,
private Method[] privateGetDeclaredMethods(boolean publicOnly) { private Method[] privateGetDeclaredMethods(boolean publicOnly) {
Method[] res; Method[] res;
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd != null) { res = publicOnly ? rd.declaredPublicMethods : rd.declaredMethods;
res = publicOnly ? rd.declaredPublicMethods : rd.declaredMethods; if (res != null) return res;
if (res != null) return res;
}
// No cached value available; request value from VM // No cached value available; request value from VM
res = Reflection.filterMethods(this, getDeclaredMethods0(publicOnly)); res = Reflection.filterMethods(this, getDeclaredMethods0(publicOnly));
if (rd != null) { if (publicOnly) {
if (publicOnly) { rd.declaredPublicMethods = res;
rd.declaredPublicMethods = res; } else {
} else { rd.declaredMethods = res;
rd.declaredMethods = res;
}
} }
return res; return res;
} }
@ -3049,10 +3028,8 @@ public final class Class<T> implements java.io.Serializable,
private Method[] privateGetPublicMethods() { private Method[] privateGetPublicMethods() {
Method[] res; Method[] res;
ReflectionData<T> rd = reflectionData(); ReflectionData<T> rd = reflectionData();
if (rd != null) { res = rd.publicMethods;
res = rd.publicMethods; if (res != null) return res;
if (res != null) return res;
}
// No cached value available; compute value recursively. // No cached value available; compute value recursively.
// Start by fetching public declared methods... // Start by fetching public declared methods...
@ -3078,9 +3055,7 @@ public final class Class<T> implements java.io.Serializable,
} }
res = pms.toArray(); res = pms.toArray();
if (rd != null) { rd.publicMethods = res;
rd.publicMethods = res;
}
return res; return res;
} }