# HG changeset patch # User Doug Simon # Date 1412338771 -7200 # Node ID 655f3e6b467b874f2ca019e7d65be2c20dff815e # Parent 95b879bdce67faa998d687e2d09b416e962ad30f made all Node data (i.e. non-edge) fields non-final and protected to support generating a copy "constructor" using Unsafe.allocateInstance diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/Fields.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/Fields.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/Fields.java Fri Oct 03 14:19:31 2014 +0200 @@ -77,6 +77,36 @@ } } + public void copy(Object from, Object to) { + for (int index = 0; index < offsets.length; index++) { + long offset = offsets[index]; + Class type = types[index]; + if (type.isPrimitive()) { + if (type == Integer.TYPE) { + unsafe.putInt(to, offset, unsafe.getInt(from, offset)); + } else if (type == Long.TYPE) { + unsafe.putLong(to, offset, unsafe.getLong(from, offset)); + } else if (type == Boolean.TYPE) { + unsafe.putBoolean(to, offset, unsafe.getBoolean(from, offset)); + } else if (type == Float.TYPE) { + unsafe.putFloat(to, offset, unsafe.getFloat(from, offset)); + } else if (type == Double.TYPE) { + unsafe.putDouble(to, offset, unsafe.getDouble(from, offset)); + } else if (type == Short.TYPE) { + unsafe.putShort(to, offset, unsafe.getShort(from, offset)); + } else if (type == Character.TYPE) { + unsafe.putChar(to, offset, unsafe.getChar(from, offset)); + } else if (type == Byte.TYPE) { + unsafe.putByte(to, offset, unsafe.getByte(from, offset)); + } else { + assert false : "unhandled property type: " + type; + } + } else { + unsafe.putObject(to, offset, unsafe.getObject(from, offset)); + } + } + } + /** * Gets the value of a field for a given object. * diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java Fri Oct 03 14:19:31 2014 +0200 @@ -71,7 +71,7 @@ StructuredGraph graph = parseAndProcess("test2Snippet"); NodeIterable monitors = graph.getNodes(MonitorExitNode.class); Assert.assertEquals(1, monitors.count()); - Assert.assertEquals(monitors.first().stateAfter().bci, 3); + Assert.assertEquals(monitors.first().stateAfter().bci(), 3); } @SuppressWarnings("all") diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/DebugInfoBuilder.java Fri Oct 03 14:19:31 2014 +0200 @@ -120,12 +120,12 @@ protected BytecodeFrame computeFrameForState(FrameState state) { try { - assert state.bci != BytecodeFrame.INVALID_FRAMESTATE_BCI; - assert state.bci != BytecodeFrame.UNKNOWN_BCI; - assert state.bci != BytecodeFrame.BEFORE_BCI || state.locksSize() == 0; - assert state.bci != BytecodeFrame.AFTER_BCI || state.locksSize() == 0; - assert state.bci != BytecodeFrame.AFTER_EXCEPTION_BCI || state.locksSize() == 0; - assert !(state.method().isSynchronized() && state.bci != BytecodeFrame.BEFORE_BCI && state.bci != BytecodeFrame.AFTER_BCI && state.bci != BytecodeFrame.AFTER_EXCEPTION_BCI) || + assert state.bci() != BytecodeFrame.INVALID_FRAMESTATE_BCI; + assert state.bci() != BytecodeFrame.UNKNOWN_BCI; + assert state.bci() != BytecodeFrame.BEFORE_BCI || state.locksSize() == 0; + assert state.bci() != BytecodeFrame.AFTER_BCI || state.locksSize() == 0; + assert state.bci() != BytecodeFrame.AFTER_EXCEPTION_BCI || state.locksSize() == 0; + assert !(state.method().isSynchronized() && state.bci() != BytecodeFrame.BEFORE_BCI && state.bci() != BytecodeFrame.AFTER_BCI && state.bci() != BytecodeFrame.AFTER_EXCEPTION_BCI) || state.locksSize() > 0; assert state.verify(); @@ -142,7 +142,7 @@ if (state.outerFrameState() != null) { caller = computeFrameForState(state.outerFrameState()); } - return new BytecodeFrame(caller, state.method(), state.bci, state.rethrowException(), state.duringCall(), values, numLocals, numStack, numLocks); + return new BytecodeFrame(caller, state.method(), state.bci(), state.rethrowException(), state.duringCall(), values, numLocals, numStack, numLocks); } catch (GraalInternalError e) { throw e.addContext("FrameState: ", state); } diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo static class TestNode extends Node implements IterableNodeType, TestNodeInterface { - protected final String name; + protected String name; public static TestNode create(String name) { return USE_GENERATED_NODES ? new TypedNodeIteratorTest_TestNodeGen(name) : new TestNode(name); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java Fri Oct 03 14:19:31 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo static class NodeA extends Node implements TestNodeInterface { - protected final String name; + protected String name; public static NodeA create(String name) { return USE_GENERATED_NODES ? new TypedNodeIteratorTest2_NodeAGen(name) : new NodeA(name); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Edges.java Fri Oct 03 14:19:31 2014 +0200 @@ -135,6 +135,26 @@ } /** + * Clear edges in a given node. This is accomplished by setting {@linkplain #getDirectCount() + * direct} edges to null and replacing the lists containing indirect edges with new lists. The + * latter is important so that this method can be used to clear the edges of cloned nodes. + * + * @param toNode the node whose list edges are to be initialized + */ + public void initializeLists(Node toNode, Node fromNode) { + int index = getDirectCount(); + while (index < getCount()) { + NodeList list = getNodeList(fromNode, index); + int size = list.initialSize; + NodeList newList = type == Edges.Type.Inputs ? new NodeInputList<>(toNode, size) : new NodeSuccessorList<>(toNode, size); + + // replacing with a new list object is the expected behavior! + initializeList(toNode, index, newList); + index++; + } + } + + /** * Copies edges from {@code fromNode} to {@code toNode}. The nodes are expected to be of the * exact same type. * @@ -150,7 +170,13 @@ } while (index < getCount()) { NodeList list = getNodeList(toNode, index); - list.copy(getNodeList(fromNode, index)); + if (list == null) { + NodeList fromList = getNodeList(fromNode, index); + list = type == Edges.Type.Inputs ? new NodeInputList<>(toNode, fromList) : new NodeSuccessorList<>(toNode, fromList); + initializeList(toNode, index, list); + } else { + list.copy(getNodeList(fromNode, index)); + } index++; } } diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,6 +29,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.debug.*; +import com.oracle.graal.debug.internal.*; import com.oracle.graal.graph.Node.ValueNumberable; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.options.*; @@ -845,9 +846,13 @@ } + private static final DebugTimer DuplicateGraph = Debug.timer("DuplicateGraph"); + @SuppressWarnings("all") public Map addDuplicates(Iterable newNodes, final Graph oldGraph, int estimatedNodeCount, DuplicationReplacement replacements) { - return NodeClass.addGraphDuplicate(this, oldGraph, estimatedNodeCount, newNodes, replacements); + try (TimerCloseable s = DuplicateGraph.start()) { + return NodeClass.addGraphDuplicate(this, oldGraph, estimatedNodeCount, newNodes, replacements); + } } public boolean isFrozen() { diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Fri Oct 03 14:19:31 2014 +0200 @@ -58,6 +58,8 @@ public abstract class Node implements Cloneable, Formattable { public final static boolean USE_GENERATED_NODES = Boolean.parseBoolean(System.getProperty("graal.useGeneratedNodes", "true")); + public final static boolean USE_GENERATED_COPY = Boolean.parseBoolean(System.getProperty("graal.useGeneratedCopy", "true")); + public final static boolean USE_NEW_CLONE = Boolean.parseBoolean(System.getProperty("graal.useNewClone", "true")); static final int DELETED_ID_START = -1000000000; static final int INITIAL_ID = -1; @@ -745,6 +747,13 @@ throw new UnsupportedOperationException(); } + /** + * @param clearInputsAndSuccessors + */ + protected Node copyGen(boolean clearInputsAndSuccessors) throws InstantiationException { + throw new InstantiationException(); + } + final Node clone(Graph into, boolean clearInputsAndSuccessors) { NodeClass nodeClass = getNodeClass(); if (into != null && nodeClass.valueNumberable() && nodeClass.isLeafNode()) { @@ -756,24 +765,38 @@ Node newNode = null; try { - newNode = (Node) this.clone(); - } catch (CloneNotSupportedException e) { + if (USE_GENERATED_NODES && USE_GENERATED_COPY) { + newNode = copyGen(clearInputsAndSuccessors); + } else if (USE_NEW_CLONE) { + newNode = (Node) UnsafeAccess.unsafe.allocateInstance(getClass()); + nodeClass.getData().copy(this, newNode); + if (clearInputsAndSuccessors) { + nodeClass.getEdges(Inputs).initializeLists(newNode, this); + nodeClass.getEdges(Successors).initializeLists(newNode, this); + } else { + nodeClass.getEdges(Inputs).copy(this, newNode); + nodeClass.getEdges(Successors).copy(this, newNode); + } + } else { + newNode = (Node) this.clone(); + if (clearInputsAndSuccessors) { + nodeClass.getEdges(Inputs).clear(newNode); + nodeClass.getEdges(Successors).clear(newNode); + } + newNode.typeCacheNext = null; + newNode.usage0 = null; + newNode.usage1 = null; + newNode.predecessor = null; + } + } catch (Exception e) { throw new GraalGraphInternalError(e).addContext(this); } - if (clearInputsAndSuccessors) { - nodeClass.getEdges(Inputs).clear(newNode); - nodeClass.getEdges(Successors).clear(newNode); - } newNode.graph = into; - newNode.typeCacheNext = null; newNode.id = INITIAL_ID; if (into != null) { into.register(newNode); } - newNode.usage0 = null; - newNode.usage1 = null; newNode.extraUsages = NO_NODES; - newNode.predecessor = null; if (into != null && nodeClass.valueNumberable() && nodeClass.isLeafNode()) { into.putNodeIntoCache(newNode); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeList.java Fri Oct 03 14:19:31 2014 +0200 @@ -101,8 +101,8 @@ } } - public boolean isList() { - return true; + public int getInitializeSize() { + return initialSize; } protected abstract void update(T oldNode, T newNode); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeSuccessorList.java Fri Oct 03 14:19:31 2014 +0200 @@ -24,6 +24,8 @@ import static com.oracle.graal.graph.Edges.Type.*; +import java.util.*; + import com.oracle.graal.graph.Edges.*; public final class NodeSuccessorList extends NodeList { @@ -41,6 +43,11 @@ assert self.usages().isEmpty(); } + public NodeSuccessorList(Node self, List elements) { + super(self, elements); + assert self.usages().isEmpty(); + } + @Override protected void update(T oldNode, T newNode) { self.updatePredecessor(oldNode, newNode); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Fri Oct 03 14:19:31 2014 +0200 @@ -193,7 +193,7 @@ @Override public void visitFullInfopointNode(FullInfopointNode i) { - if (i.getState() != null && i.getState().bci == BytecodeFrame.AFTER_BCI) { + if (i.getState() != null && i.getState().bci() == BytecodeFrame.AFTER_BCI) { Debug.log("Ignoring InfopointNode for AFTER_BCI"); } else { super.visitFullInfopointNode(i); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class AMD64RawNativeCallNode extends FixedWithNextNode implements LIRLowerable { - protected final Constant functionPointer; + protected Constant functionPointer; @Input NodeInputList args; public static AMD64RawNativeCallNode create(Kind returnType, Constant functionPointer, ValueNode[] args) { diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotNodeLIRBuilder.java Fri Oct 03 14:19:31 2014 +0200 @@ -144,7 +144,7 @@ @Override public void visitFullInfopointNode(FullInfopointNode i) { - if (i.getState() != null && i.getState().bci == BytecodeFrame.AFTER_BCI) { + if (i.getState() != null && i.getState().bci() == BytecodeFrame.AFTER_BCI) { Debug.log("Ignoring InfopointNode for AFTER_BCI"); } else { super.visitFullInfopointNode(i); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotDebugInfoBuilder.java Fri Oct 03 14:19:31 2014 +0200 @@ -67,7 +67,7 @@ @Override protected BytecodeFrame computeFrameForState(FrameState state) { - assert state.bci >= 0 || state.bci == BytecodeFrame.BEFORE_BCI; + assert state.bci() >= 0 || state.bci() == BytecodeFrame.BEFORE_BCI; return super.computeFrameForState(state); } } diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,14 +42,14 @@ /** * The number of slots in block. */ - protected final int slots; + protected 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. */ - protected final BitSet objects; + protected BitSet objects; public static AllocaNode create(int slots, BitSet objects) { return USE_GENERATED_NODES ? new AllocaNodeGen(slots, objects) : new AllocaNode(slots, objects); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo public class CStringNode extends FloatingNode implements LIRLowerable { - protected final String string; + protected String string; public static CStringNode create(String string) { return USE_GENERATED_NODES ? new CStringNodeGen(string) : new CStringNode(string); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -47,8 +47,8 @@ Uncompress } - protected final CompressionOp op; - protected final CompressEncoding encoding; + protected CompressionOp op; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,7 +42,7 @@ public class DeoptimizationFetchUnrollInfoCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { @Input SaveAllRegistersNode registerSaver; - protected final ForeignCallsProvider foreignCalls; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,8 +35,8 @@ @NodeInfo(shortName = "DeoptCaller", nameTemplate = "DeoptCaller {p#reason/s}") public class DeoptimizeCallerNode extends ControlSinkNode implements LIRLowerable { - protected final DeoptimizationAction action; - protected final DeoptimizationReason reason; + protected DeoptimizationAction action; + protected DeoptimizationReason reason; public static DeoptimizeCallerNode create(DeoptimizationAction action, DeoptimizationReason reason) { return USE_GENERATED_NODES ? new DeoptimizeCallerNodeGen(action, reason) : new DeoptimizeCallerNode(action, reason); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class DimensionsNode extends FixedWithNextNode implements LIRLowerable { - protected final int rank; + protected int rank; public static DimensionsNode create(int rank) { return USE_GENERATED_NODES ? new DimensionsNodeGen(rank) : new DimensionsNode(rank); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -45,7 +45,7 @@ @Input ValueNode expectedValue; @Input ValueNode newValue; - protected final LocationIdentity locationIdentity; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public class G1PostWriteBarrier extends WriteBarrier { - protected final boolean alwaysNull; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Fri Oct 03 14:19:31 2014 +0200 @@ -30,8 +30,8 @@ public class G1PreWriteBarrier extends WriteBarrier implements DeoptimizingNode.DeoptBefore { @OptionalInput(InputType.State) FrameState stateBefore; - protected final boolean nullCheck; - protected final boolean doLoad; + protected boolean nullCheck; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class G1ReferentFieldReadBarrier extends WriteBarrier { - protected final boolean doLoad; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Fri Oct 03 14:19:31 2014 +0200 @@ -44,7 +44,7 @@ @Input ValueNode hub; @Input ValueNode dims; - protected final int rank; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public class SerialWriteBarrier extends WriteBarrier { - protected final boolean alwaysNull; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,9 +41,9 @@ public class StubForeignCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { @Input NodeInputList arguments; - protected final ForeignCallsProvider foreignCalls; + protected ForeignCallsProvider foreignCalls; - protected final ForeignCallDescriptor descriptor; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public class StubStartNode extends StartNode { - protected final Stub stub; + protected Stub stub; public static StubStartNode create(Stub stub) { return USE_GENERATED_NODES ? new StubStartNodeGen(stub) : new StubStartNode(stub); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -43,7 +43,7 @@ @Input ValueNode trapRequest; @Input SaveAllRegistersNode registerSaver; - protected final ForeignCallsProvider foreignCalls; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,7 +40,7 @@ @NodeInfo public class VMErrorNode extends DeoptimizingStubCall implements LIRLowerable { - protected final String format; + protected String format; @Input ValueNode value; public static VMErrorNode create(String format, ValueNode value) { @@ -61,7 +61,7 @@ StringBuilder sb = new StringBuilder("in compiled code associated with frame state:"); FrameState fs = stateBefore(); while (fs != null) { - MetaUtil.appendLocation(sb.append(nl).append("\t"), fs.method(), fs.bci); + MetaUtil.appendLocation(sb.append(nl).append("\t"), fs.method(), fs.bci()); fs = fs.outerFrameState(); } whereString = sb.toString(); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Fri Oct 03 14:19:31 2014 +0200 @@ -34,7 +34,7 @@ @Input protected ValueNode object; @OptionalInput protected ValueNode value; @OptionalInput(InputType.Association) protected LocationNode location; - protected final boolean precise; + protected boolean precise; public WriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { super(StampFactory.forVoid()); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -49,7 +49,7 @@ public class MethodHandleNode extends MacroStateSplitNode implements Simplifiable { /** The method that this node is representing. */ - protected final IntrinsicMethod intrinsicMethod; + protected IntrinsicMethod intrinsicMethod; // Replacement method data protected ResolvedJavaMethod replacementTargetMethod; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Oct 03 14:19:31 2014 +0200 @@ -108,7 +108,7 @@ * the !NODE_CLASS.isAssignableFrom(type) guarantee in * NodeClass.FieldScanner.scanField() to fail. */ - protected final Object nextPlaceholder; + protected Object nextPlaceholder; public static BlockPlaceholderNode create(BytecodeParser builder) { return USE_GENERATED_NODES ? new GraphBuilderPhase_Instance_BlockPlaceholderNodeGen(builder) : new BlockPlaceholderNode(builder); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Fri Oct 03 14:19:31 2014 +0200 @@ -58,6 +58,7 @@ private final TypeElement NodeInputList; private final TypeElement NodeSuccessorList; private final TypeElement ValueNumberable; + private final TypeElement UnsafeAccess; private final List inputFields = new ArrayList<>(); private final List inputListFields = new ArrayList<>(); @@ -83,6 +84,7 @@ this.NodeInputList = getTypeElement("com.oracle.graal.graph.NodeInputList"); this.NodeSuccessorList = getTypeElement("com.oracle.graal.graph.NodeSuccessorList"); this.ValueNumberable = getTypeElement("com.oracle.graal.graph.Node.ValueNumberable"); + this.UnsafeAccess = getTypeElement("com.oracle.graal.compiler.common.UnsafeAccess"); } @SafeVarargs @@ -239,10 +241,13 @@ if (isAssignableWithErasure(field, NodeSuccessorList)) { throw new ElementException(field, "NodeSuccessorList field must be annotated with @" + Successor.getSimpleName()); } + if (modifiers.contains(FINAL)) { + throw new ElementException(field, "Data field must not be final"); + } if (modifiers.contains(PUBLIC)) { - if (!modifiers.contains(FINAL)) { - throw new ElementException(field, "Data field must be final if public otherwise it must be protected"); - } + // if (!modifiers.contains(FINAL)) { + throw new ElementException(field, "Data field must be final if public otherwise it must be protected"); + // } } else if (!modifiers.contains(PROTECTED)) { throw new ElementException(field, "Data field must be protected"); } @@ -340,6 +345,7 @@ createValueNumberLeafMethod(node); } createDataEqualsMethod(); + createCopyMethod(); } compilationUnit.add(genClass); return compilationUnit; @@ -389,6 +395,40 @@ return executable; } + private void createCopyMethod() { + CodeExecutableElement method = new CodeExecutableElement(modifiers(PROTECTED), genClass.asType(), "copyGen"); + method.getThrownTypes().add(getType(InstantiationException.class)); + addParameter(method, getType(boolean.class), "clearInputsAndSuccessors"); + CodeTreeBuilder b = method.createBuilder(); + b.startStatement().string(genClassName, " newNode = (", genClassName, ") ").type(UnsafeAccess.asType()).string(".unsafe.allocateInstance(", genClassName, ".class)").end(); + for (VariableElement f : dataFields) { + String fname = f.getSimpleName().toString(); + b.startStatement().string("newNode.", fname, " = this.", fname).end(); + } + b.startIf().string("!clearInputsAndSuccessors").end().startBlock(); + for (List fields : Arrays.asList(inputFields, inputListFields, successorFields, successorListFields)) { + for (VariableElement f : fields) { + String fname = f.getSimpleName().toString(); + b.startStatement().string("newNode.", fname, " = this.", fname).end(); + } + } + b.end().startElseBlock(); + for (VariableElement f : inputListFields) { + String fname = f.getSimpleName().toString(); + b.startStatement().string("newNode.", fname, " = new ").type(eraseGenericTypes(NodeInputList.asType())).string("<>(newNode, this.", fname, ".getInitializeSize())").end(); + } + for (VariableElement f : successorListFields) { + String fname = f.getSimpleName().toString(); + b.startStatement().string("newNode.", fname, " = new ").type(eraseGenericTypes(NodeSuccessorList.asType())).string("<>(newNode, this.", fname, ".getInitializeSize())").end(); + } + + b.end(); + + b.startReturn().string("newNode").end(); + genClass.add(method); + checkOnlyInGenNode(method); + } + private void reset() { inputFields.clear(); inputListFields.clear(); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -33,8 +33,8 @@ public abstract class AbstractFixedGuardNode extends DeoptimizingFixedWithNextNode implements Simplifiable, GuardingNode { @Input(InputType.Condition) protected LogicNode condition; - protected final DeoptimizationReason reason; - protected final DeoptimizationAction action; + protected DeoptimizationReason reason; + protected DeoptimizationAction action; protected boolean negated; public LogicNode condition() { diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,7 +29,7 @@ @NodeInfo public abstract class AbstractLocalNode extends FloatingNode { - protected final int index; + protected int index; public AbstractLocalNode(int index, Stamp stamp) { super(stamp); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -43,7 +43,7 @@ private static final DebugMetric ConstantNodes = Debug.metric("ConstantNodes"); - protected final Constant value; + protected Constant value; private static ConstantNode createPrimitive(Constant value) { assert value.getKind() != Kind.Object; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,10 +29,10 @@ @NodeInfo(shortName = "Deopt", nameTemplate = "Deopt {p#reason/s}") public class DeoptimizeNode extends AbstractDeoptimizeNode implements Lowerable, LIRLowerable { - protected final DeoptimizationAction action; - protected final DeoptimizationReason reason; - protected final int debugId; - protected final Constant speculation; + protected DeoptimizationAction action; + protected DeoptimizationReason reason; + protected int debugId; + protected Constant speculation; public static DeoptimizeNode create(DeoptimizationAction action, DeoptimizationReason reason) { return USE_GENERATED_NODES ? new DeoptimizeNodeGen(action, reason) : new DeoptimizeNode(action, reason); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Fri Oct 03 14:19:31 2014 +0200 @@ -44,9 +44,9 @@ private static final DebugMetric METRIC_FRAMESTATE_COUNT = Debug.metric("FrameStateCount"); - protected final int localsSize; + protected int localsSize; - protected final int stackSize; + protected int stackSize; /** * @see BytecodeFrame#rethrowException @@ -69,9 +69,9 @@ /** * The bytecode index to which this frame state applies. */ - public final int bci; + protected int bci; - protected final ResolvedJavaMethod method; + protected ResolvedJavaMethod method; /** * Creates a {@code FrameState} with the given locals, stack expressions and locked monitors. @@ -157,6 +157,10 @@ return values; } + public int bci() { + return bci; + } + public NodeInputList monitorIds() { return monitorIds; } diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -45,7 +45,7 @@ public class GuardNode extends FloatingAnchoredNode implements Canonicalizable, IterableNodeType, GuardingNode { @Input(InputType.Condition) protected LogicNode condition; - protected final DeoptimizationReason reason; + protected DeoptimizationReason reason; protected Constant speculation; protected DeoptimizationAction action; protected boolean negated; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,7 +40,7 @@ public class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { @Input ValueNode object; - protected final Stamp piStamp; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,9 +40,9 @@ @Input ValueNode object; @Input(InputType.Condition) LogicNode condition; - protected final DeoptimizationReason reason; - protected final DeoptimizationAction action; - protected final Stamp piStamp; + protected DeoptimizationReason reason; + protected DeoptimizationAction action; + protected Stamp piStamp; protected boolean negated; public ValueNode object() { diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -28,7 +28,7 @@ @NodeInfo public abstract class InfopointNode extends FixedWithNextNode { - protected final InfopointReason reason; + protected InfopointReason reason; public InfopointNode(InfopointReason reason) { super(StampFactory.forVoid()); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,7 +42,7 @@ @Input(InputType.Extension) CallTargetNode callTarget; @OptionalInput(InputType.State) FrameState stateDuring; @OptionalInput(InputType.Guard) GuardingNode guard; - protected final int bci; + protected int bci; protected boolean polymorphic; protected boolean useForInlining; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -43,7 +43,7 @@ @OptionalInput(InputType.State) FrameState stateDuring; @OptionalInput(InputType.State) FrameState stateAfter; @OptionalInput(InputType.Guard) GuardingNode guard; - protected final int bci; + protected int bci; protected boolean polymorphic; protected boolean useForInlining; protected double exceptionProbability; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo(nameTemplate = "{p#value}") public class LogicConstantNode extends LogicNode implements LIRLowerable { - protected final boolean value; + protected boolean value; public static LogicConstantNode create(boolean value) { return USE_GENERATED_NODES ? new LogicConstantNodeGen(value) : new LogicConstantNode(value); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,9 +32,9 @@ @NodeInfo public abstract class LoweredCallTargetNode extends CallTargetNode { - protected final Stamp returnStamp; - protected final JavaType[] signature; - protected final CallingConvention.Type callType; + protected Stamp returnStamp; + protected JavaType[] signature; + protected CallingConvention.Type callType; public LoweredCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) { super(arguments, target, invokeKind); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -37,7 +37,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Extension}) public class MemoryMapNode extends FloatingNode implements MemoryMap, LIRLowerable { - protected final List locationIdentities; + protected List locationIdentities; @Input(InputType.Memory) NodeInputList nodes; private boolean checkOrder(Map mmap) { diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ public class MemoryPhiNode extends PhiNode implements MemoryNode { @Input(InputType.Memory) NodeInputList values; - protected final LocationIdentity locationIdentity; + protected LocationIdentity locationIdentity; public static MemoryPhiNode create(MergeNode merge, LocationIdentity locationIdentity) { return USE_GENERATED_NODES ? new MemoryPhiNodeGen(merge, locationIdentity) : new MemoryPhiNode(merge, locationIdentity); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -45,7 +45,7 @@ public class PiNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { @Input ValueNode object; - protected final Stamp piStamp; + protected Stamp piStamp; public ValueNode object() { return object; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -39,7 +39,7 @@ @NodeInfo public class TypeProfileProxyNode extends UnaryNode implements IterableNodeType, ValueProxy { - protected final JavaTypeProfile profile; + protected JavaTypeProfile profile; protected transient ResolvedJavaType lastCheckedType; protected transient JavaTypeProfile lastCheckedProfile; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public abstract class BinaryArithmeticNode extends BinaryNode implements ArithmeticLIRLowerable { - protected final BinaryOp op; + protected BinaryOp op; public BinaryArithmeticNode(BinaryOp op, ValueNode x, ValueNode y) { super(op.foldStamp(x.stamp(), y.stamp()), x, y); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -39,7 +39,7 @@ @NodeInfo public class FloatConvertNode extends ConvertNode implements Lowerable, ArithmeticLIRLowerable { - protected final FloatConvert op; + protected FloatConvert op; public static FloatConvertNode create(FloatConvert op, ValueNode input) { return USE_GENERATED_NODES ? new FloatConvertNodeGen(op, input) : new FloatConvertNode(op, input); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo(shortName = "<") public class FloatLessThanNode extends CompareNode { - protected final boolean unorderedIsTrue; + protected boolean unorderedIsTrue; /** * Constructs a new floating point comparison node. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public abstract class IntegerConvertNode extends ConvertNode implements ArithmeticLIRLowerable { - protected final int resultBits; + protected int resultBits; protected IntegerConvertNode(Stamp stamp, ValueNode input, int resultBits) { super(stamp, input); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -37,7 +37,7 @@ @NodeInfo public class NormalizeCompareNode extends BinaryNode implements Lowerable { - protected final boolean isUnorderedLess; + protected boolean isUnorderedLess; /** * Creates a new compare operation. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public abstract class UnaryArithmeticNode extends UnaryNode implements ArithmeticLIRLowerable { - protected final UnaryOp op; + protected UnaryOp op; protected UnaryArithmeticNode(UnaryOp op, ValueNode value) { super(op.foldStamp(value.stamp()), value); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,9 +40,9 @@ @Input ValueNode increment; - protected final String name; - protected final String group; - protected final boolean withContext; + protected String name; + protected String group; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ @OptionalInput(InputType.State) FrameState stateAfter; @OptionalInput(InputType.Memory) Node lastLocationAccess; - protected final boolean initialization; + protected boolean initialization; public FrameState stateAfter() { return stateAfter; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,7 +42,7 @@ @NodeInfo public class BoxNode extends UnaryNode implements VirtualizableAllocation, Lowerable { - protected final Kind boxingKind; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo public class BytecodeExceptionNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { - protected final Class exceptionClass; + protected Class exceptionClass; @Input NodeInputList arguments; public static BytecodeExceptionNode create(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,9 +36,9 @@ @NodeInfo(nameTemplate = "Loc {p#locationIdentity/s}") public class ConstantLocationNode extends LocationNode { - protected final Kind valueKind; - protected final LocationIdentity locationIdentity; - protected final long displacement; + protected Kind valueKind; + protected LocationIdentity locationIdentity; + protected long displacement; public static ConstantLocationNode create(LocationIdentity identity, Kind kind, long displacement, Graph graph) { return graph.unique(ConstantLocationNode.create(identity, kind, displacement)); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,9 +40,9 @@ @Input protected NodeInputList arguments; @OptionalInput(InputType.State) protected FrameState stateDuring; - protected final ForeignCallsProvider foreignCalls; + protected ForeignCallsProvider foreignCalls; - protected final ForeignCallDescriptor descriptor; + protected 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); @@ -133,7 +133,7 @@ FrameState newStateDuring; if ((currentStateAfter.stackSize() > 0 && currentStateAfter.stackAt(currentStateAfter.stackSize() - 1) == this) || (currentStateAfter.stackSize() > 1 && currentStateAfter.stackAt(currentStateAfter.stackSize() - 2) == this)) { - newStateDuring = currentStateAfter.duplicateModified(currentStateAfter.bci, currentStateAfter.rethrowException(), this.getKind()); + newStateDuring = currentStateAfter.duplicateModified(currentStateAfter.bci(), currentStateAfter.rethrowException(), this.getKind()); } else { newStateDuring = currentStateAfter; } diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,11 +41,11 @@ @NodeInfo(nameTemplate = "IdxLoc {p#locationIdentity/s}") public class IndexedLocationNode extends LocationNode implements Canonicalizable { - protected final Kind valueKind; - protected final LocationIdentity locationIdentity; - protected final long displacement; + protected Kind valueKind; + protected LocationIdentity locationIdentity; + protected long displacement; @Input ValueNode index; - protected final int indexScaling; + protected int indexScaling; /** * Gets the index or offset of this location. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -39,7 +39,7 @@ @NodeInfo public class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { - protected final int[] keys; + protected int[] keys; /** * Constructs a integer switch instruction. The keyProbabilities and keySuccessors array contain diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -34,7 +34,7 @@ @NodeInfo public class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode { - protected final boolean compressible; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single { - protected final boolean compressible; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -38,8 +38,8 @@ public class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable { @Input ValueNode hub; - protected final ResolvedJavaMethod method; - protected final ResolvedJavaType receiverType; + protected ResolvedJavaMethod method; + protected ResolvedJavaType receiverType; public ValueNode getHub() { return hub; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,7 +42,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class MembarNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { - protected final int barriers; + protected int barriers; /** * @param barriers a mask of the barrier constants defined in {@link MemoryBarriers} diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,8 +41,8 @@ @Input protected ValueNode value; // do not change the contents of these arrays: - protected final double[] keyProbabilities; - protected final int[] keySuccessors; + protected double[] keyProbabilities; + protected int[] keySuccessors; /** * Constructs a new Switch. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -33,7 +33,7 @@ @NodeInfo public class UnboxNode extends UnaryNode implements Virtualizable, Lowerable { - protected final Kind boxingKind; + protected Kind boxingKind; public static UnboxNode create(ValueNode value, Kind boxingKind) { return USE_GENERATED_NODES ? new UnboxNodeGen(value, boxingKind) : new UnboxNode(value, boxingKind); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,8 +35,8 @@ @Input ValueNode object; @Input ValueNode offset; - protected final Kind accessKind; - protected final LocationIdentity locationIdentity; + protected Kind accessKind; + protected LocationIdentity locationIdentity; public UnsafeAccessNode(Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { super(stamp); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -38,7 +38,7 @@ @NodeInfo public class AbstractNewObjectNode extends DeoptimizingFixedWithNextNode implements Simplifiable, Lowerable { - protected final boolean fillContents; + protected boolean fillContents; /** * Constructs a new AbstractNewObjectNode. diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ @OptionalInput ValueNode object; - protected final ResolvedJavaField field; + protected ResolvedJavaField field; public ValueNode object() { return object; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ public abstract class AccessIndexedNode extends AccessArrayNode implements Lowerable { @Input protected ValueNode index; - protected final Kind elementKind; + protected Kind elementKind; public ValueNode index() { return index; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -42,7 +42,7 @@ @Input ValueNode offset; @Input ValueNode delta; - protected final LocationIdentity locationIdentity; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -43,8 +43,8 @@ @Input ValueNode offset; @Input ValueNode newValue; - protected final Kind valueKind; - protected final LocationIdentity locationIdentity; + protected Kind valueKind; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Fri Oct 03 14:19:31 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. */ - protected final boolean forStoreCheck; + protected boolean forStoreCheck; /** * @param hub the type being cast to diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -44,14 +44,14 @@ public class CheckCastNode extends FixedWithNextNode implements Canonicalizable, Simplifiable, Lowerable, Virtualizable, ValueProxy { @Input protected ValueNode object; - protected final ResolvedJavaType type; - protected final JavaTypeProfile profile; + protected ResolvedJavaType type; + protected JavaTypeProfile profile; /** * Determines the exception thrown by this node if the check fails: {@link ClassCastException} * if false; {@link ArrayStoreException} if true. */ - protected final boolean forStoreCheck; + protected boolean forStoreCheck; /** * Creates a new CheckCast instruction. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -43,8 +43,8 @@ @Input ValueNode expected; @Input ValueNode newValue; - protected final Kind valueKind; - protected final LocationIdentity locationIdentity; + protected Kind valueKind; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ @NodeInfo public class InstanceOfNode extends UnaryOpLogicNode implements Lowerable, Virtualizable { - protected final ResolvedJavaType type; + protected ResolvedJavaType type; protected JavaTypeProfile profile; /** diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,7 +32,7 @@ @NodeInfo public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Canonicalizable { - protected final JavaType returnType; + protected JavaType returnType; /** * @param arguments diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -69,7 +69,7 @@ @Override public void simplify(SimplifierTool tool) { - if (escapedReturnValue != null && stateAfter() != null && stateAfter().bci != BytecodeFrame.AFTER_BCI) { + if (escapedReturnValue != null && stateAfter() != null && stateAfter().bci() != BytecodeFrame.AFTER_BCI) { ValueNode returnValue = escapedReturnValue; setEscapedReturnValue(null); tool.removeIfUnused(returnValue); @@ -85,7 +85,7 @@ public void virtualize(VirtualizerTool tool) { State state = tool.getObjectState(object()); // the monitor exit for a synchronized method should never be virtualized - assert stateAfter().bci != BytecodeFrame.AFTER_BCI || state == null; + assert stateAfter().bci() != BytecodeFrame.AFTER_BCI || state == null; if (state != null && state.getState() == EscapeState.Virtual && state.getVirtualObject().hasIdentity()) { MonitorIdNode removedLock = state.removeLock(); assert removedLock == getMonitorId() : "mismatch at " + this + ": " + removedLock + " vs. " + getMonitorId(); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -38,7 +38,7 @@ @NodeInfo(nameTemplate = "New {p#instanceClass/s}") public class NewInstanceNode extends AbstractNewObjectNode implements VirtualizableAllocation { - protected final ResolvedJavaType instanceClass; + protected ResolvedJavaType instanceClass; /** * Constructs a NewInstanceNode. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -36,7 +36,7 @@ public class NewMultiArrayNode extends DeoptimizingFixedWithNextNode implements Lowerable, ArrayLengthProvider { @Input protected NodeInputList dimensions; - protected final ResolvedJavaType type; + protected ResolvedJavaType type; public ValueNode dimension(int index) { return dimensions.get(index); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,8 +40,8 @@ public class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable { // Replacement method data - protected final ResolvedJavaMethod replacementTargetMethod; - protected final JavaType replacementReturnType; + protected ResolvedJavaMethod replacementTargetMethod; + protected JavaType replacementReturnType; @Input NodeInputList replacementArguments; public static SelfReplacingMethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class TypeSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { - protected final ResolvedJavaType[] keys; + protected ResolvedJavaType[] keys; /** * Constructs a type switch instruction. The keyProbabilities array contain key.length + 1 diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java Fri Oct 03 14:19:31 2014 +0200 @@ -245,7 +245,7 @@ while (state != null) { ResolvedJavaMethod method = state.method(); if (method != null) { - elements.add(method.asStackTraceElement(state.bci - 1)); + elements.add(method.asStackTraceElement(state.bci() - 1)); } state = state.outerFrameState(); } diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -32,8 +32,8 @@ @NodeInfo(nameTemplate = "VirtualArray {p#componentType/s}[{p#length}]") public class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider { - protected final ResolvedJavaType componentType; - protected final int length; + protected ResolvedJavaType componentType; + protected int length; public static VirtualArrayNode create(ResolvedJavaType componentType, int length) { return USE_GENERATED_NODES ? new VirtualArrayNodeGen(componentType, length) : new VirtualArrayNode(componentType, length); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -30,7 +30,7 @@ @NodeInfo public class VirtualBoxingNode extends VirtualInstanceNode { - protected final Kind boxingKind; + protected Kind boxingKind; public static VirtualBoxingNode create(ResolvedJavaType type, Kind boxingKind) { return USE_GENERATED_NODES ? new VirtualBoxingNodeGen(type, boxingKind) : new VirtualBoxingNode(type, boxingKind); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -29,8 +29,8 @@ @NodeInfo(nameTemplate = "VirtualInstance {p#type/s}") public class VirtualInstanceNode extends VirtualObjectNode { - protected final ResolvedJavaType type; - protected final ResolvedJavaField[] fields; + protected ResolvedJavaType type; + protected ResolvedJavaField[] fields; public static VirtualInstanceNode create(ResolvedJavaType type, boolean hasIdentity) { return USE_GENERATED_NODES ? new VirtualInstanceNodeGen(type, hasIdentity) : new VirtualInstanceNode(type, hasIdentity); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Fri Oct 03 14:19:31 2014 +0200 @@ -166,7 +166,7 @@ private static String methodName(FrameState frameState, int bci) { StringBuilder sb = new StringBuilder(); if (frameState.outerFrameState() != null) { - sb.append(methodName(frameState.outerFrameState(), frameState.outerFrameState().bci)); + sb.append(methodName(frameState.outerFrameState(), frameState.outerFrameState().bci())); sb.append("->"); } sb.append(frameState.method().format("%h.%n")); @@ -370,7 +370,7 @@ if (fs == null) { return null; } - return new BytecodePosition(toBytecodePosition(fs.outerFrameState()), fs.method(), fs.bci); + return new BytecodePosition(toBytecodePosition(fs.outerFrameState()), fs.method(), fs.bci()); } protected static void processFrameStates(Invoke invoke, StructuredGraph inlineGraph, Map duplicates, FrameState stateAtExceptionEdge, boolean alwaysDuplicateStateAfter) { @@ -380,7 +380,7 @@ for (FrameState original : inlineGraph.getNodes(FrameState.class)) { FrameState frameState = (FrameState) duplicates.get(original); if (frameState != null && frameState.isAlive()) { - if (frameState.bci == BytecodeFrame.AFTER_BCI) { + if (frameState.bci() == BytecodeFrame.AFTER_BCI) { /* * pop return kind from invoke's stateAfter and replace with this frameState's * return value (top of stack) @@ -400,15 +400,15 @@ stateAfterException = stateAtExceptionEdge.duplicateModified(Kind.Object, frameState.stackAt(0)); } frameState.replaceAndDelete(stateAfterException); - } else if (frameState.bci == BytecodeFrame.UNWIND_BCI || frameState.bci == BytecodeFrame.AFTER_EXCEPTION_BCI) { + } else if (frameState.bci() == BytecodeFrame.UNWIND_BCI || frameState.bci() == BytecodeFrame.AFTER_EXCEPTION_BCI) { handleMissingAfterExceptionFrameState(frameState); } else { // only handle the outermost frame states if (frameState.outerFrameState() == null) { - assert frameState.bci != BytecodeFrame.BEFORE_BCI : frameState; - assert frameState.bci == BytecodeFrame.INVALID_FRAMESTATE_BCI || frameState.method().equals(inlineGraph.method()); - assert frameState.bci != BytecodeFrame.AFTER_EXCEPTION_BCI && frameState.bci != BytecodeFrame.BEFORE_BCI && frameState.bci != BytecodeFrame.AFTER_EXCEPTION_BCI && - frameState.bci != BytecodeFrame.UNWIND_BCI : frameState.bci; + assert frameState.bci() != BytecodeFrame.BEFORE_BCI : frameState; + assert frameState.bci() == BytecodeFrame.INVALID_FRAMESTATE_BCI || frameState.method().equals(inlineGraph.method()); + assert frameState.bci() != BytecodeFrame.AFTER_EXCEPTION_BCI && frameState.bci() != BytecodeFrame.BEFORE_BCI && frameState.bci() != BytecodeFrame.AFTER_EXCEPTION_BCI && + frameState.bci() != BytecodeFrame.UNWIND_BCI : frameState.bci(); if (outerFrameState == null) { outerFrameState = stateAtReturn.duplicateModified(invoke.bci(), stateAtReturn.rethrowException(), invokeReturnKind); outerFrameState.setDuringCall(true); @@ -421,7 +421,7 @@ } private static boolean isStateAfterException(FrameState frameState) { - return frameState.bci == BytecodeFrame.AFTER_EXCEPTION_BCI || (frameState.bci == BytecodeFrame.UNWIND_BCI && !frameState.method().isSynchronized()); + return frameState.bci() == BytecodeFrame.AFTER_EXCEPTION_BCI || (frameState.bci() == BytecodeFrame.UNWIND_BCI && !frameState.method().isSynchronized()); } protected static void handleMissingAfterExceptionFrameState(FrameState nonReplaceableFrameState) { @@ -487,7 +487,7 @@ for (Node node : duplicates.values()) { if (node instanceof FrameState) { FrameState frameState = (FrameState) node; - assert frameState.bci == BytecodeFrame.AFTER_BCI || frameState.bci == BytecodeFrame.INVALID_FRAMESTATE_BCI : node.toString(Verbosity.Debugger); + assert frameState.bci() == BytecodeFrame.AFTER_BCI || frameState.bci() == BytecodeFrame.INVALID_FRAMESTATE_BCI : node.toString(Verbosity.Debugger); } } return true; diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java Fri Oct 03 14:19:31 2014 +0200 @@ -191,7 +191,7 @@ FixedNode exceptionSux = exceptionEdge.next(); graph.addBeforeFixed(exceptionSux, exceptionMerge); exceptionObjectPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(Kind.Object), exceptionMerge)); - exceptionMerge.setStateAfter(exceptionEdge.stateAfter().duplicateModified(invoke.stateAfter().bci, true, Kind.Object, exceptionObjectPhi)); + exceptionMerge.setStateAfter(exceptionEdge.stateAfter().duplicateModified(invoke.stateAfter().bci(), true, Kind.Object, exceptionObjectPhi)); } // create one separate block for each invoked method @@ -484,7 +484,7 @@ Kind kind = invoke.asNode().getKind(); if (kind != Kind.Void) { FrameState stateAfter = invoke.stateAfter(); - stateAfter = stateAfter.duplicate(stateAfter.bci); + stateAfter = stateAfter.duplicate(stateAfter.bci()); stateAfter.replaceFirstInput(invoke.asNode(), result.asNode()); result.setStateAfter(stateAfter); } @@ -498,7 +498,7 @@ ExceptionObjectNode newExceptionEdge = (ExceptionObjectNode) exceptionEdge.copyWithInputs(); // set new state (pop old exception object, push new one) - newExceptionEdge.setStateAfter(stateAfterException.duplicateModified(stateAfterException.bci, stateAfterException.rethrowException(), Kind.Object, newExceptionEdge)); + newExceptionEdge.setStateAfter(stateAfterException.duplicateModified(stateAfterException.bci(), stateAfterException.rethrowException(), Kind.Object, newExceptionEdge)); AbstractEndNode endNode = graph.add(EndNode.create()); newExceptionEdge.setNext(endNode); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/CFGPrinter.java Fri Oct 03 14:19:31 2014 +0200 @@ -392,7 +392,7 @@ StringBuilder buf = new StringBuilder(); FrameState curState = state; do { - buf.append(MetaUtil.toLocation(curState.method(), curState.bci)).append('\n'); + buf.append(MetaUtil.toLocation(curState.method(), curState.bci())).append('\n'); if (curState.stackSize() > 0) { buf.append("stack: "); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -41,7 +41,7 @@ @NodeInfo public class AMD64FloatConvertNode extends UnaryNode implements ArithmeticLIRLowerable { - protected final FloatConvert op; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -49,7 +49,7 @@ /** * The math operation that this Node represents. */ - protected final HSAILArithmetic operation; + protected HSAILArithmetic operation; /** * Gets the parameter passed to the math operation that this node represents. diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ObjectAccessTest.java Fri Oct 03 14:19:31 2014 +0200 @@ -127,7 +127,7 @@ JavaWriteNode write = (JavaWriteNode) graph.start().next(); Assert.assertEquals(graph.getParameter(2), write.value()); Assert.assertEquals(graph.getParameter(0), write.object()); - Assert.assertEquals(BytecodeFrame.AFTER_BCI, write.stateAfter().bci); + Assert.assertEquals(BytecodeFrame.AFTER_BCI, write.stateAfter().bci()); IndexedLocationNode location = (IndexedLocationNode) write.location(); Assert.assertEquals(kind, location.getValueKind()); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/PointerTest.java Fri Oct 03 14:19:31 2014 +0200 @@ -139,7 +139,7 @@ JavaWriteNode write = (JavaWriteNode) cast.next(); Assert.assertEquals(graph.getParameter(2), write.value()); - Assert.assertEquals(BytecodeFrame.AFTER_BCI, write.stateAfter().bci); + Assert.assertEquals(BytecodeFrame.AFTER_BCI, write.stateAfter().bci()); Assert.assertEquals(cast, write.object()); Assert.assertEquals(graph.getParameter(0), cast.getInput()); diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Oct 03 14:19:31 2014 +0200 @@ -384,7 +384,7 @@ @NodeInfo static class VarargsPlaceholderNode extends FloatingNode implements ArrayLengthProvider { - protected final Varargs varargs; + protected Varargs varargs; public static VarargsPlaceholderNode create(Varargs varargs, MetaAccessProvider metaAccess) { return USE_GENERATED_NODES ? new SnippetTemplate_VarargsPlaceholderNodeGen(varargs, metaAccess) : new VarargsPlaceholderNode(varargs, metaAccess); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -39,7 +39,7 @@ public class ArrayEqualsNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess { /** {@link Kind} of the arrays to compare. */ - protected final Kind kind; + protected Kind kind; /** One array to be tested for equality. */ @Input ValueNode array1; diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,8 +40,8 @@ @Input ValueNode value; - protected final boolean compileTimeAssertion; - protected final String message; + protected boolean compileTimeAssertion; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,8 +40,8 @@ @Input ValueNode object; @Input ValueNode value; @Input ValueNode offset; - protected final int displacement; - protected final LocationIdentity locationIdentity; + protected int displacement; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -39,7 +39,7 @@ public class DirectReadNode extends FixedWithNextNode implements LIRLowerable { @Input protected ValueNode address; - protected final Kind readKind; + protected Kind readKind; public static DirectReadNode create(ValueNode address, Kind readKind) { return USE_GENERATED_NODES ? new DirectReadNodeGen(address, readKind) : new DirectReadNode(address, readKind); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -40,7 +40,7 @@ @Input protected ValueNode address; @Input protected ValueNode value; - protected final Kind kind; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -61,10 +61,10 @@ @Input protected NodeInputList arguments; - protected final int bci; - protected final ResolvedJavaMethod targetMethod; - protected final JavaType returnType; - protected final InvokeKind invokeKind; + protected int bci; + protected ResolvedJavaMethod targetMethod; + protected JavaType returnType; + protected InvokeKind invokeKind; public static MacroNode create(Invoke invoke) { return USE_GENERATED_NODES ? new MacroNodeGen(invoke) : new MacroNode(invoke); @@ -115,7 +115,7 @@ StructuredGraph methodSubstitution = tool.getReplacements().getMethodSubstitution(getTargetMethod()); if (methodSubstitution != null) { methodSubstitution = methodSubstitution.copy(); - if (stateAfter() == null || stateAfter().bci == BytecodeFrame.AFTER_BCI) { + if (stateAfter() == null || stateAfter().bci() == BytecodeFrame.AFTER_BCI) { /* * handles the case of a MacroNode inside a snippet used for another MacroNode * lowering diff -r 95b879bdce67 -r 655f3e6b467b graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -73,7 +73,7 @@ if (!call.targetMethod().equals(getTargetMethod())) { throw new GraalInternalError("unexpected invoke %s in snippet", getClass().getSimpleName()); } - assert invoke.stateAfter().bci == BytecodeFrame.AFTER_BCI; + assert invoke.stateAfter().bci() == BytecodeFrame.AFTER_BCI; // Here we need to fix the bci of the invoke InvokeNode newInvoke = snippetGraph.add(InvokeNode.create(invoke.callTarget(), getBci())); newInvoke.setStateAfter(invoke.stateAfter()); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -35,7 +35,7 @@ @NodeInfo public class MathIntrinsicNode extends UnaryNode implements ArithmeticLIRLowerable { - protected final Operation operation; + protected Operation operation; public enum Operation { ABS, diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -38,20 +38,20 @@ /** * The fixed register to access. */ - protected final Register register; + protected 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. */ - protected final boolean directUse; + protected 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. */ - protected final boolean incoming; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -38,7 +38,7 @@ /** * The fixed register to access. */ - protected final Register register; + protected Register register; /** * The new value assigned to the register. diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -30,7 +30,7 @@ @NodeInfo public class NeverPartOfCompilationNode extends MacroStateSplitNode implements IterableNodeType { - protected final String message; + protected String message; public static NeverPartOfCompilationNode create(Invoke invoke) { return USE_GENERATED_NODES ? new NeverPartOfCompilationNodeGen(invoke) : new NeverPartOfCompilationNode(invoke); diff -r 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -46,7 +46,7 @@ @Input ValueNode offset; @Input ValueNode condition; @Input ValueNode location; - protected final Kind accessKind; + protected 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 95b879bdce67 -r 655f3e6b467b 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 Fri Oct 03 11:10:35 2014 +0200 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Fri Oct 03 14:19:31 2014 +0200 @@ -46,7 +46,7 @@ @NodeInfo public class SnippetLocationNode extends LocationNode implements Canonicalizable { - protected final SnippetReflectionProvider snippetReflection; + protected SnippetReflectionProvider snippetReflection; @Input ValueNode valueKind; @Input(InputType.Association) ValueNode locationIdentity;