< 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 >