< prev index next >

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

Print this page

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