hotspot/test/runtime/Unsafe/FieldOffset.java
changeset 28951 a29d2048e16a
parent 28732 d4b650e48a8f
child 29678 dd2f3932c21e
--- a/hotspot/test/runtime/Unsafe/FieldOffset.java	Tue Dec 02 19:47:45 2014 +0100
+++ b/hotspot/test/runtime/Unsafe/FieldOffset.java	Tue Feb 10 14:10:43 2015 +0100
@@ -37,18 +37,31 @@
 public class FieldOffset {
     public static void main(String args[]) throws Exception {
         Unsafe unsafe = Utils.getUnsafe();
-        Field fields[] = Test.class.getDeclaredFields();
+        Field[] fields = Test.class.getDeclaredFields();
 
         for (int i = 0; i < fields.length; i++) {
-            int offset = unsafe.fieldOffset(fields[i]);
+            long offset = unsafe.objectFieldOffset(fields[i]);
             // Ensure we got a valid offset value back
             assertNotEquals(offset, unsafe.INVALID_FIELD_OFFSET);
 
             // Make sure the field offset is unique
             for (int j = 0; j < i; j++) {
-                assertNotEquals(offset, unsafe.fieldOffset(fields[j]));
+                assertNotEquals(offset, unsafe.objectFieldOffset(fields[j]));
             }
         }
+
+        fields = StaticTest.class.getDeclaredFields();
+        for (int i = 0; i < fields.length; i++) {
+            long offset = unsafe.staticFieldOffset(fields[i]);
+            // Ensure we got a valid offset value back
+            assertNotEquals(offset, unsafe.INVALID_FIELD_OFFSET);
+
+            // Make sure the field offset is unique
+            for (int j = 0; j < i; j++) {
+                assertNotEquals(offset, unsafe.staticFieldOffset(fields[j]));
+            }
+        }
+
     }
 
     class Test {
@@ -62,4 +75,17 @@
         Object objectField;
         short shortField;
     }
+
+    static class StaticTest {
+        static boolean booleanField;
+        static byte byteField;
+        static char charField;
+        static double doubleField;
+        static float floatField;
+        static int intField;
+        static long longField;
+        static Object objectField;
+        static short shortField;
+    }
+
 }