# HG changeset patch # User Doug Simon # Date 1412141987 -7200 # Node ID ffb974bef674761753dffa5d2c96ef0627cb23e5 # Parent 846c059e3ecfdc0e39663503be3ebc6a65a322c4 moved Node valueNumber and valueEquals logic (optionally) to generated nodes diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java --- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo static class TestNode extends Node implements IterableNodeType, TestNodeInterface { - private final String name; + protected final String name; public static TestNode create(String name) { return USE_GENERATED_NODES ? new TypedNodeIteratorTest_TestNodeGen(name) : new TestNode(name); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java --- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java Wed Oct 01 07:39:47 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo static class NodeA extends Node implements TestNodeInterface { - private final String name; + protected final String name; public static NodeA create(String name) { return USE_GENERATED_NODES ? new TypedNodeIteratorTest2_NodeAGen(name) : new NodeA(name); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java Wed Oct 01 07:39:47 2014 +0200 @@ -453,9 +453,4 @@ public Type type() { return type; } - - @Override - public String toString() { - return super.toString() + ":" + type; - } } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Wed Oct 01 07:39:47 2014 +0200 @@ -91,14 +91,14 @@ private final Node node; public CacheEntry(Node node) { - assert node.getNodeClass().valueNumberable(); + assert node instanceof ValueNumberable; assert node.isLeafNode(); this.node = node; } @Override public int hashCode() { - return node.getNodeClass().valueNumber(node); + return Node.USE_GENERATED_NODES ? node.getValueNumber() : node.getNodeClass().valueNumber(node); } @Override @@ -108,9 +108,8 @@ } if (obj instanceof CacheEntry) { CacheEntry other = (CacheEntry) obj; - NodeClass nodeClass = node.getNodeClass(); if (other.node.getClass() == node.getClass()) { - return nodeClass.valueEqual(node, other.node); + return node.valueEquals(other.node); } } return false; @@ -498,7 +497,7 @@ } if (minCountNode != null) { for (Node usage : minCountNode.usages()) { - if (usage != node && nodeClass == usage.getNodeClass() && nodeClass.valueEqual(node, usage) && nodeClass.getEdges(Inputs).areEqualIn(node, usage) && + if (usage != node && nodeClass == usage.getNodeClass() && node.valueEquals(usage) && nodeClass.getEdges(Inputs).areEqualIn(node, usage) && nodeClass.getEdges(Successors).areEqualIn(node, usage)) { return usage; } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Wed Oct 01 07:39:47 2014 +0200 @@ -995,4 +995,40 @@ } } } + + /** + * If this node is {@link ValueNumberable}, gets a digest for this node based on the current + * value of it's {@link NodeClass#getData() data} fields. If this node is not + * {@link ValueNumberable}, 0 is returned. + * + * Overridden by a method generated for {@link ValueNumberable} subclasses. + */ + public int getValueNumber() { + assert !(this instanceof ValueNumberable); + return 0; + } + + /** + * Overridden by a generated method. + * + * @param other + */ + protected boolean valueEqualsGen(Node other) { + return true; + } + + /** + * Determines if this node's {@link NodeClass#getData() data} fields are equal to the data + * fields of another node of the same type. Primitive fields are compared by value and + * non-primitive fields are compared by {@link Objects#equals(Object, Object)}. + * + * The result of this method undefined if {@code other.getClass() != this.getClass()} or if this + * node is not {@link ValueNumberable} + * + * @param other a node of exactly the same type as this node + * @return true if the data fields of this object and {@code other} are equal + */ + public boolean valueEquals(Node other) { + return USE_GENERATED_NODES ? valueEqualsGen(other) : getNodeClass().valueEqual(this, other); + } } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Oct 01 07:39:47 2014 +0200 @@ -274,15 +274,18 @@ return nodeClass == getClazz(); } + private String shortName; + public String shortName() { - NodeInfo info = getClazz().getAnnotation(NodeInfo.class); - String shortName; - if (!info.shortName().isEmpty()) { - shortName = info.shortName(); - } else { - shortName = getClazz().getSimpleName(); - if (shortName.endsWith("Node") && !shortName.equals("StartNode") && !shortName.equals("EndNode")) { - shortName = shortName.substring(0, shortName.length() - 4); + if (shortName == null) { + NodeInfo info = getClazz().getAnnotation(NodeInfo.class); + if (!info.shortName().isEmpty()) { + shortName = info.shortName(); + } else { + shortName = getClazz().getSimpleName(); + if (shortName.endsWith("Node") && !shortName.equals("StartNode") && !shortName.equals("EndNode")) { + shortName = shortName.substring(0, shortName.length() - 4); + } } } return shortName; @@ -552,9 +555,7 @@ } public boolean valueEqual(Node a, Node b) { - if (a.getClass() != b.getClass()) { - return a == b; - } + assert a.getClass() == b.getClass(); for (int i = 0; i < data.getCount(); ++i) { Class type = data.getType(i); if (type.isPrimitive()) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class AMD64RawNativeCallNode extends FixedWithNextNode implements LIRLowerable { - private final Constant functionPointer; + protected final Constant functionPointer; @Input NodeInputList args; public static AMD64RawNativeCallNode create(Kind returnType, Constant functionPointer, ValueNode[] args) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -45,8 +45,8 @@ public void generate(NodeLIRBuilderTool gen) { HSAILHotSpotLIRGenerator hsailgen = (HSAILHotSpotLIRGenerator) (gen.getLIRGeneratorTool()); Value v = gen.operand(getValue()); - LIRKind kind = hsailgen.getLIRKind(getValue().stamp()); - hsailgen.emitStoreRelease(kind, gen.operand(getAddress()), v, null); + LIRKind lirKind = hsailgen.getLIRKind(getValue().stamp()); + hsailgen.emitStoreRelease(lirKind, gen.operand(getAddress()), v, null); } @NodeIntrinsic diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,14 +42,14 @@ /** * The number of slots in block. */ - private final int slots; + protected final int slots; /** * The indexes of the object pointer slots in the block. Each such object pointer slot must be * initialized before any safepoint in the method otherwise the garbage collector will see * garbage values when processing these slots. */ - private final BitSet objects; + protected final BitSet objects; public static AllocaNode create(int slots, BitSet objects) { return USE_GENERATED_NODES ? new AllocaNodeGen(slots, objects) : new AllocaNode(slots, objects); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,7 +40,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class BeginLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorEnter, MemoryCheckpoint.Single { - private int lockDepth; + protected int lockDepth; public static BeginLockScopeNode create(int lockDepth) { return USE_GENERATED_NODES ? new BeginLockScopeNodeGen(lockDepth) : new BeginLockScopeNode(lockDepth); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo public class CStringNode extends FloatingNode implements LIRLowerable { - private final String string; + protected final String string; public static CStringNode create(String string) { return USE_GENERATED_NODES ? new CStringNodeGen(string) : new CStringNode(string); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -47,8 +47,8 @@ Uncompress } - private final CompressionOp op; - private final CompressEncoding encoding; + protected final CompressionOp op; + protected final CompressEncoding encoding; public static CompressionNode create(CompressionOp op, ValueNode input, CompressEncoding encoding) { return USE_GENERATED_NODES ? new CompressionNodeGen(op, input, encoding) : new CompressionNode(op, input, encoding); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,7 +40,7 @@ @NodeInfo public class CurrentJavaThreadNode extends FloatingNode implements LIRLowerable { - private LIRKind wordKind; + protected LIRKind wordKind; public static CurrentJavaThreadNode create(Kind kind) { return USE_GENERATED_NODES ? new CurrentJavaThreadNodeGen(kind) : new CurrentJavaThreadNode(kind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo public class CurrentLockNode extends FixedWithNextNode implements LIRLowerable { - private int lockDepth; + protected int lockDepth; public static CurrentLockNode create(int lockDepth) { return USE_GENERATED_NODES ? new CurrentLockNodeGen(lockDepth) : new CurrentLockNode(lockDepth); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,7 +42,7 @@ public class DeoptimizationFetchUnrollInfoCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { @Input SaveAllRegistersNode registerSaver; - private final ForeignCallsProvider foreignCalls; + protected final ForeignCallsProvider foreignCalls; public static DeoptimizationFetchUnrollInfoCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver) { return USE_GENERATED_NODES ? new DeoptimizationFetchUnrollInfoCallNodeGen(foreignCalls, registerSaver) : new DeoptimizationFetchUnrollInfoCallNode(foreignCalls, registerSaver); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,8 +35,8 @@ @NodeInfo(shortName = "DeoptCaller", nameTemplate = "DeoptCaller {p#reason/s}") public class DeoptimizeCallerNode extends ControlSinkNode implements LIRLowerable { - private final DeoptimizationAction action; - private final DeoptimizationReason reason; + protected final DeoptimizationAction action; + protected final DeoptimizationReason reason; public static DeoptimizeCallerNode create(DeoptimizationAction action, DeoptimizationReason reason) { return USE_GENERATED_NODES ? new DeoptimizeCallerNodeGen(action, reason) : new DeoptimizeCallerNode(action, reason); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class DimensionsNode extends FixedWithNextNode implements LIRLowerable { - private final int rank; + protected final int rank; public static DimensionsNode create(int rank) { return USE_GENERATED_NODES ? new DimensionsNodeGen(rank) : new DimensionsNode(rank); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -45,7 +45,7 @@ @Input ValueNode expectedValue; @Input ValueNode newValue; - private final LocationIdentity locationIdentity; + protected final LocationIdentity locationIdentity; public static DirectCompareAndSwapNode create(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new DirectCompareAndSwapNodeGen(object, offset, expected, newValue, locationIdentity) : new DirectCompareAndSwapNode(object, offset, expected, newValue, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Wed Oct 01 07:39:47 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public class G1PostWriteBarrier extends WriteBarrier { - private final boolean alwaysNull; + protected final boolean alwaysNull; public static G1PostWriteBarrier create(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) { return USE_GENERATED_NODES ? new G1PostWriteBarrierGen(object, value, location, precise, alwaysNull) : new G1PostWriteBarrier(object, value, location, precise, alwaysNull); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Wed Oct 01 07:39:47 2014 +0200 @@ -30,8 +30,8 @@ public class G1PreWriteBarrier extends WriteBarrier implements DeoptimizingNode.DeoptBefore { @OptionalInput(InputType.State) FrameState stateBefore; - private final boolean nullCheck; - private final boolean doLoad; + protected final boolean nullCheck; + protected final boolean doLoad; public static G1PreWriteBarrier create(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) { return USE_GENERATED_NODES ? new G1PreWriteBarrierGen(object, expectedObject, location, doLoad, nullCheck) : new G1PreWriteBarrier(object, expectedObject, location, doLoad, nullCheck); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class G1ReferentFieldReadBarrier extends WriteBarrier { - private final boolean doLoad; + protected final boolean doLoad; public static G1ReferentFieldReadBarrier create(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) { return USE_GENERATED_NODES ? new G1ReferentFieldReadBarrierGen(object, expectedObject, location, doLoad) : new G1ReferentFieldReadBarrier(object, expectedObject, location, doLoad); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Wed Oct 01 07:39:47 2014 +0200 @@ -44,7 +44,7 @@ @Input ValueNode hub; @Input ValueNode dims; - private final int rank; + protected final int rank; public static NewMultiArrayStubCall create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode hub, int rank, ValueNode dims) { return USE_GENERATED_NODES ? new NewMultiArrayStubCallGen(foreignCalls, hub, rank, dims) : new NewMultiArrayStubCall(foreignCalls, hub, rank, dims); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -37,7 +37,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class SaveAllRegistersNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { - private SaveRegistersOp saveRegistersOp; + protected SaveRegistersOp saveRegistersOp; public static SaveAllRegistersNode create() { return USE_GENERATED_NODES ? new SaveAllRegistersNodeGen() : new SaveAllRegistersNode(); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Wed Oct 01 07:39:47 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public class SerialWriteBarrier extends WriteBarrier { - private final boolean alwaysNull; + protected final boolean alwaysNull; public static SerialWriteBarrier create(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) { return USE_GENERATED_NODES ? new SerialWriteBarrierGen(object, location, precise, alwaysNull) : new SerialWriteBarrier(object, location, precise, alwaysNull); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,9 +41,9 @@ public class StubForeignCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { @Input NodeInputList arguments; - private final ForeignCallsProvider foreignCalls; + protected final ForeignCallsProvider foreignCalls; - private final ForeignCallDescriptor descriptor; + protected final ForeignCallDescriptor descriptor; public static StubForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { return USE_GENERATED_NODES ? new StubForeignCallNodeGen(foreignCalls, descriptor, arguments) : new StubForeignCallNode(foreignCalls, descriptor, arguments); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public class StubStartNode extends StartNode { - private final Stub stub; + protected final Stub stub; public static StubStartNode create(Stub stub) { return USE_GENERATED_NODES ? new StubStartNodeGen(stub) : new StubStartNode(stub); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,7 +43,7 @@ @Input ValueNode trapRequest; @Input SaveAllRegistersNode registerSaver; - private final ForeignCallsProvider foreignCalls; + protected final ForeignCallsProvider foreignCalls; public static UncommonTrapCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) { return USE_GENERATED_NODES ? new UncommonTrapCallNodeGen(foreignCalls, registerSaver, trapRequest) : new UncommonTrapCallNode(foreignCalls, registerSaver, trapRequest); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,7 +40,7 @@ @NodeInfo public class VMErrorNode extends DeoptimizingStubCall implements LIRLowerable { - private final String format; + protected final String format; @Input ValueNode value; public static VMErrorNode create(String format, ValueNode value) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Wed Oct 01 07:39:47 2014 +0200 @@ -34,7 +34,7 @@ @Input protected ValueNode object; @OptionalInput protected ValueNode value; @OptionalInput(InputType.Association) protected LocationNode location; - private final boolean precise; + protected final boolean precise; public WriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { super(StampFactory.forVoid()); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -49,14 +49,14 @@ @Input ValueNode destPos; @Input ValueNode length; - private Kind elementKind; + protected Kind elementKind; /** * Aligned means that the offset of the copy is heap word aligned. */ - private boolean aligned; - private boolean disjoint; - private boolean uninitialized; + protected boolean aligned; + protected boolean disjoint; + protected boolean uninitialized; public static ArrayCopyCallNode create(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, boolean aligned, boolean disjoint, boolean uninitialized) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -49,11 +49,11 @@ public class MethodHandleNode extends MacroStateSplitNode implements Simplifiable { /** The method that this node is representing. */ - private final IntrinsicMethod intrinsicMethod; + protected final IntrinsicMethod intrinsicMethod; // Replacement method data - private ResolvedJavaMethod replacementTargetMethod; - private JavaType replacementReturnType; + protected ResolvedJavaMethod replacementTargetMethod; + protected JavaType replacementReturnType; @Input NodeInputList replacementArguments; public static MethodHandleNode create(Invoke invoke) { @@ -171,11 +171,11 @@ * Helper function to get the {@link InvokeNode} for the targetMethod of a * java.lang.invoke.MemberName. * - * @param targetMethod the target, already loaded from the member name node + * @param target the target, already loaded from the member name node * @return invoke node for the member name target */ - private InvokeNode getTargetInvokeNode(ResolvedJavaMethod targetMethod) { - if (targetMethod == null) { + private InvokeNode getTargetInvokeNode(ResolvedJavaMethod target) { + if (target == null) { return null; } @@ -183,19 +183,19 @@ // involving class loaders. When we optimize a method handle invoke // to a direct call we must cast the receiver and arguments to its // actual types. - Signature signature = targetMethod.getSignature(); - final boolean isStatic = targetMethod.isStatic(); + Signature signature = target.getSignature(); + final boolean isStatic = target.isStatic(); final int receiverSkip = isStatic ? 0 : 1; // Cast receiver to its type. if (!isStatic) { - JavaType receiverType = targetMethod.getDeclaringClass(); + JavaType receiverType = target.getDeclaringClass(); maybeCastArgument(0, receiverType); } // Cast reference arguments to its type. for (int index = 0; index < signature.getParameterCount(false); index++) { - JavaType parameterType = signature.getParameterType(index, targetMethod.getDeclaringClass()); + JavaType parameterType = signature.getParameterType(index, target.getDeclaringClass()); maybeCastArgument(receiverSkip + index, parameterType); } @@ -203,18 +203,18 @@ if (intrinsicMethod == IntrinsicMethod.LINK_TO_VIRTUAL || intrinsicMethod == IntrinsicMethod.LINK_TO_INTERFACE) { ResolvedJavaType receiverType = StampTool.typeOrNull(getReceiver().stamp()); if (receiverType != null) { - ResolvedJavaMethod concreteMethod = receiverType.findUniqueConcreteMethod(targetMethod); + ResolvedJavaMethod concreteMethod = receiverType.findUniqueConcreteMethod(target); if (concreteMethod != null) { return createTargetInvokeNode(concreteMethod); } } } - if (targetMethod.canBeStaticallyBound()) { - return createTargetInvokeNode(targetMethod); + if (target.canBeStaticallyBound()) { + return createTargetInvokeNode(target); } - ResolvedJavaMethod concreteMethod = targetMethod.getDeclaringClass().findUniqueConcreteMethod(targetMethod); + ResolvedJavaMethod concreteMethod = target.getDeclaringClass().findUniqueConcreteMethod(target); if (concreteMethod != null) { return createTargetInvokeNode(concreteMethod); } @@ -247,12 +247,12 @@ * Creates an {@link InvokeNode} for the given target method. The {@link CallTargetNode} passed * to the InvokeNode is in fact a {@link SelfReplacingMethodCallTargetNode}. * - * @param targetMethod the method the be called + * @param target the method to be called * @return invoke node for the member name target */ - private InvokeNode createTargetInvokeNode(ResolvedJavaMethod targetMethod) { - InvokeKind invokeKind = targetMethod.isStatic() ? InvokeKind.Static : InvokeKind.Special; - JavaType returnType = targetMethod.getSignature().getReturnType(null); + private InvokeNode createTargetInvokeNode(ResolvedJavaMethod target) { + InvokeKind targetInvokeKind = target.isStatic() ? InvokeKind.Static : InvokeKind.Special; + JavaType targetReturnType = target.getSignature().getReturnType(null); // MethodHandleLinkTo* nodes have a trailing MemberName argument which // needs to be popped. @@ -275,10 +275,10 @@ // If there is already replacement information, use that instead. MethodCallTargetNode callTarget; if (replacementTargetMethod == null) { - callTarget = SelfReplacingMethodCallTargetNode.create(invokeKind, targetMethod, targetArguments, returnType, getTargetMethod(), originalArguments, getReturnType()); + callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, getTargetMethod(), originalArguments, getReturnType()); } else { ValueNode[] args = replacementArguments.toArray(new ValueNode[replacementArguments.size()]); - callTarget = SelfReplacingMethodCallTargetNode.create(invokeKind, targetMethod, targetArguments, returnType, replacementTargetMethod, args, replacementReturnType); + callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, replacementTargetMethod, args, replacementReturnType); } graph().add(callTarget); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeArrayCopyNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeArrayCopyNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,7 +42,7 @@ @Input ValueNode length; @OptionalInput ValueNode layoutHelper; - private Kind elementKind; + protected Kind elementKind; public static UnsafeArrayCopyNode create(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) { return USE_GENERATED_NODES ? new UnsafeArrayCopyNodeGen(src, srcPos, dest, destPos, length, layoutHelper, elementKind) : new UnsafeArrayCopyNode(src, srcPos, dest, destPos, length, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Oct 01 07:39:47 2014 +0200 @@ -108,7 +108,7 @@ * the !NODE_CLASS.isAssignableFrom(type) guarantee in * NodeClass.FieldScanner.scanField() to fail. */ - private final Object nextPlaceholder; + protected final Object nextPlaceholder; public static BlockPlaceholderNode create(BytecodeParser builder) { return USE_GENERATED_NODES ? new GraphBuilderPhase_Instance_BlockPlaceholderNodeGen(builder) : new BlockPlaceholderNode(builder); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java --- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Wed Oct 01 07:39:47 2014 +0200 @@ -60,6 +60,7 @@ @SuppressWarnings("unused") private final TypeElement NodeList; private final TypeElement NodeInputList; private final TypeElement NodeSuccessorList; + private final TypeElement ValueNumberable; @SuppressWarnings("unused") private final TypeElement Position; private final List inputFields = new ArrayList<>(); @@ -87,6 +88,7 @@ this.NodeInputList = getTypeElement("com.oracle.graal.graph.NodeInputList"); this.NodeSuccessorList = getTypeElement("com.oracle.graal.graph.NodeSuccessorList"); this.Position = getTypeElement("com.oracle.graal.graph.Position"); + this.ValueNumberable = getTypeElement("com.oracle.graal.graph.Node.ValueNumberable"); } @SafeVarargs @@ -243,6 +245,11 @@ if (isAssignableWithErasure(field, NodeSuccessorList)) { throw new ElementException(field, "NodeSuccessorList field must be annotated with @" + Successor.getSimpleName()); } + if (modifiers.contains(PUBLIC) && !modifiers.contains(FINAL)) { + throw new ElementException(field, "Data field must be final if public otherwise it must be protected or package-private"); + } else if (modifiers.contains(PRIVATE)) { + throw new ElementException(field, "Data field must be protected or package-private"); + } dataFields.add(field); } } @@ -334,6 +341,9 @@ if (hasInputs || hasSuccessors) { createIsLeafNodeMethod(); } + + createValueNumberMethod(node); + createValueEqualsMethod(); } compilationUnit.add(genClass); return compilationUnit; @@ -395,7 +405,6 @@ genClassName = null; } - @SuppressWarnings("unused") private CodeVariableElement addParameter(CodeExecutableElement method, TypeMirror type, String name) { return addParameter(method, type, name, true); } @@ -432,6 +441,98 @@ checkOnlyInGenNode(method); } + private void createValueNumberMethod(TypeElement node) { + if (isAssignableWithErasure(node, ValueNumberable)) { + genClass.add(new CodeVariableElement(modifiers(PRIVATE), getType(int.class), "valueNumber")); + + CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), getType(int.class), "getValueNumber"); + CodeTreeBuilder b = method.createBuilder(); + b.startIf().string("valueNumber == 0").end().startBlock(); + b.startStatement().string("int number = " + node.hashCode()).end(); + for (VariableElement f : dataFields) { + String fname = f.getSimpleName().toString(); + switch (f.asType().getKind()) { + case BOOLEAN: + b.startIf().string(fname).end().startBlock(); + b.startStatement().string("number += 7").end(); + b.end(); + break; + case BYTE: + case SHORT: + case CHAR: + case INT: + b.startStatement().string("number += 13 * ", fname).end(); + break; + case FLOAT: + b.startStatement().string("number += 17 * Float.floatToRawIntBits(", fname, ")").end(); + break; + case LONG: + b.startStatement().string("number += 19 * ", fname + " ^ (", fname, " >>> 32)").end(); + break; + case DOUBLE: + b.startStatement().string("long longValue = Double.doubleToRawLongBits(", fname, ")").end(); + b.startStatement().string("number += 23 * longValue ^ (longValue >>> 32)").end(); + break; + default: + b.startIf().string(fname, " != null").end().startBlock(); + b.startStatement().string("number += 29 * ", fname + ".hashCode()").end(); + b.end(); + break; + } + } + b.startStatement().string("valueNumber = number").end(); + b.end(); + b.startReturn().string("valueNumber").end(); + genClass.add(method); + checkOnlyInGenNode(method); + } + } + + private void createValueEqualsMethod() { + CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), getType(boolean.class), "valueEqualsGen"); + addParameter(method, Node.asType(), "other"); + CodeTreeBuilder b = method.createBuilder(); + if (!dataFields.isEmpty()) { + String other = "o"; + b.declaration(genClassName, other, "(" + genClassName + ") other"); + + for (VariableElement f : dataFields) { + String fname = f.getSimpleName().toString(); + switch (f.asType().getKind()) { + case BOOLEAN: + case BYTE: + case SHORT: + case CHAR: + case INT: + case FLOAT: + case LONG: + case DOUBLE: + b.startIf().string(other, ".", fname, " != ", fname).end().startBlock(); + b.startStatement().string("return false").end(); + b.end(); + break; + case ARRAY: + if (((ArrayType) f.asType()).getComponentType().getKind().isPrimitive()) { + b.startIf().string("!").type(getType(Arrays.class)).string(".equals(", other, ".", fname, ", ", fname, ")").end().startBlock(); + } else { + b.startIf().string("!").type(getType(Arrays.class)).string(".deepEquals(", other, ".", fname, ", ", fname, ")").end().startBlock(); + } + b.startStatement().string("return false").end(); + b.end(); + break; + default: + b.startIf().string("!").type(getType(Objects.class)).string(".equals(", other, ".", fname, ", ", fname, ")").end().startBlock(); + b.startStatement().string("return false").end(); + b.end(); + break; + } + } + } + b.startReturn().string("true").end(); + genClass.add(method); + checkOnlyInGenNode(method); + } + private boolean hidesField(String name) { for (VariableElement field : concat(inputFields, inputListFields, successorFields, successorListFields, dataFields)) { if (field.getSimpleName().contentEquals(name)) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,9 +33,9 @@ public abstract class AbstractFixedGuardNode extends DeoptimizingFixedWithNextNode implements Simplifiable, GuardingNode { @Input(InputType.Condition) protected LogicNode condition; - private final DeoptimizationReason reason; - private final DeoptimizationAction action; - private boolean negated; + protected final DeoptimizationReason reason; + protected final DeoptimizationAction action; + protected boolean negated; public LogicNode condition() { return condition; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public abstract class AbstractLocalNode extends FloatingNode { - private final int index; + protected final int index; public AbstractLocalNode(int index, Stamp stamp) { super(stamp); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -44,8 +44,8 @@ } @Input protected NodeInputList arguments; - private ResolvedJavaMethod targetMethod; - private InvokeKind invokeKind; + protected ResolvedJavaMethod targetMethod; + protected InvokeKind invokeKind; public CallTargetNode(ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) { super(StampFactory.forVoid()); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,7 +33,7 @@ public class ConditionAnchorNode extends FixedWithNextNode implements Canonicalizable.Unary, Lowerable, GuardingNode { @Input(InputType.Condition) LogicNode condition; - private boolean negated; + protected boolean negated; public static ConditionAnchorNode create(LogicNode condition) { return USE_GENERATED_NODES ? new ConditionAnchorNodeGen(condition) : new ConditionAnchorNode(condition); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,7 +43,7 @@ private static final DebugMetric ConstantNodes = Debug.metric("ConstantNodes"); - private final Constant value; + protected final Constant value; private static ConstantNode createPrimitive(Constant value) { assert value.getKind() != Kind.Object; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -29,10 +29,10 @@ @NodeInfo(shortName = "Deopt", nameTemplate = "Deopt {p#reason/s}") public class DeoptimizeNode extends AbstractDeoptimizeNode implements Lowerable, LIRLowerable { - private final DeoptimizationAction action; - private final DeoptimizationReason reason; - private final int debugId; - private final Constant speculation; + protected final DeoptimizationAction action; + protected final DeoptimizationReason reason; + protected final int debugId; + protected final Constant speculation; public static DeoptimizeNode create(DeoptimizationAction action, DeoptimizationReason reason) { return USE_GENERATED_NODES ? new DeoptimizeNodeGen(action, reason) : new DeoptimizeNode(action, reason); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Wed Oct 01 07:39:47 2014 +0200 @@ -51,9 +51,9 @@ /** * @see BytecodeFrame#rethrowException */ - private boolean rethrowException; + protected boolean rethrowException; - private boolean duringCall; + protected boolean duringCall; @OptionalInput(value = InputType.State) FrameState outerFrameState; @@ -71,7 +71,7 @@ */ public final int bci; - private final ResolvedJavaMethod method; + protected final ResolvedJavaMethod method; /** * Creates a {@code FrameState} with the given locals, stack expressions and locked monitors. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -45,10 +45,10 @@ public class GuardNode extends FloatingAnchoredNode implements Canonicalizable, IterableNodeType, GuardingNode { @Input(InputType.Condition) protected LogicNode condition; - private final DeoptimizationReason reason; - private Constant speculation; - private DeoptimizationAction action; - private boolean negated; + protected final DeoptimizationReason reason; + protected Constant speculation; + protected DeoptimizationAction action; + protected boolean negated; public static GuardNode create(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, Constant speculation) { return USE_GENERATED_NODES ? new GuardNodeGen(condition, anchor, reason, action, negated, speculation) : new GuardNode(condition, anchor, reason, action, negated, speculation); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,7 +40,7 @@ public class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { @Input ValueNode object; - private final Stamp piStamp; + protected final Stamp piStamp; public static GuardedValueNode create(ValueNode object, GuardingNode guard, Stamp stamp) { return USE_GENERATED_NODES ? new GuardedValueNodeGen(object, guard, stamp) : new GuardedValueNode(object, guard, stamp); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,10 +40,10 @@ @Input ValueNode object; @Input(InputType.Condition) LogicNode condition; - private final DeoptimizationReason reason; - private final DeoptimizationAction action; - private final Stamp piStamp; - private boolean negated; + protected final DeoptimizationReason reason; + protected final DeoptimizationAction action; + protected final Stamp piStamp; + protected boolean negated; public ValueNode object() { return object; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -52,7 +52,7 @@ @Successor BeginNode trueSuccessor; @Successor BeginNode falseSuccessor; @Input(InputType.Condition) LogicNode condition; - private double trueSuccessorProbability; + protected double trueSuccessorProbability; public LogicNode condition() { return condition; @@ -228,7 +228,7 @@ FixedWithNextNode falseNext = (FixedWithNextNode) falseSucc.next(); NodeClass nodeClass = trueNext.getNodeClass(); if (trueNext.getClass() == falseNext.getClass()) { - if (nodeClass.getEdges(Inputs).areEqualIn(trueNext, falseNext) && nodeClass.valueEqual(trueNext, falseNext)) { + if (nodeClass.getEdges(Inputs).areEqualIn(trueNext, falseNext) && trueNext.valueEquals(falseNext)) { falseNext.replaceAtUsages(trueNext); graph().removeFixed(falseNext); GraphUtil.unlinkFixedNode(trueNext); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -28,7 +28,7 @@ @NodeInfo public abstract class InfopointNode extends FixedWithNextNode { - private final InfopointReason reason; + protected final InfopointReason reason; public InfopointNode(InfopointReason reason) { super(StampFactory.forVoid()); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,9 +42,9 @@ @Input(InputType.Extension) CallTargetNode callTarget; @OptionalInput(InputType.State) FrameState stateDuring; @OptionalInput(InputType.Guard) GuardingNode guard; - private final int bci; - private boolean polymorphic; - private boolean useForInlining; + protected final int bci; + protected boolean polymorphic; + protected boolean useForInlining; /** * Constructs a new Invoke instruction. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,10 +43,10 @@ @OptionalInput(InputType.State) FrameState stateDuring; @OptionalInput(InputType.State) FrameState stateAfter; @OptionalInput(InputType.Guard) GuardingNode guard; - private final int bci; - private boolean polymorphic; - private boolean useForInlining; - private double exceptionProbability; + protected final int bci; + protected boolean polymorphic; + protected boolean useForInlining; + protected double exceptionProbability; public static InvokeWithExceptionNode create(CallTargetNode callTarget, BeginNode exceptionEdge, int bci) { return USE_GENERATED_NODES ? new InvokeWithExceptionNodeGen(callTarget, exceptionEdge, bci) : new InvokeWithExceptionNode(callTarget, exceptionEdge, bci); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class KillingBeginNode extends BeginNode implements MemoryCheckpoint.Single { - private LocationIdentity locationIdentity; + protected LocationIdentity locationIdentity; public static KillingBeginNode create(LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new KillingBeginNodeGen(locationIdentity) : new KillingBeginNode(locationIdentity); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo(nameTemplate = "{p#value}") public class LogicConstantNode extends LogicNode implements LIRLowerable { - public final boolean value; + protected final boolean value; public static LogicConstantNode create(boolean value) { return USE_GENERATED_NODES ? new LogicConstantNodeGen(value) : new LogicConstantNode(value); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,9 +39,9 @@ @NodeInfo public class LoopBeginNode extends MergeNode implements IterableNodeType, LIRLowerable { - private double loopFrequency; - private int nextEndIndex; - private int unswitches; + protected double loopFrequency; + protected int nextEndIndex; + protected int unswitches; @OptionalInput(InputType.Guard) GuardingNode overflowGuard; public static LoopBeginNode create() { @@ -283,7 +283,7 @@ if (phi != null) { nextPhi: for (int otherPhiIndex = phiIndex + 1; otherPhiIndex < phiCount; otherPhiIndex++) { PhiNode otherPhi = phis[otherPhiIndex]; - if (otherPhi == null || phi.getNodeClass() != otherPhi.getNodeClass() || !phi.getNodeClass().valueEqual(phi, otherPhi)) { + if (otherPhi == null || phi.getNodeClass() != otherPhi.getNodeClass() || !phi.valueEquals(otherPhi)) { continue nextPhi; } if (selfIncrement[phiIndex] == null) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,8 +32,8 @@ public class LoopEndNode extends AbstractEndNode { @Input(InputType.Association) LoopBeginNode loopBegin; - private boolean canSafepoint; - private int endIndex; + protected boolean canSafepoint; + protected int endIndex; public static LoopEndNode create(LoopBeginNode begin) { return USE_GENERATED_NODES ? new LoopEndNodeGen(begin) : new LoopEndNode(begin); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,9 +32,9 @@ @NodeInfo public abstract class LoweredCallTargetNode extends CallTargetNode { - private final Stamp returnStamp; - private final JavaType[] signature; - private final CallingConvention.Type callType; + protected final Stamp returnStamp; + protected final JavaType[] signature; + protected final CallingConvention.Type callType; public LoweredCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) { super(arguments, target, invokeKind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -37,7 +37,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Extension}) public class MemoryMapNode extends FloatingNode implements MemoryMap, LIRLowerable { - private final List locationIdentities; + protected final List locationIdentities; @Input(InputType.Memory) NodeInputList nodes; private boolean checkOrder(Map mmap) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ public class MemoryPhiNode extends PhiNode implements MemoryNode { @Input(InputType.Memory) NodeInputList values; - private final LocationIdentity locationIdentity; + protected final LocationIdentity locationIdentity; public static MemoryPhiNode create(MergeNode merge, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new MemoryPhiNodeGen(merge, locationIdentity) : new MemoryPhiNode(merge, locationIdentity); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -45,7 +45,7 @@ public class PiNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { @Input ValueNode object; - private final Stamp piStamp; + protected final Stamp piStamp; public ValueNode object() { return object; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -31,9 +31,9 @@ @Input(InputType.Condition) LogicNode x; @Input(InputType.Condition) LogicNode y; - private boolean xNegated; - private boolean yNegated; - private double shortCircuitProbability; + protected boolean xNegated; + protected boolean yNegated; + protected double shortCircuitProbability; public static ShortCircuitOrNode create(LogicNode x, boolean xNegated, LogicNode y, boolean yNegated, double shortCircuitProbability) { return USE_GENERATED_NODES ? new ShortCircuitOrNodeGen(x, xNegated, y, yNegated, shortCircuitProbability) : new ShortCircuitOrNode(x, xNegated, y, yNegated, shortCircuitProbability); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -30,7 +30,7 @@ @NodeInfo public class SimpleInfopointNode extends InfopointNode implements LIRLowerable, IterableNodeType, Simplifiable { - private BytecodePosition position; + protected BytecodePosition position; public static SimpleInfopointNode create(InfopointReason reason, BytecodePosition position) { return USE_GENERATED_NODES ? new SimpleInfopointNodeGen(reason, position) : new SimpleInfopointNode(reason, position); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,9 +39,9 @@ @NodeInfo public class TypeProfileProxyNode extends UnaryNode implements IterableNodeType, ValueProxy { - private final JavaTypeProfile profile; - private transient ResolvedJavaType lastCheckedType; - private transient JavaTypeProfile lastCheckedProfile; + protected final JavaTypeProfile profile; + protected transient ResolvedJavaType lastCheckedType; + protected transient JavaTypeProfile lastCheckedProfile; public static ValueNode proxify(ValueNode object, JavaTypeProfile profile) { if (StampTool.isExactType(object)) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,7 +38,7 @@ * The kind of this value. This is {@link Kind#Void} for instructions that produce no value. * This kind is guaranteed to be a {@linkplain Kind#getStackKind() stack kind}. */ - private Stamp stamp; + protected Stamp stamp; public ValueNode(Stamp stamp) { this.stamp = stamp; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -95,9 +95,9 @@ assert op1 != null : getX() + ", this=" + this; Value op2 = builder.operand(getY()); if (!getY().isConstant() && !BinaryArithmeticNode.livesLonger(this, getY(), builder)) { - Value op = op1; + Value tmp = op1; op1 = op2; - op2 = op; + op2 = tmp; } builder.setResult(this, gen.emitAdd(op1, op2)); } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public abstract class BinaryArithmeticNode extends BinaryNode implements ArithmeticLIRLowerable { - private final BinaryOp op; + protected final BinaryOp op; public BinaryArithmeticNode(BinaryOp op, ValueNode x, ValueNode y) { super(op.foldStamp(x.stamp(), y.stamp()), x, y); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,7 +39,7 @@ @NodeInfo public class FloatConvertNode extends ConvertNode implements Lowerable, ArithmeticLIRLowerable { - private final FloatConvert op; + protected final FloatConvert op; public static FloatConvertNode create(FloatConvert op, ValueNode input) { return USE_GENERATED_NODES ? new FloatConvertNodeGen(op, input) : new FloatConvertNode(op, input); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo(shortName = "<") public class FloatLessThanNode extends CompareNode { - private final boolean unorderedIsTrue; + protected final boolean unorderedIsTrue; /** * Constructs a new floating point comparison node. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public abstract class IntegerConvertNode extends ConvertNode implements ArithmeticLIRLowerable { - private final int resultBits; + protected final int resultBits; protected IntegerConvertNode(Stamp stamp, ValueNode input, int resultBits) { super(stamp, input); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -99,7 +99,7 @@ if (next() instanceof IntegerDivNode) { NodeClass nodeClass = getNodeClass(); - if (next().getClass() == this.getClass() && nodeClass.getEdges(Inputs).areEqualIn(this, next()) && nodeClass.valueEqual(this, next())) { + if (next().getClass() == this.getClass() && nodeClass.getEdges(Inputs).areEqualIn(this, next()) && valueEquals(next())) { return next(); } } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -103,9 +103,9 @@ Value op1 = builder.operand(getX()); Value op2 = builder.operand(getY()); if (!getY().isConstant() && !BinaryArithmeticNode.livesLonger(this, getY(), builder)) { - Value op = op1; + Value tmp = op1; op1 = op2; - op2 = op; + op2 = tmp; } builder.setResult(this, gen.emitMul(op1, op2)); } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -37,7 +37,7 @@ @NodeInfo public class NormalizeCompareNode extends BinaryNode implements Lowerable { - public final boolean isUnorderedLess; + protected final boolean isUnorderedLess; /** * Creates a new compare operation. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public abstract class UnaryArithmeticNode extends UnaryNode implements ArithmeticLIRLowerable { - private final UnaryOp op; + protected final UnaryOp op; protected UnaryArithmeticNode(UnaryOp op, ValueNode value) { super(op.foldStamp(value.stamp()), value); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,9 +40,9 @@ @Input ValueNode increment; - private final String name; - private final String group; - private final boolean withContext; + protected final String name; + protected final String group; + protected final boolean withContext; public static DynamicCounterNode create(String name, String group, ValueNode increment, boolean withContext) { return USE_GENERATED_NODES ? new DynamicCounterNodeGen(name, group, increment, withContext) : new DynamicCounterNode(name, group, increment, withContext); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ @OptionalInput(InputType.State) FrameState stateAfter; @OptionalInput(InputType.Memory) Node lastLocationAccess; - private final boolean initialization; + protected final boolean initialization; public FrameState stateAfter() { return stateAfter; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,7 +42,7 @@ @NodeInfo public class BoxNode extends UnaryNode implements VirtualizableAllocation, Lowerable { - private final Kind boxingKind; + protected final Kind boxingKind; public static BoxNode create(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) { return USE_GENERATED_NODES ? new BoxNodeGen(value, resultType, boxingKind) : new BoxNode(value, resultType, boxingKind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo public class BytecodeExceptionNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { - private final Class exceptionClass; + protected final Class exceptionClass; @Input NodeInputList arguments; public static BytecodeExceptionNode create(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,9 +36,9 @@ @NodeInfo(nameTemplate = "Loc {p#locationIdentity/s}") public class ConstantLocationNode extends LocationNode { - private final Kind valueKind; - private final LocationIdentity locationIdentity; - private final long displacement; + protected final Kind valueKind; + protected final LocationIdentity locationIdentity; + protected final long displacement; public static ConstantLocationNode create(LocationIdentity identity, Kind kind, long displacement, Graph graph) { return graph.unique(ConstantLocationNode.create(identity, kind, displacement)); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,8 +36,8 @@ @OptionalInput(InputType.Guard) protected GuardingNode guard; @Input protected ValueNode object; @Input(InputType.Association) protected ValueNode location; - private boolean nullCheck; - private BarrierType barrierType; + protected boolean nullCheck; + protected BarrierType barrierType; public ValueNode object() { return object; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @Input ValueNode object; @Input(InputType.Association) LocationNode location; - private BarrierType barrierType; + protected BarrierType barrierType; public ValueNode object() { return object; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,9 +40,9 @@ @Input protected NodeInputList arguments; @OptionalInput(InputType.State) protected FrameState stateDuring; - private final ForeignCallsProvider foreignCalls; + protected final ForeignCallsProvider foreignCalls; - private final ForeignCallDescriptor descriptor; + protected final ForeignCallDescriptor descriptor; public static ForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { return USE_GENERATED_NODES ? new ForeignCallNodeGen(foreignCalls, descriptor, arguments) : new ForeignCallNode(foreignCalls, descriptor, arguments); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,11 +41,11 @@ @NodeInfo(nameTemplate = "IdxLoc {p#locationIdentity/s}") public class IndexedLocationNode extends LocationNode implements Canonicalizable { - private final Kind valueKind; - private final LocationIdentity locationIdentity; - private final long displacement; + protected final Kind valueKind; + protected final LocationIdentity locationIdentity; + protected final long displacement; @Input ValueNode index; - private final int indexScaling; + protected final int indexScaling; /** * Gets the index or offset of this location. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,7 +39,7 @@ @NodeInfo public class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { - private final int[] keys; + protected final int[] keys; /** * Constructs a integer switch instruction. The keyProbabilities and keySuccessors array contain @@ -148,11 +148,11 @@ tool.addToWorkList(blockSuccessor(survivingEdge)); graph().removeSplit(this, blockSuccessor(survivingEdge)); } else if (value().stamp() instanceof IntegerStamp) { - IntegerStamp stamp = (IntegerStamp) value().stamp(); - if (!stamp.isUnrestricted()) { + IntegerStamp integerStamp = (IntegerStamp) value().stamp(); + if (!integerStamp.isUnrestricted()) { int validKeys = 0; for (int i = 0; i < keyCount(); i++) { - if (stamp.contains(keys[i])) { + if (integerStamp.contains(keys[i])) { validKeys++; } } @@ -167,7 +167,7 @@ double totalProbability = 0; int current = 0; for (int i = 0; i < keyCount() + 1; i++) { - if (i == keyCount() || stamp.contains(keys[i])) { + if (i == keyCount() || integerStamp.contains(keys[i])) { int index = newSuccessors.indexOf(keySuccessor(i)); if (index == -1) { index = newSuccessors.size(); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo public class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode { - private final boolean compressible; + protected final boolean compressible; public static JavaReadNode create(ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { return USE_GENERATED_NODES ? new JavaReadNodeGen(object, location, barrierType, compressible) : new JavaReadNode(object, location, barrierType, compressible); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single { - private final boolean compressible; + protected final boolean compressible; public static JavaWriteNode create(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { return USE_GENERATED_NODES ? new JavaWriteNodeGen(object, value, location, barrierType, compressible, initialization) : new JavaWriteNode(object, value, location, barrierType, compressible, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -75,15 +75,15 @@ public ValueNode canonical(CanonicalizerTool tool) { MetaAccessProvider metaAccess = tool.getMetaAccess(); if (metaAccess != null && getValue().stamp() instanceof ObjectStamp) { - ObjectStamp stamp = (ObjectStamp) getValue().stamp(); + ObjectStamp objectStamp = (ObjectStamp) getValue().stamp(); ResolvedJavaType exactType; - if (stamp.isExactType()) { - exactType = stamp.type(); - } else if (stamp.type() != null && tool.assumptions().useOptimisticAssumptions()) { - exactType = stamp.type().findUniqueConcreteSubtype(); + if (objectStamp.isExactType()) { + exactType = objectStamp.type(); + } else if (objectStamp.type() != null && tool.assumptions().useOptimisticAssumptions()) { + exactType = objectStamp.type().findUniqueConcreteSubtype(); if (exactType != null) { - tool.assumptions().recordConcreteSubtype(stamp.type(), exactType); + tool.assumptions().recordConcreteSubtype(objectStamp.type(), exactType); } } else { exactType = null; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,8 +38,8 @@ public class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable { @Input ValueNode hub; - private final ResolvedJavaMethod method; - private final ResolvedJavaType receiverType; + protected final ResolvedJavaMethod method; + protected final ResolvedJavaType receiverType; public ValueNode getHub() { return hub; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,7 +42,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class MembarNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { - private final int barriers; + protected final int barriers; /** * @param barriers a mask of the barrier constants defined in {@link MemoryBarriers} diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,8 +41,8 @@ @Input protected ValueNode value; // do not change the contents of these arrays: - private final double[] keyProbabilities; - private final int[] keySuccessors; + protected final double[] keyProbabilities; + protected final int[] keySuccessors; /** * Constructs a new Switch. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public class UnboxNode extends UnaryNode implements Virtualizable, Lowerable { - private final Kind boxingKind; + protected final Kind boxingKind; public static UnboxNode create(ValueNode value, Kind boxingKind) { return USE_GENERATED_NODES ? new UnboxNodeGen(value, boxingKind) : new UnboxNode(value, boxingKind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,8 +35,8 @@ @Input ValueNode object; @Input ValueNode offset; - private final Kind accessKind; - private final LocationIdentity locationIdentity; + protected final Kind accessKind; + protected final LocationIdentity locationIdentity; public UnsafeAccessNode(Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { super(stamp); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -74,8 +74,8 @@ @Override public void simplify(SimplifierTool tool) { - Stamp stamp = length.stamp(); - if (stamp instanceof IntegerStamp && ((IntegerStamp) stamp).isPositive()) { + Stamp lengthStamp = length.stamp(); + if (lengthStamp instanceof IntegerStamp && ((IntegerStamp) lengthStamp).isPositive()) { // otherwise, removing the allocation might swallow a NegativeArraySizeException super.simplify(tool); } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,7 +38,7 @@ @NodeInfo public class AbstractNewObjectNode extends DeoptimizingFixedWithNextNode implements Simplifiable, Lowerable { - private final boolean fillContents; + protected final boolean fillContents; /** * Constructs a new AbstractNewObjectNode. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ public abstract class AccessIndexedNode extends AccessArrayNode implements Lowerable { @Input protected ValueNode index; - private final Kind elementKind; + protected final Kind elementKind; public ValueNode index() { return index; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -42,7 +42,7 @@ @Input ValueNode offset; @Input ValueNode delta; - private final LocationIdentity locationIdentity; + protected final LocationIdentity locationIdentity; public static AtomicReadAndAddNode create(ValueNode object, ValueNode offset, ValueNode delta, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new AtomicReadAndAddNodeGen(object, offset, delta, locationIdentity) : new AtomicReadAndAddNode(object, offset, delta, locationIdentity); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,8 +43,8 @@ @Input ValueNode offset; @Input ValueNode newValue; - private final Kind valueKind; - private final LocationIdentity locationIdentity; + protected final Kind valueKind; + protected final LocationIdentity locationIdentity; public static AtomicReadAndWriteNode create(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new AtomicReadAndWriteNodeGen(object, offset, newValue, valueKind, locationIdentity) : new AtomicReadAndWriteNode(object, offset, newValue, valueKind, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,7 +43,7 @@ * Determines the exception thrown by this node if the check fails: {@link ClassCastException} * if false; {@link ArrayStoreException} if true. */ - private final boolean forStoreCheck; + protected final boolean forStoreCheck; /** * @param hub the type being cast to diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -44,14 +44,14 @@ public class CheckCastNode extends FixedWithNextNode implements Canonicalizable, Simplifiable, Lowerable, Virtualizable, ValueProxy { @Input protected ValueNode object; - private final ResolvedJavaType type; - private final JavaTypeProfile profile; + protected final ResolvedJavaType type; + protected final JavaTypeProfile profile; /** * Determines the exception thrown by this node if the check fails: {@link ClassCastException} * if false; {@link ArrayStoreException} if true. */ - private final boolean forStoreCheck; + protected final boolean forStoreCheck; /** * Creates a new CheckCast instruction. @@ -104,16 +104,16 @@ */ @Override public void lower(LoweringTool tool) { - Stamp stamp = StampFactory.declared(type, false, true); + Stamp newStamp = StampFactory.declared(type, false, true); if (stamp() instanceof ObjectStamp && object().stamp() instanceof ObjectStamp) { - stamp = ((ObjectStamp) object().stamp()).castTo((ObjectStamp) stamp); + newStamp = ((ObjectStamp) object().stamp()).castTo((ObjectStamp) newStamp); } ValueNode condition; ValueNode theValue = object; - if (stamp instanceof IllegalStamp) { + if (newStamp instanceof IllegalStamp) { // This is a check cast that will always fail condition = LogicConstantNode.contradiction(graph()); - stamp = StampFactory.declared(type, false, true); + newStamp = StampFactory.declared(type, false, true); } else if (StampTool.isObjectNonNull(object)) { condition = graph().addWithoutUnique(InstanceOfNode.create(type, object, profile)); } else { @@ -129,7 +129,7 @@ * optimized away. */ theValue = nullGuarded; - stamp = stamp.join(StampFactory.objectNonNull()); + newStamp = newStamp.join(StampFactory.objectNonNull()); nullCheck.lower(tool); } else { // TODO (ds) replace with probability of null-seen when available @@ -138,7 +138,7 @@ condition = LogicNode.or(graph().unique(IsNullNode.create(object)), typeTest, shortCircuitProbability); } } - GuardingPiNode checkedObject = graph().add(GuardingPiNode.create(theValue, condition, false, forStoreCheck ? ArrayStoreException : ClassCastException, InvalidateReprofile, stamp)); + GuardingPiNode checkedObject = graph().add(GuardingPiNode.create(theValue, condition, false, forStoreCheck ? ArrayStoreException : ClassCastException, InvalidateReprofile, newStamp)); graph().replaceFixedWithFixed(this, checkedObject); checkedObject.lower(tool); } diff -r 846c059e3ecf -r ffb974bef674 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 Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -43,8 +43,8 @@ @Input ValueNode expected; @Input ValueNode newValue; - private final Kind valueKind; - private final LocationIdentity locationIdentity; + protected final Kind valueKind; + protected final LocationIdentity locationIdentity; public static CompareAndSwapNode create(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new CompareAndSwapNodeGen(object, offset, expected, newValue, valueKind, locationIdentity) : new CompareAndSwapNode(object, offset, expected, newValue, valueKind, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,8 +36,8 @@ @NodeInfo public class InstanceOfNode extends UnaryOpLogicNode implements Lowerable, Virtualizable { - private final ResolvedJavaType type; - private JavaTypeProfile profile; + protected final ResolvedJavaType type; + protected JavaTypeProfile profile; /** * Constructs a new InstanceOfNode. @@ -63,11 +63,10 @@ @Override public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue) { - Stamp stamp = forValue.stamp(); - if (!(stamp instanceof ObjectStamp)) { + if (!(forValue.stamp() instanceof ObjectStamp)) { return this; } - ObjectStamp objectStamp = (ObjectStamp) stamp; + ObjectStamp objectStamp = (ObjectStamp) forValue.stamp(); if (objectStamp.alwaysNull()) { return LogicConstantNode.contradiction(); } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Canonicalizable { - private final JavaType returnType; + protected final JavaType returnType; /** * @param arguments diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Association}) public class MonitorIdNode extends ValueNode implements IterableNodeType, LIRLowerable { - private int lockDepth; + protected int lockDepth; public static MonitorIdNode create(int lockDepth) { return USE_GENERATED_NODES ? new MonitorIdNodeGen(lockDepth) : new MonitorIdNode(lockDepth); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,7 +38,7 @@ @NodeInfo(nameTemplate = "New {p#instanceClass/s}") public class NewInstanceNode extends AbstractNewObjectNode implements VirtualizableAllocation { - private final ResolvedJavaType instanceClass; + protected final ResolvedJavaType instanceClass; /** * Constructs a NewInstanceNode. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -36,7 +36,7 @@ public class NewMultiArrayNode extends DeoptimizingFixedWithNextNode implements Lowerable, ArrayLengthProvider { @Input protected NodeInputList dimensions; - private final ResolvedJavaType type; + protected final ResolvedJavaType type; public ValueNode dimension(int index) { return dimensions.get(index); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -66,16 +66,16 @@ return this; } - ObjectStamp stamp = (ObjectStamp) forValue.stamp(); + ObjectStamp objectStamp = (ObjectStamp) forValue.stamp(); boolean needsCheck = true; - if (stamp.isExactType()) { - needsCheck = stamp.type().hasFinalizer(); - } else if (stamp.type() != null && !stamp.type().hasFinalizableSubclass()) { + if (objectStamp.isExactType()) { + needsCheck = objectStamp.type().hasFinalizer(); + } else if (objectStamp.type() != null && !objectStamp.type().hasFinalizableSubclass()) { // if either the declared type of receiver or the holder // can be assumed to have no finalizers if (tool.assumptions().useOptimisticAssumptions()) { - tool.assumptions().recordNoFinalizableSubclassAssumption(stamp.type()); + tool.assumptions().recordNoFinalizableSubclassAssumption(objectStamp.type()); needsCheck = false; } } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,8 +40,8 @@ public class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable { // Replacement method data - private final ResolvedJavaMethod replacementTargetMethod; - private final JavaType replacementReturnType; + protected final ResolvedJavaMethod replacementTargetMethod; + protected final JavaType replacementReturnType; @Input NodeInputList replacementArguments; public static SelfReplacingMethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, @@ -72,9 +72,9 @@ @Override public void lower(LoweringTool tool) { - InvokeKind invokeKind = replacementTargetMethod.isStatic() ? InvokeKind.Static : InvokeKind.Special; + InvokeKind replacementInvokeKind = replacementTargetMethod.isStatic() ? InvokeKind.Static : InvokeKind.Special; MethodCallTargetNode replacement = graph().add( - MethodCallTargetNode.create(invokeKind, replacementTargetMethod, replacementArguments.toArray(new ValueNode[replacementArguments.size()]), replacementReturnType)); + MethodCallTargetNode.create(replacementInvokeKind, replacementTargetMethod, replacementArguments.toArray(new ValueNode[replacementArguments.size()]), replacementReturnType)); // Replace myself... this.replaceAndDelete(replacement); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class TypeSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { - private final ResolvedJavaType[] keys; + protected final ResolvedJavaType[] keys; /** * Constructs a type switch instruction. The keyProbabilities array contain key.length + 1 @@ -152,11 +152,11 @@ graph().removeSplit(this, blockSuccessor(survivingEdge)); } if (value() instanceof LoadHubNode && ((LoadHubNode) value()).getValue().stamp() instanceof ObjectStamp) { - ObjectStamp stamp = (ObjectStamp) ((LoadHubNode) value()).getValue().stamp(); - if (stamp.type() != null) { + ObjectStamp objectStamp = (ObjectStamp) ((LoadHubNode) value()).getValue().stamp(); + if (objectStamp.type() != null) { int validKeys = 0; for (int i = 0; i < keyCount(); i++) { - if (stamp.type().isAssignableFrom(keys[i])) { + if (objectStamp.type().isAssignableFrom(keys[i])) { validKeys++; } } @@ -171,7 +171,7 @@ double totalProbability = 0; int current = 0; for (int i = 0; i < keyCount() + 1; i++) { - if (i == keyCount() || stamp.type().isAssignableFrom(keys[i])) { + if (i == keyCount() || objectStamp.type().isAssignableFrom(keys[i])) { int index = newSuccessors.indexOf(keySuccessor(i)); if (index == -1) { index = newSuccessors.size(); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,7 +38,7 @@ @Input NodeInputList virtualObjects = new NodeInputList<>(this); @Input NodeInputList values = new NodeInputList<>(this); @Input(InputType.Association) NodeInputList locks = new NodeInputList<>(this); - private ArrayList lockIndexes = new ArrayList<>(Arrays.asList(0)); + protected ArrayList lockIndexes = new ArrayList<>(Arrays.asList(0)); public static CommitAllocationNode create() { return USE_GENERATED_NODES ? new CommitAllocationNodeGen() : new CommitAllocationNode(); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -30,7 +30,7 @@ @NodeInfo public class VirtualBoxingNode extends VirtualInstanceNode { - private final Kind boxingKind; + protected final Kind boxingKind; public static VirtualBoxingNode create(ResolvedJavaType type, Kind boxingKind) { return USE_GENERATED_NODES ? new VirtualBoxingNodeGen(type, boxingKind) : new VirtualBoxingNode(type, boxingKind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public abstract class VirtualObjectNode extends ValueNode implements LIRLowerable, IterableNodeType { - private boolean hasIdentity; + protected boolean hasIdentity; public VirtualObjectNode(ResolvedJavaType type, boolean hasIdentity) { super(StampFactory.exactNonNull(type)); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Wed Oct 01 07:39:47 2014 +0200 @@ -310,6 +310,9 @@ if (canonical != null && !canonical.isAlive()) { assert !canonical.isDeleted(); canonical = graph.addOrUniqueWithInputs(canonical); + if (canonical == node) { + graph.addOrUniqueWithInputs(newCanonical); + } } if (node instanceof FloatingNode) { if (canonical == null) { diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class AMD64FloatConvertNode extends UnaryNode implements ArithmeticLIRLowerable { - private final FloatConvert op; + protected final FloatConvert op; public static AMD64FloatConvertNode create(Stamp stamp, FloatConvert op, ValueNode value) { return USE_GENERATED_NODES ? new AMD64FloatConvertNodeGen(stamp, op, value) : new AMD64FloatConvertNode(stamp, op, value); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java --- a/graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -49,7 +49,7 @@ /** * The math operation that this Node represents. */ - private final HSAILArithmetic operation; + protected final HSAILArithmetic operation; /** * Gets the parameter passed to the math operation that this node represents. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,7 +39,7 @@ public class ArrayEqualsNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess { /** {@link Kind} of the arrays to compare. */ - private final Kind kind; + protected final Kind kind; /** One array to be tested for equality. */ @Input ValueNode array1; @@ -58,8 +58,8 @@ super(StampFactory.forKind(Kind.Boolean)); assert array1.stamp().equals(array2.stamp()); - ObjectStamp stamp = (ObjectStamp) array1.stamp(); - ResolvedJavaType componentType = stamp.type().getComponentType(); + ObjectStamp array1Stamp = (ObjectStamp) array1.stamp(); + ResolvedJavaType componentType = array1Stamp.type().getComponentType(); this.kind = componentType.getKind(); this.array1 = array1; diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,8 +40,8 @@ @Input ValueNode value; - private final boolean compileTimeAssertion; - private final String message; + protected final boolean compileTimeAssertion; + protected final String message; public static AssertionNode create(boolean compileTimeAssertion, ValueNode value, String message) { return USE_GENERATED_NODES ? new AssertionNodeGen(compileTimeAssertion, value, message) : new AssertionNode(compileTimeAssertion, value, message); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,8 +40,8 @@ @Input ValueNode object; @Input ValueNode value; @Input ValueNode offset; - private final int displacement; - private final LocationIdentity locationIdentity; + protected final int displacement; + protected final LocationIdentity locationIdentity; public static DirectObjectStoreNode create(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new DirectObjectStoreNodeGen(object, displacement, offset, value, locationIdentity) : new DirectObjectStoreNode(object, displacement, offset, value, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -39,7 +39,7 @@ public class DirectReadNode extends FixedWithNextNode implements LIRLowerable { @Input protected ValueNode address; - private final Kind readKind; + protected final Kind readKind; public static DirectReadNode create(ValueNode address, Kind readKind) { return USE_GENERATED_NODES ? new DirectReadNodeGen(address, readKind) : new DirectReadNode(address, readKind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -40,7 +40,7 @@ @Input protected ValueNode address; @Input protected ValueNode value; - private final Kind kind; + protected final Kind kind; public static DirectStoreNode create(ValueNode address, ValueNode value, Kind kind) { return USE_GENERATED_NODES ? new DirectStoreNodeGen(address, value, kind) : new DirectStoreNode(address, value, kind); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -61,10 +61,10 @@ @Input protected NodeInputList arguments; - private final int bci; - private final ResolvedJavaMethod targetMethod; - private final JavaType returnType; - private final InvokeKind invokeKind; + protected final int bci; + protected final ResolvedJavaMethod targetMethod; + protected final JavaType returnType; + protected final InvokeKind invokeKind; public static MacroNode create(Invoke invoke) { return USE_GENERATED_NODES ? new MacroNodeGen(invoke) : new MacroNode(invoke); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class MathIntrinsicNode extends UnaryNode implements ArithmeticLIRLowerable { - private final Operation operation; + protected final Operation operation; public enum Operation { ABS, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,20 +38,20 @@ /** * The fixed register to access. */ - private final Register register; + protected final Register register; /** * When true, subsequent uses of this node use the fixed register; when false, the value is * moved into a new virtual register so that the fixed register is not seen by uses. */ - private final boolean directUse; + protected final boolean directUse; /** * When true, this node is also an implicit definition of the value for the register allocator, * i.e., the register is an implicit incoming value; when false, the register must be defined in * the same method or must be an register excluded from register allocation. */ - private final boolean incoming; + protected final boolean incoming; public static ReadRegisterNode create(Register register, Kind kind, boolean directUse, boolean incoming) { return USE_GENERATED_NODES ? new ReadRegisterNodeGen(register, kind, directUse, incoming) : new ReadRegisterNode(register, kind, directUse, incoming); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -38,7 +38,7 @@ /** * The fixed register to access. */ - private final Register register; + protected final Register register; /** * The new value assigned to the register. diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -30,7 +30,7 @@ @NodeInfo public class NeverPartOfCompilationNode extends MacroStateSplitNode implements IterableNodeType { - private final String message; + protected final String message; public static NeverPartOfCompilationNode create(Invoke invoke) { return USE_GENERATED_NODES ? new NeverPartOfCompilationNodeGen(invoke) : new NeverPartOfCompilationNode(invoke); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -106,7 +106,7 @@ @NodeInfo public static class VirtualOnlyInstanceNode extends VirtualInstanceNode { - private boolean allowMaterialization; + protected boolean allowMaterialization; public static VirtualOnlyInstanceNode create(ResolvedJavaType type, ResolvedJavaField[] fields) { return USE_GENERATED_NODES ? new NewFrameNode_VirtualOnlyInstanceNodeGen(type, fields) : new VirtualOnlyInstanceNode(type, fields); diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -46,7 +46,7 @@ @Input ValueNode offset; @Input ValueNode condition; @Input ValueNode location; - private final Kind accessKind; + protected final Kind accessKind; public static CustomizedUnsafeLoadFinalNode create(ValueNode object, ValueNode offset, ValueNode condition, ValueNode location, Kind accessKind) { return USE_GENERATED_NODES ? new CustomizedUnsafeLoadFinalNodeGen(object, offset, condition, location, accessKind) : new CustomizedUnsafeLoadFinalNode(object, offset, condition, location, diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -67,10 +67,10 @@ replaceAtUsages(objectArgument); GraphUtil.removeFixedWithUnusedInputs(this); } else { - Stamp stamp = StampFactory.declared(lookupJavaType, nonNullArgument.asConstant().asInt() != 0, true); + Stamp piStamp = StampFactory.declared(lookupJavaType, nonNullArgument.asConstant().asInt() != 0, true); ConditionAnchorNode valueAnchorNode = graph().add( ConditionAnchorNode.create(CompareNode.createCompareNode(graph(), Condition.EQ, conditionArgument, ConstantNode.forBoolean(true, graph())))); - PiNode piCast = graph().unique(PiNode.create(objectArgument, stamp, valueAnchorNode)); + PiNode piCast = graph().unique(PiNode.create(objectArgument, piStamp, valueAnchorNode)); replaceAtUsages(piCast); graph().replaceFixedWithFixed(this, valueAnchorNode); } diff -r 846c059e3ecf -r ffb974bef674 graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Tue Sep 30 23:42:08 2014 +0200 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Wed Oct 01 07:39:47 2014 +0200 @@ -46,7 +46,7 @@ @NodeInfo public class SnippetLocationNode extends LocationNode implements Canonicalizable { - private final SnippetReflectionProvider snippetReflection; + protected final SnippetReflectionProvider snippetReflection; @Input ValueNode valueKind; @Input(InputType.Association) ValueNode locationIdentity;