changeset 18885:0e9ae9a7e675

made some hash codes stable across VM executions to support replay compilation
author Doug Simon <doug.simon@oracle.com>
date Tue, 20 Jan 2015 16:53:28 +0100
parents 0857a4186ecd
children 9afe8fbe088c
files graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java
diffstat 2 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java	Tue Jan 20 16:52:16 2015 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NullConstant.java	Tue Jan 20 16:53:28 2015 +0100
@@ -85,7 +85,7 @@
 
     @Override
     public int hashCode() {
-        return System.identityHashCode(this);
+        return 13;
     }
 
     @Override
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java	Tue Jan 20 16:52:16 2015 +0100
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/type/ArithmeticOpTable.java	Tue Jan 20 16:53:28 2015 +0100
@@ -79,6 +79,7 @@
     private final IntegerConvertOp<Narrow> narrow;
 
     private final FloatConvertOp[] floatConvert;
+    private final int hash;
 
     public static ArithmeticOpTable forStamp(Stamp s) {
         if (s instanceof ArithmeticStamp) {
@@ -170,6 +171,13 @@
         this.narrow = narrow;
         this.floatConvert = new FloatConvertOp[FloatConvert.values().length];
         floatConvert.forEach(op -> this.floatConvert[op.getFloatConvert().ordinal()] = op);
+
+        this.hash = Objects.hash(neg, add, sub, mul, div, rem, not, and, or, xor, shl, shr, ushr, abs, sqrt, zeroExtend, signExtend, narrow, floatConvert);
+    }
+
+    @Override
+    public int hashCode() {
+        return hash;
     }
 
     /**