< prev index next >

test/hotspot/jtreg/runtime/FieldLayout/BaseOffsets.java

Print this page

 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 {
< prev index next >