81 import java.util.Comparator;
82 import jdk.internal.misc.Unsafe;
83
84 import jdk.test.lib.Asserts;
85 import jdk.test.lib.Platform;
86 import jdk.test.whitebox.WhiteBox;
87
88 public class BaseOffsets {
89
90 static class LIClass {
91 public int i;
92 }
93
94 public static final WhiteBox WB = WhiteBox.getWhiteBox();
95
96 static final long INT_OFFSET;
97 static final long INT_ARRAY_OFFSET;
98 static final long LONG_ARRAY_OFFSET;
99 static {
100 if (!Platform.is64bit() || WB.getBooleanVMFlag("UseCompactObjectHeaders")) {
101 INT_OFFSET = 8;
102 INT_ARRAY_OFFSET = 12;
103 LONG_ARRAY_OFFSET = 16;
104 } else {
105 INT_OFFSET = 12;
106 INT_ARRAY_OFFSET = 16;
107 LONG_ARRAY_OFFSET = 16;
108 }
109 }
110
111 static public void main(String[] args) {
112 Unsafe unsafe = Unsafe.getUnsafe();
113 Class c = LIClass.class;
114 Field[] fields = c.getFields();
115 for (int i = 0; i < fields.length; i++) {
116 long offset = unsafe.objectFieldOffset(fields[i]);
117 if (fields[i].getType() == int.class) {
118 Asserts.assertEquals(offset, INT_OFFSET, "Misplaced int field");
119 } else {
120 Asserts.fail("Unexpected field type");
121 }
122 }
123
|
81 import java.util.Comparator;
82 import jdk.internal.misc.Unsafe;
83
84 import jdk.test.lib.Asserts;
85 import jdk.test.lib.Platform;
86 import jdk.test.whitebox.WhiteBox;
87
88 public class BaseOffsets {
89
90 static class LIClass {
91 public int i;
92 }
93
94 public static final WhiteBox WB = WhiteBox.getWhiteBox();
95
96 static final long INT_OFFSET;
97 static final long INT_ARRAY_OFFSET;
98 static final long LONG_ARRAY_OFFSET;
99 static {
100 if (!Platform.is64bit() || WB.getBooleanVMFlag("UseCompactObjectHeaders")) {
101 INT_OFFSET = 4;
102 INT_ARRAY_OFFSET = 8;
103 LONG_ARRAY_OFFSET = 8;
104 } else {
105 INT_OFFSET = 12;
106 INT_ARRAY_OFFSET = 16;
107 LONG_ARRAY_OFFSET = 16;
108 }
109 }
110
111 static public void main(String[] args) {
112 Unsafe unsafe = Unsafe.getUnsafe();
113 Class c = LIClass.class;
114 Field[] fields = c.getFields();
115 for (int i = 0; i < fields.length; i++) {
116 long offset = unsafe.objectFieldOffset(fields[i]);
117 if (fields[i].getType() == int.class) {
118 Asserts.assertEquals(offset, INT_OFFSET, "Misplaced int field");
119 } else {
120 Asserts.fail("Unexpected field type");
121 }
122 }
123
|