changeset 13379:6a4160635fef

Backed out changeset: dad7737243c6
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 18 Dec 2013 11:27:06 +0100
parents 16d99e9d77ad
children aba12e3603b4
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java
diffstat 1 files changed, 2 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Wed Dec 18 11:13:17 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Wed Dec 18 11:27:06 2013 +0100
@@ -25,8 +25,6 @@
 import static com.oracle.graal.graph.UnsafeAccess.*;
 
 import com.oracle.graal.api.meta.*;
-import com.oracle.graal.graph.*;
-import com.oracle.graal.graph.spi.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.spi.*;
@@ -36,14 +34,13 @@
  * Represents an atomic compare-and-swap operation The result is a boolean that contains whether the
  * value matched the expected value.
  */
-public class CompareAndSwapNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single, Canonicalizable {
+public class CompareAndSwapNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
     @Input private ValueNode object;
     @Input private ValueNode offset;
     @Input private ValueNode expected;
     @Input private ValueNode newValue;
     private final int displacement;
-    private final LocationIdentity locationIdentity;
 
     public ValueNode object() {
         return object;
@@ -66,10 +63,6 @@
     }
 
     public CompareAndSwapNode(ValueNode object, int displacement, ValueNode offset, ValueNode expected, ValueNode newValue) {
-        this(object, displacement, offset, expected, newValue, LocationIdentity.ANY_LOCATION);
-    }
-
-    public CompareAndSwapNode(ValueNode object, int displacement, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) {
         super(StampFactory.forKind(Kind.Boolean.getStackKind()));
         assert expected.kind() == newValue.kind();
         this.object = object;
@@ -77,12 +70,11 @@
         this.expected = expected;
         this.newValue = newValue;
         this.displacement = displacement;
-        this.locationIdentity = locationIdentity;
     }
 
     @Override
     public LocationIdentity getLocationIdentity() {
-        return locationIdentity;
+        return LocationIdentity.ANY_LOCATION;
     }
 
     @Override
@@ -90,24 +82,6 @@
         tool.getLowerer().lower(this, tool);
     }
 
-    @Override
-    public Node canonical(CanonicalizerTool tool) {
-        if (getLocationIdentity() == LocationIdentity.ANY_LOCATION) {
-            Constant offsetConstant = offset().asConstant();
-            if (offsetConstant != null) {
-                ResolvedJavaType receiverType = ObjectStamp.typeOrNull(object());
-                if (receiverType != null) {
-                    long constantOffset = offsetConstant.asLong();
-                    ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(constantOffset);
-                    if (field != null && expected().kind() == field.getKind() && newValue().kind() == field.getKind()) {
-                        return graph().add(new CompareAndSwapNode(object, displacement, offset, expected, newValue, field));
-                    }
-                }
-            }
-        }
-        return this;
-    }
-
     // specialized on value type until boxing/unboxing is sorted out in intrinsification
     @NodeIntrinsic
     public static boolean compareAndSwap(Object object, @ConstantNodeParameter int displacement, long offset, Object expected, Object newValue) {