# HG changeset patch # User Gilles Duboscq # Date 1387362426 -3600 # Node ID 6a4160635fef44f822f06b50d853ba032b3410f0 # Parent 16d99e9d77ad4d9282e686a84e87403ebd957d15 Backed out changeset: dad7737243c6 diff -r 16d99e9d77ad -r 6a4160635fef graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java --- 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) {