35 import static com.oracle.java.testlibrary.Asserts.*; |
35 import static com.oracle.java.testlibrary.Asserts.*; |
36 |
36 |
37 public class FieldOffset { |
37 public class FieldOffset { |
38 public static void main(String args[]) throws Exception { |
38 public static void main(String args[]) throws Exception { |
39 Unsafe unsafe = Utils.getUnsafe(); |
39 Unsafe unsafe = Utils.getUnsafe(); |
40 Field fields[] = Test.class.getDeclaredFields(); |
40 Field[] fields = Test.class.getDeclaredFields(); |
41 |
41 |
42 for (int i = 0; i < fields.length; i++) { |
42 for (int i = 0; i < fields.length; i++) { |
43 int offset = unsafe.fieldOffset(fields[i]); |
43 long offset = unsafe.objectFieldOffset(fields[i]); |
44 // Ensure we got a valid offset value back |
44 // Ensure we got a valid offset value back |
45 assertNotEquals(offset, unsafe.INVALID_FIELD_OFFSET); |
45 assertNotEquals(offset, unsafe.INVALID_FIELD_OFFSET); |
46 |
46 |
47 // Make sure the field offset is unique |
47 // Make sure the field offset is unique |
48 for (int j = 0; j < i; j++) { |
48 for (int j = 0; j < i; j++) { |
49 assertNotEquals(offset, unsafe.fieldOffset(fields[j])); |
49 assertNotEquals(offset, unsafe.objectFieldOffset(fields[j])); |
50 } |
50 } |
51 } |
51 } |
|
52 |
|
53 fields = StaticTest.class.getDeclaredFields(); |
|
54 for (int i = 0; i < fields.length; i++) { |
|
55 long offset = unsafe.staticFieldOffset(fields[i]); |
|
56 // Ensure we got a valid offset value back |
|
57 assertNotEquals(offset, unsafe.INVALID_FIELD_OFFSET); |
|
58 |
|
59 // Make sure the field offset is unique |
|
60 for (int j = 0; j < i; j++) { |
|
61 assertNotEquals(offset, unsafe.staticFieldOffset(fields[j])); |
|
62 } |
|
63 } |
|
64 |
52 } |
65 } |
53 |
66 |
54 class Test { |
67 class Test { |
55 boolean booleanField; |
68 boolean booleanField; |
56 byte byteField; |
69 byte byteField; |