src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ea/EATestBase.java
changeset 59095 03fbcd06b4c0
parent 58877 aec7bf35d6f5
equal deleted inserted replaced
59094:5d4c3724e4c7 59095:03fbcd06b4c0
    84         }
    84         }
    85 
    85 
    86         @Override
    86         @Override
    87         public int hashCode() {
    87         public int hashCode() {
    88             return x + 13 * y;
    88             return x + 13 * y;
       
    89         }
       
    90 
       
    91         public static final long fieldOffset1;
       
    92         public static final long fieldOffset2;
       
    93         public static final boolean firstFieldIsX;
       
    94 
       
    95         static {
       
    96             try {
       
    97                 long localFieldOffset1 = UNSAFE.objectFieldOffset(EATestBase.TestClassInt.class.getField("x"));
       
    98                 // Make the fields 8 byte aligned (Required for testing setLong on Architectures
       
    99                 // which does not support unaligned memory access
       
   100                 if (localFieldOffset1 % 8 == 0) {
       
   101                     fieldOffset1 = localFieldOffset1;
       
   102                     fieldOffset2 = UNSAFE.objectFieldOffset(EATestBase.TestClassInt.class.getField("y"));
       
   103                     firstFieldIsX = true;
       
   104                 } else {
       
   105                     fieldOffset1 = UNSAFE.objectFieldOffset(EATestBase.TestClassInt.class.getField("y"));
       
   106                     fieldOffset2 = UNSAFE.objectFieldOffset(EATestBase.TestClassInt.class.getField("z"));
       
   107                     firstFieldIsX = false;
       
   108                 }
       
   109                 assert fieldOffset2 == fieldOffset1 + 4;
       
   110             } catch (Exception e) {
       
   111                 throw new RuntimeException(e);
       
   112             }
       
   113         }
       
   114 
       
   115         public void setFirstField(int v) {
       
   116             if (firstFieldIsX) {
       
   117                 x = v;
       
   118             } else {
       
   119                 y = v;
       
   120             }
       
   121         }
       
   122 
       
   123         public void setSecondField(int v) {
       
   124             if (firstFieldIsX) {
       
   125                 y = v;
       
   126             } else {
       
   127                 z = v;
       
   128             }
    89         }
   129         }
    90     }
   130     }
    91 
   131 
    92     public static class TestClassObject {
   132     public static class TestClassObject {
    93         public Object x;
   133         public Object x;