< prev index next >
src/java.base/share/classes/java/lang/Class.java
Print this page
rev 17358 : 8182487: Add Unsafe.objectFieldOffset(Class, String)
Reviewed-by: dsimms
@@ -2861,22 +2861,17 @@
private static final long annotationTypeOffset;
// offset of Class.annotationData instance field
private static final long annotationDataOffset;
static {
- Field[] fields = Class.class.getDeclaredFields0(false); // bypass caches
- reflectionDataOffset = objectFieldOffset(fields, "reflectionData");
- annotationTypeOffset = objectFieldOffset(fields, "annotationType");
- annotationDataOffset = objectFieldOffset(fields, "annotationData");
+ reflectionDataOffset = objectFieldOffset("reflectionData");
+ annotationTypeOffset = objectFieldOffset("annotationType");
+ annotationDataOffset = objectFieldOffset("annotationData");
}
- private static long objectFieldOffset(Field[] fields, String fieldName) {
- Field field = searchFields(fields, fieldName);
- if (field == null) {
- throw new Error("No " + fieldName + " field found in java.lang.Class");
- }
- return unsafe.objectFieldOffset(field);
+ private static long objectFieldOffset(String fieldName) {
+ return unsafe.objectFieldOffset(Class.class, fieldName);
}
static <T> boolean casReflectionData(Class<?> clazz,
SoftReference<ReflectionData<T>> oldData,
SoftReference<ReflectionData<T>> newData) {
< prev index next >