Mercurial > hg > truffle
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) {