changeset 22489:24b4e5e1431c

Remove JavaConstant from Value hierarchy.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 31 Aug 2015 13:36:07 +0200
parents b5ebb80da4f1
children 7b238ae6da75
files jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ValueUtil.java jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotCompressedNullConstant.java jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotObjectConstantImpl.java jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/JavaConstant.java jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/NullConstant.java jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/PrimitiveConstant.java
diffstat 6 files changed, 38 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ValueUtil.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.code/src/jdk/internal/jvmci/code/ValueUtil.java	Mon Aug 31 13:36:07 2015 +0200
@@ -55,21 +55,11 @@
         return (VirtualObject) value;
     }
 
-    public static boolean isConstant(Value value) {
-        assert value != null;
-        return value instanceof JavaConstant;
-    }
-
     public static boolean isConstantJavaValue(JavaValue value) {
         assert value != null;
         return value instanceof JavaConstant;
     }
 
-    public static JavaConstant asConstant(Value value) {
-        assert value != null;
-        return (JavaConstant) value;
-    }
-
     public static boolean isAllocatableValue(Value value) {
         assert value != null;
         return value instanceof AllocatableValue;
--- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotCompressedNullConstant.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotCompressedNullConstant.java	Mon Aug 31 13:36:07 2015 +0200
@@ -27,12 +27,15 @@
 /**
  * The compressed representation of the {@link JavaConstant#NULL_POINTER null constant}.
  */
-public final class HotSpotCompressedNullConstant extends AbstractValue implements JavaConstant, HotSpotConstant {
+public final class HotSpotCompressedNullConstant implements JavaConstant, HotSpotConstant {
 
     public static final JavaConstant COMPRESSED_NULL = new HotSpotCompressedNullConstant();
 
     private HotSpotCompressedNullConstant() {
-        super(LIRKind.reference(Kind.Int));
+    }
+
+    public Kind getKind() {
+        return Kind.Object;
     }
 
     @Override
--- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotObjectConstantImpl.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotObjectConstantImpl.java	Mon Aug 31 13:36:07 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -33,7 +33,7 @@
  * Represents a constant non-{@code null} object reference, within the compiler and across the
  * compiler/runtime interface.
  */
-public final class HotSpotObjectConstantImpl extends AbstractValue implements HotSpotObjectConstant, HotSpotProxified {
+public final class HotSpotObjectConstantImpl implements HotSpotObjectConstant, HotSpotProxified {
 
     public static JavaConstant forObject(Object object) {
         return forObject(object, false);
@@ -80,7 +80,6 @@
     private final boolean isDefaultStable;
 
     private HotSpotObjectConstantImpl(Object object, boolean compressed, int stableDimension, boolean isDefaultStable) {
-        super(LIRKind.reference(compressed ? Kind.Int : Kind.Object));
         this.object = object;
         this.compressed = compressed;
         this.stableDimension = (byte) stableDimension;
@@ -95,6 +94,11 @@
         this(object, compressed, 0, false);
     }
 
+    @Override
+    public Kind getKind() {
+        return Kind.Object;
+    }
+
     /**
      * Package-private accessor for the object represented by this constant.
      */
@@ -253,7 +257,7 @@
             return true;
         } else if (o instanceof HotSpotObjectConstantImpl) {
             HotSpotObjectConstantImpl other = (HotSpotObjectConstantImpl) o;
-            return super.equals(o) && object == other.object && compressed == other.compressed && stableDimension == other.stableDimension && isDefaultStable == other.isDefaultStable;
+            return object == other.object && compressed == other.compressed && stableDimension == other.stableDimension && isDefaultStable == other.isDefaultStable;
         }
         return false;
     }
--- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/JavaConstant.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/JavaConstant.java	Mon Aug 31 13:36:07 2015 +0200
@@ -28,7 +28,7 @@
  * {@code JavaConstant} instances that represent frequently used constant values, such as
  * {@link #NULL_POINTER}.
  */
-public interface JavaConstant extends Constant, JavaValue, Value {
+public interface JavaConstant extends Constant, JavaValue {
 
     /*
      * Using a larger cache for integers leads to only a slight increase in cache hit ratio which is
--- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/NullConstant.java	Sun Aug 30 20:15:02 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/NullConstant.java	Mon Aug 31 13:36:07 2015 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,10 +25,14 @@
 /**
  * The implementation type of the {@link JavaConstant#NULL_POINTER null constant}.
  */
-final class NullConstant extends AbstractValue implements JavaConstant {
+final class NullConstant implements JavaConstant {
 
     protected NullConstant() {
-        super(LIRKind.reference(Kind.Object));
+    }
+
+    @Override
+    public Kind getKind() {
+        return Kind.Object;
     }
 
     @Override
--- 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