diff jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/PrimitiveConstant.java @ 22489:24b4e5e1431c

Remove JavaConstant from Value hierarchy.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 31 Aug 2015 13:36:07 +0200
parents 0e095e2c24e2
children dc1aeef79e7e
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/PrimitiveConstant.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/PrimitiveConstant.java	Mon Aug 31 13:36:07 2015 +0200
@@ -28,7 +28,9 @@
  * Represents a primitive constant value, such as an integer or floating point number, within the
  * compiler and across the compiler/runtime interface.
  */
-public class PrimitiveConstant extends AbstractValue implements JavaConstant, SerializableConstant {
+public class PrimitiveConstant implements JavaConstant, SerializableConstant {
+
+    private final Kind kind;
 
     /**
      * The boxed primitive value as a {@code long}. For {@code float} and {@code double} values,
@@ -38,13 +40,18 @@
     private final long primitive;
 
     protected PrimitiveConstant(Kind kind, long primitive) {
-        super(LIRKind.value(kind));
         this.primitive = primitive;
+        this.kind = kind;
 
         assert kind.isPrimitive() || kind == Kind.Illegal;
     }
 
     @Override
+    public Kind getKind() {
+        return kind;
+    }
+
+    @Override
     public boolean isNull() {
         return false;
     }
@@ -150,7 +157,14 @@
 
     @Override
     public boolean equals(Object o) {
-        return o == this || (o instanceof PrimitiveConstant && super.equals(o) && primitive == ((PrimitiveConstant) o).primitive);
+        if (o == this) {
+            return true;
+        }
+        if (!(o instanceof PrimitiveConstant)) {
+            return false;
+        }
+        PrimitiveConstant other = (PrimitiveConstant) o;
+        return this.kind.equals(other.kind) && this.primitive == other.primitive;
     }
 
     @Override