97 import java.util.Comparator;
98 import jdk.internal.misc.Unsafe;
99
100 import jdk.test.lib.Asserts;
101 import jdk.test.lib.Platform;
102 import jdk.test.whitebox.WhiteBox;
103
104 public class BaseOffsets {
105
106 static class LIClass {
107 public int i;
108 }
109
110 public static final WhiteBox WB = WhiteBox.getWhiteBox();
111
112 static final long INT_OFFSET;
113 static final int INT_ARRAY_OFFSET;
114 static final int LONG_ARRAY_OFFSET;
115 static {
116 if (!Platform.is64bit() || WB.getBooleanVMFlag("UseCompactObjectHeaders")) {
117 INT_OFFSET = 8;
118 INT_ARRAY_OFFSET = 12;
119 LONG_ARRAY_OFFSET = 16;
120 } else if (WB.getBooleanVMFlag("UseCompressedClassPointers")) {
121 INT_OFFSET = 12;
122 INT_ARRAY_OFFSET = 16;
123 LONG_ARRAY_OFFSET = 16;
124 } else {
125 INT_OFFSET = 16;
126 INT_ARRAY_OFFSET = 20;
127 LONG_ARRAY_OFFSET = 24;
128 }
129 }
130
131 static public void main(String[] args) {
132 Unsafe unsafe = Unsafe.getUnsafe();
133 Class c = LIClass.class;
134 Field[] fields = c.getFields();
135 for (int i = 0; i < fields.length; i++) {
136 long offset = unsafe.objectFieldOffset(fields[i]);
137 if (fields[i].getType() == int.class) {
138 Asserts.assertEquals(offset, INT_OFFSET, "Misplaced int field");
139 } else {
|
97 import java.util.Comparator;
98 import jdk.internal.misc.Unsafe;
99
100 import jdk.test.lib.Asserts;
101 import jdk.test.lib.Platform;
102 import jdk.test.whitebox.WhiteBox;
103
104 public class BaseOffsets {
105
106 static class LIClass {
107 public int i;
108 }
109
110 public static final WhiteBox WB = WhiteBox.getWhiteBox();
111
112 static final long INT_OFFSET;
113 static final int INT_ARRAY_OFFSET;
114 static final int LONG_ARRAY_OFFSET;
115 static {
116 if (!Platform.is64bit() || WB.getBooleanVMFlag("UseCompactObjectHeaders")) {
117 INT_OFFSET = 4;
118 INT_ARRAY_OFFSET = 8;
119 LONG_ARRAY_OFFSET = 8;
120 } else if (WB.getBooleanVMFlag("UseCompressedClassPointers")) {
121 INT_OFFSET = 12;
122 INT_ARRAY_OFFSET = 16;
123 LONG_ARRAY_OFFSET = 16;
124 } else {
125 INT_OFFSET = 16;
126 INT_ARRAY_OFFSET = 20;
127 LONG_ARRAY_OFFSET = 24;
128 }
129 }
130
131 static public void main(String[] args) {
132 Unsafe unsafe = Unsafe.getUnsafe();
133 Class c = LIClass.class;
134 Field[] fields = c.getFields();
135 for (int i = 0; i < fields.length; i++) {
136 long offset = unsafe.objectFieldOffset(fields[i]);
137 if (fields[i].getType() == int.class) {
138 Asserts.assertEquals(offset, INT_OFFSET, "Misplaced int field");
139 } else {
|