# HG changeset patch # User Doug Simon # Date 1424119512 -3600 # Node ID 87a2901b1f42f8479059bf03084c74168965dc4d # Parent e2fd58839d38fd4cda911ad962bd1407d2eca796# Parent e6637891a8708332fab27da98c97d78ec0a75dab Merge. diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java --- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -51,7 +51,7 @@ @Override protected boolean checkLowTierGraph(StructuredGraph graph) { - NodeIterable loopBeginNodes = graph.getNodes(LoopBeginNode.class); + NodeIterable loopBeginNodes = graph.getNodes(LoopBeginNode.TYPE); Assert.assertEquals("LoopBeginNode count", 1, loopBeginNodes.count()); LoopBeginNode loopBeginNode = loopBeginNodes.first(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java --- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -123,7 +123,7 @@ @Override protected boolean checkLowTierGraph(StructuredGraph graph) { OpaqueSnippet snippet = graph.method().getAnnotation(OpaqueSnippet.class); - for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) { + for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) { Assert.assertEquals(snippet.expectedReturnNode(), returnNode.result().getClass()); } return true; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java --- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -48,7 +48,7 @@ @Override protected boolean checkLowTierGraph(StructuredGraph graph) { - NodeIterable ifNodes = graph.getNodes(IfNode.class); + NodeIterable ifNodes = graph.getNodes(IfNode.TYPE); Assert.assertEquals("IfNode count", 1, ifNodes.count()); IfNode ifNode = ifNodes.first(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -300,8 +300,8 @@ final ValueNode getResult(String snippet) { processMethod(snippet); - assertDeepEquals(1, graph.getNodes(ReturnNode.class).count()); - return graph.getNodes(ReturnNode.class).first().result(); + assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count()); + return graph.getNodes(ReturnNode.TYPE).first().result(); } private void processMethod(final String snippet) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -131,8 +131,8 @@ result = getResult(getCanonicalizedGraph("integerTestCanonicalization2")); assertTrue(result.isConstant() && result.asJavaConstant().asLong() == 1); StructuredGraph graph = getCanonicalizedGraph("integerTestCanonicalization3"); - assertDeepEquals(1, graph.getNodes(ReturnNode.class).count()); - assertTrue(graph.getNodes(ReturnNode.class).first().result() instanceof ConditionalNode); + assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count()); + assertTrue(graph.getNodes(ReturnNode.TYPE).first().result() instanceof ConditionalNode); } public static int integerTestCanonicalization1(boolean b) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -294,8 +294,8 @@ protected void assertConstantReturn(StructuredGraph graph, int value) { String graphString = getCanonicalGraphString(graph, false, true); - Assert.assertEquals("unexpected number of ReturnNodes: " + graphString, graph.getNodes(ReturnNode.class).count(), 1); - ValueNode result = graph.getNodes(ReturnNode.class).first().result(); + Assert.assertEquals("unexpected number of ReturnNodes: " + graphString, graph.getNodes(ReturnNode.TYPE).count(), 1); + ValueNode result = graph.getNodes(ReturnNode.TYPE).first().result(); Assert.assertTrue("unexpected ReturnNode result node: " + graphString, result.isConstant()); Assert.assertEquals("unexpected ReturnNode result kind: " + graphString, result.asJavaConstant().getKind(), Kind.Int); Assert.assertEquals("unexpected ReturnNode result: " + graphString, result.asJavaConstant().asInt(), value); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -194,7 +194,7 @@ private void test(String snippet) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); - ParameterNode param = graph.getNodes(ParameterNode.class).iterator().next(); + ParameterNode param = graph.getNodes(ParameterNode.TYPE).iterator().next(); ConstantNode constant = ConstantNode.forInt(0, graph); for (Node n : param.usages().filter(isNotA(FrameState.class)).snapshot()) { n.replaceFirstInput(param, constant); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -115,7 +115,7 @@ private StructuredGraph getCanonicalizedGraph(String snippet) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); new CanonicalizerPhase(false).apply(graph, new PhaseContext(getProviders())); - for (FrameState state : graph.getNodes(FrameState.class).snapshot()) { + for (FrameState state : graph.getNodes(FrameState.TYPE).snapshot()) { state.replaceAtUsages(null); state.safeDelete(); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -264,8 +264,8 @@ public void testArrayCopy() { SchedulePhase schedule = getFinalSchedule("testArrayCopySnippet", TestMode.INLINED_WITHOUT_FRAMESTATES); StructuredGraph graph = schedule.getCFG().getStartBlock().getBeginNode().graph(); - assertDeepEquals(1, graph.getNodes(ReturnNode.class).count()); - ReturnNode ret = graph.getNodes(ReturnNode.class).first(); + assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count()); + ReturnNode ret = graph.getNodes(ReturnNode.TYPE).first(); assertTrue(ret.result() + " should be a FloatingReadNode", ret.result() instanceof FloatingReadNode); assertDeepEquals(schedule.getCFG().blockFor(ret), schedule.getCFG().blockFor(ret.result())); assertReadWithinAllReturnBlocks(schedule, true); @@ -543,11 +543,11 @@ private void assertReadWithinAllReturnBlocks(SchedulePhase schedule, boolean withinReturnBlock) { StructuredGraph graph = schedule.getCFG().graph; - assertTrue(graph.getNodes(ReturnNode.class).isNotEmpty()); + assertTrue(graph.getNodes(ReturnNode.TYPE).isNotEmpty()); int withRead = 0; int returnBlocks = 0; - for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) { + for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) { Block block = schedule.getCFG().getNodeToBlock().get(returnNode); for (Node node : schedule.getBlockToNodesMap().get(block)) { if (node instanceof FloatingReadNode) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -61,6 +61,6 @@ new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); Debug.dump(graph, "Graph"); - assertDeepEquals(returnCount, graph.getNodes(ReturnNode.class).count()); + assertDeepEquals(returnCount, graph.getNodes(ReturnNode.TYPE).count()); } } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -69,7 +69,7 @@ @Test public void test2() { StructuredGraph graph = parseAndProcess("test2Snippet"); - NodeIterable monitors = graph.getNodes(MonitorExitNode.class); + NodeIterable monitors = graph.getNodes(MonitorExitNode.TYPE); Assert.assertEquals(1, monitors.count()); Assert.assertEquals(monitors.first().stateAfter().bci, 3); } @@ -85,7 +85,7 @@ private StructuredGraph parseAndProcess(String snippet) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO); - ParameterNode param = graph.getNodes(ParameterNode.class).first(); + ParameterNode param = graph.getNodes(ParameterNode.TYPE).first(); if (param != null) { ConstantNode constant = ConstantNode.forInt(0, graph); for (Node n : param.usages().filter(isNotA(FrameState.class)).snapshot()) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -137,7 +137,7 @@ } private static Invoke getInvoke(String name, StructuredGraph graph) { - for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.TYPE)) { if (callTarget.targetMethod().getName().equals(name)) { return callTarget.invoke(); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -33,6 +33,7 @@ @NodeInfo static final class TestNode extends Node { + public static final NodeClass TYPE = NodeClass.get(TestNode.class); @Successor Node s1; @Successor Node s2; @Successor NodeSuccessorList stail; @@ -42,6 +43,7 @@ @Input FloatingNode i2; public TestNode() { + super(TYPE); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -59,7 +59,7 @@ private void test(String snippet, String reference) { StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES); Debug.dump(graph, "Graph"); - for (FrameState fs : graph.getNodes(FrameState.class).snapshot()) { + for (FrameState fs : graph.getNodes(FrameState.TYPE).snapshot()) { fs.replaceAtUsages(null); GraphUtil.killWithUnusedFloatingInputs(fs); } @@ -67,7 +67,7 @@ new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); StructuredGraph referenceGraph = parseEager(reference, AllowAssumptions.YES); - for (FrameState fs : referenceGraph.getNodes(FrameState.class).snapshot()) { + for (FrameState fs : referenceGraph.getNodes(FrameState.TYPE).snapshot()) { fs.replaceAtUsages(null); GraphUtil.killWithUnusedFloatingInputs(fs); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -91,7 +91,7 @@ Debug.dump(graph, "After lowering"); - for (FloatingReadNode node : graph.getNodes(ParameterNode.class).first().usages().filter(FloatingReadNode.class)) { + for (FloatingReadNode node : graph.getNodes(ParameterNode.TYPE).first().usages().filter(FloatingReadNode.class)) { // Checking that the parameter a is not directly used for the access to field // x10 (because x10 must be guarded by the checkcast). Assert.assertTrue(node.location().getLocationIdentity().isImmutable()); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java Mon Feb 16 21:45:12 2015 +0100 @@ -158,7 +158,7 @@ new DeadCodeEliminationPhase().apply(graph); new CanonicalizerPhase(true).apply(graph, context); new PartialEscapePhase(iterativeEscapeAnalysis, false, new CanonicalizerPhase(true), null).apply(graph, context); - returnNodes = graph.getNodes(ReturnNode.class).snapshot(); + returnNodes = graph.getNodes(ReturnNode.TYPE).snapshot(); } catch (Throwable e) { throw Debug.handle(e); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -79,8 +79,8 @@ final ReturnNode getReturn(String snippet) { processMethod(snippet); - assertDeepEquals(1, graph.getNodes(ReturnNode.class).count()); - return graph.getNodes(ReturnNode.class).first(); + assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count()); + return graph.getNodes(ReturnNode.TYPE).first(); } private void processMethod(final String snippet) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -199,7 +199,7 @@ public void testPhi() { processMethod("testPhiSnippet"); assertTrue(graph.getNodes().filter(LoadFieldNode.class).isEmpty()); - List returnNodes = graph.getNodes(ReturnNode.class).snapshot(); + List returnNodes = graph.getNodes(ReturnNode.TYPE).snapshot(); assertDeepEquals(2, returnNodes.size()); assertTrue(returnNodes.get(0).predecessor() instanceof StoreFieldNode); assertTrue(returnNodes.get(1).predecessor() instanceof StoreFieldNode); @@ -239,8 +239,8 @@ final ReturnNode getReturn(String snippet) { processMethod(snippet); - assertDeepEquals(1, graph.getNodes(ReturnNode.class).count()); - return graph.getNodes(ReturnNode.class).first(); + assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count()); + return graph.getNodes(ReturnNode.TYPE).first(); } protected void processMethod(final String snippet) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -177,7 +177,7 @@ @SafeVarargs protected final void testPartialEscapeAnalysis(final String snippet, double expectedProbability, int expectedCount, Class... invalidNodeClasses) { prepareGraph(snippet, false); - for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class)) { + for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE)) { merge.setStateAfter(null); } new DeadCodeEliminationPhase().apply(graph); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java Mon Feb 16 21:45:12 2015 +0100 @@ -66,7 +66,7 @@ new LoweringPhase(new CanonicalizerPhase(true), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); // remove framestates in order to trigger the simplification. - cleanup: for (FrameState fs : graph.getNodes(FrameState.class).snapshot()) { + cleanup: for (FrameState fs : graph.getNodes(FrameState.TYPE).snapshot()) { for (Node input : fs.inputs()) { if (input instanceof NewInstanceNode) { fs.replaceAtUsages(null); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Mon Feb 16 21:45:12 2015 +0100 @@ -329,7 +329,7 @@ gen.emitIncomingValues(params); - for (ParameterNode param : graph.getNodes(ParameterNode.class)) { + for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) { Value paramValue = params[param.index()]; assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp())); setResult(param, gen.emitMove(paramValue)); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchProcessor.java Mon Feb 16 21:45:12 2015 +0100 @@ -455,7 +455,7 @@ } String generatePositionDeclaration() { - return String.format("Position[] %s_positions = MatchRuleRegistry.findPositions(lookup, %s.class, new String[]{\"%s\"});", nodeType.nodeClass, nodeType.nodeClass, + return String.format("Position[] %s_positions = MatchRuleRegistry.findPositions(%s.TYPE, new String[]{\"%s\"});", nodeType.nodeClass, nodeType.nodeClass, String.join("\", \"", nodeType.inputs)); } } @@ -535,7 +535,7 @@ out.println(" }"); out.println(); out.println(" @Override"); - out.println(" public List<" + desc + "> statements(MatchRuleRegistry.NodeClassLookup lookup) {"); + out.println(" public List<" + desc + "> statements() {"); out.println(" // Checkstyle: stop "); for (String positionDeclaration : info.positionDeclarations) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java Mon Feb 16 21:45:12 2015 +0100 @@ -39,32 +39,16 @@ public class MatchRuleRegistry { /** - * Helper interface for mapping between Class and NodeClass. In static compilation environments, - * the current NodeClass might not be the same NodeClass used in the target so this provides a - * level of indirection. - */ - public interface NodeClassLookup { - NodeClass get(Class theClass); - } - - static class DefaultNodeClassLookup implements NodeClassLookup { - public NodeClass get(Class theClass) { - return NodeClass.get(theClass); - } - } - - /** * Convert a list of field names into {@link com.oracle.graal.graph.Position} objects that can * be used to read them during a match. The names should already have been confirmed to exist in * the type. * - * @param theClass + * @param nodeClass * @param names * @return an array of Position objects corresponding to the named fields. */ - public static Position[] findPositions(NodeClassLookup lookup, Class theClass, String[] names) { + public static Position[] findPositions(NodeClass nodeClass, String[] names) { Position[] result = new Position[names.length]; - NodeClass nodeClass = lookup.get(theClass); for (int i = 0; i < names.length; i++) { Edges edges = nodeClass.getEdges(Inputs); for (int e = 0; e < edges.getDirectCount(); e++) { @@ -73,7 +57,7 @@ } } if (result[i] == null) { - throw new GraalInternalError("unknown field \"%s\" in class %s", names[i], theClass); + throw new GraalInternalError("unknown field \"%s\" in class %s", names[i], nodeClass); } } return result; @@ -91,8 +75,7 @@ Map, List> result = registry.get(theClass); if (result == null) { - NodeClassLookup lookup = new DefaultNodeClassLookup(); - Map, List> rules = createRules(theClass, lookup); + Map, List> rules = createRules(theClass); registry.put(theClass, rules); assert registry.get(theClass) == rules; result = rules; @@ -120,7 +103,7 @@ * This is a separate, public method so that external clients can create rules with a custom * lookup and without the default caching behavior. */ - public static Map, List> createRules(Class theClass, NodeClassLookup lookup) { + public static Map, List> createRules(Class theClass) { HashMap, MatchStatementSet> matchSets = new HashMap<>(); Iterable sl = Services.load(MatchStatementSet.class); for (MatchStatementSet rules : sl) { @@ -134,7 +117,7 @@ do { MatchStatementSet matchSet = matchSets.get(currentClass); if (matchSet != null) { - List statements = matchSet.statements(lookup); + List statements = matchSet.statements(); for (MatchStatement statement : statements) { Class nodeClass = statement.getPattern().nodeClass(); List current = rules.get(nodeClass); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchStatementSet.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchStatementSet.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchStatementSet.java Mon Feb 16 21:45:12 2015 +0100 @@ -37,5 +37,5 @@ /** * @return the {@link MatchStatement}s available for this {@link NodeLIRBuilder} subclass. */ - List statements(MatchRuleRegistry.NodeClassLookup lookup); + List statements(); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java --- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,10 @@ @NodeInfo static final class TestNode extends Node { + public static final NodeClass TYPE = NodeClass.get(TestNode.class); + protected TestNode() { + super(TYPE); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java --- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,17 +35,22 @@ @NodeInfo static final class Def extends Node { + public static final NodeClass TYPE = NodeClass.get(Def.class); + protected Def() { + super(TYPE); } } @NodeInfo static final class Use extends Node { + public static final NodeClass TYPE = NodeClass.get(Use.class); @Input Def in0; @Input Def in1; @Input Def in2; public Use(Def in0, Def in1, Def in2) { + super(TYPE); this.in0 = in0; this.in1 = in1; this.in2 = in2; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -34,11 +34,13 @@ public class TypedNodeIteratorTest { @NodeInfo - static class TestNode extends Node implements IterableNodeType, TestNodeInterface { + static final class TestNode extends Node implements IterableNodeType, TestNodeInterface { + public static final NodeClass TYPE = NodeClass.get(TestNode.class); protected final String name; public TestNode(String name) { + super(TYPE); this.name = name; } @@ -51,8 +53,8 @@ public void singleNodeTest() { Graph graph = new Graph(); graph.add(new TestNode("a")); - assertTrue(graph.hasNode(TestNode.class)); - assertEquals("a", toString(graph.getNodes(TestNode.class))); + assertTrue(graph.hasNode(TestNode.TYPE)); + assertEquals("a", toString(graph.getNodes(TestNode.TYPE))); } @Test @@ -61,7 +63,7 @@ Graph graph = new Graph(); graph.add(testNode); testNode.safeDelete(); - assertEquals("", toString(graph.getNodes(TestNode.class))); + assertEquals("", toString(graph.getNodes(TestNode.TYPE))); } @Test @@ -71,16 +73,16 @@ graph.add(new TestNode("a")); graph.add(testNode); testNode.safeDelete(); - assertEquals("a", toString(graph.getNodes(TestNode.class))); + assertEquals("a", toString(graph.getNodes(TestNode.TYPE))); graph.add(new TestNode("c")); - assertEquals("ac", toString(graph.getNodes(TestNode.class))); + assertEquals("ac", toString(graph.getNodes(TestNode.TYPE))); } @Test public void iteratorBehaviorTest() { Graph graph = new Graph(); graph.add(new TestNode("a")); - Iterator iterator = graph.getNodes(TestNode.class).iterator(); + Iterator iterator = graph.getNodes(TestNode.TYPE).iterator(); assertTrue(iterator.hasNext()); assertEquals("a", iterator.next().getName()); assertFalse(iterator.hasNext()); @@ -99,7 +101,7 @@ public void complicatedIterationTest() { Graph graph = new Graph(); graph.add(new TestNode("a")); - for (TestNode tn : graph.getNodes(TestNode.class)) { + for (TestNode tn : graph.getNodes(TestNode.TYPE)) { String name = tn.getName(); for (int i = 0; i < name.length(); ++i) { char c = name.charAt(i); @@ -119,7 +121,7 @@ graph.add(new TestNode("e")); graph.add(new TestNode("d")); } else if (c == 'd') { - for (TestNode tn2 : graph.getNodes(TestNode.class)) { + for (TestNode tn2 : graph.getNodes(TestNode.TYPE)) { if (tn2.getName().equals("e")) { tn2.safeDelete(); } else if (tn2.getName().equals("c")) { @@ -131,7 +133,7 @@ } } } - assertEquals("dddd", toString(graph.getNodes(TestNode.class))); + assertEquals("dddd", toString(graph.getNodes(TestNode.TYPE))); } @Test @@ -140,7 +142,7 @@ graph.add(new TestNode("a")); StringBuilder sb = new StringBuilder(); int z = 0; - for (TestNode tn : graph.getNodes(TestNode.class)) { + for (TestNode tn : graph.getNodes(TestNode.TYPE)) { if (z == 0) { graph.add(new TestNode("b")); } @@ -150,7 +152,7 @@ assertEquals(2, z); assertEquals("ab", sb.toString()); z = 0; - for (TestNode tn : graph.getNodes(TestNode.class)) { + for (TestNode tn : graph.getNodes(TestNode.TYPE)) { if (z == 0) { graph.add(new TestNode("c")); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,9 +34,15 @@ @NodeInfo static class NodeA extends Node implements TestNodeInterface { + public static final NodeClass TYPE = NodeClass.get(NodeA.class); protected final String name; public NodeA(String name) { + this(TYPE, name); + } + + protected NodeA(NodeClass c, String name) { + super(c); this.name = name; } @@ -47,25 +53,38 @@ @NodeInfo static class NodeB extends NodeA implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(NodeB.class); public NodeB(String name) { - super(name); + this(TYPE, name); + } + + protected NodeB(NodeClass c, String name) { + super(c, name); } } @NodeInfo static class NodeC extends NodeB { + public static final NodeClass TYPE = NodeClass.get(NodeC.class); + public NodeC(String name) { - super(name); + this(TYPE, name); + } + + protected NodeC(NodeClass c, String name) { + super(c, name); } } @NodeInfo - static class NodeD extends NodeC { + static final class NodeD extends NodeC { + public static final NodeClass TYPE = NodeClass.get(NodeD.class); + public NodeD(String name) { - super(name); + super(TYPE, name); } } @@ -76,8 +95,8 @@ graph.add(new NodeB("b")); graph.add(new NodeD("d")); - Assert.assertEquals("bd", TypedNodeIteratorTest.toString(graph.getNodes(NodeB.class))); - Assert.assertEquals("d", TypedNodeIteratorTest.toString(graph.getNodes(NodeD.class))); + Assert.assertEquals("bd", TypedNodeIteratorTest.toString(graph.getNodes(NodeB.TYPE))); + Assert.assertEquals("d", TypedNodeIteratorTest.toString(graph.getNodes(NodeD.TYPE))); } @Test @@ -86,21 +105,21 @@ graph.add(new NodeB("b1")); NodeD d1 = graph.add(new NodeD("d1")); StringBuilder sb = new StringBuilder(); - for (NodeB tn : graph.getNodes(NodeB.class)) { + for (NodeB tn : graph.getNodes(NodeB.TYPE)) { if (tn == d1) { graph.add(new NodeB("b2")); } sb.append(tn.getName()); } assertEquals("b1d1b2", sb.toString()); - for (NodeB tn : graph.getNodes(NodeB.class)) { + for (NodeB tn : graph.getNodes(NodeB.TYPE)) { if (tn == d1) { graph.add(new NodeB("b3")); } assertNotNull(tn); } - assertEquals(4, graph.getNodes(NodeB.class).count()); - assertEquals(1, graph.getNodes(NodeD.class).count()); + assertEquals(4, graph.getNodes(NodeB.TYPE).count()); + assertEquals(1, graph.getNodes(NodeD.TYPE).count()); } } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Mon Feb 16 21:45:12 2015 +0100 @@ -485,7 +485,7 @@ } public Node findDuplicate(Node node) { - NodeClass nodeClass = node.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); assert nodeClass.valueNumberable(); if (nodeClass.isLeafNode()) { // Leaf node: look up in cache @@ -625,7 +625,11 @@ // Fully qualified annotation name is required to satisfy javac @com.oracle.graal.nodeinfo.NodeInfo static final class PlaceHolderNode extends Node { + + public static final NodeClass TYPE = NodeClass.get(PlaceHolderNode.class); + public PlaceHolderNode() { + super(TYPE); } } @@ -685,11 +689,10 @@ * Returns an {@link Iterable} providing all the live nodes whose type is compatible with * {@code type}. * - * @param type the type of node to return + * @param nodeClass the type of node to return * @return an {@link Iterable} providing all the matching nodes */ - public NodeIterable getNodes(final Class type) { - final NodeClass nodeClass = NodeClass.get(type); + public NodeIterable getNodes(final NodeClass nodeClass) { return new NodeIterable() { @Override @@ -705,7 +708,7 @@ * @param type the type of node that is checked for occurrence * @return whether there is at least one such node */ - public boolean hasNode(final Class type) { + public boolean hasNode(final NodeClass type) { return getNodes(type).iterator().hasNext(); } @@ -761,8 +764,9 @@ } /** - * Rebuilds the lists used to support {@link #getNodes(Class)}. This is useful for serialization - * where the underlying {@linkplain NodeClass#iterableId() iterable ids} may have changed. + * Rebuilds the lists used to support {@link #getNodes(NodeClass)}. This is useful for + * serialization where the underlying {@linkplain NodeClass#iterableId() iterable ids} may have + * changed. */ private void recomputeIterableNodeLists() { iterableNodesFirst.clear(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,7 +23,7 @@ package com.oracle.graal.graph; /** - * A marker for a node type supporting {@linkplain Graph#getNodes(Class) fast iteration} of its + * A marker for a node type supporting {@linkplain Graph#getNodes(NodeClass) fast iteration} of its * instances in a graph. The support for fast iteration comes with a memory cost (e.g., extra data * structures {@link Graph}) so only node types for which fast iteration provides a compilation * performance benefit should implement this interface. diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Mon Feb 16 21:45:12 2015 +0100 @@ -76,6 +76,7 @@ @NodeInfo public abstract class Node implements Cloneable, Formattable { + public static final NodeClass TYPE = null; public static final boolean USE_UNSAFE_TO_CLONE = Boolean.parseBoolean(System.getProperty("graal.node.useUnsafeToClone", "true")); static final int DELETED_ID_START = -1000000000; @@ -201,14 +202,15 @@ int extraUsagesCount; private Node predecessor; - private NodeClass nodeClass; + private NodeClass nodeClass; public static final int NODE_LIST = -2; public static final int NOT_ITERABLE = -1; - public Node() { + public Node(NodeClass c) { init(); - this.nodeClass = NodeClass.get(this.getClass()); + assert c.getJavaClass() == this.getClass(); + this.nodeClass = c; } final void init() { @@ -505,7 +507,7 @@ } } - public final NodeClass getNodeClass() { + public final NodeClass getNodeClass() { return nodeClass; } @@ -747,7 +749,7 @@ * @return the copy of this node */ final Node clone(Graph into, EnumSet edgesToCopy) { - final NodeClass nodeClassTmp = getNodeClass(); + final NodeClass nodeClassTmp = getNodeClass(); boolean useIntoLeafNodeCache = false; if (into != null) { if (nodeClassTmp.valueNumberable() && nodeClassTmp.isLeafNode()) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Mon Feb 16 21:45:12 2015 +0100 @@ -50,12 +50,9 @@ *
  • The identifier for an {@link IterableNodeType} class.
  • * */ -public final class NodeClass extends FieldIntrospection { - - private static final Object GetNodeClassLock = new Object(); +public final class NodeClass extends FieldIntrospection { // Timers for creation of a NodeClass instance - private static final DebugTimer Init = Debug.timer("NodeClass.Init"); private static final DebugTimer Init_FieldScanning = Debug.timer("NodeClass.Init.FieldScanning"); private static final DebugTimer Init_FieldScanningInner = Debug.timer("NodeClass.Init.FieldScanning.Inner"); private static final DebugTimer Init_AnnotationParsing = Debug.timer("NodeClass.Init.AnnotationParsing"); @@ -73,34 +70,26 @@ /** * Gets the {@link NodeClass} associated with a given {@link Class}. */ - @SuppressWarnings("unchecked") - public static NodeClass get(Class c) { - Class key = (Class) c; + @SuppressWarnings({"unchecked", "rawtypes"}) + public static NodeClass get(Class c) { + assert getNodeClassViaReflection(c) == null; + Class superclass = c.getSuperclass(); + NodeClass nodeSuperclass = null; + if (superclass != NODE_CLASS) { + nodeSuperclass = getNodeClassViaReflection(superclass); + } + return new NodeClass(c, nodeSuperclass); + } - NodeClass value = (NodeClass) allClasses.get(key); - // The fact that {@link ConcurrentHashMap#put} and {@link ConcurrentHashMap#get} - // are used makes the double-checked locking idiom work. - if (value == null) { - // The creation of a NodeClass must be serialized as the NodeClass constructor accesses - // both FieldIntrospection.allClasses and NodeClass.nextIterableId. - synchronized (GetNodeClassLock) { - try (TimerCloseable t = Init.start()) { - value = (NodeClass) allClasses.get(key); - if (value == null) { - Class superclass = c.getSuperclass(); - NodeClass superNodeClass = null; - if (superclass != NODE_CLASS) { - // Ensure NodeClass for superclass exists - superNodeClass = get(superclass); - } - value = new NodeClass(key, superNodeClass); - Object old = allClasses.putIfAbsent(key, value); - assert old == null : old + " " + key; - } - } - } + @SuppressWarnings("rawtypes") + private static NodeClass getNodeClassViaReflection(Class superclass) { + try { + Field field = superclass.getDeclaredField("TYPE"); + field.setAccessible(true); + return (NodeClass) field.get(null); + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { + throw new RuntimeException(e); } - return value; } private static final Class NODE_CLASS = Node.class; @@ -111,7 +100,7 @@ private final InputEdges inputs; private final SuccessorEdges successors; - private final NodeClass superNodeClass; + private final NodeClass superNodeClass; private final boolean canGVN; private final int startGVNNumber; @@ -134,11 +123,11 @@ private final boolean isSimplifiable; private final boolean isLeafNode; - public NodeClass(Class clazz, NodeClass superNodeClass) { + public NodeClass(Class clazz, NodeClass superNodeClass) { this(clazz, superNodeClass, new FieldsScanner.DefaultCalcOffset(), null, 0); } - public NodeClass(Class clazz, NodeClass superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) { + public NodeClass(Class clazz, NodeClass superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) { super(clazz); this.superNodeClass = superNodeClass; assert NODE_CLASS.isAssignableFrom(clazz); @@ -185,7 +174,7 @@ try (TimerCloseable t1 = Init_IterableIds.start()) { this.iterableId = nextIterableId++; - NodeClass snc = superNodeClass; + NodeClass snc = superNodeClass; while (snc != null && IterableNodeType.class.isAssignableFrom(snc.getClazz())) { assert !containsId(this.iterableId, snc.iterableIds); snc.iterableIds = Arrays.copyOf(snc.iterableIds, snc.iterableIds.length + 1); @@ -316,7 +305,7 @@ int directInputs; int directSuccessors; - protected NodeFieldsScanner(FieldsScanner.CalcOffset calc, NodeClass superNodeClass) { + protected NodeFieldsScanner(FieldsScanner.CalcOffset calc, NodeClass superNodeClass) { super(calc); if (superNodeClass != null) { translateInto(superNodeClass.inputs, inputs); @@ -564,7 +553,7 @@ return true; } - public boolean isValid(Position pos, NodeClass from, Edges fromEdges) { + public boolean isValid(Position pos, NodeClass from, Edges fromEdges) { if (this == from) { return true; } @@ -702,7 +691,7 @@ // re-wire inputs for (Node oldNode : nodes) { Node node = newNodes.get(oldNode); - NodeClass nodeClass = node.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); if (replacements == null || replacements.replacement(oldNode) == oldNode) { nodeClass.updateInputSuccInPlace(node, replacementClosure); } else { @@ -746,8 +735,8 @@ } private static void transferEdges(final Graph graph, final DuplicationReplacement replacements, final Map newNodes, Node oldNode, Node node, Edges.Type type) { - NodeClass nodeClass = node.getNodeClass(); - NodeClass oldNodeClass = oldNode.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); + NodeClass oldNodeClass = oldNode.getNodeClass(); Edges oldEdges = oldNodeClass.getEdges(type); for (NodePosIterator oldIter = oldEdges.getIterable(oldNode).iterator(); oldIter.hasNext();) { Position pos = oldIter.nextPosition(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java --- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java Mon Feb 16 21:45:12 2015 +0100 @@ -33,7 +33,7 @@ private int currentIdIndex; private boolean needsForward; - public TypedGraphNodeIterator(NodeClass clazz, Graph graph) { + public TypedGraphNodeIterator(NodeClass clazz, Graph graph) { this.graph = graph; ids = clazz.iterableIds(); currentIdIndex = 0; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java --- a/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,6 +32,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.replacements.*; import com.oracle.graal.asm.amd64.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.nodes.*; import com.oracle.graal.hotspot.nodes.CompressionNode.CompressionOp; @@ -154,11 +155,12 @@ @NodeInfo private static final class LoadThroughPatchNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LoadThroughPatchNode.class); @Input protected ValueNode input; public LoadThroughPatchNode(ValueNode input) { - super(input.stamp()); + super(TYPE, input.stamp()); this.input = input; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Mon Feb 16 21:45:12 2015 +0100 @@ -134,7 +134,7 @@ setSaveRbp(((AMD64HotSpotLIRGenerator) gen).new SaveRbp(new NoOp(gen.getCurrentBlock(), gen.getResult().getLIR().getLIRforBlock(gen.getCurrentBlock()).size()))); append(getSaveRbp().placeholder); - for (ParameterNode param : graph.getNodes(ParameterNode.class)) { + for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) { Value paramValue = params[param.index()]; assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp())); setResult(param, gen.emitMove(paramValue)); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -34,12 +34,13 @@ @NodeInfo public final class AMD64RawNativeCallNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AMD64RawNativeCallNode.class); protected final JavaConstant functionPointer; @Input NodeInputList args; public AMD64RawNativeCallNode(Kind returnType, JavaConstant functionPointer, ValueNode[] args) { - super(StampFactory.forKind(returnType)); + super(TYPE, StampFactory.forKind(returnType)); this.functionPointer = functionPointer; this.args = new NodeInputList<>(this, args); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -184,7 +184,7 @@ StructuredGraph result = compile("getBoxedBoolean", true); assertDeepEquals(2, result.getNodes().filter(FloatingReadNode.class).count()); - assertDeepEquals(1, result.getNodes(PiNode.class).count()); + assertDeepEquals(1, result.getNodes(PiNode.TYPE).count()); assertDeepEquals(1, getConstantNodes(result).count()); ConstantNode constant = getConstantNodes(result).first(); assertDeepEquals(Kind.Long, constant.getKind()); @@ -195,7 +195,7 @@ public void testBoxedBoolean() { StructuredGraph result = compile("getBoxedBoolean", false); assertDeepEquals(0, result.getNodes().filter(FloatingReadNode.class).count()); - assertDeepEquals(0, result.getNodes(PiNode.class).count()); + assertDeepEquals(0, result.getNodes(PiNode.TYPE).count()); assertDeepEquals(1, getConstantNodes(result).count()); ConstantNode constant = getConstantNodes(result).first(); assertDeepEquals(Kind.Object, constant.getKind()); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java Mon Feb 16 21:45:12 2015 +0100 @@ -181,8 +181,8 @@ private void testConstantReturn(String name, Object value) { StructuredGraph result = test(name); - ReturnNode ret = result.getNodes(ReturnNode.class).first(); - assertDeepEquals(1, result.getNodes(ReturnNode.class).count()); + ReturnNode ret = result.getNodes(ReturnNode.TYPE).first(); + assertDeepEquals(1, result.getNodes(ReturnNode.TYPE).count()); assertDeepEquals(true, ret.result().isConstant()); assertDeepEquals(value, ret.result().asJavaConstant().asBoxedPrimitive()); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.compiler.test.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.nodes.*; import com.oracle.graal.hotspot.nodes.CompressionNode.CompressionOp; @@ -94,10 +95,11 @@ @NodeInfo private static final class ConstantFoldBarrier extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ConstantFoldBarrier.class); @Input protected ValueNode input; public ConstantFoldBarrier(ValueNode input) { - super(input.stamp()); + super(TYPE, input.stamp()); this.input = input; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeClassSubstitutionsTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeClassSubstitutionsTest.java Mon Feb 16 21:28:00 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.hotspot.test; - -import org.junit.*; - -import com.oracle.graal.graph.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.replacements.test.*; - -/** - * Tests HotSpot specific substitutions for {@link NodeClass}. - */ -public class HotSpotNodeClassSubstitutionsTest extends MethodSubstitutionTest { - - @Test - public void test() { - test("get", ValueNode.class); - } - - public static NodeClass get(Class c) { - return NodeClass.get(c); - } -} diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java --- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -40,7 +40,7 @@ test("getNodeClass", ConstantNode.forInt(42, graph)); } - public static NodeClass getNodeClass(Node n) { + public static NodeClass getNodeClass(Node n) { return n.getNodeClass(); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Mon Feb 16 21:45:12 2015 +0100 @@ -898,7 +898,6 @@ @HotSpotVMField(name = "Array::_length", type = "int", get = HotSpotVMField.Type.OFFSET) @Stable public int metaspaceArrayLengthOffset; @HotSpotVMField(name = "Array::_data[0]", type = "Klass*", get = HotSpotVMField.Type.OFFSET) @Stable public int metaspaceArrayBaseOffset; - @HotSpotVMField(name = "InstanceKlass::_graal_node_class", type = "oop", get = HotSpotVMField.Type.OFFSET) @Stable public int instanceKlassNodeClassOffset; @HotSpotVMField(name = "InstanceKlass::_source_file_name_index", type = "u2", get = HotSpotVMField.Type.OFFSET) @Stable public int instanceKlassSourceFileNameIndexOffset; @HotSpotVMField(name = "InstanceKlass::_init_state", type = "u1", get = HotSpotVMField.Type.OFFSET) @Stable public int instanceKlassInitStateOffset; @HotSpotVMField(name = "InstanceKlass::_constants", type = "ConstantPool*", get = HotSpotVMField.Type.OFFSET) @Stable public int instanceKlassConstantsOffset; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Mon Feb 16 21:45:12 2015 +0100 @@ -33,6 +33,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.debug.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.bridge.*; import com.oracle.graal.hotspot.meta.*; @@ -387,13 +388,14 @@ private static final LocationIdentity COUNTER_LOCATION = NamedLocationIdentity.mutable("COUNTER_LOCATION"); @NodeInfo(nameTemplate = "CounterIndex") - private static class CounterIndexNode extends FloatingNode implements LIRLowerable { + private static final class CounterIndexNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CounterIndexNode.class); protected final Object counter; protected final int countersSize; protected CounterIndexNode(Stamp stamp, DynamicCounterNode counter, int countersSize) { - super(stamp); + super(TYPE, stamp); this.countersSize = countersSize; this.counter = counter; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java Mon Feb 16 21:45:12 2015 +0100 @@ -356,7 +356,7 @@ // mirroring the calculations in c1_GraphBuilder.cpp (setup_osr_entry_block) int localsOffset = (graph.method().getMaxLocals() - 1) * 8; - for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.class)) { + for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.TYPE)) { int size = osrLocal.getKind().getSlotCount(); int offset = localsOffset - (osrLocal.index() + size - 1) * 8; IndexedLocationNode location = graph.unique(new IndexedLocationNode(ANY_LOCATION, offset, ConstantNode.forLong(0, graph), 1)); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMemoryAccessProviderImpl.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,7 +26,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; -import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.HotSpotVMConfig.CompressEncoding; @@ -107,8 +106,6 @@ assert expected == ((HotSpotResolvedObjectTypeImpl) metaspaceObject).mirror(); } else if (displacement == runtime.getConfig().arrayKlassComponentMirrorOffset) { assert expected == ((HotSpotResolvedObjectTypeImpl) metaspaceObject).mirror().getComponentType(); - } else if (displacement == runtime.getConfig().instanceKlassNodeClassOffset) { - assert expected == NodeClass.get(((HotSpotResolvedObjectTypeImpl) metaspaceObject).mirror()); } } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodDataAccessor.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodDataAccessor.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodDataAccessor.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,7 +26,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.meta.ProfilingInfo.TriState; -import com.oracle.graal.compiler.common.*; import com.oracle.graal.hotspot.*; /** @@ -70,12 +69,9 @@ } public static Tag getEnum(int value) { - for (Tag e : values()) { - if (e.value == value) { - return e; - } - } - throw GraalInternalError.shouldNotReachHere("unknown enum value " + value); + Tag result = values()[value]; + assert value == result.value; + return result; } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstant.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,7 +27,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; -import com.oracle.graal.graph.*; import com.oracle.graal.lir.*; /** @@ -62,14 +61,6 @@ int getIdentityHashCode(); /** - * Gets the result of {@link NodeClass#get(Class)} for the {@link Class} object represented by - * this constant. - * - * @return {@code null} if this constant does not represent a {@link Class} object - */ - JavaConstant getNodeClass(); - - /** * Gets the result of {@link Class#getComponentType()} for the {@link Class} object represented * by this constant. * diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotObjectConstantImpl.java Mon Feb 16 21:45:12 2015 +0100 @@ -28,7 +28,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; -import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.*; @@ -157,13 +156,6 @@ return System.identityHashCode(object); } - public JavaConstant getNodeClass() { - if (object instanceof Class) { - return HotSpotObjectConstantImpl.forObject(NodeClass.get((Class) object)); - } - return null; - } - public JavaConstant getComponentType() { if (object instanceof Class) { return HotSpotObjectConstantImpl.forObject(((Class) object).getComponentType()); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -38,6 +39,7 @@ @NodeInfo public final class AllocaNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AllocaNode.class); /** * The number of slots in block. */ @@ -51,7 +53,7 @@ protected final BitSet objects; public AllocaNode(int slots, Kind wordKind, BitSet objects) { - super(StampFactory.forKind(wordKind)); + super(TYPE, StampFactory.forKind(wordKind)); this.slots = slots; this.objects = objects; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,17 +22,19 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public abstract class ArrayRangeWriteBarrier extends WriteBarrier { + public static final NodeClass TYPE = NodeClass.get(ArrayRangeWriteBarrier.class); @Input ValueNode startIndex; @Input ValueNode length; - public ArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { - super(object, null, null, true); + protected ArrayRangeWriteBarrier(NodeClass c, ValueNode object, ValueNode startIndex, ValueNode length) { + super(c, object, null, null, true); this.startIndex = startIndex; this.length = length; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -40,10 +41,11 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class BeginLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorEnter, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(BeginLockScopeNode.class); protected int lockDepth; public BeginLockScopeNode(int lockDepth) { - super(null); + super(TYPE, null); this.lockDepth = lockDepth; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; @@ -34,10 +35,11 @@ @NodeInfo public final class CStringNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CStringNode.class); protected final String string; public CStringNode(String string) { - super(null); + super(TYPE, null); this.string = string; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.hotspot.replacements.*; import com.oracle.graal.nodeinfo.*; @@ -38,8 +39,10 @@ @NodeInfo public final class ClassCastNode extends MacroStateSplitNode implements Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(ClassCastNode.class); + public ClassCastNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java Mon Feb 16 21:45:12 2015 +0100 @@ -40,8 +40,10 @@ @NodeInfo public final class ClassGetClassLoader0Node extends MacroStateSplitNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassGetClassLoader0Node.class); + public ClassGetClassLoader0Node(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,8 +39,10 @@ @NodeInfo public final class ClassGetComponentTypeNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassGetComponentTypeNode.class); + public ClassGetComponentTypeNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,9 +37,10 @@ */ @NodeInfo public final class ClassGetModifiersNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassGetModifiersNode.class); public ClassGetModifiersNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,8 +39,10 @@ @NodeInfo public final class ClassGetSuperclassNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassGetSuperclassNode.class); + public ClassGetSuperclassNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,8 +38,10 @@ @NodeInfo public final class ClassIsArrayNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassIsArrayNode.class); + public ClassIsArrayNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,8 +38,10 @@ @NodeInfo public final class ClassIsInterfaceNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassIsInterfaceNode.class); + public ClassIsInterfaceNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,8 +38,10 @@ @NodeInfo public final class ClassIsPrimitiveNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(ClassIsPrimitiveNode.class); + public ClassIsPrimitiveNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getJavaClass() { diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.HotSpotVMConfig.CompressEncoding; @@ -42,6 +43,8 @@ @NodeInfo(nameTemplate = "{p#op/s}") public final class CompressionNode extends UnaryNode implements ConvertNode, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CompressionNode.class); + public enum CompressionOp { Compress, Uncompress @@ -51,7 +54,7 @@ protected final CompressEncoding encoding; public CompressionNode(CompressionOp op, ValueNode input, CompressEncoding encoding) { - super(mkStamp(op, input.stamp(), encoding), input); + super(TYPE, mkStamp(op, input.stamp(), encoding), input); this.op = op; this.encoding = encoding; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -28,6 +28,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; @@ -39,11 +40,12 @@ */ @NodeInfo public final class CurrentJavaThreadNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CurrentJavaThreadNode.class); protected LIRKind wordKind; public CurrentJavaThreadNode(Kind kind) { - super(StampFactory.forKind(kind)); + super(TYPE, StampFactory.forKind(kind)); this.wordKind = LIRKind.value(kind); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -35,11 +36,12 @@ */ @NodeInfo public final class CurrentLockNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CurrentLockNode.class); protected int lockDepth; public CurrentLockNode(int lockDepth) { - super(null); + super(TYPE, null); this.lockDepth = lockDepth; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -41,11 +42,12 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class DeoptimizationFetchUnrollInfoCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { + public static final NodeClass TYPE = NodeClass.get(DeoptimizationFetchUnrollInfoCallNode.class); @Input SaveAllRegistersNode registerSaver; protected final ForeignCallsProvider foreignCalls; public DeoptimizationFetchUnrollInfoCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver) { - super(StampFactory.forKind(Kind.fromJavaClass(FETCH_UNROLL_INFO.getResultType()))); + super(TYPE, StampFactory.forKind(Kind.fromJavaClass(FETCH_UNROLL_INFO.getResultType()))); this.registerSaver = (SaveAllRegistersNode) registerSaver; this.foreignCalls = foreignCalls; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -35,11 +36,12 @@ @NodeInfo(shortName = "DeoptCaller", nameTemplate = "DeoptCaller {p#reason/s}") public final class DeoptimizeCallerNode extends ControlSinkNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(DeoptimizeCallerNode.class); protected final DeoptimizationAction action; protected final DeoptimizationReason reason; public DeoptimizeCallerNode(DeoptimizationAction action, DeoptimizationReason reason) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.action = action; this.reason = reason; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,14 +23,17 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo -public class DeoptimizingStubCall extends DeoptimizingFixedWithNextNode { +public abstract class DeoptimizingStubCall extends DeoptimizingFixedWithNextNode { - public DeoptimizingStubCall(Stamp stamp) { - super(stamp); + public static final NodeClass TYPE = NodeClass.get(DeoptimizingStubCall.class); + + public DeoptimizingStubCall(NodeClass c, Stamp stamp) { + super(c, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -28,6 +28,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -41,10 +42,11 @@ @NodeInfo public final class DimensionsNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(DimensionsNode.class); protected final int rank; public DimensionsNode(int rank) { - super(null); + super(TYPE, null); this.rank = rank; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -40,6 +41,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class DirectCompareAndSwapNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(DirectCompareAndSwapNode.class); @Input ValueNode object; @Input ValueNode offset; @Input ValueNode expectedValue; @@ -48,7 +50,7 @@ protected final LocationIdentity locationIdentity; public DirectCompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) { - super(expected.stamp()); + super(TYPE, expected.stamp()); this.object = object; this.offset = offset; this.expectedValue = expected; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -34,10 +35,11 @@ * object. */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class EndLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorExit, MemoryCheckpoint.Single { +public final class EndLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorExit, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(EndLockScopeNode.class); public EndLockScopeNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -36,7 +37,8 @@ * {@link HotSpotBackend#UNPACK_FRAMES Deoptimization::unpack_frames}. */ @NodeInfo -public class EnterUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable { +public final class EnterUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(EnterUnpackFramesStackFrameNode.class); @Input ValueNode framePc; @Input ValueNode senderSp; @@ -44,7 +46,7 @@ @Input SaveAllRegistersNode registerSaver; public EnterUnpackFramesStackFrameNode(ValueNode framePc, ValueNode senderSp, ValueNode senderFp, ValueNode registerSaver) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.framePc = framePc; this.senderSp = senderSp; this.senderFp = senderFp; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,14 +22,16 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public class G1ArrayRangePostWriteBarrier extends ArrayRangeWriteBarrier { + public static final NodeClass TYPE = NodeClass.get(G1ArrayRangePostWriteBarrier.class); public G1ArrayRangePostWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { - super(object, startIndex, length); + super(TYPE, object, startIndex, length); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,14 +22,16 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public final class G1ArrayRangePreWriteBarrier extends ArrayRangeWriteBarrier { + public static final NodeClass TYPE = NodeClass.get(G1ArrayRangePreWriteBarrier.class); public G1ArrayRangePreWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { - super(object, startIndex, length); + super(TYPE, object, startIndex, length); } } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -29,10 +30,15 @@ @NodeInfo public class G1PostWriteBarrier extends WriteBarrier { + public static final NodeClass TYPE = NodeClass.get(G1PostWriteBarrier.class); protected final boolean alwaysNull; public G1PostWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) { - super(object, value, location, precise); + this(TYPE, object, value, location, precise, alwaysNull); + } + + protected G1PostWriteBarrier(NodeClass c, ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) { + super(c, object, value, location, precise); this.alwaysNull = alwaysNull; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -29,12 +30,14 @@ @NodeInfo public final class G1PreWriteBarrier extends WriteBarrier implements DeoptimizingNode.DeoptBefore { + public static final NodeClass TYPE = NodeClass.get(G1PreWriteBarrier.class); + @OptionalInput(InputType.State) FrameState stateBefore; protected final boolean nullCheck; protected final boolean doLoad; public G1PreWriteBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) { - super(object, expectedObject, location, true); + super(TYPE, object, expectedObject, location, true); this.doLoad = doLoad; this.nullCheck = nullCheck; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -34,11 +35,12 @@ */ @NodeInfo public final class G1ReferentFieldReadBarrier extends WriteBarrier { + public static final NodeClass TYPE = NodeClass.get(G1ReferentFieldReadBarrier.class); protected final boolean doLoad; public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) { - super(object, expectedObject, location, true); + super(TYPE, object, expectedObject, location, true); this.doLoad = doLoad; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -35,11 +36,12 @@ */ @NodeInfo public final class GetObjectAddressNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(GetObjectAddressNode.class); @Input ValueNode object; public GetObjectAddressNode(ValueNode obj) { - super(StampFactory.forKind(Kind.Long)); + super(TYPE, StampFactory.forKind(Kind.Long)); this.object = obj; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,13 +27,16 @@ import com.oracle.graal.api.code.CallingConvention.Type; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo -public class HotSpotDirectCallTargetNode extends DirectCallTargetNode { +public final class HotSpotDirectCallTargetNode extends DirectCallTargetNode { + public static final NodeClass TYPE = NodeClass.get(HotSpotDirectCallTargetNode.class); + public HotSpotDirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) { - super(arguments, returnStamp, signature, target, callType, invokeKind); + super(TYPE, arguments, returnStamp, signature, target, callType, invokeKind); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,17 +27,19 @@ import com.oracle.graal.api.code.CallingConvention.Type; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public final class HotSpotIndirectCallTargetNode extends IndirectCallTargetNode { + public static final NodeClass TYPE = NodeClass.get(HotSpotIndirectCallTargetNode.class); @Input ValueNode metaspaceMethod; public HotSpotIndirectCallTargetNode(ValueNode metaspaceMethod, ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) { - super(computedAddress, arguments, returnStamp, signature, target, callType, invokeKind); + super(TYPE, computedAddress, arguments, returnStamp, signature, target, callType, invokeKind); this.metaspaceMethod = metaspaceMethod; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,14 +35,15 @@ * exception handler in the caller's frame, removes the current frame and jumps to said handler. */ @NodeInfo -public class JumpToExceptionHandlerInCallerNode extends ControlSinkNode implements LIRLowerable { +public final class JumpToExceptionHandlerInCallerNode extends ControlSinkNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(JumpToExceptionHandlerInCallerNode.class); @Input ValueNode handlerInCallerPc; @Input ValueNode exception; @Input ValueNode exceptionPc; public JumpToExceptionHandlerInCallerNode(ValueNode handlerInCallerPc, ValueNode exception, ValueNode exceptionPc) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.handlerInCallerPc = handlerInCallerPc; this.exception = exception; this.exceptionPc = exceptionPc; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -34,12 +35,13 @@ * return address if its location is on the stack. */ @NodeInfo -public class LeaveCurrentStackFrameNode extends FixedWithNextNode implements LIRLowerable { +public final class LeaveCurrentStackFrameNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LeaveCurrentStackFrameNode.class); @Input SaveAllRegistersNode registerSaver; public LeaveCurrentStackFrameNode(ValueNode registerSaver) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.registerSaver = (SaveAllRegistersNode) registerSaver; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.nodeinfo.*; @@ -36,13 +37,14 @@ * is only used in {@link DeoptimizationStub}. */ @NodeInfo -public class LeaveDeoptimizedStackFrameNode extends FixedWithNextNode implements LIRLowerable { +public final class LeaveDeoptimizedStackFrameNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LeaveDeoptimizedStackFrameNode.class); @Input ValueNode frameSize; @Input ValueNode initialInfo; public LeaveDeoptimizedStackFrameNode(ValueNode frameSize, ValueNode initialInfo) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.frameSize = frameSize; this.initialInfo = initialInfo; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -34,12 +35,13 @@ * {@link HotSpotBackend#UNPACK_FRAMES Deoptimization::unpack_frames}. */ @NodeInfo -public class LeaveUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable { +public final class LeaveUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LeaveUnpackFramesStackFrameNode.class); @Input SaveAllRegistersNode registerSaver; public LeaveUnpackFramesStackFrameNode(ValueNode registerSaver) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.registerSaver = (SaveAllRegistersNode) registerSaver; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; @@ -31,8 +32,10 @@ @NodeInfo public final class LoadIndexedPointerNode extends LoadIndexedNode { + public static final NodeClass TYPE = NodeClass.get(LoadIndexedPointerNode.class); + public LoadIndexedPointerNode(Stamp stamp, ValueNode array, ValueNode index) { - super(stamp, array, index, Kind.Illegal); + super(TYPE, stamp, array, index, Kind.Illegal); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; @@ -36,9 +37,10 @@ */ @NodeInfo public final class MonitorCounterNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(MonitorCounterNode.class); public MonitorCounterNode() { - super(null); + super(TYPE, null); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.hotspot.word.*; @@ -40,13 +41,14 @@ @NodeInfo public final class NewArrayStubCall extends DeoptimizingStubCall implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(NewArrayStubCall.class); private static final Stamp defaultStamp = StampFactory.objectNonNull(); @Input ValueNode hub; @Input ValueNode length; public NewArrayStubCall(ValueNode hub, ValueNode length) { - super(defaultStamp); + super(TYPE, defaultStamp); this.hub = hub; this.length = length; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.hotspot.word.*; @@ -40,12 +41,13 @@ @NodeInfo public final class NewInstanceStubCall extends DeoptimizingStubCall implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(NewInstanceStubCall.class); private static final Stamp defaultStamp = StampFactory.objectNonNull(); @Input ValueNode hub; public NewInstanceStubCall(ValueNode hub) { - super(defaultStamp); + super(TYPE, defaultStamp); this.hub = hub; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -40,6 +41,7 @@ @NodeInfo public final class NewMultiArrayStubCall extends ForeignCallNode { + public static final NodeClass TYPE = NodeClass.get(NewMultiArrayStubCall.class); private static final Stamp defaultStamp = StampFactory.objectNonNull(); @Input ValueNode hub; @@ -47,7 +49,7 @@ protected final int rank; public NewMultiArrayStubCall(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode hub, int rank, ValueNode dims) { - super(foreignCalls, NEW_MULTI_ARRAY, defaultStamp); + super(TYPE, foreignCalls, NEW_MULTI_ARRAY, defaultStamp); this.hub = hub; this.rank = rank; this.dims = dims; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,12 +34,13 @@ * Modifies the return address of the current frame. */ @NodeInfo -public class PatchReturnAddressNode extends FixedWithNextNode implements LIRLowerable { +public final class PatchReturnAddressNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(PatchReturnAddressNode.class); @Input ValueNode address; public PatchReturnAddressNode(ValueNode address) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.address = address; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -31,13 +32,14 @@ import com.oracle.graal.word.*; @NodeInfo -public class PrefetchAllocateNode extends FixedWithNextNode implements LIRLowerable { +public final class PrefetchAllocateNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(PrefetchAllocateNode.class); @Input ValueNode distance; @Input ValueNode address; public PrefetchAllocateNode(ValueNode address, ValueNode distance) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.address = address; this.distance = distance; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,15 +35,16 @@ * A call to the runtime code implementing the uncommon trap logic. */ @NodeInfo -public class PushInterpreterFrameNode extends FixedWithNextNode implements LIRLowerable { +public final class PushInterpreterFrameNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(PushInterpreterFrameNode.class); @Input ValueNode framePc; @Input ValueNode frameSize; @Input ValueNode senderSp; @Input ValueNode initialInfo; public PushInterpreterFrameNode(ValueNode frameSize, ValueNode framePc, ValueNode senderSp, ValueNode initialInfo) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.frameSize = frameSize; this.framePc = framePc; this.senderSp = senderSp; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -35,12 +36,13 @@ * Saves all allocatable registers. */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class SaveAllRegistersNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { +public final class SaveAllRegistersNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(SaveAllRegistersNode.class); protected SaveRegistersOp saveRegistersOp; public SaveAllRegistersNode() { - super(StampFactory.forKind(Kind.Long)); + super(TYPE, StampFactory.forKind(Kind.Long)); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,14 +22,17 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo -public class SerialArrayRangeWriteBarrier extends ArrayRangeWriteBarrier { +public final class SerialArrayRangeWriteBarrier extends ArrayRangeWriteBarrier { + + public static final NodeClass TYPE = NodeClass.get(SerialArrayRangeWriteBarrier.class); public SerialArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) { - super(object, startIndex, length); + super(TYPE, object, startIndex, length); } } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -29,10 +30,15 @@ @NodeInfo public class SerialWriteBarrier extends WriteBarrier { + public static final NodeClass TYPE = NodeClass.get(SerialWriteBarrier.class); protected final boolean alwaysNull; public SerialWriteBarrier(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) { - super(object, null, location, precise); + this(TYPE, object, location, precise, alwaysNull); + } + + protected SerialWriteBarrier(NodeClass c, ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) { + super(c, object, null, location, precise); this.alwaysNull = alwaysNull; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,16 +23,18 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @NodeInfo(allowedUsageTypes = {InputType.Value, InputType.Anchor, InputType.Guard}) -public class SnippetAnchorNode extends FixedWithNextNode implements Simplifiable, GuardingNode { +public final class SnippetAnchorNode extends FixedWithNextNode implements Simplifiable, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(SnippetAnchorNode.class); public SnippetAnchorNode() { - super(StampFactory.object()); + super(TYPE, StampFactory.object()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,12 +31,13 @@ import com.oracle.graal.nodes.extended.*; @NodeInfo(allowedUsageTypes = {InputType.Association, InputType.Value}) -public class SnippetLocationProxyNode extends FloatingNode implements Canonicalizable { +public final class SnippetLocationProxyNode extends FloatingNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(SnippetLocationProxyNode.class); @Input(InputType.Unchecked) ValueNode location; public SnippetLocationProxyNode(ValueNode location) { - super(StampFactory.object()); + super(TYPE, StampFactory.object()); this.location = location; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,15 +38,16 @@ * Node for a {@linkplain ForeignCallDescriptor foreign} call from within a stub. */ @NodeInfo(nameTemplate = "StubForeignCall#{p#descriptor/s}", allowedUsageTypes = {InputType.Memory}) -public class StubForeignCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { +public final class StubForeignCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { + public static final NodeClass TYPE = NodeClass.get(StubForeignCallNode.class); @Input NodeInputList arguments; protected final ForeignCallsProvider foreignCalls; protected final ForeignCallDescriptor descriptor; public StubForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { - super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); + super(TYPE, StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); this.arguments = new NodeInputList<>(this, arguments); this.descriptor = descriptor; this.foreignCalls = foreignCalls; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.stubs.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -30,11 +31,13 @@ * Start node for a {@link Stub}'s graph. */ @NodeInfo -public class StubStartNode extends StartNode { +public final class StubStartNode extends StartNode { + public static final NodeClass TYPE = NodeClass.get(StubStartNode.class); protected final Stub stub; public StubStartNode(Stub stub) { + super(TYPE); this.stub = stub; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.lir.StandardOp.SaveRegistersOp; import com.oracle.graal.nodeinfo.*; @@ -39,14 +40,15 @@ * A call to the runtime code implementing the uncommon trap logic. */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class UncommonTrapCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { +public final class UncommonTrapCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi { + public static final NodeClass TYPE = NodeClass.get(UncommonTrapCallNode.class); @Input ValueNode trapRequest; @Input SaveAllRegistersNode registerSaver; protected final ForeignCallsProvider foreignCalls; public UncommonTrapCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) { - super(StampFactory.forKind(Kind.fromJavaClass(UNCOMMON_TRAP.getResultType()))); + super(TYPE, StampFactory.forKind(Kind.fromJavaClass(UNCOMMON_TRAP.getResultType()))); this.trapRequest = trapRequest; this.registerSaver = (SaveAllRegistersNode) registerSaver; this.foreignCalls = foreignCalls; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -38,13 +39,14 @@ * {@linkplain Log#printf(String, long) formatted} error message specified. */ @NodeInfo -public class VMErrorNode extends DeoptimizingStubCall implements LIRLowerable { +public final class VMErrorNode extends DeoptimizingStubCall implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(VMErrorNode.class); protected final String format; @Input ValueNode value; public VMErrorNode(String format, ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.format = format; this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -31,13 +32,14 @@ @NodeInfo public abstract class WriteBarrier extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(WriteBarrier.class); @Input protected ValueNode object; @OptionalInput protected ValueNode value; @OptionalInput(InputType.Association) protected LocationNode location; protected final boolean precise; - public WriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise) { - super(StampFactory.forVoid()); + protected WriteBarrier(NodeClass c, ValueNode object, ValueNode value, LocationNode location, boolean precise) { + super(c, StampFactory.forVoid()); this.object = object; this.value = value; this.location = location; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -49,7 +49,7 @@ Debug.dump(graph, "OnStackReplacement initial"); EntryMarkerNode osr; do { - NodeIterable osrNodes = graph.getNodes(EntryMarkerNode.class); + NodeIterable osrNodes = graph.getNodes(EntryMarkerNode.TYPE); osr = osrNodes.first(); if (osr == null) { throw new BailoutException("No OnStackReplacementNode generated"); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -34,8 +34,10 @@ @NodeInfo public final class CallSiteTargetNode extends MacroStateSplitNode implements Canonicalizable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(CallSiteTargetNode.class); + public CallSiteTargetNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private ValueNode getCallSite() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; @@ -31,9 +32,10 @@ @NodeInfo public final class CardTableAddressNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CardTableAddressNode.class); public CardTableAddressNode() { - super(StampFactory.forKind(Kind.Long)); + super(TYPE, StampFactory.forKind(Kind.Long)); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; @@ -31,9 +32,10 @@ @NodeInfo public final class CardTableShiftNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CardTableShiftNode.class); public CardTableShiftNode() { - super(StampFactory.intValue()); + super(TYPE, StampFactory.intValue()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -43,6 +43,7 @@ */ @NodeInfo public final class ClassGetHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode { + public static final NodeClass TYPE = NodeClass.get(ClassGetHubNode.class); @Input protected ValueNode clazz; public ClassGetHubNode(ValueNode clazz) { @@ -50,7 +51,7 @@ } public ClassGetHubNode(ValueNode clazz, ValueNode guard) { - super(KlassPointerStamp.klass(), (GuardingNode) guard); + super(TYPE, KlassPointerStamp.klass(), (GuardingNode) guard); this.clazz = clazz; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.replacements.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.lir.*; import com.oracle.graal.nodeinfo.*; @@ -47,8 +48,10 @@ @NodeInfo public static final class CompositeValueClassGetNode extends PureFunctionMacroNode { + public static final NodeClass TYPE = NodeClass.get(CompositeValueClassGetNode.class); + public CompositeValueClassGetNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java Mon Feb 16 21:28:00 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.hotspot.replacements; - -import static com.oracle.graal.compiler.common.GraalOptions.*; - -import com.oracle.graal.api.meta.*; -import com.oracle.graal.api.replacements.*; -import com.oracle.graal.graph.*; -import com.oracle.graal.hotspot.meta.*; -import com.oracle.graal.nodeinfo.*; -import com.oracle.graal.nodes.*; -import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.replacements.nodes.*; - -/** - * Substitutions for improving the performance of {@link NodeClass#get}. - */ -@ClassSubstitution(NodeClass.class) -public class HotSpotNodeClassSubstitutions { - - /** - * A macro node for calls to {@link NodeClass#get(Class)}. It can use the compiler's knowledge - * about node classes to replace itself with a constant value for a constant {@link Class} - * parameter. - */ - @NodeInfo - public static class NodeClassGetNode extends PureFunctionMacroNode { - - public NodeClassGetNode(Invoke invoke) { - super(invoke); - } - - @Override - protected JavaConstant evaluate(JavaConstant param, MetaAccessProvider metaAccess) { - if (param.isNull() || ImmutableCode.getValue()) { - return null; - } - HotSpotObjectConstant c = (HotSpotObjectConstant) param; - return c.getNodeClass(); - } - } - - /** - * NOTE: A {@link MethodSubstitution} similar to - * {@link HotSpotNodeSubstitutions#getNodeClass(Node)} is not possible here because there is no - * guarantee that {@code c} is initialized (accessing a Class literal in Java is not a class - * initialization barrier). - */ - @MacroSubstitution(isStatic = true, forced = true, macro = NodeClassGetNode.class) - public static native NodeClass get(Class c); -} diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.java Mon Feb 16 21:28:00 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package com.oracle.graal.hotspot.replacements; - -import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; -import static com.oracle.graal.nodes.PiNode.*; - -import com.oracle.graal.api.replacements.*; -import com.oracle.graal.graph.*; -import com.oracle.graal.hotspot.word.*; -import com.oracle.graal.word.*; - -@ClassSubstitution(Node.class) -public class HotSpotNodeSubstitutions { - - /** - * Gets the value of the {@code InstanceKlass::_graal_node_class} field from the InstanceKlass - * pointed to by {@code node}'s header. - */ - @MethodSubstitution(isStatic = false) - public static NodeClass getNodeClass(final Node node) { - // HotSpot creates the NodeClass for each Node subclass while initializing it - // so we are guaranteed to read a non-null value here. As long as NodeClass - // is final, the stamp of the PiNode below will automatically be exact. - KlassPointer klass = loadHub(node); - return piCastNonNull(klass.readObject(Word.signed(instanceKlassNodeClassOffset()), KLASS_NODE_CLASS), NodeClass.class); - } -} diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Mon Feb 16 21:45:12 2015 +0100 @@ -661,13 +661,6 @@ return config().arrayKlassOffset; } - public static final LocationIdentity KLASS_NODE_CLASS = NamedLocationIdentity.immutable("KlassNodeClass"); - - @Fold - public static int instanceKlassNodeClassOffset() { - return config().instanceKlassNodeClassOffset; - } - public static final LocationIdentity CLASS_MIRROR_LOCATION = NamedLocationIdentity.immutable("Klass::_java_mirror"); @Fold diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotSubstitutions.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,7 +32,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.replacements.*; import com.oracle.graal.api.runtime.*; -import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.bridge.*; import com.oracle.graal.lir.*; import com.oracle.graal.nodes.spi.*; @@ -63,8 +62,6 @@ replacements.registerSubstitutions(Class.class, HotSpotClassSubstitutions.class); replacements.registerSubstitutions(CRC32.class, CRC32Substitutions.class); replacements.registerSubstitutions(Reflection.class, ReflectionSubstitutions.class); - replacements.registerSubstitutions(NodeClass.class, HotSpotNodeClassSubstitutions.class); - replacements.registerSubstitutions(Node.class, HotSpotNodeSubstitutions.class); replacements.registerSubstitutions(CompositeValueClass.class, CompositeValueClassSubstitutions.class); replacements.registerSubstitutions(CompilerToVMImpl.class, CompilerToVMImplSubstitutions.class); replacements.registerSubstitutions(new NamedType("com.sun.crypto.provider.AESCrypt"), AESCryptSubstitutions.class); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,11 +38,12 @@ * also used by {@link ClassGetHubNode} to eliminate chains of {@code klass._java_mirror._klass}. */ @NodeInfo -public class HubGetClassNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode { +public final class HubGetClassNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode { + public static final NodeClass TYPE = NodeClass.get(HubGetClassNode.class); @Input protected ValueNode hub; public HubGetClassNode(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode hub) { - super(StampFactory.declaredNonNull(metaAccess.lookupJavaType(Class.class)), null); + super(TYPE, StampFactory.declaredNonNull(metaAccess.lookupJavaType(Class.class)), null); this.hub = hub; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,8 +38,9 @@ * information in {@code klass}. */ @NodeInfo -public class KlassLayoutHelperNode extends FloatingGuardedNode implements Canonicalizable, Lowerable { +public final class KlassLayoutHelperNode extends FloatingGuardedNode implements Canonicalizable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(KlassLayoutHelperNode.class); @Input protected ValueNode klass; protected final HotSpotVMConfig config; @@ -48,7 +49,7 @@ } public KlassLayoutHelperNode(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass, ValueNode guard) { - super(StampFactory.forKind(Kind.Int), (GuardingNode) guard); + super(TYPE, StampFactory.forKind(Kind.Int), (GuardingNode) guard); this.klass = klass; this.config = config; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ */ @NodeInfo public final class MethodHandleNode extends MacroStateSplitNode implements Simplifiable { + public static final NodeClass TYPE = NodeClass.get(MethodHandleNode.class); // Replacement method data protected ResolvedJavaMethod replacementTargetMethod; @@ -51,7 +52,7 @@ @Input NodeInputList replacementArguments; public MethodHandleNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); MethodCallTargetNode callTarget = (MethodCallTargetNode) invoke.callTarget(); // See if we need to save some replacement method data. if (callTarget instanceof SelfReplacingMethodCallTargetNode) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Mon Feb 16 21:45:12 2015 +0100 @@ -504,7 +504,7 @@ StructuredGraph inlineeGraph = providers.getReplacements().getSnippet(initCounter.getMethod()); InliningUtil.inline(invoke, inlineeGraph, false, null); - List rets = graph.getNodes(ReturnNode.class).snapshot(); + List rets = graph.getNodes(ReturnNode.TYPE).snapshot(); for (ReturnNode ret : rets) { returnType = checkCounter.getMethod().getSignature().getReturnType(checkCounter.getMethod().getDeclaringClass()); String msg = "unbalanced monitors in " + graph.method().format("%H.%n(%p)") + ", count = %d"; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.StructuredGraph.AllowAssumptions; @@ -39,10 +40,12 @@ import com.oracle.graal.replacements.nodes.*; @NodeInfo -public class ObjectCloneNode extends BasicObjectCloneNode implements VirtualizableAllocation, ArrayLengthProvider { +public final class ObjectCloneNode extends BasicObjectCloneNode implements VirtualizableAllocation, ArrayLengthProvider { + + public static final NodeClass TYPE = NodeClass.get(ObjectCloneNode.class); public ObjectCloneNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,10 +35,12 @@ import com.oracle.graal.replacements.nodes.*; @NodeInfo -public class ReflectionGetCallerClassNode extends MacroStateSplitNode implements Canonicalizable, Lowerable { +public final class ReflectionGetCallerClassNode extends MacroStateSplitNode implements Canonicalizable, Lowerable { + + public static final NodeClass TYPE = NodeClass.get(ReflectionGetCallerClassNode.class); public ReflectionGetCallerClassNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,16 +25,19 @@ import static com.oracle.graal.compiler.common.GraalOptions.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.replacements.nodes.*; @NodeInfo -public class SystemIdentityHashCodeNode extends PureFunctionMacroNode { +public final class SystemIdentityHashCodeNode extends PureFunctionMacroNode { + + public static final NodeClass TYPE = NodeClass.get(SystemIdentityHashCodeNode.class); public SystemIdentityHashCodeNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.nodes.*; @@ -41,6 +42,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class ArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(ArrayCopyCallNode.class); @Input ValueNode src; @Input ValueNode srcPos; @Input ValueNode dest; @@ -70,7 +72,7 @@ protected ArrayCopyCallNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, boolean aligned, boolean disjoint, boolean uninitialized, HotSpotGraalRuntimeProvider runtime) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); assert elementKind != null; this.src = src; this.srcPos = srcPos; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.debug.*; import com.oracle.graal.debug.Debug.Scope; +import com.oracle.graal.graph.*; import com.oracle.graal.loop.phases.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -40,8 +41,10 @@ @NodeInfo public final class ArrayCopyNode extends BasicArrayCopyNode implements Virtualizable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(ArrayCopyNode.class); + public ArrayCopyNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } private StructuredGraph selectSnippet(LoweringTool tool, final Replacements replacements) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.nodes.*; @@ -40,6 +41,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory, InputType.Value}) public final class CheckcastArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(CheckcastArrayCopyCallNode.class); @Input ValueNode src; @Input ValueNode srcPos; @Input ValueNode dest; @@ -54,7 +56,7 @@ protected CheckcastArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode superCheckOffset, ValueNode destElemKlass, boolean uninit) { - super(StampFactory.forKind(Kind.Int)); + super(TYPE, StampFactory.forKind(Kind.Int)); this.src = src; this.srcPos = srcPos; this.dest = dest; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -33,8 +34,9 @@ import com.oracle.graal.replacements.SnippetTemplate.Arguments; @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single { +public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(UnsafeArrayCopyNode.class); @Input ValueNode src; @Input ValueNode srcPos; @Input ValueNode dest; @@ -45,7 +47,7 @@ protected Kind elementKind; public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); assert layoutHelper == null || elementKind == null; this.src = src; this.srcPos = srcPos; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; @@ -34,12 +35,13 @@ * {@link HotSpotWordTypeRewriterPhase}. */ @NodeInfo -public class PointerCastNode extends FloatingNode implements LIRLowerable { +public final class PointerCastNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(PointerCastNode.class); @Input ValueNode input; public PointerCastNode(Stamp stamp, ValueNode input) { - super(stamp); + super(TYPE, stamp); this.input = input; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -136,7 +136,7 @@ parser.connectLoopEndToBegin(); // remove dead parameters - for (ParameterNode param : currentGraph.getNodes(ParameterNode.class)) { + for (ParameterNode param : currentGraph.getNodes(ParameterNode.TYPE)) { if (param.hasNoUsages()) { assert param.inputs().isEmpty(); param.safeDelete(); @@ -1456,7 +1456,7 @@ * */ private void connectLoopEndToBegin() { - for (LoopBeginNode begin : currentGraph.getNodes(LoopBeginNode.class)) { + for (LoopBeginNode begin : currentGraph.getNodes(LoopBeginNode.TYPE)) { if (begin.loopEnds().isEmpty()) { assert begin.forwardEndCount() == 1; currentGraph.reduceDegenerateLoopBegin(begin); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeProcessor.java --- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeProcessor.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeProcessor.java Mon Feb 16 21:45:12 2015 +0100 @@ -133,6 +133,18 @@ // NodeInfo.class.getSimpleName()); // continue; } + boolean found = false; + for (Element e : typeElement.getEnclosedElements()) { + if (e.getKind() == ElementKind.FIELD) { + if (e.getSimpleName().toString().equals("TYPE")) { + found = true; + break; + } + } + } + if (!found) { + errorMessage(element, "%s annotated class must have a field named TYPE", NodeInfo.class.getSimpleName()); + } if (!typeElement.equals(verifier.Node) && !modifiers.contains(Modifier.ABSTRACT)) { verifier.verify(typeElement); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,12 +38,14 @@ @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor}) public abstract class AbstractBeginNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, GuardingNode, AnchoringNode, IterableNodeType { - public AbstractBeginNode() { - super(StampFactory.forVoid()); + public static final NodeClass TYPE = NodeClass.get(AbstractBeginNode.class); + + protected AbstractBeginNode(NodeClass c) { + this(c, StampFactory.forVoid()); } - public AbstractBeginNode(Stamp stamp) { - super(stamp); + protected AbstractBeginNode(NodeClass c, Stamp stamp) { + super(c, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,14 +36,11 @@ @NodeInfo public abstract class AbstractDeoptimizeNode extends ControlSinkNode implements IterableNodeType, DeoptimizingNode.DeoptBefore { + public static final NodeClass TYPE = NodeClass.get(AbstractDeoptimizeNode.class); @OptionalInput(InputType.State) FrameState stateBefore; - public AbstractDeoptimizeNode() { - super(StampFactory.forVoid()); - } - - public AbstractDeoptimizeNode(FrameState stateBefore) { - super(StampFactory.forVoid()); + protected AbstractDeoptimizeNode(NodeClass c, FrameState stateBefore) { + super(c, StampFactory.forVoid()); this.stateBefore = stateBefore; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,8 +32,10 @@ @NodeInfo public abstract class AbstractEndNode extends FixedNode implements IterableNodeType, LIRLowerable { - protected AbstractEndNode() { - super(StampFactory.forVoid()); + public static final NodeClass TYPE = NodeClass.get(AbstractEndNode.class); + + protected AbstractEndNode(NodeClass c) { + super(c, StampFactory.forVoid()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.extended.*; @@ -32,6 +33,7 @@ @NodeInfo public abstract class AbstractFixedGuardNode extends DeoptimizingFixedWithNextNode implements Simplifiable, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(AbstractFixedGuardNode.class); @Input(InputType.Condition) protected LogicNode condition; protected final DeoptimizationReason reason; protected final DeoptimizationAction action; @@ -46,8 +48,8 @@ condition = x; } - protected AbstractFixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) { - super(StampFactory.forVoid()); + protected AbstractFixedGuardNode(NodeClass c, LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) { + super(c, StampFactory.forVoid()); this.action = action; this.negated = negated; this.condition = condition; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,16 +23,18 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; @NodeInfo public abstract class AbstractLocalNode extends FloatingNode { + public static final NodeClass TYPE = NodeClass.get(AbstractLocalNode.class); protected final int index; - public AbstractLocalNode(int index, Stamp stamp) { - super(stamp); + protected AbstractLocalNode(NodeClass c, int index, Stamp stamp) { + super(c, stamp); this.index = index; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.extended.*; @@ -32,11 +33,13 @@ @NodeInfo public abstract class AbstractMemoryCheckpoint extends AbstractStateSplit implements MemoryCheckpoint { - protected AbstractMemoryCheckpoint(Stamp stamp) { - super(stamp); + public static final NodeClass TYPE = NodeClass.get(AbstractMemoryCheckpoint.class); + + protected AbstractMemoryCheckpoint(NodeClass c, Stamp stamp) { + this(c, stamp, null); } - protected AbstractMemoryCheckpoint(Stamp stamp, FrameState stateAfter) { - super(stamp, stateAfter); + protected AbstractMemoryCheckpoint(NodeClass c, Stamp stamp, FrameState stateAfter) { + super(c, stamp, stateAfter); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -39,7 +39,10 @@ */ @NodeInfo(allowedUsageTypes = {InputType.Association}) public abstract class AbstractMergeNode extends BeginStateSplitNode implements IterableNodeType, LIRLowerable { - protected AbstractMergeNode() { + public static final NodeClass TYPE = NodeClass.get(AbstractMergeNode.class); + + protected AbstractMergeNode(NodeClass c) { + super(c); } @Input(InputType.Association) protected NodeInputList ends = new NodeInputList<>(this); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; /** @@ -31,6 +32,7 @@ @NodeInfo public abstract class AbstractStateSplit extends FixedWithNextNode implements StateSplit { + public static final NodeClass TYPE = NodeClass.get(AbstractStateSplit.class); @OptionalInput(InputType.State) protected FrameState stateAfter; public FrameState stateAfter() { @@ -47,12 +49,12 @@ return true; } - public AbstractStateSplit(Stamp stamp) { - super(stamp); + protected AbstractStateSplit(NodeClass c, Stamp stamp) { + this(c, stamp, null); } - public AbstractStateSplit(Stamp stamp, FrameState stateAfter) { - super(stamp); + protected AbstractStateSplit(NodeClass c, Stamp stamp, FrameState stateAfter) { + super(c, stamp); this.stateAfter = stateAfter; } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,17 +23,20 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public final class BeginNode extends AbstractBeginNode { + public static final NodeClass TYPE = NodeClass.get(BeginNode.class); + public BeginNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } public BeginNode(Stamp stamp) { - super(stamp); + super(TYPE, stamp); } public static AbstractBeginNode begin(FixedNode with) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; /** @@ -35,13 +36,15 @@ @NodeInfo public abstract class BeginStateSplitNode extends AbstractBeginNode implements StateSplit { + public static final NodeClass TYPE = NodeClass.get(BeginStateSplitNode.class); @OptionalInput(InputType.State) protected FrameState stateAfter; - public BeginStateSplitNode() { + protected BeginStateSplitNode(NodeClass c) { + super(c); } - protected BeginStateSplitNode(Stamp stamp) { - super(stamp); + protected BeginStateSplitNode(NodeClass c, Stamp stamp) { + super(c, stamp); } public FrameState stateAfter() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -29,6 +30,7 @@ @NodeInfo public abstract class BinaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(BinaryOpLogicNode.class); @Input protected ValueNode x; @Input protected ValueNode y; @@ -40,7 +42,8 @@ return y; } - public BinaryOpLogicNode(ValueNode x, ValueNode y) { + public BinaryOpLogicNode(NodeClass c, ValueNode x, ValueNode y) { + super(c); assert x != null && y != null && x.getKind() == y.getKind(); this.x = x; this.y = y; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -48,10 +48,11 @@ @NodeInfo public final class BreakpointNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(BreakpointNode.class); @Input NodeInputList arguments; public BreakpointNode(ValueNode[] arguments) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.arguments = new NodeInputList<>(this, arguments); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,6 +32,8 @@ @NodeInfo(allowedUsageTypes = {InputType.Extension}) public abstract class CallTargetNode extends ValueNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(CallTargetNode.class); + public enum InvokeKind { Interface(false), Special(true), @@ -65,15 +67,15 @@ protected ResolvedJavaMethod targetMethod; protected InvokeKind invokeKind; - public CallTargetNode(ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) { - super(StampFactory.forVoid()); + protected CallTargetNode(NodeClass c, ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) { + super(c, StampFactory.forVoid()); this.targetMethod = targetMethod; this.invokeKind = invokeKind; this.arguments = new NodeInputList<>(this, arguments); } - public CallTargetNode(List arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) { - super(StampFactory.forVoid()); + protected CallTargetNode(NodeClass c, List arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) { + super(c, StampFactory.forVoid()); this.targetMethod = targetMethod; this.invokeKind = invokeKind; this.arguments = new NodeInputList<>(this, arguments); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,6 +32,7 @@ @NodeInfo(nameTemplate = "ConditionAnchor(!={p#negated})", allowedUsageTypes = {InputType.Guard}) public final class ConditionAnchorNode extends FixedWithNextNode implements Canonicalizable.Unary, Lowerable, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(ConditionAnchorNode.class); @Input(InputType.Condition) LogicNode condition; protected boolean negated; @@ -40,7 +41,7 @@ } public ConditionAnchorNode(LogicNode condition, boolean negated) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.negated = negated; this.condition = condition; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -41,6 +41,7 @@ @NodeInfo(shortName = "Const", nameTemplate = "Const({p#rawvalue})") public final class ConstantNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ConstantNode.class); private static final DebugMetric ConstantNodes = Debug.metric("ConstantNodes"); protected final Constant value; @@ -56,7 +57,7 @@ * @param value the constant */ public ConstantNode(Constant value, Stamp stamp) { - super(stamp); + super(TYPE, stamp); assert stamp != null && isCompatible(value, stamp); this.value = value; ConstantNodes.increment(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,12 +23,14 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public abstract class ControlSinkNode extends FixedNode { + public static final NodeClass TYPE = NodeClass.get(ControlSinkNode.class); - public ControlSinkNode(Stamp stamp) { - super(stamp); + protected ControlSinkNode(NodeClass c, Stamp stamp) { + super(c, stamp); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,9 +32,10 @@ */ @NodeInfo public abstract class ControlSplitNode extends FixedNode implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(ControlSplitNode.class); - public ControlSplitNode(Stamp stamp) { - super(stamp); + protected ControlSplitNode(NodeClass c, Stamp stamp) { + super(c, stamp); } public abstract double probability(AbstractBeginNode successor); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,12 +23,14 @@ package com.oracle.graal.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "Deopt", nameTemplate = "Deopt {p#reason/s}") public final class DeoptimizeNode extends AbstractDeoptimizeNode implements Lowerable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(DeoptimizeNode.class); protected final DeoptimizationAction action; protected final DeoptimizationReason reason; protected final int debugId; @@ -39,7 +41,7 @@ } public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, int debugId, JavaConstant speculation, FrameState stateBefore) { - super(stateBefore); + super(TYPE, stateBefore); assert action != null; assert reason != null; assert speculation.getKind() == Kind.Object; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,19 +23,21 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public abstract class DeoptimizingFixedWithNextNode extends FixedWithNextNode implements DeoptimizingNode.DeoptBefore { + public static final NodeClass TYPE = NodeClass.get(DeoptimizingFixedWithNextNode.class); @OptionalInput(InputType.State) protected FrameState stateBefore; - public DeoptimizingFixedWithNextNode(Stamp stamp) { - super(stamp); + protected DeoptimizingFixedWithNextNode(NodeClass c, Stamp stamp) { + super(c, stamp); } - public DeoptimizingFixedWithNextNode(Stamp stamp, FrameState stateBefore) { - super(stamp); + protected DeoptimizingFixedWithNextNode(NodeClass c, Stamp stamp, FrameState stateBefore) { + super(c, stamp); this.stateBefore = stateBefore; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,13 +27,16 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo -public class DirectCallTargetNode extends LoweredCallTargetNode { +public abstract class DirectCallTargetNode extends LoweredCallTargetNode { - public DirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) { - super(arguments, returnStamp, signature, target, callType, invokeKind); + public static final NodeClass TYPE = NodeClass.get(DirectCallTargetNode.class); + + protected DirectCallTargetNode(NodeClass c, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) { + super(c, arguments, returnStamp, signature, target, callType, invokeKind); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; /** @@ -31,11 +32,14 @@ @NodeInfo public class DispatchBeginNode extends BeginStateSplitNode { + public static final NodeClass TYPE = NodeClass.get(DispatchBeginNode.class); + public DispatchBeginNode() { + super(TYPE); } - public DispatchBeginNode(Stamp stamp) { - super(stamp); + protected DispatchBeginNode(NodeClass c, Stamp stamp) { + super(c, stamp); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -30,10 +30,12 @@ @NodeInfo public final class DynamicDeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable, Lowerable, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(DynamicDeoptimizeNode.class); @Input ValueNode actionAndReason; @Input ValueNode speculation; public DynamicDeoptimizeNode(ValueNode actionAndReason, ValueNode speculation) { + super(TYPE, null); this.actionAndReason = actionAndReason; this.speculation = speculation; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,11 +22,15 @@ */ package com.oracle.graal.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo(allowedUsageTypes = {InputType.Association}) -public class EndNode extends AbstractEndNode { +public final class EndNode extends AbstractEndNode { + public static final NodeClass TYPE = NodeClass.get(EndNode.class); + public EndNode() { + super(TYPE); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,8 +34,10 @@ */ @NodeInfo(allowedUsageTypes = {InputType.Association}) public final class EntryMarkerNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(EntryMarkerNode.class); public EntryMarkerNode() { + super(TYPE); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -31,13 +31,14 @@ @NodeInfo(nameTemplate = "FixedGuard(!={p#negated}) {p#reason/s}", allowedUsageTypes = {InputType.Guard}) public final class FixedGuardNode extends AbstractFixedGuardNode implements Lowerable, IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(FixedGuardNode.class); public FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) { this(condition, deoptReason, action, false); } public FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) { - super(condition, deoptReason, action, negated); + super(TYPE, condition, deoptReason, action, negated); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,13 +23,15 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public abstract class FixedNode extends ValueNode { + public static final NodeClass TYPE = NodeClass.get(FixedNode.class); - public FixedNode(Stamp stamp) { - super(stamp); + protected FixedNode(NodeClass c, Stamp stamp) { + super(c, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; /** @@ -31,6 +32,7 @@ */ @NodeInfo public abstract class FixedWithNextNode extends FixedNode { + public static final NodeClass TYPE = NodeClass.get(FixedWithNextNode.class); @Successor protected FixedNode next; @@ -43,8 +45,8 @@ next = x; } - public FixedWithNextNode(Stamp stamp) { - super(stamp); + public FixedWithNextNode(NodeClass c, Stamp stamp) { + super(c, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,21 +23,23 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.extended.*; @NodeInfo public abstract class FloatingAnchoredNode extends FloatingNode { + public static final NodeClass TYPE = NodeClass.get(FloatingAnchoredNode.class); @Input(InputType.Anchor) protected AnchoringNode anchor; - public FloatingAnchoredNode(Stamp stamp) { - super(stamp); + public FloatingAnchoredNode(NodeClass c, Stamp stamp) { + super(c, stamp); } - public FloatingAnchoredNode(Stamp stamp, AnchoringNode anchor) { - super(stamp); + public FloatingAnchoredNode(NodeClass c, Stamp stamp, AnchoringNode anchor) { + super(c, stamp); this.anchor = anchor; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,21 +23,23 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.extended.*; @NodeInfo public abstract class FloatingGuardedNode extends FloatingNode implements GuardedNode { + public static final NodeClass TYPE = NodeClass.get(FloatingGuardedNode.class); @OptionalInput(InputType.Guard) protected GuardingNode guard; - public FloatingGuardedNode(Stamp stamp) { - super(stamp); + protected FloatingGuardedNode(NodeClass c, Stamp stamp) { + super(c, stamp); } - public FloatingGuardedNode(Stamp stamp, GuardingNode guard) { - super(stamp); + protected FloatingGuardedNode(NodeClass c, Stamp stamp, GuardingNode guard) { + super(c, stamp); this.guard = guard; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Mon Feb 16 21:45:12 2015 +0100 @@ -41,7 +41,8 @@ * This can be used as debug or deoptimization information. */ @NodeInfo(nameTemplate = "FrameState@{p#method/s}:{p#bci}") -public class FrameState extends VirtualState implements IterableNodeType { +public final class FrameState extends VirtualState implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(FrameState.class); private static final DebugMetric METRIC_FRAMESTATE_COUNT = Debug.metric("FrameStateCount"); @@ -76,6 +77,7 @@ public FrameState(FrameState outerFrameState, ResolvedJavaMethod method, int bci, int localsSize, int stackSize, int lockSize, boolean rethrowException, boolean duringCall, List monitorIds, List virtualObjectMappings) { + super(TYPE); assert stackSize >= 0; this.outerFrameState = outerFrameState; this.method = method; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.api.code.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -30,11 +31,12 @@ * Nodes of this type are inserted into the graph to denote points of interest to debugging. */ @NodeInfo -public class FullInfopointNode extends InfopointNode implements LIRLowerable, NodeWithState { +public final class FullInfopointNode extends InfopointNode implements LIRLowerable, NodeWithState { + public static final NodeClass TYPE = NodeClass.get(FullInfopointNode.class); @Input(InputType.State) FrameState state; public FullInfopointNode(InfopointReason reason, FrameState state) { - super(reason); + super(TYPE, reason); this.state = state; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -44,6 +44,7 @@ @NodeInfo(nameTemplate = "Guard(!={p#negated}) {p#reason/s}", allowedUsageTypes = {InputType.Guard}) public class GuardNode extends FloatingAnchoredNode implements Canonicalizable, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(GuardNode.class); @Input(InputType.Condition) protected LogicNode condition; protected final DeoptimizationReason reason; protected JavaConstant speculation; @@ -51,7 +52,11 @@ protected boolean negated; public GuardNode(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) { - super(StampFactory.forVoid(), anchor); + this(TYPE, condition, anchor, reason, action, negated, speculation); + } + + protected GuardNode(NodeClass c, LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) { + super(c, StampFactory.forVoid(), anchor); this.condition = condition; this.reason = reason; this.action = action; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -31,17 +31,18 @@ * Guard {@link PhiNode}s merge guard dependencies at control flow merges. */ @NodeInfo(nameTemplate = "GuardPhi({i#values})", allowedUsageTypes = {InputType.Guard}) -public class GuardPhiNode extends PhiNode implements GuardingNode { +public final class GuardPhiNode extends PhiNode implements GuardingNode { + public static final NodeClass TYPE = NodeClass.get(GuardPhiNode.class); @OptionalInput(InputType.Guard) NodeInputList values; public GuardPhiNode(AbstractMergeNode merge) { - super(StampFactory.forVoid(), merge); + super(TYPE, StampFactory.forVoid(), merge); this.values = new NodeInputList<>(this); } public GuardPhiNode(AbstractMergeNode merge, ValueNode[] values) { - super(StampFactory.forVoid(), merge); + super(TYPE, StampFactory.forVoid(), merge); this.values = new NodeInputList<>(this, values); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -29,12 +29,13 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(allowedUsageTypes = {InputType.Guard}) -public class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy, LIRLowerable { +public final class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(GuardProxyNode.class); @Input(InputType.Guard) GuardingNode value; public GuardProxyNode(GuardingNode value, AbstractBeginNode proxyPoint) { - super(StampFactory.forVoid(), proxyPoint); + super(TYPE, StampFactory.forVoid(), proxyPoint); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -37,13 +37,14 @@ * A GuardedValueNode will only go away if its guard is null or {@link StructuredGraph#start()}. */ @NodeInfo -public class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { +public final class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(GuardedValueNode.class); @Input ValueNode object; protected final Stamp piStamp; public GuardedValueNode(ValueNode object, GuardingNode guard, Stamp stamp) { - super(stamp, guard); + super(TYPE, stamp, guard); this.object = object; this.piStamp = stamp; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -42,6 +42,7 @@ @NodeInfo(nameTemplate = "GuardingPi(!={p#negated}) {p#reason/s}") public final class GuardingPiNode extends FixedWithNextNode implements Lowerable, Virtualizable, Canonicalizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(GuardingPiNode.class); @Input ValueNode object; @Input(InputType.Condition) LogicNode condition; protected final DeoptimizationReason reason; @@ -89,7 +90,7 @@ } public GuardingPiNode(ValueNode object, ValueNode condition, boolean negateCondition, DeoptimizationReason reason, DeoptimizationAction action, Stamp stamp) { - super(stamp); + super(TYPE, stamp); assert stamp != null; this.piStamp = stamp; this.object = object; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -47,7 +47,8 @@ * of a comparison. */ @NodeInfo -public class IfNode extends ControlSplitNode implements Simplifiable, LIRLowerable { +public final class IfNode extends ControlSplitNode implements Simplifiable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(IfNode.class); private static final DebugMetric CORRECTED_PROBABILITIES = Debug.metric("CorrectedProbabilities"); @@ -70,7 +71,7 @@ } public IfNode(LogicNode condition, AbstractBeginNode trueSuccessor, AbstractBeginNode falseSuccessor, double trueSuccessorProbability) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.condition = condition; this.falseSuccessor = falseSuccessor; this.trueSuccessor = trueSuccessor; @@ -234,7 +235,7 @@ if (trueSucc instanceof BeginNode && falseSucc instanceof BeginNode && trueSucc.next() instanceof FixedWithNextNode && falseSucc.next() instanceof FixedWithNextNode) { FixedWithNextNode trueNext = (FixedWithNextNode) trueSucc.next(); FixedWithNextNode falseNext = (FixedWithNextNode) falseSucc.next(); - NodeClass nodeClass = trueNext.getNodeClass(); + NodeClass nodeClass = trueNext.getNodeClass(); if (trueNext.getClass() == falseNext.getClass()) { if (nodeClass.getEdges(Inputs).areEqualIn(trueNext, falseNext) && trueNext.valueEquals(falseNext)) { falseNext.replaceAtUsages(trueNext); @@ -243,7 +244,7 @@ graph().addBeforeFixed(this, trueNext); for (Node usage : trueNext.usages().snapshot()) { if (usage.isAlive()) { - NodeClass usageNodeClass = usage.getNodeClass(); + NodeClass usageNodeClass = usage.getNodeClass(); if (usageNodeClass.valueNumberable() && !usageNodeClass.isLeafNode()) { Node newNode = graph().findDuplicate(usage); if (newNode != null) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,16 +27,18 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo -public class IndirectCallTargetNode extends LoweredCallTargetNode { +public abstract class IndirectCallTargetNode extends LoweredCallTargetNode { + public static final NodeClass TYPE = NodeClass.get(IndirectCallTargetNode.class); @Input protected ValueNode computedAddress; - public IndirectCallTargetNode(ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, - InvokeKind invokeKind) { - super(arguments, returnStamp, signature, target, callType, invokeKind); + protected IndirectCallTargetNode(NodeClass c, ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, + CallingConvention.Type callType, InvokeKind invokeKind) { + super(c, arguments, returnStamp, signature, target, callType, invokeKind); this.computedAddress = computedAddress; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,14 +24,16 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public abstract class InfopointNode extends FixedWithNextNode { + public static final NodeClass TYPE = NodeClass.get(InfopointNode.class); protected final InfopointReason reason; - public InfopointNode(InfopointReason reason) { - super(StampFactory.forVoid()); + public InfopointNode(NodeClass c, InfopointReason reason) { + super(c, StampFactory.forVoid()); this.reason = reason; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,8 @@ * The {@code InvokeNode} represents all kinds of method calls. */ @NodeInfo(nameTemplate = "Invoke#{p#targetMethod/s}", allowedUsageTypes = {InputType.Memory}) -public class InvokeNode extends AbstractMemoryCheckpoint implements Invoke, LIRLowerable, MemoryCheckpoint.Single { +public final class InvokeNode extends AbstractMemoryCheckpoint implements Invoke, LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(InvokeNode.class); @Input(InputType.Extension) CallTargetNode callTarget; @OptionalInput(InputType.State) FrameState stateDuring; @@ -51,7 +52,7 @@ } public InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp) { - super(stamp); + super(TYPE, stamp); this.callTarget = callTarget; this.bci = bci; this.polymorphic = false; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,7 +33,8 @@ import com.oracle.graal.nodes.util.*; @NodeInfo(nameTemplate = "Invoke!#{p#targetMethod/s}", allowedUsageTypes = {InputType.Memory}) -public class InvokeWithExceptionNode extends ControlSplitNode implements Invoke, MemoryCheckpoint.Single, LIRLowerable { +public final class InvokeWithExceptionNode extends ControlSplitNode implements Invoke, MemoryCheckpoint.Single, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(InvokeWithExceptionNode.class); private static final double EXCEPTION_PROBA = 1e-5; @@ -49,7 +50,7 @@ protected double exceptionProbability; public InvokeWithExceptionNode(CallTargetNode callTarget, AbstractBeginNode exceptionEdge, int bci) { - super(callTarget.returnStamp()); + super(TYPE, callTarget.returnStamp()); this.exceptionEdge = exceptionEdge; this.bci = bci; this.callTarget = callTarget; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,15 +23,18 @@ package com.oracle.graal.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.extended.*; @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class KillingBeginNode extends AbstractBeginNode implements MemoryCheckpoint.Single { +public final class KillingBeginNode extends AbstractBeginNode implements MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(KillingBeginNode.class); protected LocationIdentity locationIdentity; public KillingBeginNode(LocationIdentity locationIdentity) { + super(TYPE); this.locationIdentity = locationIdentity; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,12 +30,13 @@ * The {@code LogicConstantNode} represents a boolean constant. */ @NodeInfo(nameTemplate = "{p#value}") -public class LogicConstantNode extends LogicNode implements LIRLowerable { +public final class LogicConstantNode extends LogicNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LogicConstantNode.class); protected final boolean value; public LogicConstantNode(boolean value) { - super(); + super(TYPE); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; @@ -29,11 +30,13 @@ * Logic node that negates its argument. */ @NodeInfo -public class LogicNegationNode extends LogicNode implements Canonicalizable.Unary { +public final class LogicNegationNode extends LogicNode implements Canonicalizable.Unary { + public static final NodeClass TYPE = NodeClass.get(LogicNegationNode.class); @Input(InputType.Condition) LogicNode value; public LogicNegationNode(LogicNode value) { + super(TYPE); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,14 +25,17 @@ import static com.oracle.graal.nodeinfo.InputType.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.calc.*; @NodeInfo(allowedUsageTypes = {Condition}) public abstract class LogicNode extends FloatingNode { - public LogicNode() { - super(StampFactory.forVoid()); + public static final NodeClass TYPE = NodeClass.get(LogicNode.class); + + public LogicNode(NodeClass c) { + super(c, StampFactory.forVoid()); } public static LogicNode and(LogicNode a, LogicNode b, double shortCircuitProbability) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,14 +37,16 @@ import com.oracle.graal.nodes.util.*; @NodeInfo -public class LoopBeginNode extends AbstractMergeNode implements IterableNodeType, LIRLowerable { +public final class LoopBeginNode extends AbstractMergeNode implements IterableNodeType, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(LoopBeginNode.class); protected double loopFrequency; protected int nextEndIndex; protected int unswitches; @OptionalInput(InputType.Guard) GuardingNode overflowGuard; public LoopBeginNode() { + super(TYPE); loopFrequency = 1; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,13 +33,15 @@ * {@linkplain #loopBegin() loop header}. */ @NodeInfo -public class LoopEndNode extends AbstractEndNode { +public final class LoopEndNode extends AbstractEndNode { + public static final NodeClass TYPE = NodeClass.get(LoopEndNode.class); @Input(InputType.Association) LoopBeginNode loopBegin; protected boolean canSafepoint; protected int endIndex; public LoopEndNode(LoopBeginNode begin) { + super(TYPE); int idx = begin.nextEndIndex(); assert idx >= 0; this.endIndex = idx; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,11 +27,13 @@ import com.oracle.graal.nodeinfo.*; @NodeInfo(allowedUsageTypes = {InputType.Association}) -public class LoopExitNode extends BeginStateSplitNode implements IterableNodeType { +public final class LoopExitNode extends BeginStateSplitNode implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(LoopExitNode.class); @Input(InputType.Association) LoopBeginNode loopBegin; public LoopExitNode(LoopBeginNode loop) { + super(TYPE); assert loop != null; loopBegin = loop; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,17 +27,20 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; @NodeInfo public abstract class LoweredCallTargetNode extends CallTargetNode { + public static final NodeClass TYPE = NodeClass.get(LoweredCallTargetNode.class); protected final Stamp returnStamp; protected final JavaType[] signature; protected final CallingConvention.Type callType; - public LoweredCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) { - super(arguments, target, invokeKind); + protected LoweredCallTargetNode(NodeClass c, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, + InvokeKind invokeKind) { + super(c, arguments, target, invokeKind); this.returnStamp = returnStamp; this.signature = signature; this.callType = callType; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,6 +38,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Extension}) public final class MemoryMapNode extends FloatingNode implements MemoryMap, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(MemoryMapNode.class); protected final List locationIdentities; @Input(InputType.Memory) NodeInputList nodes; @@ -51,7 +52,7 @@ } public MemoryMapNode(Map mmap) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); locationIdentities = new ArrayList<>(mmap.keySet()); nodes = new NodeInputList<>(this, mmap.values()); assert checkOrder(mmap); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,17 +34,18 @@ @NodeInfo(nameTemplate = "MemoryPhi({i#values}) {p#locationIdentity/s}", allowedUsageTypes = {InputType.Memory}) public final class MemoryPhiNode extends PhiNode implements MemoryNode { + public static final NodeClass TYPE = NodeClass.get(MemoryPhiNode.class); @Input(InputType.Memory) NodeInputList values; protected final LocationIdentity locationIdentity; public MemoryPhiNode(AbstractMergeNode merge, LocationIdentity locationIdentity) { - super(StampFactory.forVoid(), merge); + super(TYPE, StampFactory.forVoid(), merge); this.locationIdentity = locationIdentity; this.values = new NodeInputList<>(this); } public MemoryPhiNode(AbstractMergeNode merge, LocationIdentity locationIdentity, ValueNode[] values) { - super(StampFactory.forVoid(), merge); + super(TYPE, StampFactory.forVoid(), merge); this.locationIdentity = locationIdentity; this.values = new NodeInputList<>(this, values); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; /** @@ -29,6 +30,10 @@ */ @NodeInfo public final class MergeNode extends AbstractMergeNode { + + public static final NodeClass TYPE = NodeClass.get(MergeNode.class); + public MergeNode() { + super(TYPE); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,10 +32,12 @@ * The {@code Parameter} instruction is a placeholder for an incoming argument to a function call. */ @NodeInfo(nameTemplate = "Param({p#index})") -public class ParameterNode extends AbstractLocalNode implements IterableNodeType, UncheckedInterfaceProvider { +public final class ParameterNode extends AbstractLocalNode implements IterableNodeType, UncheckedInterfaceProvider { + + public static final NodeClass TYPE = NodeClass.get(ParameterNode.class); public ParameterNode(int index, Stamp stamp) { - super(index, stamp); + super(TYPE, index, stamp); } public Stamp uncheckedStamp() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,10 +41,11 @@ @NodeInfo public abstract class PhiNode extends FloatingNode implements Simplifiable { + public static final NodeClass TYPE = NodeClass.get(PhiNode.class); @Input(InputType.Association) protected AbstractMergeNode merge; - protected PhiNode(Stamp stamp, AbstractMergeNode merge) { - super(stamp); + protected PhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge) { + super(c, stamp); this.merge = merge; } @@ -142,10 +143,12 @@ } @NodeInfo - static class MultipleValuesNode extends ValueNode { + static final class MultipleValuesNode extends ValueNode { + + public static final NodeClass TYPE = NodeClass.get(MultipleValuesNode.class); public MultipleValuesNode() { - super(null); + super(TYPE, null); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,8 +36,9 @@ * this information. */ @NodeInfo -public class PiArrayNode extends PiNode implements ArrayLengthProvider { +public final class PiArrayNode extends PiNode implements ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(PiArrayNode.class); @Input ValueNode length; public ValueNode length() { @@ -45,7 +46,7 @@ } public PiArrayNode(ValueNode object, ValueNode length, Stamp stamp) { - super(object, stamp); + super(TYPE, object, stamp); this.length = length; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,6 +44,7 @@ @NodeInfo public class PiNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(PiNode.class); @Input ValueNode object; protected final Stamp piStamp; @@ -51,12 +52,18 @@ return object; } + protected PiNode(NodeClass c, ValueNode object, Stamp stamp) { + super(c, stamp, null); + this.object = object; + this.piStamp = stamp; + } + public PiNode(ValueNode object, Stamp stamp) { this(object, stamp, null); } public PiNode(ValueNode object, Stamp stamp, ValueNode anchor) { - super(stamp, (GuardingNode) anchor); + super(TYPE, stamp, (GuardingNode) anchor); this.object = object; this.piStamp = stamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,10 +36,11 @@ @NodeInfo public abstract class ProxyNode extends FloatingNode implements IterableNodeType, ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(ProxyNode.class); @Input(InputType.Association) AbstractBeginNode proxyPoint; - public ProxyNode(Stamp stamp, AbstractBeginNode proxyPoint) { - super(stamp); + protected ProxyNode(NodeClass c, Stamp stamp, AbstractBeginNode proxyPoint) { + super(c, stamp); assert proxyPoint != null; this.proxyPoint = proxyPoint; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,8 +28,9 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class ReturnNode extends ControlSinkNode implements LIRLowerable, IterableNodeType { +public final class ReturnNode extends ControlSinkNode implements LIRLowerable, IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(ReturnNode.class); @OptionalInput ValueNode result; @OptionalInput(InputType.Extension) MemoryMapNode memoryMap; @@ -42,7 +43,7 @@ } public ReturnNode(ValueNode result, MemoryMapNode memoryMap) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.result = result; this.memoryMap = memoryMap; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -30,10 +31,12 @@ * Marks a position in the graph where a safepoint should be emitted. */ @NodeInfo -public class SafepointNode extends DeoptimizingFixedWithNextNode implements LIRLowerable { +public final class SafepointNode extends DeoptimizingFixedWithNextNode implements LIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(SafepointNode.class); public SafepointNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,8 +27,9 @@ import com.oracle.graal.nodeinfo.*; @NodeInfo -public class ShortCircuitOrNode extends LogicNode implements IterableNodeType, Canonicalizable.Binary { +public final class ShortCircuitOrNode extends LogicNode implements IterableNodeType, Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(ShortCircuitOrNode.class); @Input(InputType.Condition) LogicNode x; @Input(InputType.Condition) LogicNode y; protected boolean xNegated; @@ -36,6 +37,7 @@ protected double shortCircuitProbability; public ShortCircuitOrNode(LogicNode x, boolean xNegated, LogicNode y, boolean yNegated, double shortCircuitProbability) { + super(TYPE); this.x = x; this.xNegated = xNegated; this.y = y; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,11 +29,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class SimpleInfopointNode extends InfopointNode implements LIRLowerable, IterableNodeType, Simplifiable { +public final class SimpleInfopointNode extends InfopointNode implements LIRLowerable, IterableNodeType, Simplifiable { + public static final NodeClass TYPE = NodeClass.get(SimpleInfopointNode.class); protected BytecodePosition position; public SimpleInfopointNode(InfopointReason reason, BytecodePosition position) { - super(reason); + super(TYPE, reason); this.position = position; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.extended.*; @@ -31,7 +32,14 @@ */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class StartNode extends BeginStateSplitNode implements MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(StartNode.class); + + protected StartNode(NodeClass c) { + super(c); + } + public StartNode() { + super(TYPE); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java Mon Feb 16 21:45:12 2015 +0100 @@ -151,7 +151,7 @@ public Stamp getReturnStamp() { Stamp returnStamp = null; - for (ReturnNode returnNode : getNodes(ReturnNode.class)) { + for (ReturnNode returnNode : getNodes(ReturnNode.TYPE)) { ValueNode result = returnNode.result(); if (result != null) { if (returnStamp == null) { @@ -246,7 +246,7 @@ } public ParameterNode getParameter(int index) { - for (ParameterNode param : getNodes(ParameterNode.class)) { + for (ParameterNode param : getNodes(ParameterNode.TYPE)) { if (param.index() == index) { return param; } @@ -255,7 +255,7 @@ } public Iterable getInvokes() { - final Iterator callTargets = getNodes(MethodCallTargetNode.class).iterator(); + final Iterator callTargets = getNodes(MethodCallTargetNode.TYPE).iterator(); return new Iterable() { private Invoke next; @@ -299,7 +299,7 @@ } public boolean hasLoops() { - return hasNode(LoopBeginNode.class); + return hasNode(LoopBeginNode.TYPE); } public void removeFloating(FloatingNode node) { diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -37,8 +37,9 @@ * A node that attaches a type profile to a proxied input node. */ @NodeInfo -public class TypeProfileProxyNode extends UnaryNode implements IterableNodeType, ValueProxy { +public final class TypeProfileProxyNode extends UnaryNode implements IterableNodeType, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(TypeProfileProxyNode.class); protected final JavaTypeProfile profile; protected transient ResolvedJavaType lastCheckedType; protected transient JavaTypeProfile lastCheckedProfile; @@ -59,7 +60,7 @@ } protected TypeProfileProxyNode(ValueNode value, JavaTypeProfile profile) { - super(value.stamp(), value); + super(TYPE, value.stamp(), value); this.profile = profile; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -29,13 +30,15 @@ @NodeInfo public abstract class UnaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Unary { + public static final NodeClass TYPE = NodeClass.get(UnaryOpLogicNode.class); @Input protected ValueNode value; public ValueNode getValue() { return value; } - public UnaryOpLogicNode(ValueNode value) { + public UnaryOpLogicNode(NodeClass c, ValueNode value) { + super(c); assert value != null; this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -31,8 +32,9 @@ * Unwinds the current frame to an exception handler in the caller frame. */ @NodeInfo -public class UnwindNode extends ControlSinkNode implements Lowerable, LIRLowerable { +public final class UnwindNode extends ControlSinkNode implements Lowerable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(UnwindNode.class); @Input ValueNode exception; public ValueNode exception() { @@ -40,7 +42,7 @@ } public UnwindNode(ValueNode exception) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); assert exception == null || exception.getKind() == Kind.Object; this.exception = exception; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.nodeinfo.*; @@ -34,13 +35,15 @@ @NodeInfo public abstract class ValueNode extends com.oracle.graal.graph.Node implements KindProvider { + public static final NodeClass TYPE = NodeClass.get(ValueNode.class); /** * The kind of this value. This is {@link Kind#Void} for instructions that produce no value. * This kind is guaranteed to be a {@linkplain Kind#getStackKind() stack kind}. */ protected Stamp stamp; - public ValueNode(Stamp stamp) { + public ValueNode(NodeClass c, Stamp stamp) { + super(c); this.stamp = stamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,16 +33,21 @@ @NodeInfo(nameTemplate = "ValuePhi({i#values})") public class ValuePhiNode extends PhiNode { + public static final NodeClass TYPE = NodeClass.get(ValuePhiNode.class); @Input protected NodeInputList values; public ValuePhiNode(Stamp stamp, AbstractMergeNode merge) { - super(stamp, merge); + this(TYPE, stamp, merge); + } + + protected ValuePhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge) { + super(c, stamp, merge); assert stamp != StampFactory.forVoid(); values = new NodeInputList<>(this); } public ValuePhiNode(Stamp stamp, AbstractMergeNode merge, ValueNode[] values) { - super(stamp, merge); + super(TYPE, stamp, merge); assert stamp != StampFactory.forVoid(); this.values = new NodeInputList<>(this, values); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,12 +28,13 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class ValueProxyNode extends ProxyNode implements Canonicalizable, Virtualizable, ValueProxy { +public final class ValueProxyNode extends ProxyNode implements Canonicalizable, Virtualizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(ValueProxyNode.class); @Input ValueNode value; public ValueProxyNode(ValueNode value, AbstractBeginNode proxyPoint) { - super(value.stamp(), proxyPoint); + super(TYPE, value.stamp(), proxyPoint); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,12 @@ @NodeInfo(allowedUsageTypes = {InputType.State}) public abstract class VirtualState extends Node { + protected VirtualState(NodeClass c) { + super(c); + } + + public static final NodeClass TYPE = NodeClass.get(VirtualState.class); + public abstract static class NodeClosure { public abstract void apply(Node usage, T node); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.UnaryOp.Abs; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,9 +36,10 @@ */ @NodeInfo public final class AbsNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(AbsNode.class); public AbsNode(ValueNode x) { - super(ArithmeticOpTable::getAbs, x); + super(TYPE, ArithmeticOpTable::getAbs, x); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.Add; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,8 +36,14 @@ @NodeInfo(shortName = "+") public class AddNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(AddNode.class); + public AddNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getAdd, x, y); + this(TYPE, x, y); + } + + protected AddNode(NodeClass c, ValueNode x, ValueNode y) { + super(c, ArithmeticOpTable::getAdd, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -37,8 +38,10 @@ @NodeInfo(shortName = "&") public final class AndNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(AndNode.class); + public AndNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getAnd, x, y); + super(TYPE, ArithmeticOpTable::getAnd, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -39,13 +39,15 @@ @NodeInfo public abstract class BinaryArithmeticNode extends BinaryNode implements ArithmeticLIRLowerable { + @SuppressWarnings("rawtypes") public static final NodeClass TYPE = NodeClass.get(BinaryArithmeticNode.class); + protected interface SerializableBinaryFunction extends Function>, Serializable { } protected final SerializableBinaryFunction getOp; - public BinaryArithmeticNode(SerializableBinaryFunction getOp, ValueNode x, ValueNode y) { - super(getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), y.stamp()), x, y); + protected BinaryArithmeticNode(NodeClass c, SerializableBinaryFunction getOp, ValueNode x, ValueNode y) { + super(c, getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), y.stamp()), x, y); this.getOp = getOp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.calc; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,6 +34,7 @@ @NodeInfo public abstract class BinaryNode extends FloatingNode implements Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(BinaryNode.class); @Input protected ValueNode x; @Input protected ValueNode y; @@ -61,8 +63,8 @@ * @param x the first input instruction * @param y the second input instruction */ - public BinaryNode(Stamp stamp, ValueNode x, ValueNode y) { - super(stamp); + protected BinaryNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y) { + super(c, stamp); this.x = x; this.y = y; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -39,6 +40,7 @@ @NodeInfo public abstract class CompareNode extends BinaryOpLogicNode { + public static final NodeClass TYPE = NodeClass.get(CompareNode.class); protected final Condition condition; protected final boolean unorderedIsTrue; @@ -48,8 +50,8 @@ * @param x the instruction producing the first input to the instruction * @param y the instruction that produces the second input to this instruction */ - public CompareNode(Condition condition, boolean unorderedIsTrue, ValueNode x, ValueNode y) { - super(x, y); + protected CompareNode(NodeClass c, Condition condition, boolean unorderedIsTrue, ValueNode x, ValueNode y) { + super(c, x, y); this.condition = condition; this.unorderedIsTrue = unorderedIsTrue; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -40,6 +41,7 @@ @NodeInfo public final class ConditionalNode extends FloatingNode implements Canonicalizable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ConditionalNode.class); @Input(InputType.Condition) LogicNode condition; @Input ValueNode trueValue; @Input ValueNode falseValue; @@ -53,7 +55,7 @@ } public ConditionalNode(LogicNode condition, ValueNode trueValue, ValueNode falseValue) { - super(trueValue.stamp().meet(falseValue.stamp())); + super(TYPE, trueValue.stamp().meet(falseValue.stamp())); assert trueValue.stamp().isCompatible(falseValue.stamp()); this.condition = condition; this.trueValue = trueValue; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -36,8 +37,10 @@ @NodeInfo(shortName = "/") public final class DivNode extends BinaryArithmeticNode
    { + public static final NodeClass TYPE = NodeClass.get(DivNode.class); + public DivNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getDiv, x, y); + super(TYPE, ArithmeticOpTable::getDiv, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,18 +23,20 @@ package com.oracle.graal.nodes.calc; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public abstract class FixedBinaryNode extends DeoptimizingFixedWithNextNode implements Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(FixedBinaryNode.class); @Input protected ValueNode x; @Input protected ValueNode y; - public FixedBinaryNode(Stamp stamp, ValueNode x, ValueNode y) { - super(stamp); + public FixedBinaryNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y) { + super(c, stamp); this.x = x; this.y = y; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.FloatConvertOp; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,11 +39,12 @@ */ @NodeInfo public final class FloatConvertNode extends UnaryArithmeticNode implements ConvertNode, Lowerable, ArithmeticLIRLowerable { + public static final NodeClass TYPE = NodeClass.get(FloatConvertNode.class); protected final FloatConvert op; public FloatConvertNode(FloatConvert op, ValueNode input) { - super(table -> table.getFloatConvert(op), input); + super(TYPE, table -> table.getFloatConvert(op), input); this.op = op; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,9 +34,10 @@ @NodeInfo(shortName = "==") public final class FloatEqualsNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(FloatEqualsNode.class); public FloatEqualsNode(ValueNode x, ValueNode y) { - super(Condition.EQ, false, x, y); + super(TYPE, Condition.EQ, false, x, y); assert x.stamp() instanceof FloatStamp && y.stamp() instanceof FloatStamp : x.stamp() + " " + y.stamp(); assert x.stamp().isCompatible(y.stamp()); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,16 +26,18 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.util.*; @NodeInfo(shortName = "<") -public class FloatLessThanNode extends CompareNode { +public final class FloatLessThanNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(FloatLessThanNode.class); public FloatLessThanNode(ValueNode x, ValueNode y, boolean unorderedIsTrue) { - super(Condition.LT, unorderedIsTrue, x, y); + super(TYPE, Condition.LT, unorderedIsTrue, x, y); assert x.stamp() instanceof FloatStamp && y.stamp() instanceof FloatStamp; assert x.stamp().isCompatible(y.stamp()); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -29,9 +29,10 @@ @NodeInfo public abstract class FloatingNode extends ValueNode implements Node.ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(FloatingNode.class); - public FloatingNode(Stamp stamp) { - super(stamp); + public FloatingNode(NodeClass c, Stamp stamp) { + super(c, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,16 +25,18 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.util.*; @NodeInfo(shortName = "|<|") -public class IntegerBelowNode extends CompareNode { +public final class IntegerBelowNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(IntegerBelowNode.class); public IntegerBelowNode(ValueNode x, ValueNode y) { - super(Condition.BT, false, x, y); + super(TYPE, Condition.BT, false, x, y); assert x.stamp() instanceof IntegerStamp; assert y.stamp() instanceof IntegerStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,6 +39,7 @@ */ @NodeInfo public abstract class IntegerConvertNode extends UnaryNode implements ConvertNode, ArithmeticLIRLowerable { + @SuppressWarnings("rawtypes") public static final NodeClass TYPE = NodeClass.get(IntegerConvertNode.class); protected final SerializableIntegerConvertFunction getOp; protected final SerializableIntegerConvertFunction getReverseOp; @@ -48,8 +50,8 @@ protected interface SerializableIntegerConvertFunction extends Function>, Serializable { } - protected IntegerConvertNode(SerializableIntegerConvertFunction getOp, SerializableIntegerConvertFunction getReverseOp, int inputBits, int resultBits, ValueNode input) { - super(getOp.apply(ArithmeticOpTable.forStamp(input.stamp())).foldStamp(inputBits, resultBits, input.stamp()), input); + protected IntegerConvertNode(NodeClass c, SerializableIntegerConvertFunction getOp, SerializableIntegerConvertFunction getReverseOp, int inputBits, int resultBits, ValueNode input) { + super(c, getOp.apply(ArithmeticOpTable.forStamp(input.stamp())).foldStamp(inputBits, resultBits, input.stamp()), input); this.getOp = getOp; this.getReverseOp = getReverseOp; this.inputBits = inputBits; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,10 +33,11 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "/") -public class IntegerDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { +public final class IntegerDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(IntegerDivNode.class); public IntegerDivNode(ValueNode x, ValueNode y) { - super(IntegerStamp.OPS.getDiv().foldStamp(x.stamp(), y.stamp()), x, y); + super(TYPE, IntegerStamp.OPS.getDiv().foldStamp(x.stamp(), y.stamp()), x, y); } @Override @@ -94,7 +95,7 @@ } if (next() instanceof IntegerDivNode) { - NodeClass nodeClass = getNodeClass(); + NodeClass nodeClass = getNodeClass(); if (next().getClass() == this.getClass() && nodeClass.getEdges(Inputs).areEqualIn(this, next()) && valueEquals(next())) { return next(); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,9 +34,10 @@ @NodeInfo(shortName = "==") public final class IntegerEqualsNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(IntegerEqualsNode.class); public IntegerEqualsNode(ValueNode x, ValueNode y) { - super(Condition.EQ, false, x, y); + super(TYPE, Condition.EQ, false, x, y); assert !x.getKind().isNumericFloat() && x.getKind() != Kind.Object; assert !y.getKind().isNumericFloat() && y.getKind() != Kind.Object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,16 +26,18 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.util.*; @NodeInfo(shortName = "<") -public class IntegerLessThanNode extends CompareNode { +public final class IntegerLessThanNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(IntegerLessThanNode.class); public IntegerLessThanNode(ValueNode x, ValueNode y) { - super(Condition.LT, false, x, y); + super(TYPE, Condition.LT, false, x, y); assert !x.getKind().isNumericFloat() && x.getKind() != Kind.Object; assert !y.getKind().isNumericFloat() && y.getKind() != Kind.Object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,16 +24,18 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "%") -public class IntegerRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { +public final class IntegerRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(IntegerRemNode.class); public IntegerRemNode(ValueNode x, ValueNode y) { - super(IntegerStamp.OPS.getRem().foldStamp(x.stamp(), y.stamp()), x, y); + super(TYPE, IntegerStamp.OPS.getRem().foldStamp(x.stamp(), y.stamp()), x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.calc; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,10 +34,11 @@ * both x and y. */ @NodeInfo -public class IntegerTestNode extends BinaryOpLogicNode { +public final class IntegerTestNode extends BinaryOpLogicNode { + public static final NodeClass TYPE = NodeClass.get(IntegerTestNode.class); public IntegerTestNode(ValueNode x, ValueNode y) { - super(x, y); + super(TYPE, x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.calc; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,10 +34,12 @@ * An IsNullNode will be true if the supplied value is null, and false if it is non-null. */ @NodeInfo -public class IsNullNode extends UnaryOpLogicNode implements LIRLowerable, Virtualizable, PiPushable { +public final class IsNullNode extends UnaryOpLogicNode implements LIRLowerable, Virtualizable, PiPushable { + + public static final NodeClass TYPE = NodeClass.get(IsNullNode.class); public IsNullNode(ValueNode object) { - super(object); + super(TYPE, object); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.ShiftOp.Shl; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -32,10 +33,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "<<") -public class LeftShiftNode extends ShiftNode { +public final class LeftShiftNode extends ShiftNode { + + public static final NodeClass TYPE = NodeClass.get(LeftShiftNode.class); public LeftShiftNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getShl, x, y); + super(TYPE, ArithmeticOpTable::getShl, x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -36,8 +37,14 @@ @NodeInfo(shortName = "*") public class MulNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(MulNode.class); + public MulNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getMul, x, y); + this(TYPE, x, y); + } + + protected MulNode(NodeClass c, ValueNode x, ValueNode y) { + super(c, ArithmeticOpTable::getMul, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp.Narrow; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp.SignExtend; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,13 +39,15 @@ @NodeInfo public final class NarrowNode extends IntegerConvertNode { + public static final NodeClass TYPE = NodeClass.get(NarrowNode.class); + public NarrowNode(ValueNode input, int resultBits) { this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); assert 0 < resultBits && resultBits <= PrimitiveStamp.getBits(input.stamp()); } public NarrowNode(ValueNode input, int inputBits, int resultBits) { - super(ArithmeticOpTable::getNarrow, ArithmeticOpTable::getSignExtend, inputBits, resultBits, input); + super(TYPE, ArithmeticOpTable::getNarrow, ArithmeticOpTable::getSignExtend, inputBits, resultBits, input); } public static ValueNode create(ValueNode input, int resultBits) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.UnaryOp.Neg; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -36,8 +37,10 @@ @NodeInfo public final class NegateNode extends UnaryArithmeticNode implements NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(NegateNode.class); + public NegateNode(ValueNode value) { - super(ArithmeticOpTable::getNeg, value); + super(TYPE, ArithmeticOpTable::getNeg, value); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,12 +37,13 @@ * true. */ @NodeInfo -public class NormalizeCompareNode extends BinaryNode implements Lowerable { +public final class NormalizeCompareNode extends BinaryNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(NormalizeCompareNode.class); protected final boolean isUnorderedLess; public NormalizeCompareNode(ValueNode x, ValueNode y, boolean isUnorderedLess) { - super(StampFactory.forKind(Kind.Int), x, y); + super(TYPE, StampFactory.forKind(Kind.Int), x, y); this.isUnorderedLess = isUnorderedLess; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.UnaryOp.Not; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -34,10 +35,12 @@ * Binary negation of long or integer values. */ @NodeInfo -public class NotNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { +public final class NotNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { + + public static final NodeClass TYPE = NodeClass.get(NotNode.class); public NotNode(ValueNode x) { - super(ArithmeticOpTable::getNot, x); + super(TYPE, ArithmeticOpTable::getNot, x); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -33,8 +34,10 @@ @NodeInfo(shortName = "==") public final class ObjectEqualsNode extends PointerEqualsNode implements Virtualizable { + public static final NodeClass TYPE = NodeClass.get(ObjectEqualsNode.class); + public ObjectEqualsNode(ValueNode x, ValueNode y) { - super(x, y); + super(TYPE, x, y); assert x.stamp() instanceof AbstractObjectStamp; assert y.stamp() instanceof AbstractObjectStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,10 +36,12 @@ import com.oracle.graal.nodes.util.*; @NodeInfo(shortName = "|") -public class OrNode extends BinaryArithmeticNode { +public final class OrNode extends BinaryArithmeticNode { + + public static final NodeClass TYPE = NodeClass.get(OrNode.class); public OrNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getOr, x, y); + super(TYPE, ArithmeticOpTable::getOr, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,8 +33,14 @@ @NodeInfo(shortName = "==") public class PointerEqualsNode extends CompareNode { + public static final NodeClass TYPE = NodeClass.get(PointerEqualsNode.class); + public PointerEqualsNode(ValueNode x, ValueNode y) { - super(Condition.EQ, false, x, y); + this(TYPE, x, y); + } + + protected PointerEqualsNode(NodeClass c, ValueNode x, ValueNode y) { + super(c, Condition.EQ, false, x, y); assert x.stamp() instanceof AbstractPointerStamp; assert y.stamp() instanceof AbstractPointerStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,14 +39,16 @@ * the old stamp. */ @NodeInfo -public class ReinterpretNode extends UnaryNode implements ArithmeticLIRLowerable { +public final class ReinterpretNode extends UnaryNode implements ArithmeticLIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(ReinterpretNode.class); public ReinterpretNode(Kind to, ValueNode value) { this(StampFactory.forKind(to), value); } public ReinterpretNode(Stamp to, ValueNode value) { - super(to, value); + super(TYPE, to, value); assert to instanceof ArithmeticStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,16 +24,19 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.Rem; +import com.oracle.graal.graph.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "%") -public class RemNode extends BinaryArithmeticNode implements Lowerable { +public final class RemNode extends BinaryArithmeticNode implements Lowerable { + + public static final NodeClass TYPE = NodeClass.get(RemNode.class); public RemNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getRem, x, y); + super(TYPE, ArithmeticOpTable::getRem, x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.ShiftOp.Shr; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -31,10 +32,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = ">>") -public class RightShiftNode extends ShiftNode { +public final class RightShiftNode extends ShiftNode { + + public static final NodeClass TYPE = NodeClass.get(RightShiftNode.class); public RightShiftNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getShr, x, y); + super(TYPE, ArithmeticOpTable::getShr, x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -28,6 +28,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.ShiftOp; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -39,6 +40,8 @@ @NodeInfo public abstract class ShiftNode extends BinaryNode implements ArithmeticLIRLowerable { + @SuppressWarnings("rawtypes") public static final NodeClass TYPE = NodeClass.get(ShiftNode.class); + protected interface SerializableShiftFunction extends Function>, Serializable { } @@ -50,8 +53,8 @@ * @param x the first input value * @param s the second input value */ - public ShiftNode(SerializableShiftFunction getOp, ValueNode x, ValueNode s) { - super(getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), (IntegerStamp) s.stamp()), x, s); + protected ShiftNode(NodeClass c, SerializableShiftFunction getOp, ValueNode x, ValueNode s) { + super(c, getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), (IntegerStamp) s.stamp()), x, s); assert ((IntegerStamp) s.stamp()).getBits() == 32; this.getOp = getOp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp.Narrow; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp.SignExtend; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -36,7 +37,9 @@ * The {@code SignExtendNode} converts an integer to a wider integer using sign extension. */ @NodeInfo -public class SignExtendNode extends IntegerConvertNode { +public final class SignExtendNode extends IntegerConvertNode { + + public static final NodeClass TYPE = NodeClass.get(SignExtendNode.class); public SignExtendNode(ValueNode input, int resultBits) { this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); @@ -44,7 +47,7 @@ } public SignExtendNode(ValueNode input, int inputBits, int resultBits) { - super(ArithmeticOpTable::getSignExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); + super(TYPE, ArithmeticOpTable::getSignExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); } public static ValueNode create(ValueNode input, int resultBits) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.UnaryOp.Sqrt; +import com.oracle.graal.graph.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,10 +34,12 @@ * Square root. */ @NodeInfo -public class SqrtNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { +public final class SqrtNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { + + public static final NodeClass TYPE = NodeClass.get(SqrtNode.class); public SqrtNode(ValueNode x) { - super(ArithmeticOpTable::getSqrt, x); + super(TYPE, ArithmeticOpTable::getSqrt, x); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -36,8 +37,14 @@ @NodeInfo(shortName = "-") public class SubNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(SubNode.class); + public SubNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getSub, x, y); + this(TYPE, x, y); + } + + protected SubNode(NodeClass c, ValueNode x, ValueNode y) { + super(c, ArithmeticOpTable::getSub, x, y); } public static ValueNode create(ValueNode x, ValueNode y) { diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.UnaryOp; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -35,13 +36,15 @@ @NodeInfo public abstract class UnaryArithmeticNode extends UnaryNode implements ArithmeticLIRLowerable { + @SuppressWarnings("rawtypes") public static final NodeClass TYPE = NodeClass.get(UnaryArithmeticNode.class); + protected interface SerializableUnaryFunction extends Function>, Serializable { } protected final SerializableUnaryFunction getOp; - protected UnaryArithmeticNode(SerializableUnaryFunction getOp, ValueNode value) { - super(getOp.apply(ArithmeticOpTable.forStamp(value.stamp())).foldStamp(value.stamp()), value); + protected UnaryArithmeticNode(NodeClass c, SerializableUnaryFunction getOp, ValueNode value) { + super(c, getOp.apply(ArithmeticOpTable.forStamp(value.stamp())).foldStamp(value.stamp()), value); this.getOp = getOp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.calc; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,6 +35,7 @@ @NodeInfo public abstract class UnaryNode extends FloatingNode implements Canonicalizable.Unary { + public static final NodeClass TYPE = NodeClass.get(UnaryNode.class); @Input protected ValueNode value; public ValueNode getValue() { @@ -46,8 +48,8 @@ * @param stamp the result type of this instruction * @param value the input instruction */ - public UnaryNode(Stamp stamp, ValueNode value) { - super(stamp); + protected UnaryNode(NodeClass c, Stamp stamp, ValueNode value) { + super(c, stamp); this.value = value; } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,16 +24,19 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "|/|") -public class UnsignedDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { +public final class UnsignedDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(UnsignedDivNode.class); public UnsignedDivNode(ValueNode x, ValueNode y) { - super(x.stamp().unrestricted(), x, y); + super(TYPE, x.stamp().unrestricted(), x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,16 +24,19 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = "|%|") -public class UnsignedRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { +public final class UnsignedRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(UnsignedRemNode.class); public UnsignedRemNode(ValueNode x, ValueNode y) { - super(x.stamp().unrestricted(), x, y); + super(TYPE, x.stamp().unrestricted(), x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.ShiftOp.UShr; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -32,10 +33,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(shortName = ">>>") -public class UnsignedRightShiftNode extends ShiftNode { +public final class UnsignedRightShiftNode extends ShiftNode { + + public static final NodeClass TYPE = NodeClass.get(UnsignedRightShiftNode.class); public UnsignedRightShiftNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getUShr, x, y); + super(TYPE, ArithmeticOpTable::getUShr, x, y); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.BinaryOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,10 +36,12 @@ import com.oracle.graal.nodes.util.*; @NodeInfo(shortName = "^") -public class XorNode extends BinaryArithmeticNode { +public final class XorNode extends BinaryArithmeticNode { + + public static final NodeClass TYPE = NodeClass.get(XorNode.class); public XorNode(ValueNode x, ValueNode y) { - super(ArithmeticOpTable::getXor, x, y); + super(TYPE, ArithmeticOpTable::getXor, x, y); assert x.stamp().isCompatible(y.stamp()); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.IntegerConvertOp.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -37,7 +38,9 @@ * The {@code ZeroExtendNode} converts an integer to a wider integer using zero extension. */ @NodeInfo -public class ZeroExtendNode extends IntegerConvertNode { +public final class ZeroExtendNode extends IntegerConvertNode { + + public static final NodeClass TYPE = NodeClass.get(ZeroExtendNode.class); public ZeroExtendNode(ValueNode input, int resultBits) { this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); @@ -45,7 +48,7 @@ } public ZeroExtendNode(ValueNode input, int inputBits, int resultBits) { - super(ArithmeticOpTable::getZeroExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); + super(TYPE, ArithmeticOpTable::getZeroExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); } public static ValueNode create(ValueNode input, int resultBits) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java Mon Feb 16 21:45:12 2015 +0100 @@ -156,7 +156,7 @@ private void identifyBlocks() { // Find all block headers int numBlocks = 0; - for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.class)) { + for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.TYPE)) { Block block = new Block(begin); numBlocks++; identifyBlock(block); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.debug; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -30,10 +31,11 @@ @NodeInfo public final class BlackholeNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(BlackholeNode.class); @Input ValueNode value; public BlackholeNode(ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -33,7 +33,9 @@ * control flow anchors. */ @NodeInfo -public class ControlFlowAnchorNode extends FixedWithNextNode implements LIRLowerable { +public final class ControlFlowAnchorNode extends FixedWithNextNode implements LIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(ControlFlowAnchorNode.class); private static class Unique { } @@ -41,7 +43,7 @@ protected Unique unique; public ControlFlowAnchorNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.unique = new Unique(); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.debug; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -38,6 +39,7 @@ @NodeInfo public class DynamicCounterNode extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(DynamicCounterNode.class); @Input ValueNode increment; protected final String name; @@ -45,7 +47,11 @@ protected final boolean withContext; public DynamicCounterNode(String name, String group, ValueNode increment, boolean withContext) { - super(StampFactory.forVoid()); + this(TYPE, name, group, increment, withContext); + } + + protected DynamicCounterNode(NodeClass c, String name, String group, ValueNode increment, boolean withContext) { + super(c, StampFactory.forVoid()); this.name = name; this.group = group; this.increment = increment; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,18 +22,20 @@ */ package com.oracle.graal.nodes.debug; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class OpaqueNode extends FloatingNode implements LIRLowerable { +public final class OpaqueNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(OpaqueNode.class); @Input ValueNode value; public OpaqueNode(ValueNode value) { - super(value.stamp().unrestricted()); + super(TYPE, value.stamp().unrestricted()); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.debug; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -32,10 +33,12 @@ * heap corruption issues. */ @NodeInfo -public class VerifyHeapNode extends FixedWithNextNode implements Lowerable { +public final class VerifyHeapNode extends FixedWithNextNode implements Lowerable { + + public static final NodeClass TYPE = NodeClass.get(VerifyHeapNode.class); public VerifyHeapNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.nodes.debug; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,12 +35,13 @@ * actually executed. */ @NodeInfo -public class WeakCounterNode extends DynamicCounterNode implements Simplifiable, Virtualizable { +public final class WeakCounterNode extends DynamicCounterNode implements Simplifiable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(WeakCounterNode.class); @Input ValueNode checkedValue; public WeakCounterNode(String group, String name, ValueNode increment, boolean addContext, ValueNode checkedValue) { - super(group, name, increment, addContext); + super(TYPE, group, name, increment, addContext); this.checkedValue = checkedValue; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -31,6 +31,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public abstract class AbstractWriteNode extends FixedAccessNode implements StateSplit, MemoryCheckpoint.Single, MemoryAccess, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(AbstractWriteNode.class); @Input ValueNode value; @OptionalInput(InputType.State) FrameState stateAfter; @OptionalInput(InputType.Memory) Node lastLocationAccess; @@ -64,18 +65,18 @@ return initialization; } - public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { - this(object, value, location, barrierType, false); + protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { + this(c, object, value, location, barrierType, false); } - public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { - super(object, location, StampFactory.forVoid(), barrierType); + protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { + super(c, object, location, StampFactory.forVoid(), barrierType); this.value = value; this.initialization = initialization; } - public AbstractWriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { - super(object, location, StampFactory.forVoid(), guard, barrierType, false, null); + protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { + super(c, object, location, StampFactory.forVoid(), guard, barrierType, false, null); this.value = value; this.initialization = initialization; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,6 +39,7 @@ @NodeInfo(nameTemplate = "AddLoc {p#locationIdentity/s}") public final class AddLocationNode extends LocationNode implements Canonicalizable.Binary { + public static final NodeClass TYPE = NodeClass.get(AddLocationNode.class); @Input(InputType.Association) ValueNode x; @Input(InputType.Association) ValueNode y; @@ -50,7 +52,7 @@ } public AddLocationNode(LocationNode x, LocationNode y) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); assert x.getLocationIdentity().equals(y.getLocationIdentity()); this.x = x; this.y = y; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,8 +33,10 @@ @NodeInfo public abstract class ArrayRangeWriteNode extends AbstractMemoryCheckpoint { - protected ArrayRangeWriteNode(Stamp stamp) { - super(stamp); + public static final NodeClass TYPE = NodeClass.get(ArrayRangeWriteNode.class); + + protected ArrayRangeWriteNode(NodeClass c, Stamp stamp) { + super(c, stamp); } /** diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -42,10 +43,11 @@ @NodeInfo public final class BoxNode extends UnaryNode implements VirtualizableAllocation, Lowerable { + public static final NodeClass TYPE = NodeClass.get(BoxNode.class); protected final Kind boxingKind; public BoxNode(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) { - super(StampFactory.exactNonNull(resultType), value); + super(TYPE, StampFactory.exactNonNull(resultType), value); this.boxingKind = boxingKind; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.calc.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,6 +39,7 @@ @NodeInfo public final class BranchProbabilityNode extends FloatingNode implements Simplifiable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(BranchProbabilityNode.class); public static final double LIKELY_PROBABILITY = 0.6; public static final double NOT_LIKELY_PROBABILITY = 1 - LIKELY_PROBABILITY; @@ -54,7 +56,7 @@ @Input ValueNode condition; public BranchProbabilityNode(ValueNode probability, ValueNode condition) { - super(condition.stamp()); + super(TYPE, condition.stamp()); this.probability = probability; this.condition = condition; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,11 +36,12 @@ @NodeInfo public final class BytecodeExceptionNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(BytecodeExceptionNode.class); protected final Class exceptionClass; @Input NodeInputList arguments; public BytecodeExceptionNode(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { - super(StampFactory.exactNonNull(metaAccess.lookupJavaType(exceptionClass))); + super(TYPE, StampFactory.exactNonNull(metaAccess.lookupJavaType(exceptionClass))); this.exceptionClass = exceptionClass; this.arguments = new NodeInputList<>(this, arguments); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; @@ -32,6 +33,7 @@ @NodeInfo public final class ComputeAddressNode extends FloatingNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ComputeAddressNode.class); @Input ValueNode object; @Input(InputType.Association) ValueNode location; @@ -44,7 +46,7 @@ } public ComputeAddressNode(ValueNode object, ValueNode location, Stamp stamp) { - super(stamp); + super(TYPE, stamp); this.object = object; this.location = location; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.spi.*; @@ -35,11 +36,12 @@ @NodeInfo(nameTemplate = "Loc {p#locationIdentity/s}") public final class ConstantLocationNode extends LocationNode { + public static final NodeClass TYPE = NodeClass.get(ConstantLocationNode.class); protected final LocationIdentity locationIdentity; protected final long displacement; public ConstantLocationNode(LocationIdentity identity, long displacement) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.locationIdentity = identity; this.displacement = displacement; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,6 +33,7 @@ */ @NodeInfo public abstract class FixedAccessNode extends DeoptimizingFixedWithNextNode implements Access { + public static final NodeClass TYPE = NodeClass.get(FixedAccessNode.class); @OptionalInput(InputType.Guard) protected GuardingNode guard; @Input protected ValueNode object; @@ -64,16 +66,16 @@ this.nullCheck = check; } - public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp) { - this(object, location, stamp, BarrierType.NONE); + protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp) { + this(c, object, location, stamp, BarrierType.NONE); } - public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { - this(object, location, stamp, null, barrierType, false, null); + protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { + this(c, object, location, stamp, null, barrierType, false, null); } - public FixedAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { - super(stamp, stateBefore); + protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { + super(c, stamp, stateBefore); this.object = object; this.location = location; this.guard = guard; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,12 +23,14 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo public final class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(FixedValueAnchorNode.class); @Input ValueNode object; @@ -37,7 +39,7 @@ } public FixedValueAnchorNode(ValueNode object) { - super(StampFactory.forNodeIntrinsic()); + super(TYPE, StampFactory.forNodeIntrinsic()); this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,17 +33,18 @@ */ @NodeInfo public abstract class FloatableAccessNode extends FixedAccessNode { + public static final NodeClass TYPE = NodeClass.get(FloatableAccessNode.class); - public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp) { - super(object, location, stamp); + protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp) { + super(c, object, location, stamp); } - public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - super(object, location, stamp, guard, barrierType, false, null); + protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + super(c, object, location, stamp, guard, barrierType, false, null); } - public FloatableAccessNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { - super(object, location, stamp, guard, barrierType, nullCheck, stateBefore); + protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { + super(c, object, location, stamp, guard, barrierType, nullCheck, stateBefore); } public abstract FloatingAccessNode asFloatingNode(MemoryNode lastLocationAccess); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,11 +24,13 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public abstract class FloatingAccessNode extends FloatingGuardedNode implements Access, MemoryAccess { + public static final NodeClass TYPE = NodeClass.get(FloatingAccessNode.class); @Input ValueNode object; @Input(InputType.Association) LocationNode location; @@ -50,14 +52,14 @@ return location.getLocationIdentity(); } - public FloatingAccessNode(ValueNode object, LocationNode location, Stamp stamp) { - super(stamp); + protected FloatingAccessNode(NodeClass c, ValueNode object, LocationNode location, Stamp stamp) { + super(c, stamp); this.object = object; this.location = location; } - public FloatingAccessNode(ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - super(stamp, guard); + protected FloatingAccessNode(NodeClass c, ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + super(c, stamp, guard); this.object = object; this.location = location; this.barrierType = barrierType; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -35,7 +35,8 @@ * relative location. This node does not null check the object. */ @NodeInfo -public class FloatingReadNode extends FloatingAccessNode implements LIRLowerable, Canonicalizable { +public final class FloatingReadNode extends FloatingAccessNode implements LIRLowerable, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(FloatingReadNode.class); @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess; @@ -48,7 +49,7 @@ } public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - super(object, location, stamp, guard, barrierType); + super(TYPE, object, location, stamp, guard, barrierType); this.lastLocationAccess = lastLocationAccess; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -37,6 +37,7 @@ */ @NodeInfo(nameTemplate = "ForeignCall#{p#descriptor/s}", allowedUsageTypes = {InputType.Memory}) public class ForeignCallNode extends AbstractMemoryCheckpoint implements LIRLowerable, DeoptimizingNode.DeoptDuring, MemoryCheckpoint.Multi { + public static final NodeClass TYPE = NodeClass.get(ForeignCallNode.class); @Input protected NodeInputList arguments; @OptionalInput(InputType.State) protected FrameState stateDuring; @@ -46,7 +47,7 @@ protected int bci = BytecodeFrame.UNKNOWN_BCI; public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { - super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); + super(TYPE, StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); this.arguments = new NodeInputList<>(this, arguments); this.descriptor = descriptor; this.foreignCalls = foreignCalls; @@ -57,14 +58,21 @@ } public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp, List arguments) { - super(stamp); + super(TYPE, stamp); this.arguments = new NodeInputList<>(this, arguments); this.descriptor = descriptor; this.foreignCalls = foreignCalls; } + protected ForeignCallNode(NodeClass c, ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) { + super(c, stamp); + this.arguments = new NodeInputList<>(this); + this.descriptor = descriptor; + this.foreignCalls = foreignCalls; + } + public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) { - super(stamp); + super(TYPE, stamp); this.arguments = new NodeInputList<>(this); this.descriptor = descriptor; this.foreignCalls = foreignCalls; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,7 +38,8 @@ * constants. */ @NodeInfo(nameTemplate = "IdxLoc {p#locationIdentity/s}") -public class IndexedLocationNode extends LocationNode implements Canonicalizable { +public final class IndexedLocationNode extends LocationNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(IndexedLocationNode.class); protected final LocationIdentity locationIdentity; protected final long displacement; @@ -64,7 +65,7 @@ } public IndexedLocationNode(LocationIdentity identity, long displacement, ValueNode index, int indexScaling) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); assert index != null; assert indexScaling != 0; this.locationIdentity = identity; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -37,12 +38,13 @@ * values. The actual implementation of the switch will be decided by the backend. */ @NodeInfo -public class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { +public final class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { + public static final NodeClass TYPE = NodeClass.get(IntegerSwitchNode.class); protected final int[] keys; public IntegerSwitchNode(ValueNode value, AbstractBeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { - super(value, successors, keySuccessors, keyProbabilities); + super(TYPE, value, successors, keySuccessors, keyProbabilities); assert keySuccessors.length == keys.length + 1; assert keySuccessors.length == keyProbabilities.length; this.keys = keys; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,13 +35,14 @@ * barriers, implicit conversions and optionally oop uncompression. */ @NodeInfo -public class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode, Canonicalizable { +public final class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(JavaReadNode.class); protected final Kind readKind; protected final boolean compressible; public JavaReadNode(Kind readKind, ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { - super(object, location, StampFactory.forKind(readKind), barrierType); + super(TYPE, object, location, StampFactory.forKind(readKind), barrierType); this.readKind = readKind; this.compressible = compressible; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -32,13 +33,14 @@ * write barriers, implicit conversions and optionally oop compression. */ @NodeInfo -public class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single { +public final class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(JavaWriteNode.class); protected final Kind writeKind; protected final boolean compressible; public JavaWriteNode(Kind writeKind, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { - super(object, value, location, barrierType, initialization); + super(TYPE, object, value, location, barrierType, initialization); this.writeKind = writeKind; this.compressible = compressible; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -35,6 +36,7 @@ @NodeInfo public final class LoadHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(LoadHubNode.class); @Input ValueNode value; public ValueNode getValue() { @@ -51,7 +53,7 @@ } public LoadHubNode(@InjectedNodeParameter StampProvider stampProvider, ValueNode value, ValueNode guard) { - super(hubStamp(stampProvider, value), (GuardingNode) guard); + super(TYPE, hubStamp(stampProvider, value), (GuardingNode) guard); assert value != guard; this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,8 +36,9 @@ * Loads a method from the virtual method table of a given hub. */ @NodeInfo -public class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable { +public final class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(LoadMethodNode.class); @Input ValueNode hub; protected final ResolvedJavaMethod method; protected final ResolvedJavaType receiverType; @@ -47,7 +48,7 @@ } public LoadMethodNode(@InjectedNodeParameter Stamp stamp, ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub) { - super(stamp); + super(TYPE, stamp); this.receiverType = receiverType; this.hub = hub; this.method = method; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.Node.ValueNumberable; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,14 +39,16 @@ @NodeInfo(allowedUsageTypes = {InputType.Association}) public abstract class LocationNode extends FloatingNode implements LIRLowerable, ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(LocationNode.class); + /** * Marker interface for locations in snippets. */ public interface Location { } - protected LocationNode(Stamp stamp) { - super(stamp); + protected LocationNode(NodeClass c, Stamp stamp) { + super(c, stamp); } /** diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -39,12 +40,13 @@ * Creates a memory barrier. */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class MembarNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { +public final class MembarNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(MembarNode.class); protected final int barriers; public MembarNode(int barriers) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.barriers = barriers; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,17 +23,19 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(allowedUsageTypes = {InputType.Guard}) -public class NullCheckNode extends DeoptimizingFixedWithNextNode implements LIRLowerable, GuardingNode { +public final class NullCheckNode extends DeoptimizingFixedWithNextNode implements LIRLowerable, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(NullCheckNode.class); @Input ValueNode object; public NullCheckNode(ValueNode object) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,10 +28,12 @@ import com.oracle.graal.nodes.*; @NodeInfo(nameTemplate = "OSRLocal({p#index})") -public class OSRLocalNode extends AbstractLocalNode implements IterableNodeType { +public final class OSRLocalNode extends AbstractLocalNode implements IterableNodeType { + + public static final NodeClass TYPE = NodeClass.get(OSRLocalNode.class); public OSRLocalNode(int index, Stamp stamp) { - super(index, stamp); + super(TYPE, index, stamp); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,14 +22,18 @@ */ package com.oracle.graal.nodes.extended; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.iterators.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class OSRStartNode extends StartNode implements Lowerable { +public final class OSRStartNode extends StartNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(OSRStartNode.class); + public OSRStartNode() { + super(TYPE); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,18 +37,20 @@ * Reads an {@linkplain FixedAccessNode accessed} value. */ @NodeInfo -public class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, PiPushable, Virtualizable, GuardingNode { +public final class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, PiPushable, Virtualizable, GuardingNode { + + public static final NodeClass TYPE = NodeClass.get(ReadNode.class); public ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { - super(object, location, stamp, null, barrierType); + super(TYPE, object, location, stamp, null, barrierType); } public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - super(object, location, stamp, guard, barrierType); + super(TYPE, object, location, stamp, guard, barrierType); } public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { - super(object, location, stamp, guard, barrierType, nullCheck, stateBefore); + super(TYPE, object, location, stamp, guard, barrierType, nullCheck, stateBefore); } public ReadNode(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType) { @@ -57,7 +59,7 @@ * location is a parameter, i.e., a ParameterNode, the constructor cannot use the declared * type LocationNode. */ - super(object, location, StampFactory.forNodeIntrinsic(), (GuardingNode) guard, barrierType); + super(TYPE, object, location, StampFactory.forNodeIntrinsic(), (GuardingNode) guard, barrierType); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,13 +23,15 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class StoreHubNode extends FixedWithNextNode implements Lowerable { +public final class StoreHubNode extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(StoreHubNode.class); @Input ValueNode value; @Input ValueNode object; @@ -42,7 +44,7 @@ } public StoreHubNode(ValueNode object, ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.value = value; this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,6 +37,7 @@ @NodeInfo public abstract class SwitchNode extends ControlSplitNode { + public static final NodeClass TYPE = NodeClass.get(SwitchNode.class); @Successor protected NodeSuccessorList successors; @Input protected ValueNode value; @@ -50,8 +51,8 @@ * @param value the instruction that provides the value to be switched over * @param successors the list of successors of this switch */ - public SwitchNode(ValueNode value, AbstractBeginNode[] successors, int[] keySuccessors, double[] keyProbabilities) { - super(StampFactory.forVoid()); + protected SwitchNode(NodeClass c, ValueNode value, AbstractBeginNode[] successors, int[] keySuccessors, double[] keyProbabilities) { + super(c, StampFactory.forVoid()); assert value.stamp().getStackKind().isNumericInteger() || value.stamp() instanceof AbstractPointerStamp : value.stamp() + " key not supported by SwitchNode"; assert keySuccessors.length == keyProbabilities.length; this.successors = new NodeSuccessorList<>(this, successors); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -33,10 +34,11 @@ @NodeInfo public final class UnboxNode extends UnaryNode implements Virtualizable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(UnboxNode.class); protected final Kind boxingKind; protected UnboxNode(ValueNode value, Kind boxingKind) { - super(StampFactory.forKind(boxingKind.getStackKind()), value); + super(TYPE, StampFactory.forKind(boxingKind.getStackKind()), value); this.boxingKind = boxingKind; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -33,13 +33,14 @@ @NodeInfo public abstract class UnsafeAccessNode extends FixedWithNextNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(UnsafeAccessNode.class); @Input ValueNode object; @Input ValueNode offset; protected final Kind accessKind; protected final LocationIdentity locationIdentity; - public UnsafeAccessNode(Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { - super(stamp); + protected UnsafeAccessNode(NodeClass c, Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { + super(c, stamp); assert accessKind != null; this.object = object; this.offset = offset; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -38,17 +38,18 @@ * than the type this nodes casts to. */ @NodeInfo -public class UnsafeCastNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, GuardingNode, IterableNodeType, Canonicalizable, ValueProxy { +public final class UnsafeCastNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, GuardingNode, IterableNodeType, Canonicalizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(UnsafeCastNode.class); @Input ValueNode object; public UnsafeCastNode(ValueNode object, Stamp stamp) { - super(stamp); + super(TYPE, stamp); this.object = object; } public UnsafeCastNode(ValueNode object, Stamp stamp, ValueNode anchor) { - super(stamp, (GuardingNode) anchor); + super(TYPE, stamp, (GuardingNode) anchor); this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; @@ -36,7 +37,8 @@ * performed before the load. */ @NodeInfo -public class UnsafeLoadNode extends UnsafeAccessNode implements Lowerable, Virtualizable { +public final class UnsafeLoadNode extends UnsafeAccessNode implements Lowerable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(UnsafeLoadNode.class); @OptionalInput(InputType.Condition) LogicNode guardingCondition; public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { @@ -44,7 +46,7 @@ } public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity, LogicNode condition) { - super(StampFactory.forKind(accessKind.getStackKind()), object, offset, accessKind, locationIdentity); + super(TYPE, StampFactory.forKind(accessKind.getStackKind()), object, offset, accessKind, locationIdentity); this.guardingCondition = condition; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; @@ -36,8 +37,9 @@ * performed before the store. */ @NodeInfo -public class UnsafeStoreNode extends UnsafeAccessNode implements StateSplit, Lowerable, Virtualizable, MemoryCheckpoint.Single { +public final class UnsafeStoreNode extends UnsafeAccessNode implements StateSplit, Lowerable, Virtualizable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(UnsafeStoreNode.class); @Input ValueNode value; @OptionalInput(InputType.State) FrameState stateAfter; @@ -46,7 +48,7 @@ } public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) { - super(StampFactory.forVoid(), object, offset, accessKind, locationIdentity); + super(TYPE, StampFactory.forVoid(), object, offset, accessKind, locationIdentity); this.value = value; this.stateAfter = stateAfter; assert accessKind != Kind.Void && accessKind != Kind.Illegal; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.extended; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,12 +35,13 @@ * The ValueAnchor instruction keeps non-CFG (floating) nodes above a certain point in the graph. */ @NodeInfo(allowedUsageTypes = {InputType.Anchor, InputType.Guard}) -public class ValueAnchorNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, Virtualizable, AnchoringNode, GuardingNode { +public final class ValueAnchorNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, Virtualizable, AnchoringNode, GuardingNode { + public static final NodeClass TYPE = NodeClass.get(ValueAnchorNode.class); @OptionalInput(InputType.Guard) ValueNode anchored; public ValueAnchorNode(ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.anchored = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,18 +35,20 @@ * Writes a given {@linkplain #value() value} a {@linkplain FixedAccessNode memory location}. */ @NodeInfo -public class WriteNode extends AbstractWriteNode implements LIRLowerable, Simplifiable, Virtualizable { +public final class WriteNode extends AbstractWriteNode implements LIRLowerable, Simplifiable, Virtualizable { + + public static final NodeClass TYPE = NodeClass.get(WriteNode.class); public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { - super(object, value, location, barrierType); + super(TYPE, object, value, location, barrierType); } public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { - super(object, value, location, barrierType, initialization); + super(TYPE, object, value, location, barrierType, initialization); } public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { - super(object, value, location, barrierType, guard, initialization); + super(TYPE, object, value, location, barrierType, guard, initialization); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,6 +35,7 @@ @NodeInfo public abstract class AbstractNewArrayNode extends AbstractNewObjectNode implements ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(AbstractNewArrayNode.class); @Input protected ValueNode length; @Override @@ -41,8 +43,8 @@ return length; } - public AbstractNewArrayNode(Stamp stamp, ValueNode length, boolean fillContents) { - super(stamp, fillContents); + public AbstractNewArrayNode(NodeClass c, Stamp stamp, ValueNode length, boolean fillContents) { + super(c, stamp, fillContents); this.length = length; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,10 +38,11 @@ @NodeInfo public abstract class AbstractNewObjectNode extends DeoptimizingFixedWithNextNode implements Simplifiable, Lowerable { + public static final NodeClass TYPE = NodeClass.get(AbstractNewObjectNode.class); protected final boolean fillContents; - public AbstractNewObjectNode(Stamp stamp, boolean fillContents) { - super(stamp); + public AbstractNewObjectNode(NodeClass c, Stamp stamp, boolean fillContents) { + super(c, stamp); this.fillContents = fillContents; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,6 +33,7 @@ @NodeInfo public abstract class AccessArrayNode extends FixedWithNextNode { + public static final NodeClass TYPE = NodeClass.get(AccessArrayNode.class); @Input protected ValueNode array; public ValueNode array() { @@ -43,8 +45,8 @@ * * @param array the instruction that produces the array object value */ - public AccessArrayNode(Stamp stamp, ValueNode array) { - super(stamp); + public AccessArrayNode(NodeClass c, Stamp stamp, ValueNode array) { + super(c, stamp); this.array = array; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -34,6 +35,7 @@ @NodeInfo public abstract class AccessFieldNode extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(AccessFieldNode.class); @OptionalInput ValueNode object; protected final ResolvedJavaField field; @@ -48,8 +50,8 @@ * @param object the instruction producing the receiver object * @param field the compiler interface representation of the field */ - public AccessFieldNode(Stamp stamp, ValueNode object, ResolvedJavaField field) { - super(stamp); + public AccessFieldNode(NodeClass c, Stamp stamp, ValueNode object, ResolvedJavaField field) { + super(c, stamp); this.object = object; this.field = field; assert field.getDeclaringClass().isInitialized(); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -35,6 +36,7 @@ @NodeInfo public abstract class AccessIndexedNode extends AccessArrayNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(AccessIndexedNode.class); @Input protected ValueNode index; protected final Kind elementKind; @@ -50,8 +52,8 @@ * @param index the instruction producing the index * @param elementKind the kind of the elements of the array */ - protected AccessIndexedNode(Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) { - super(stamp, array); + protected AccessIndexedNode(NodeClass c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) { + super(c, stamp, array); this.index = index; this.elementKind = elementKind; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -37,6 +38,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public abstract class AccessMonitorNode extends AbstractMemoryCheckpoint implements MemoryCheckpoint, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptAfter { + public static final NodeClass TYPE = NodeClass.get(AccessMonitorNode.class); @OptionalInput(InputType.State) FrameState stateBefore; @Input ValueNode object; @Input(InputType.Association) MonitorIdNode monitorId; @@ -69,8 +71,8 @@ * * @param object the instruction producing the object */ - public AccessMonitorNode(ValueNode object, MonitorIdNode monitorId) { - super(StampFactory.forVoid()); + protected AccessMonitorNode(NodeClass c, ValueNode object, MonitorIdNode monitorId) { + super(c, StampFactory.forVoid()); this.object = object; this.monitorId = monitorId; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,6 +37,7 @@ @NodeInfo public final class ArrayLengthNode extends FixedWithNextNode implements Canonicalizable.Unary, Lowerable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(ArrayLengthNode.class); @Input ValueNode array; public ValueNode array() { @@ -47,7 +49,7 @@ } public ArrayLengthNode(ValueNode array) { - super(StampFactory.positiveInt()); + super(TYPE, StampFactory.positiveInt()); this.array = array; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -38,6 +39,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class AtomicReadAndAddNode extends AbstractMemoryCheckpoint implements LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(AtomicReadAndAddNode.class); @Input ValueNode object; @Input ValueNode offset; @Input ValueNode delta; @@ -45,7 +47,7 @@ protected final LocationIdentity locationIdentity; public AtomicReadAndAddNode(ValueNode object, ValueNode offset, ValueNode delta, LocationIdentity locationIdentity) { - super(StampFactory.forKind(delta.getKind())); + super(TYPE, StampFactory.forKind(delta.getKind())); this.object = object; this.offset = offset; this.delta = delta; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -39,6 +40,7 @@ @NodeInfo public final class AtomicReadAndWriteNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(AtomicReadAndWriteNode.class); @Input ValueNode object; @Input ValueNode offset; @Input ValueNode newValue; @@ -47,7 +49,7 @@ protected final LocationIdentity locationIdentity; public AtomicReadAndWriteNode(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { - super(StampFactory.forKind(newValue.getKind())); + super(TYPE, StampFactory.forKind(newValue.getKind())); this.object = object; this.offset = offset; this.newValue = newValue; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,6 +37,7 @@ @NodeInfo public final class CheckCastDynamicNode extends FixedWithNextNode implements Canonicalizable.Binary, Lowerable { + public static final NodeClass TYPE = NodeClass.get(CheckCastDynamicNode.class); @Input ValueNode object; @Input ValueNode hub; @@ -46,7 +48,7 @@ protected final boolean forStoreCheck; public CheckCastDynamicNode(ValueNode hub, ValueNode object, boolean forStoreCheck) { - super(object.stamp()); + super(TYPE, object.stamp()); this.hub = hub; this.object = object; this.forStoreCheck = forStoreCheck; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -44,6 +44,7 @@ @NodeInfo public final class CheckCastNode extends FixedWithNextNode implements Canonicalizable, Simplifiable, Lowerable, Virtualizable, ValueProxy { + public static final NodeClass TYPE = NodeClass.get(CheckCastNode.class); @Input protected ValueNode object; protected final ResolvedJavaType type; protected final JavaTypeProfile profile; @@ -55,7 +56,7 @@ protected final boolean forStoreCheck; public CheckCastNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile, boolean forStoreCheck) { - super(StampFactory.declaredTrusted(type)); + super(TYPE, StampFactory.declaredTrusted(type)); assert type != null; this.type = type; this.object = object; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,10 +36,13 @@ */ @NodeInfo public final class ClassIsAssignableFromNode extends LogicNode implements Canonicalizable.Binary, Lowerable { + + public static final NodeClass TYPE = NodeClass.get(ClassIsAssignableFromNode.class); @Input ValueNode thisClass; @Input ValueNode otherClass; public ClassIsAssignableFromNode(ValueNode thisClass, ValueNode otherClass) { + super(TYPE); this.thisClass = thisClass; this.otherClass = otherClass; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -38,6 +39,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class CompareAndSwapNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(CompareAndSwapNode.class); @Input ValueNode object; @Input ValueNode offset; @Input ValueNode expected; @@ -47,7 +49,7 @@ protected final LocationIdentity locationIdentity; public CompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { - super(StampFactory.forKind(Kind.Boolean.getStackKind())); + super(TYPE, StampFactory.forKind(Kind.Boolean.getStackKind())); assert expected.stamp().isCompatible(newValue.stamp()); this.object = object; this.offset = offset; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,6 +39,7 @@ */ @NodeInfo public class DynamicNewArrayNode extends AbstractNewArrayNode { + public static final NodeClass TYPE = NodeClass.get(DynamicNewArrayNode.class); @Input ValueNode elementType; @@ -49,11 +50,15 @@ protected final Kind knownElementKind; public DynamicNewArrayNode(ValueNode elementType, ValueNode length) { - this(elementType, length, true, null); + this(TYPE, elementType, length, true, null); } public DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) { - super(StampFactory.objectNonNull(), length, fillContents); + this(TYPE, elementType, length, fillContents, knownElementKind); + } + + protected DynamicNewArrayNode(NodeClass c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) { + super(c, StampFactory.objectNonNull(), length, fillContents); this.elementType = elementType; this.knownElementKind = knownElementKind; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -31,11 +31,12 @@ @NodeInfo public final class DynamicNewInstanceNode extends AbstractNewObjectNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(DynamicNewInstanceNode.class); @Input ValueNode clazz; public DynamicNewInstanceNode(ValueNode clazz, boolean fillContents) { - super(StampFactory.objectNonNull(), fillContents); + super(TYPE, StampFactory.objectNonNull(), fillContents); this.clazz = clazz; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -35,9 +36,10 @@ */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public final class ExceptionObjectNode extends DispatchBeginNode implements Lowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(ExceptionObjectNode.class); public ExceptionObjectNode(MetaAccessProvider metaAccess) { - super(StampFactory.declaredNonNull(metaAccess.lookupJavaType(Throwable.class))); + super(TYPE, StampFactory.declaredNonNull(metaAccess.lookupJavaType(Throwable.class))); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,11 +37,13 @@ */ @NodeInfo public class InstanceOfDynamicNode extends LogicNode implements Canonicalizable.Binary, Lowerable { + public static final NodeClass TYPE = NodeClass.get(InstanceOfDynamicNode.class); @Input ValueNode object; @Input ValueNode mirror; public InstanceOfDynamicNode(ValueNode mirror, ValueNode object) { + super(TYPE); this.mirror = mirror; this.object = object; assert mirror.getKind() == Kind.Object : mirror.getKind(); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -35,13 +36,14 @@ * The {@code InstanceOfNode} represents an instanceof test. */ @NodeInfo -public class InstanceOfNode extends UnaryOpLogicNode implements Lowerable, Virtualizable { +public final class InstanceOfNode extends UnaryOpLogicNode implements Lowerable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(InstanceOfNode.class); protected final ResolvedJavaType type; protected JavaTypeProfile profile; public InstanceOfNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile) { - super(object); + super(TYPE, object); this.type = type; this.profile = profile; assert type != null; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,15 +23,18 @@ package com.oracle.graal.nodes.java; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class LoadExceptionObjectNode extends AbstractStateSplit implements Lowerable { +public final class LoadExceptionObjectNode extends AbstractStateSplit implements Lowerable { + + public static final NodeClass TYPE = NodeClass.get(LoadExceptionObjectNode.class); public LoadExceptionObjectNode(Stamp stamp) { - super(stamp); + super(TYPE, stamp); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -39,8 +40,10 @@ @NodeInfo(nameTemplate = "LoadField#{p#field/s}") public final class LoadFieldNode extends AccessFieldNode implements Canonicalizable.Unary, VirtualizableRoot, UncheckedInterfaceProvider { + public static final NodeClass TYPE = NodeClass.get(LoadFieldNode.class); + public LoadFieldNode(ValueNode object, ResolvedJavaField field) { - super(createStamp(field), object, field); + super(TYPE, createStamp(field), object, field); } public ValueNode getValue() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,6 +37,8 @@ @NodeInfo public class LoadIndexedNode extends AccessIndexedNode implements Virtualizable, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(LoadIndexedNode.class); + /** * Creates a new LoadIndexedNode. * @@ -45,7 +47,7 @@ * @param elementKind the element type */ public LoadIndexedNode(ValueNode array, ValueNode index, Kind elementKind) { - this(createStamp(array, elementKind), array, index, elementKind); + this(TYPE, createStamp(array, elementKind), array, index, elementKind); } public static ValueNode create(ValueNode array, ValueNode index, Kind elementKind, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection) { @@ -56,8 +58,8 @@ return new LoadIndexedNode(array, index, elementKind); } - protected LoadIndexedNode(Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) { - super(stamp, array, index, elementKind); + protected LoadIndexedNode(NodeClass c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) { + super(c, stamp, array, index, elementKind); } private static Stamp createStamp(ValueNode array, Kind kind) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import sun.misc.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -35,13 +36,14 @@ * {@link Unsafe#getAndSetInt(Object, long, int)} . */ @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class LoweredAtomicReadAndWriteNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single { +public final class LoweredAtomicReadAndWriteNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(LoweredAtomicReadAndWriteNode.class); @Input ValueNode newValue; @OptionalInput(InputType.State) FrameState stateAfter; public LoweredAtomicReadAndWriteNode(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType) { - super(object, location, newValue.stamp().unrestricted(), barrierType); + super(TYPE, object, location, newValue.stamp().unrestricted(), barrierType); this.newValue = newValue; } @@ -73,7 +75,7 @@ return false; } - public final ValueNode getNewValue() { + public ValueNode getNewValue() { return newValue; } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -33,8 +34,9 @@ * Represents the lowered version of an atomic compare-and-swap operation{@code CompareAndSwapNode}. */ @NodeInfo(allowedUsageTypes = {InputType.Value, InputType.Memory}) -public class LoweredCompareAndSwapNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single { +public final class LoweredCompareAndSwapNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(LoweredCompareAndSwapNode.class); @Input ValueNode expectedValue; @Input ValueNode newValue; @OptionalInput(InputType.State) FrameState stateAfter; @@ -62,7 +64,7 @@ } public LoweredCompareAndSwapNode(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) { - super(object, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType); + super(TYPE, object, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType); assert expectedValue.getKind() == newValue.getKind(); this.expectedValue = expectedValue; this.newValue = newValue; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,10 +34,15 @@ @NodeInfo public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Simplifiable { + public static final NodeClass TYPE = NodeClass.get(MethodCallTargetNode.class); protected final JavaType returnType; public MethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) { - super(arguments, targetMethod, invokeKind); + this(TYPE, invokeKind, targetMethod, arguments, returnType); + } + + protected MethodCallTargetNode(NodeClass c, InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) { + super(c, arguments, targetMethod, invokeKind); this.returnType = returnType; } @@ -243,7 +248,7 @@ } public static MethodCallTargetNode find(StructuredGraph graph, ResolvedJavaMethod method) { - for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.TYPE)) { if (target.targetMethod().equals(method)) { return target; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,8 +35,10 @@ @NodeInfo public final class MonitorEnterNode extends AccessMonitorNode implements Virtualizable, Lowerable, IterableNodeType, MonitorEnter, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(MonitorEnterNode.class); + public MonitorEnterNode(ValueNode object, MonitorIdNode monitorId) { - super(object, monitorId); + super(TYPE, object, monitorId); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,10 +39,11 @@ @NodeInfo public final class MonitorExitNode extends AccessMonitorNode implements Virtualizable, Simplifiable, Lowerable, IterableNodeType, MonitorExit, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(MonitorExitNode.class); @OptionalInput ValueNode escapedReturnValue; public MonitorExitNode(ValueNode object, MonitorIdNode monitorId, ValueNode escapedReturnValue) { - super(object, monitorId); + super(TYPE, object, monitorId); this.escapedReturnValue = escapedReturnValue; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,10 +36,15 @@ @NodeInfo(allowedUsageTypes = {InputType.Association}) public class MonitorIdNode extends ValueNode implements IterableNodeType, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(MonitorIdNode.class); protected int lockDepth; public MonitorIdNode(int lockDepth) { - super(StampFactory.forVoid()); + this(TYPE, lockDepth); + } + + protected MonitorIdNode(NodeClass c, int lockDepth) { + super(c, StampFactory.forVoid()); this.lockDepth = lockDepth; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -40,8 +41,14 @@ @NodeInfo public class NewArrayNode extends AbstractNewArrayNode implements VirtualizableAllocation { + public static final NodeClass TYPE = NodeClass.get(NewArrayNode.class); + public NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents) { - super(StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents); + super(TYPE, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents); + } + + protected NewArrayNode(NodeClass c, ResolvedJavaType elementType, ValueNode length, boolean fillContents) { + super(c, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents); } @NodeIntrinsic diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -38,10 +39,11 @@ @NodeInfo(nameTemplate = "New {p#instanceClass/s}") public final class NewInstanceNode extends AbstractNewObjectNode implements VirtualizableAllocation { + public static final NodeClass TYPE = NodeClass.get(NewInstanceNode.class); protected final ResolvedJavaType instanceClass; public NewInstanceNode(ResolvedJavaType type, boolean fillContents) { - super(StampFactory.exactNonNull(type), fillContents); + super(TYPE, StampFactory.exactNonNull(type), fillContents); assert !type.isArray() && !type.isInterface() && !type.isPrimitive(); this.instanceClass = type; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,6 +35,7 @@ @NodeInfo public final class NewMultiArrayNode extends DeoptimizingFixedWithNextNode implements Lowerable, ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(NewMultiArrayNode.class); @Input protected NodeInputList dimensions; protected final ResolvedJavaType type; @@ -51,7 +52,7 @@ } public NewMultiArrayNode(ResolvedJavaType type, ValueNode[] dimensions) { - super(StampFactory.exactNonNull(type)); + super(TYPE, StampFactory.exactNonNull(type)); this.type = type; this.dimensions = new NodeInputList<>(this, dimensions); assert dimensions.length > 0 && type.isArray(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,13 +37,14 @@ * constructor. */ @NodeInfo -public class RegisterFinalizerNode extends AbstractStateSplit implements Canonicalizable.Unary, LIRLowerable, Virtualizable, DeoptimizingNode.DeoptAfter { +public final class RegisterFinalizerNode extends AbstractStateSplit implements Canonicalizable.Unary, LIRLowerable, Virtualizable, DeoptimizingNode.DeoptAfter { + public static final NodeClass TYPE = NodeClass.get(RegisterFinalizerNode.class); @OptionalInput(InputType.State) FrameState deoptState; @Input ValueNode value; public RegisterFinalizerNode(ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,8 +37,9 @@ * inlined. */ @NodeInfo -public class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable { +public final class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(SelfReplacingMethodCallTargetNode.class); // Replacement method data protected final ResolvedJavaMethod replacementTargetMethod; protected final JavaType replacementReturnType; @@ -46,7 +47,7 @@ public SelfReplacingMethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, ResolvedJavaMethod replacementTargetMethod, ValueNode[] replacementArguments, JavaType replacementReturnType) { - super(invokeKind, targetMethod, arguments, returnType); + super(TYPE, invokeKind, targetMethod, arguments, returnType); this.replacementTargetMethod = replacementTargetMethod; this.replacementReturnType = replacementReturnType; this.replacementArguments = new NodeInputList<>(this, replacementArguments); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -33,7 +34,8 @@ * The {@code StoreFieldNode} represents a write to a static or instance field. */ @NodeInfo(nameTemplate = "StoreField#{p#field/s}") -public class StoreFieldNode extends AccessFieldNode implements StateSplit, VirtualizableRoot { +public final class StoreFieldNode extends AccessFieldNode implements StateSplit, VirtualizableRoot { + public static final NodeClass TYPE = NodeClass.get(StoreFieldNode.class); @Input ValueNode value; @OptionalInput(InputType.State) FrameState stateAfter; @@ -57,12 +59,12 @@ } public StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value) { - super(StampFactory.forVoid(), object, field); + super(TYPE, StampFactory.forVoid(), object, field); this.value = value; } public StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value, FrameState stateAfter) { - super(StampFactory.forVoid(), object, field); + super(TYPE, StampFactory.forVoid(), object, field); this.value = value; this.stateAfter = stateAfter; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -33,8 +34,9 @@ * The {@code StoreIndexedNode} represents a write to an array element. */ @NodeInfo -public class StoreIndexedNode extends AccessIndexedNode implements StateSplit, Lowerable, Virtualizable { +public final class StoreIndexedNode extends AccessIndexedNode implements StateSplit, Lowerable, Virtualizable { + public static final NodeClass TYPE = NodeClass.get(StoreIndexedNode.class); @Input ValueNode value; @OptionalInput(InputType.State) FrameState stateAfter; @@ -57,7 +59,7 @@ } public StoreIndexedNode(ValueNode array, ValueNode index, Kind elementKind, ValueNode value) { - super(StampFactory.forVoid(), array, index, elementKind); + super(TYPE, StampFactory.forVoid(), array, index, elementKind); this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,12 +39,13 @@ * comparison is an exact type comparison, not an instanceof. */ @NodeInfo -public class TypeSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { +public final class TypeSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { + public static final NodeClass TYPE = NodeClass.get(TypeSwitchNode.class); protected final ResolvedJavaType[] keys; public TypeSwitchNode(ValueNode value, AbstractBeginNode[] successors, ResolvedJavaType[] keys, double[] keyProbabilities, int[] keySuccessors) { - super(value, successors, keySuccessors, keyProbabilities); + super(TYPE, value, successors, keySuccessors, keyProbabilities); assert successors.length <= keys.length + 1; assert keySuccessors.length == keyProbabilities.length; this.keys = keys; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,6 +23,7 @@ package com.oracle.graal.nodes.virtual; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; @@ -35,11 +36,12 @@ @NodeInfo public final class AllocatedObjectNode extends FloatingNode implements Virtualizable, ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(AllocatedObjectNode.class); @Input VirtualObjectNode virtualObject; @Input(InputType.Extension) CommitAllocationNode commit; public AllocatedObjectNode(VirtualObjectNode virtualObject) { - super(StampFactory.exactNonNull(virtualObject.type())); + super(TYPE, StampFactory.exactNonNull(virtualObject.type())); this.virtualObject = virtualObject; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -35,13 +35,14 @@ @NodeInfo(nameTemplate = "Alloc {i#virtualObjects}", allowedUsageTypes = {InputType.Extension}) public final class CommitAllocationNode extends FixedWithNextNode implements VirtualizableAllocation, Lowerable, Simplifiable { + public static final NodeClass TYPE = NodeClass.get(CommitAllocationNode.class); @Input NodeInputList virtualObjects = new NodeInputList<>(this); @Input NodeInputList values = new NodeInputList<>(this); @Input(InputType.Association) NodeInputList locks = new NodeInputList<>(this); protected ArrayList lockIndexes = new ArrayList<>(Arrays.asList(0)); public CommitAllocationNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } public List getVirtualObjects() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,12 +22,14 @@ */ package com.oracle.graal.nodes.virtual; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.Node.ValueNumberable; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo public abstract class EscapeObjectState extends VirtualState implements ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(EscapeObjectState.class); @Input protected VirtualObjectNode object; @@ -35,7 +37,8 @@ return object; } - public EscapeObjectState(VirtualObjectNode object) { + public EscapeObjectState(NodeClass c, VirtualObjectNode object) { + super(c); this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,18 +27,20 @@ import sun.misc.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo(nameTemplate = "VirtualArray {p#componentType/s}[{p#length}]") -public class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider { +public final class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(VirtualArrayNode.class); protected final ResolvedJavaType componentType; protected final int length; public VirtualArrayNode(ResolvedJavaType componentType, int length) { - super(componentType.getArrayClass(), true); + super(TYPE, componentType.getArrayClass(), true); this.componentType = componentType; this.length = length; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,17 +23,19 @@ package com.oracle.graal.nodes.virtual; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @NodeInfo -public class VirtualBoxingNode extends VirtualInstanceNode { +public final class VirtualBoxingNode extends VirtualInstanceNode { + public static final NodeClass TYPE = NodeClass.get(VirtualBoxingNode.class); protected final Kind boxingKind; public VirtualBoxingNode(ResolvedJavaType type, Kind boxingKind) { - super(type, false); + super(TYPE, type, false); this.boxingKind = boxingKind; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,12 +23,14 @@ package com.oracle.graal.nodes.virtual; import com.oracle.graal.api.meta.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo(nameTemplate = "VirtualInstance {p#type/s}") public class VirtualInstanceNode extends VirtualObjectNode { + public static final NodeClass TYPE = NodeClass.get(VirtualInstanceNode.class); protected final ResolvedJavaType type; protected final ResolvedJavaField[] fields; @@ -37,7 +39,15 @@ } public VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) { - super(type, hasIdentity); + this(TYPE, type, fields, hasIdentity); + } + + protected VirtualInstanceNode(NodeClass c, ResolvedJavaType type, boolean hasIdentity) { + this(c, type, type.getInstanceFields(true), hasIdentity); + } + + protected VirtualInstanceNode(NodeClass c, ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) { + super(c, type, hasIdentity); this.type = type; this.fields = fields; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,10 +32,11 @@ @NodeInfo public abstract class VirtualObjectNode extends ValueNode implements LIRLowerable, IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(VirtualObjectNode.class); protected boolean hasIdentity; - public VirtualObjectNode(ResolvedJavaType type, boolean hasIdentity) { - super(StampFactory.exactNonNull(type)); + protected VirtualObjectNode(NodeClass c, ResolvedJavaType type, boolean hasIdentity) { + super(c, StampFactory.exactNonNull(type)); this.hasIdentity = hasIdentity; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -187,7 +187,7 @@ if (node.isAlive()) { METRIC_PROCESSED_NODES.increment(); - NodeClass nodeClass = node.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); if (tryGlobalValueNumbering(node, nodeClass)) { return; } @@ -213,7 +213,7 @@ } } - public static boolean tryGlobalValueNumbering(Node node, NodeClass nodeClass) { + public static boolean tryGlobalValueNumbering(Node node, NodeClass nodeClass) { if (nodeClass.valueNumberable() && !nodeClass.isLeafNode()) { Node newNode = node.graph().findDuplicate(node); if (newNode != null) { @@ -228,7 +228,7 @@ return false; } - public boolean tryCanonicalize(final Node node, NodeClass nodeClass) { + public boolean tryCanonicalize(final Node node, NodeClass nodeClass) { if (customCanonicalizer != null) { Node canonical = customCanonicalizer.canonicalize(node); if (performReplacement(node, canonical)) { @@ -254,7 +254,7 @@ } } - public boolean baseTryCanonicalize(final Node node, NodeClass nodeClass) { + public boolean baseTryCanonicalize(final Node node, NodeClass nodeClass) { if (nodeClass.isCanonicalizable()) { METRIC_CANONICALIZATION_CONSIDERED_NODES.increment(); try (Scope s = Debug.scope("CanonicalizeNode", node)) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -40,13 +40,13 @@ protected void run(StructuredGraph graph, PhaseContext context) { HashSetNodeEventListener listener = new HashSetNodeEventListener(); try (NodeEventScope s = graph.trackNodeEvents(listener)) { - for (TypeProfileProxyNode proxy : graph.getNodes(TypeProfileProxyNode.class)) { + for (TypeProfileProxyNode proxy : graph.getNodes(TypeProfileProxyNode.TYPE)) { graph.replaceFloating(proxy, proxy.getValue()); } } if (!listener.getNodes().isEmpty()) { canonicalizer.applyIncremental(graph, context, listener.getNodes()); } - assert graph.getNodes(TypeProfileProxyNode.class).count() == 0; + assert graph.getNodes(TypeProfileProxyNode.TYPE).count() == 0; } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -58,15 +58,15 @@ @Override protected void run(final StructuredGraph graph) { assert graph.hasValueProxies() : "ConvertDeoptimizeToGuardPhase always creates proxies"; - if (graph.getNodes(DeoptimizeNode.class).isEmpty()) { + if (graph.getNodes(DeoptimizeNode.TYPE).isEmpty()) { return; } - for (DeoptimizeNode d : graph.getNodes(DeoptimizeNode.class)) { + for (DeoptimizeNode d : graph.getNodes(DeoptimizeNode.TYPE)) { assert d.isAlive(); visitDeoptBegin(AbstractBeginNode.prevBegin(d), d.action(), d.reason(), graph); } - for (FixedGuardNode fixedGuard : graph.getNodes(FixedGuardNode.class)) { + for (FixedGuardNode fixedGuard : graph.getNodes(FixedGuardNode.TYPE)) { AbstractBeginNode pred = AbstractBeginNode.prevBegin(fixedGuard); if (pred instanceof AbstractMergeNode) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -79,7 +79,7 @@ deleteNodes(flood, graph); // remove chained Merges - for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class)) { + for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE)) { if (merge.forwardEndCount() == 1 && !(merge instanceof LoopBeginNode)) { graph.reduceTrivialMerge(merge); } @@ -100,7 +100,7 @@ } private static void disconnectCFGNodes(NodeFlood flood, StructuredGraph graph) { - for (AbstractEndNode node : graph.getNodes(AbstractEndNode.class)) { + for (AbstractEndNode node : graph.getNodes(AbstractEndNode.TYPE)) { if (!flood.isMarked(node)) { AbstractMergeNode merge = node.merge(); if (merge != null && flood.isMarked(merge)) { @@ -109,7 +109,7 @@ } } } - for (LoopBeginNode loop : graph.getNodes(LoopBeginNode.class)) { + for (LoopBeginNode loop : graph.getNodes(LoopBeginNode.TYPE)) { if (flood.isMarked(loop)) { boolean reachable = false; for (LoopEndNode end : loop.loopEnds()) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -40,7 +40,7 @@ @Override protected void run(StructuredGraph graph, MidTierContext context) { ControlFlowGraph cfg = null; - for (FrameState fs : graph.getNodes(FrameState.class)) { + for (FrameState fs : graph.getNodes(FrameState.TYPE)) { FixedNode target = null; PhiNode reasonActionPhi = null; PhiNode speculationPhi = null; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -32,10 +32,10 @@ @Override protected void run(StructuredGraph graph) { - for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.class)) { + for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.TYPE)) { processBinary(logic); } - assert graph.getNodes(ShortCircuitOrNode.class).isEmpty(); + assert graph.getNodes(ShortCircuitOrNode.TYPE).isEmpty(); } private static void processBinary(ShortCircuitOrNode binary) { @@ -60,9 +60,9 @@ double firstIfProbability = shortCircuitProbability; /* * P(Y | not(X)) = P(Y inter not(X)) / P(not(X)) = (P(X union Y) - P(X)) / (1 - P(X)) - * + * * P(X) = shortCircuitProbability - * + * * P(X union Y) = ifNode.probability(trueTarget) */ double secondIfProbability = (ifNode.probability(trueTarget) - shortCircuitProbability) / (1 - shortCircuitProbability); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -110,7 +110,7 @@ if (graph.getGuardsStage().areFrameStatesAtSideEffects()) { ReentrantNodeIterator.apply(new FrameStateAssignmentClosure(), graph.start(), null); graph.setGuardsStage(GuardsStage.AFTER_FSA); - graph.getNodes(FrameState.class).filter(state -> state.hasNoUsages()).forEach(GraphUtil::killWithUnusedFloatingInputs); + graph.getNodes(FrameState.TYPE).filter(state -> state.hasNoUsages()).forEach(GraphUtil::killWithUnusedFloatingInputs); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -31,7 +31,7 @@ @Override protected void run(StructuredGraph graph) { - for (MonitorExitNode node : graph.getNodes(MonitorExitNode.class)) { + for (MonitorExitNode node : graph.getNodes(MonitorExitNode.TYPE)) { FixedNode next = node.next(); if (next instanceof MonitorEnterNode) { MonitorEnterNode monitorEnterNode = (MonitorEnterNode) next; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -35,7 +35,7 @@ @Override protected void run(StructuredGraph graph) { if (GenLoopSafepoints.getValue()) { - for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.class)) { + for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.TYPE)) { if (loopEndNode.canSafepoint()) { SafepointNode safepointNode = graph.add(new SafepointNode()); graph.addBeforeFixed(loopEndNode, safepointNode); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,11 +47,12 @@ public class LoweringPhase extends BasePhase { @NodeInfo - static class DummyGuardHandle extends ValueNode implements GuardedNode { + static final class DummyGuardHandle extends ValueNode implements GuardedNode { + public static final NodeClass TYPE = NodeClass.get(DummyGuardHandle.class); @Input(InputType.Guard) GuardingNode guard; public DummyGuardHandle(GuardingNode guard) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.guard = guard; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -35,7 +35,7 @@ @Override protected void run(StructuredGraph graph) { Stamp nonNull = StampFactory.objectNonNull(); - for (ParameterNode param : graph.getNodes(ParameterNode.class)) { + for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) { if (param.stamp() instanceof ObjectStamp) { ObjectStamp paramStamp = (ObjectStamp) param.stamp(); param.setStamp(paramStamp.join(nonNull)); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -55,7 +55,7 @@ @Override protected void run(StructuredGraph graph) { LazyCFG cfg = new LazyCFG(graph); - for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.class)) { + for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.TYPE)) { if (!(begin instanceof StartNode || begin.predecessor() instanceof ControlSplitNode)) { NodeIterable guards = begin.guards(); if (guards.isNotEmpty()) { @@ -71,7 +71,7 @@ } } } - for (ControlSplitNode controlSplit : graph.getNodes(ControlSplitNode.class)) { + for (ControlSplitNode controlSplit : graph.getNodes(ControlSplitNode.TYPE)) { optimizeAtControlSplit(controlSplit, cfg); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -34,7 +34,7 @@ @Override protected void run(StructuredGraph graph) { - for (PiNode pi : graph.getNodes(PiNode.class)) { + for (PiNode pi : graph.getNodes(PiNode.TYPE)) { for (Node n : pi.usages().snapshot()) { if (n instanceof PiPushable) { PiPushable pip = (PiPushable) n; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -30,12 +30,12 @@ @Override protected void run(StructuredGraph graph) { - for (ProxyNode vpn : graph.getNodes(ProxyNode.class)) { + for (ProxyNode vpn : graph.getNodes(ProxyNode.TYPE)) { if (vpn instanceof ValueProxyNode) { graph.replaceFloating(vpn, vpn.value()); } } - for (LoopExitNode exit : graph.getNodes(LoopExitNode.class)) { + for (LoopExitNode exit : graph.getNodes(LoopExitNode.TYPE)) { FrameState stateAfter = exit.stateAfter(); if (stateAfter != null) { exit.setStateAfter(null); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -62,9 +62,11 @@ private final CanonicalizerPhase canonicalizer; @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor}) - static class DummyAnchorNode extends FixedWithNextNode implements GuardingNode, AnchoringNode { + static final class DummyAnchorNode extends FixedWithNextNode implements GuardingNode, AnchoringNode { + public static final NodeClass TYPE = NodeClass.get(DummyAnchorNode.class); + public DummyAnchorNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } } @@ -156,12 +158,12 @@ @Override protected void run(StructuredGraph graph, PhaseContext phaseContext) { - if (graph.hasNode(AbstractMergeNode.class)) { + if (graph.hasNode(AbstractMergeNode.TYPE)) { ToDoubleFunction nodeProbabilities = new FixedNodeProbabilityCache(); // A snapshot is taken here, so that new MergeNode instances aren't considered for tail // duplication. - for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class).snapshot()) { + for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE).snapshot()) { if (!(merge instanceof LoopBeginNode) && nodeProbabilities.applyAsDouble(merge) >= TailDuplicationProbability.getValue()) { tailDuplicate(merge, DEFAULT_DECISION, null, phaseContext, canonicalizer); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -48,10 +48,10 @@ } assert graph.getGuardsStage().areFrameStatesAtDeopts(); - for (DeoptimizeNode deopt : graph.getNodes(DeoptimizeNode.class)) { + for (DeoptimizeNode deopt : graph.getNodes(DeoptimizeNode.TYPE)) { tryUseTrappingNullCheck(deopt, deopt.predecessor(), deopt.reason(), deopt.getSpeculation()); } - for (DynamicDeoptimizeNode deopt : graph.getNodes(DynamicDeoptimizeNode.class)) { + for (DynamicDeoptimizeNode deopt : graph.getNodes(DynamicDeoptimizeNode.TYPE)) { tryUseTrappingNullCheck(context.getMetaAccess(), deopt); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -30,7 +30,7 @@ @Override protected void run(StructuredGraph graph) { - for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) { + for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) { VerifyHeapNode.addBefore(returnNode); } } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Mon Feb 16 21:45:12 2015 +0100 @@ -331,7 +331,7 @@ processFrameStates(invoke, inlineGraph, duplicates, stateAtExceptionEdge, returnNodes.size() > 1); int callerLockDepth = stateAfter.nestedLockDepth(); if (callerLockDepth != 0) { - for (MonitorIdNode original : inlineGraph.getNodes(MonitorIdNode.class)) { + for (MonitorIdNode original : inlineGraph.getNodes(MonitorIdNode.TYPE)) { MonitorIdNode monitor = (MonitorIdNode) duplicates.get(original); monitor.setLockDepth(monitor.getLockDepth() + callerLockDepth); } @@ -389,11 +389,11 @@ } private static void processSimpleInfopoints(Invoke invoke, StructuredGraph inlineGraph, Map duplicates) { - if (inlineGraph.getNodes(SimpleInfopointNode.class).isEmpty()) { + if (inlineGraph.getNodes(SimpleInfopointNode.TYPE).isEmpty()) { return; } BytecodePosition pos = new BytecodePosition(toBytecodePosition(invoke.stateAfter()), invoke.asNode().graph().method(), invoke.bci()); - for (SimpleInfopointNode original : inlineGraph.getNodes(SimpleInfopointNode.class)) { + for (SimpleInfopointNode original : inlineGraph.getNodes(SimpleInfopointNode.TYPE)) { SimpleInfopointNode duplicate = (SimpleInfopointNode) duplicates.get(original); duplicate.addCaller(pos); } @@ -410,7 +410,7 @@ FrameState stateAtReturn = invoke.stateAfter(); FrameState outerFrameState = null; Kind invokeReturnKind = invoke.asNode().getKind(); - for (FrameState original : inlineGraph.getNodes(FrameState.class)) { + for (FrameState original : inlineGraph.getNodes(FrameState.TYPE)) { FrameState frameState = (FrameState) duplicates.get(original); if (frameState != null && frameState.isAlive()) { if (frameState.bci == BytecodeFrame.AFTER_BCI) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java Mon Feb 16 21:45:12 2015 +0100 @@ -73,7 +73,7 @@ } public static void getInlinedParameterUsages(Collection parameterUsages, StructuredGraph calleeGraph, Map duplicateMap) { - for (ParameterNode parameter : calleeGraph.getNodes(ParameterNode.class)) { + for (ParameterNode parameter : calleeGraph.getNodes(ParameterNode.TYPE)) { for (Node usage : parameter.usages()) { Node node = duplicateMap.get(usage); if (node != null && node.isAlive()) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java Mon Feb 16 21:45:12 2015 +0100 @@ -143,7 +143,7 @@ private ArrayList replaceParamsWithMoreInformativeArguments(final Invoke invoke, final HighTierContext context) { NodeInputList args = invoke.callTarget().arguments(); ArrayList parameterUsages = null; - List params = graph.getNodes(ParameterNode.class).snapshot(); + List params = graph.getNodes(ParameterNode.TYPE).snapshot(); assert params.size() <= args.size(); /* * param-nodes that aren't used (eg, as a result of canonicalization) don't occur in diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java Mon Feb 16 21:45:12 2015 +0100 @@ -94,7 +94,7 @@ return Collections.EMPTY_SET; } Set result = Node.newSet(); - for (ParameterNode p : graph.getNodes(ParameterNode.class)) { + for (ParameterNode p : graph.getNodes(ParameterNode.TYPE)) { if (freshlyInstantiatedArguments.get(p.index())) { result.add(p); } @@ -186,7 +186,7 @@ } public boolean containsParam(ParameterNode param) { - for (ParameterNode p : graph.getNodes(ParameterNode.class)) { + for (ParameterNode p : graph.getNodes(ParameterNode.TYPE)) { if (p == param) { return true; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java Mon Feb 16 21:45:12 2015 +0100 @@ -75,7 +75,7 @@ Map loops = Node.newIdentityMap(EXPECTED_LOOP_COUNT); loops.put(null, new Scope(graph.start(), null)); - for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.class)) { + for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.TYPE)) { createLoopScope(loopBegin, loops); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java Mon Feb 16 21:45:12 2015 +0100 @@ -108,7 +108,7 @@ protected Deque getScopes(StructuredGraph graph) { Deque result = new ArrayDeque<>(); result.push(graph.start()); - for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.class)) { + for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.TYPE)) { result.push(loopBegin); } return result; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java Mon Feb 16 21:45:12 2015 +0100 @@ -39,7 +39,7 @@ @Override protected boolean verify(StructuredGraph graph, PhaseContext context) { - for (MethodCallTargetNode t : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode t : graph.getNodes(MethodCallTargetNode.TYPE)) { ResolvedJavaMethod callee = t.targetMethod(); ResolvedJavaType debugType = context.getMetaAccess().lookupJavaType(Debug.class); if (callee.getDeclaringClass().equals(debugType)) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java Mon Feb 16 21:45:12 2015 +0100 @@ -294,7 +294,7 @@ writeString(type.toJavaName()); writeByte(KLASS); } else if (object instanceof NodeClass) { - NodeClass nodeClass = (NodeClass) object; + NodeClass nodeClass = (NodeClass) object; writeByte(POOL_NODE_CLASS); writeString(nodeClass.getJavaClass().getSimpleName()); writeString(nodeClass.getNameTemplate()); @@ -330,7 +330,7 @@ } } - private void writeEdgesInfo(NodeClass nodeClass, Edges.Type type) throws IOException { + private void writeEdgesInfo(NodeClass nodeClass, Edges.Type type) throws IOException { Edges edges = nodeClass.getEdges(type); writeShort((char) edges.getCount()); for (int i = 0; i < edges.getCount(); i++) { @@ -412,7 +412,7 @@ writeInt(graph.getNodeCount()); for (Node node : graph.getNodes()) { - NodeClass nodeClass = node.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); node.getDebugProperties(props); if (probabilities != null && node instanceof FixedNode) { try { @@ -439,7 +439,7 @@ } private void writeEdges(Node node, Edges.Type type) throws IOException { - NodeClass nodeClass = node.getNodeClass(); + NodeClass nodeClass = node.getNodeClass(); Edges edges = nodeClass.getEdges(type); for (int i = 0; i < edges.getDirectCount(); i++) { writeNodeRef(edges.getNode(node, i)); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,9 +37,10 @@ */ @NodeInfo public final class AMD64CountLeadingZerosNode extends UnaryNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AMD64CountLeadingZerosNode.class); public AMD64CountLeadingZerosNode(ValueNode value) { - super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); + super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,9 +37,10 @@ */ @NodeInfo public final class AMD64CountTrailingZerosNode extends UnaryNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AMD64CountTrailingZerosNode.class); public AMD64CountTrailingZerosNode(ValueNode value) { - super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); + super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.ArithmeticOpTable.FloatConvertOp; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -38,11 +39,12 @@ */ @NodeInfo public final class AMD64FloatConvertNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AMD64FloatConvertNode.class); protected final FloatConvert op; public AMD64FloatConvertNode(FloatConvert op, ValueNode value) { - super(table -> table.getFloatConvert(op), value); + super(TYPE, table -> table.getFloatConvert(op), value); this.op = op; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -335,7 +335,7 @@ new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context); new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); - Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 0); + Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0); } public static final int[] constantArray3 = new int[]{1, 2, 3}; @@ -351,7 +351,7 @@ new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context); new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); - Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 1); + Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1); } public static boolean testCanonicalEqualSnippet() { @@ -367,7 +367,7 @@ new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context); new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); - Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 1); + Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1); } public static boolean testVirtualEqualSnippet() { @@ -385,7 +385,7 @@ new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context); new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders())); - Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 0); + Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0); } public static boolean testVirtualNotEqualSnippet(int x) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -253,12 +253,12 @@ canonicalizer.apply(graph, context); new InliningPhase(canonicalizer).apply(graph, context); canonicalizer.apply(graph, context); - Assert.assertEquals(1, graph.getNodes(ReturnNode.class).count()); + Assert.assertEquals(1, graph.getNodes(ReturnNode.TYPE).count()); if (expectedClass != null) { if (graph.getNodes().filter(expectedClass).count() == 0) { return null; } } - return graph.getNodes(ReturnNode.class).first().result(); + return graph.getNodes(ReturnNode.TYPE).first().result(); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -45,11 +45,13 @@ @NodeInfo static final class TestNode extends Node { + public static final NodeClass TYPE = NodeClass.get(TestNode.class); @Input NodeInputList itail; @Input ConstantNode i1; @Input FloatingNode i2; public TestNode() { + super(TYPE); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -64,7 +64,7 @@ @Override protected void run(StructuredGraph graph) { ArrayList cleanUpReturnList = new ArrayList<>(); - for (MethodCallTargetNode node : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode node : graph.getNodes(MethodCallTargetNode.TYPE)) { tryIntrinsify(node, cleanUpReturnList); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -43,7 +43,7 @@ @Override protected void run(StructuredGraph graph) { - for (MethodCallTargetNode n : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode n : graph.getNodes(MethodCallTargetNode.TYPE)) { checkInvoke(n); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Feb 16 21:45:12 2015 +0100 @@ -681,7 +681,7 @@ final StructuredGraph graph = buildInitialGraph(methodToParse); try (Scope s = Debug.scope("buildGraph", graph)) { Set doNotInline = null; - for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.TYPE)) { if (doNotInline != null && doNotInline.contains(callTarget)) { continue; } @@ -737,7 +737,7 @@ afterInlining(graph); - for (LoopEndNode end : graph.getNodes(LoopEndNode.class)) { + for (LoopEndNode end : graph.getNodes(LoopEndNode.TYPE)) { end.disableSafepoint(); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon Feb 16 21:45:12 2015 +0100 @@ -45,6 +45,7 @@ import com.oracle.graal.debug.Debug.Scope; import com.oracle.graal.debug.internal.*; import com.oracle.graal.graph.Graph.Mark; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.Node; import com.oracle.graal.loop.*; import com.oracle.graal.nodeinfo.*; @@ -392,12 +393,13 @@ } @NodeInfo - static class VarargsPlaceholderNode extends FloatingNode implements ArrayLengthProvider { + static final class VarargsPlaceholderNode extends FloatingNode implements ArrayLengthProvider { + public static final NodeClass TYPE = NodeClass.get(VarargsPlaceholderNode.class); protected final Varargs varargs; public VarargsPlaceholderNode(Varargs varargs, MetaAccessProvider metaAccess) { - super(StampFactory.exactNonNull(metaAccess.lookupJavaType(varargs.componentType).getArrayClass())); + super(TYPE, StampFactory.exactNonNull(metaAccess.lookupJavaType(varargs.componentType).getArrayClass())); this.varargs = varargs; } @@ -736,7 +738,7 @@ } else { snippetCopy.addAfterFixed(snippetCopy.start(), memoryAnchor); } - List returnNodes = snippet.getNodes(ReturnNode.class).snapshot(); + List returnNodes = snippet.getNodes(ReturnNode.TYPE).snapshot(); if (returnNodes.isEmpty()) { this.returnNode = null; } else if (returnNodes.size() == 1) { @@ -1219,7 +1221,7 @@ Node stampDup = duplicates.get(stampNode); ((ValueNode) stampDup).setStamp(replacee.stamp()); } - for (ParameterNode paramNode : snippet.getNodes(ParameterNode.class)) { + for (ParameterNode paramNode : snippet.getNodes(ParameterNode.TYPE)) { for (Node usage : paramNode.usages()) { Node usageDup = duplicates.get(usage); propagateStamp(usageDup); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,6 +38,7 @@ @NodeInfo public final class ArrayEqualsNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess { + public static final NodeClass TYPE = NodeClass.get(ArrayEqualsNode.class); /** {@link Kind} of the arrays to compare. */ protected final Kind kind; @@ -51,7 +52,7 @@ @Input ValueNode length; public ArrayEqualsNode(ValueNode array1, ValueNode array2, ValueNode length) { - super(StampFactory.forKind(Kind.Boolean)); + super(TYPE, StampFactory.forKind(Kind.Boolean)); assert array1.stamp().equals(array2.stamp()); ObjectStamp array1Stamp = (ObjectStamp) array1.stamp(); ResolvedJavaType componentType = array1Stamp.type().getComponentType(); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,13 +38,14 @@ @NodeInfo public final class AssertionNode extends FixedWithNextNode implements Lowerable, Canonicalizable, LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(AssertionNode.class); @Input ValueNode value; protected final boolean compileTimeAssertion; protected final String message; public AssertionNode(boolean compileTimeAssertion, ValueNode value, String message) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.value = value; this.compileTimeAssertion = compileTimeAssertion; this.message = message; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -31,10 +32,12 @@ import com.oracle.graal.nodes.virtual.*; @NodeInfo -public class BasicArrayCopyNode extends MacroStateSplitNode implements Virtualizable { +public abstract class BasicArrayCopyNode extends MacroStateSplitNode implements Virtualizable { - public BasicArrayCopyNode(Invoke invoke) { - super(invoke); + public static final NodeClass TYPE = NodeClass.get(BasicArrayCopyNode.class); + + public BasicArrayCopyNode(NodeClass c, Invoke invoke) { + super(c, invoke); } protected ValueNode getSource() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -27,6 +27,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; @@ -35,10 +36,12 @@ import com.oracle.graal.nodes.virtual.*; @NodeInfo -public class BasicObjectCloneNode extends MacroStateSplitNode implements VirtualizableAllocation, ArrayLengthProvider { +public abstract class BasicObjectCloneNode extends MacroStateSplitNode implements VirtualizableAllocation, ArrayLengthProvider { - public BasicObjectCloneNode(Invoke invoke) { - super(invoke); + public static final NodeClass TYPE = NodeClass.get(BasicObjectCloneNode.class); + + protected BasicObjectCloneNode(NodeClass c, Invoke invoke) { + super(c, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -34,8 +35,10 @@ @NodeInfo public final class BitCountNode extends UnaryNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(BitCountNode.class); + public BitCountNode(ValueNode value) { - super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); + super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,8 +39,10 @@ @NodeInfo public final class BitScanForwardNode extends UnaryNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(BitScanForwardNode.class); + public BitScanForwardNode(ValueNode value) { - super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); + super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,8 +39,10 @@ @NodeInfo public final class BitScanReverseNode extends UnaryNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(BitScanReverseNode.class); + public BitScanReverseNode(ValueNode value) { - super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); + super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -40,6 +40,7 @@ */ @NodeInfo public final class DeferredPiNode extends FloatingNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(DeferredPiNode.class); @Input ValueNode object; @Input ValueNode type; @@ -49,7 +50,7 @@ } public DeferredPiNode(ValueNode type, ValueNode object) { - super(StampFactory.object()); + super(TYPE, StampFactory.object()); this.type = type; this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.HeapAccess.BarrierType; @@ -37,6 +38,7 @@ @NodeInfo public final class DirectObjectStoreNode extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(DirectObjectStoreNode.class); @Input ValueNode object; @Input ValueNode value; @Input ValueNode offset; @@ -45,7 +47,7 @@ protected final Kind storeKind; public DirectObjectStoreNode(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, Kind storeKind) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.object = object; this.value = value; this.offset = offset; diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -36,13 +37,14 @@ * {@link StateSplit} and takes a computed address instead of an object. */ @NodeInfo -public class DirectReadNode extends FixedWithNextNode implements LIRLowerable { +public final class DirectReadNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(DirectReadNode.class); @Input protected ValueNode address; protected final Kind readKind; public DirectReadNode(ValueNode address, Kind readKind) { - super(StampFactory.forKind(readKind.getStackKind())); + super(TYPE, StampFactory.forKind(readKind.getStackKind())); this.address = address; this.readKind = readKind; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -36,14 +37,15 @@ * {@link StateSplit} and takes a computed address instead of an object. */ @NodeInfo -public class DirectStoreNode extends FixedWithNextNode implements LIRLowerable { +public final class DirectStoreNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(DirectStoreNode.class); @Input protected ValueNode address; @Input protected ValueNode value; protected final Kind kind; public DirectStoreNode(ValueNode address, ValueNode value, Kind kind) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.address = address; this.value = value; this.kind = kind; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,9 +38,10 @@ */ @NodeInfo public final class ExplodeLoopNode extends FixedWithNextNode { + public static final NodeClass TYPE = NodeClass.get(ExplodeLoopNode.class); public ExplodeLoopNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } public LoopBeginNode findLoopBegin() { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,14 +33,15 @@ * Implements the semantics of {@link VarargsParameter}. */ @NodeInfo -public class LoadSnippetVarargParameterNode extends FixedWithNextNode implements Canonicalizable { +public final class LoadSnippetVarargParameterNode extends FixedWithNextNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(LoadSnippetVarargParameterNode.class); @Input ValueNode index; @Input NodeInputList parameters; public LoadSnippetVarargParameterNode(ParameterNode[] locals, ValueNode index, Stamp stamp) { - super(stamp); + super(TYPE, stamp); this.index = index; this.parameters = new NodeInputList<>(this, locals); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -57,8 +57,9 @@ * */ @NodeInfo -public class MacroNode extends FixedWithNextNode implements Lowerable { +public abstract class MacroNode extends FixedWithNextNode implements Lowerable { + public static final NodeClass TYPE = NodeClass.get(MacroNode.class); @Input protected NodeInputList arguments; protected final int bci; @@ -66,8 +67,8 @@ protected final JavaType returnType; protected final InvokeKind invokeKind; - public MacroNode(Invoke invoke) { - super(StampFactory.forKind(((MethodCallTargetNode) invoke.callTarget()).targetMethod().getSignature().getReturnKind())); + protected MacroNode(NodeClass c, Invoke invoke) { + super(c, StampFactory.forKind(((MethodCallTargetNode) invoke.callTarget()).targetMethod().getSignature().getReturnKind())); MethodCallTargetNode methodCallTarget = (MethodCallTargetNode) invoke.callTarget(); this.arguments = new NodeInputList<>(this, methodCallTarget.arguments()); this.bci = invoke.bci(); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; @@ -35,12 +36,13 @@ * {@link MemoryCheckpoint}. */ @NodeInfo -public class MacroStateSplitNode extends MacroNode implements StateSplit, MemoryCheckpoint.Single { +public abstract class MacroStateSplitNode extends MacroNode implements StateSplit, MemoryCheckpoint.Single { + public static final NodeClass TYPE = NodeClass.get(MacroStateSplitNode.class); @OptionalInput(InputType.State) protected FrameState stateAfter; - public MacroStateSplitNode(Invoke invoke) { - super(invoke); + public MacroStateSplitNode(NodeClass c, Invoke invoke) { + super(c, invoke); this.stateAfter = invoke.stateAfter(); } @@ -64,7 +66,7 @@ } protected void replaceSnippetInvokes(StructuredGraph snippetGraph) { - for (MethodCallTargetNode call : snippetGraph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode call : snippetGraph.getNodes(MethodCallTargetNode.TYPE)) { Invoke invoke = call.invoke(); if (!call.targetMethod().equals(getTargetMethod())) { throw new GraalInternalError("unexpected invoke %s in snippet", getClass().getSimpleName()); diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -33,8 +34,9 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class MathIntrinsicNode extends UnaryNode implements ArithmeticLIRLowerable { +public final class MathIntrinsicNode extends UnaryNode implements ArithmeticLIRLowerable { + public static final NodeClass TYPE = NodeClass.get(MathIntrinsicNode.class); protected final Operation operation; public enum Operation { @@ -50,7 +52,7 @@ } public MathIntrinsicNode(ValueNode value, Operation op) { - super(StampFactory.forKind(Kind.Double), value); + super(TYPE, StampFactory.forKind(Kind.Double), value); assert value.stamp() instanceof FloatStamp && PrimitiveStamp.getBits(value.stamp()) == 64; this.operation = op; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -22,15 +22,18 @@ */ package com.oracle.graal.replacements.nodes; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @NodeInfo -public class MathPowNode extends MacroStateSplitNode implements Canonicalizable.Binary { +public final class MathPowNode extends MacroStateSplitNode implements Canonicalizable.Binary { + + public static final NodeClass TYPE = NodeClass.get(MathPowNode.class); public MathPowNode(Invoke i) { - super(i); + super(TYPE, i); } public ValueNode canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,10 +31,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public class MemoryAnchorNode extends FixedWithNextNode implements LIRLowerable, MemoryNode, Canonicalizable { +public final class MemoryAnchorNode extends FixedWithNextNode implements LIRLowerable, MemoryNode, Canonicalizable { + + public static final NodeClass TYPE = NodeClass.get(MemoryAnchorNode.class); public MemoryAnchorNode() { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); } public void generate(NodeLIRBuilderTool generator) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -35,8 +35,10 @@ @NodeInfo public abstract class PureFunctionMacroNode extends MacroStateSplitNode implements Canonicalizable { - public PureFunctionMacroNode(Invoke invoke) { - super(invoke); + public static final NodeClass TYPE = NodeClass.get(PureFunctionMacroNode.class); + + protected PureFunctionMacroNode(NodeClass c, Invoke invoke) { + super(c, invoke); } /** diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -33,8 +34,9 @@ * Access the value of a specific register. */ @NodeInfo(nameTemplate = "ReadRegister %{p#register}") -public class ReadRegisterNode extends FixedWithNextNode implements LIRLowerable { +public final class ReadRegisterNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ReadRegisterNode.class); /** * The fixed register to access. */ @@ -54,7 +56,7 @@ protected final boolean incoming; public ReadRegisterNode(Register register, Kind kind, boolean directUse, boolean incoming) { - super(StampFactory.forKind(kind)); + super(TYPE, StampFactory.forKind(kind)); assert register != null; this.register = register; this.directUse = directUse; @@ -62,7 +64,7 @@ } public ReadRegisterNode(Register register, boolean directUse, boolean incoming) { - super(StampFactory.forNodeIntrinsic()); + super(TYPE, StampFactory.forNodeIntrinsic()); assert register != null; this.register = register; this.directUse = directUse; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -32,10 +33,12 @@ import com.oracle.graal.nodes.spi.*; @NodeInfo -public class ReverseBytesNode extends UnaryNode implements LIRLowerable { +public final class ReverseBytesNode extends UnaryNode implements LIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(ReverseBytesNode.class); public ReverseBytesNode(ValueNode value) { - super(StampFactory.forKind(value.getKind()), value); + super(TYPE, StampFactory.forKind(value.getKind()), value); assert getKind() == Kind.Int || getKind() == Kind.Long; } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -33,8 +34,9 @@ * Changes the value of a specific register. */ @NodeInfo(nameTemplate = "WriteRegister %{p#register}") -public class WriteRegisterNode extends FixedWithNextNode implements LIRLowerable { +public final class WriteRegisterNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(WriteRegisterNode.class); /** * The fixed register to access. */ @@ -46,7 +48,7 @@ @Input ValueNode value; public WriteRegisterNode(Register register, ValueNode value) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.register = register; this.value = value; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java --- a/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java Mon Feb 16 21:45:12 2015 +0100 @@ -77,7 +77,7 @@ final OptimizedCallTarget compilable = (OptimizedCallTarget) Truffle.getRuntime().createCallTarget(root); StructuredGraph actual = partialEval(compilable, arguments, AllowAssumptions.YES); removeFrameStates(actual); - for (MethodCallTargetNode node : actual.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode node : actual.getNodes(MethodCallTargetNode.TYPE)) { Assert.fail("Found invalid method call target node: " + node); } } @@ -96,7 +96,7 @@ } protected void removeFrameStates(StructuredGraph graph) { - for (FrameState frameState : graph.getNodes(FrameState.class)) { + for (FrameState frameState : graph.getNodes(FrameState.TYPE)) { frameState.replaceAtUsages(null); frameState.safeDelete(); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Mon Feb 16 21:45:12 2015 +0100 @@ -255,7 +255,7 @@ System.out.println("# ms: " + (System.currentTimeMillis() - ms)); Debug.dump(graph, "After FastPE"); - for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE)) { Class macroSubstitution = providers.getReplacements().getMacroSubstitution(methodCallTargetNode.targetMethod()); if (macroSubstitution != null) { InliningUtil.inlineMacroNode(methodCallTargetNode.invoke(), methodCallTargetNode.targetMethod(), macroSubstitution); @@ -331,11 +331,11 @@ private static void postPartialEvaluation(final StructuredGraph graph) { NeverPartOfCompilationNode.verifyNotFoundIn(graph); - for (MaterializeFrameNode materializeNode : graph.getNodes(MaterializeFrameNode.class).snapshot()) { + for (MaterializeFrameNode materializeNode : graph.getNodes(MaterializeFrameNode.TYPE).snapshot()) { materializeNode.replaceAtUsages(materializeNode.getFrame()); graph.removeFixed(materializeNode); } - for (VirtualObjectNode virtualObjectNode : graph.getNodes(VirtualObjectNode.class)) { + for (VirtualObjectNode virtualObjectNode : graph.getNodes(VirtualObjectNode.TYPE)) { if (virtualObjectNode instanceof VirtualOnlyInstanceNode) { VirtualOnlyInstanceNode virtualOnlyInstanceNode = (VirtualOnlyInstanceNode) virtualObjectNode; virtualOnlyInstanceNode.setAllowMaterialization(true); @@ -479,7 +479,7 @@ assert graph.hasLoops() : graph + " does not contain a loop"; final StructuredGraph graphCopy = graph.copy(); final List modifiedNodes = new ArrayList<>(); - for (ParameterNode param : graphCopy.getNodes(ParameterNode.class).snapshot()) { + for (ParameterNode param : graphCopy.getNodes(ParameterNode.TYPE).snapshot()) { ValueNode arg = arguments.get(param.index()); if (arg.isConstant()) { Constant constant = arg.asConstant(); @@ -526,7 +526,7 @@ private void expandDirectCalls(StructuredGraph graph, TruffleExpansionLogger expansionLogger, TruffleInlining inlining, TruffleInliningCache inliningCache) { PhaseContext phaseContext = new PhaseContext(providers); - for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class).snapshot()) { + for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE).snapshot()) { StructuredGraph inlineGraph = parseDirectCallGraph(phaseContext, graph, inlining, inliningCache, methodCallTargetNode); if (inlineGraph != null) { @@ -539,7 +539,7 @@ } private boolean noDirectCallsLeft(StructuredGraph graph) { - for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class).snapshot()) { + for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE).snapshot()) { if (methodCallTargetNode.targetMethod().equals(callDirectMethod)) { return false; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Mon Feb 16 21:45:12 2015 +0100 @@ -136,7 +136,7 @@ lastUsed.put(key, counter++); cache.put(key, markerGraph); - for (ParameterNode param : graph.getNodes(ParameterNode.class)) { + for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) { if (param.getKind() == Kind.Object) { ValueNode actualArgument = arguments.get(param.index()); param.setStamp(param.stamp().join(actualArgument.stamp())); @@ -164,7 +164,7 @@ canonicalizer.apply(graph, phaseContext); boolean inliningProgress = false; - for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.TYPE)) { if (!graph.getMark().equals(mark)) { mark = lookupProcessMacroSubstitutions(graph, mark); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Mon Feb 16 21:45:12 2015 +0100 @@ -132,7 +132,7 @@ if (!TruffleCompilerOptions.TruffleInlineAcrossTruffleBoundary.getValue()) { // Do not inline across Truffle boundaries. - for (MethodCallTargetNode mct : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode mct : graph.getNodes(MethodCallTargetNode.TYPE)) { mct.invoke().setUseForInlining(false); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java Mon Feb 16 21:45:12 2015 +0100 @@ -84,7 +84,7 @@ } private void registerParentInCalls(ExpansionTree parentTree, StructuredGraph graph) { - for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.TYPE)) { callToParentTree.put(target, parentTree); } } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -38,8 +39,10 @@ @NodeInfo public final class AssumptionNode extends MacroNode implements Simplifiable { + public static final NodeClass TYPE = NodeClass.get(AssumptionNode.class); + public AssumptionNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); assert super.arguments.size() == 1; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,10 @@ @NodeInfo public final class BailoutNode extends MacroNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(BailoutNode.class); + public BailoutNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); assert arguments.size() == 1; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,10 +31,12 @@ import com.oracle.graal.replacements.nodes.*; @NodeInfo -public class IsCompilationConstantNode extends MacroStateSplitNode implements Canonicalizable { +public final class IsCompilationConstantNode extends MacroStateSplitNode implements Canonicalizable { + + public static final NodeClass TYPE = NodeClass.get(IsCompilationConstantNode.class); public IsCompilationConstantNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); assert arguments.size() == 1; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,10 +37,11 @@ * case the addition would overflow the 32 bit range. */ @NodeInfo -public class IntegerAddExactNode extends AddNode implements IntegerExactArithmeticNode { +public final class IntegerAddExactNode extends AddNode implements IntegerExactArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(IntegerAddExactNode.class); public IntegerAddExactNode(ValueNode x, ValueNode y) { - super(x, y); + super(TYPE, x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,15 +24,17 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class IntegerAddExactSplitNode extends IntegerExactArithmeticSplitNode { +public final class IntegerAddExactSplitNode extends IntegerExactArithmeticSplitNode { + public static final NodeClass TYPE = NodeClass.get(IntegerAddExactSplitNode.class); public IntegerAddExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) { - super(stamp, x, y, next, overflowSuccessor); + super(TYPE, stamp, x, y, next, overflowSuccessor); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.calc.*; @@ -31,14 +32,15 @@ @NodeInfo public abstract class IntegerExactArithmeticSplitNode extends ControlSplitNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(IntegerExactArithmeticSplitNode.class); @Successor AbstractBeginNode overflowSuccessor; @Successor AbstractBeginNode next; @Input ValueNode x; @Input ValueNode y; - public IntegerExactArithmeticSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) { - super(stamp); + protected IntegerExactArithmeticSplitNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) { + super(c, stamp); this.x = x; this.y = y; this.overflowSuccessor = overflowSuccessor; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,10 +37,11 @@ * in case the addition would overflow the 32 bit range. */ @NodeInfo -public class IntegerMulExactNode extends MulNode implements IntegerExactArithmeticNode { +public final class IntegerMulExactNode extends MulNode implements IntegerExactArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(IntegerMulExactNode.class); public IntegerMulExactNode(ValueNode x, ValueNode y) { - super(x, y); + super(TYPE, x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,15 +24,17 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class IntegerMulExactSplitNode extends IntegerExactArithmeticSplitNode { +public final class IntegerMulExactSplitNode extends IntegerExactArithmeticSplitNode { + public static final NodeClass TYPE = NodeClass.get(IntegerMulExactSplitNode.class); public IntegerMulExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) { - super(stamp, x, y, next, overflowSuccessor); + super(TYPE, stamp, x, y, next, overflowSuccessor); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,14 +36,15 @@ import com.oracle.truffle.api.*; @NodeInfo(shortName = "*H") -public class IntegerMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { +public final class IntegerMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { + public static final NodeClass TYPE = NodeClass.get(IntegerMulHighNode.class); public IntegerMulHighNode(ValueNode x, ValueNode y) { this((IntegerStamp) x.stamp().unrestricted(), x, y); } public IntegerMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { - super(stamp, x, y); + super(TYPE, stamp, x, y); } /** diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -37,10 +38,11 @@ * case the addition would overflow the 32 bit range. */ @NodeInfo -public class IntegerSubExactNode extends SubNode implements IntegerExactArithmeticNode { +public final class IntegerSubExactNode extends SubNode implements IntegerExactArithmeticNode { + public static final NodeClass TYPE = NodeClass.get(IntegerSubExactNode.class); public IntegerSubExactNode(ValueNode x, ValueNode y) { - super(x, y); + super(TYPE, x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,15 +24,17 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class IntegerSubExactSplitNode extends IntegerExactArithmeticSplitNode { +public final class IntegerSubExactSplitNode extends IntegerExactArithmeticSplitNode { + public static final NodeClass TYPE = NodeClass.get(IntegerSubExactSplitNode.class); public IntegerSubExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) { - super(stamp, x, y, next, overflowSuccessor); + super(TYPE, stamp, x, y, next, overflowSuccessor); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.nodeinfo.*; @@ -35,14 +36,16 @@ import com.oracle.truffle.api.*; @NodeInfo(shortName = "|*H|") -public class UnsignedMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { +public final class UnsignedMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { + + public static final NodeClass TYPE = NodeClass.get(UnsignedMulHighNode.class); public UnsignedMulHighNode(ValueNode x, ValueNode y) { this((IntegerStamp) x.stamp().unrestricted(), x, y); } public UnsignedMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { - super(stamp, x, y); + super(TYPE, stamp, x, y); } /** diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -30,8 +30,10 @@ @NodeInfo public final class CompilationConstantNode extends NeverPartOfCompilationNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(CompilationConstantNode.class); + public CompilationConstantNode(Invoke invoke) { - super(invoke, "The value could not be reduced to a compile time constant."); + super(TYPE, invoke, "The value could not be reduced to a compile time constant."); assert arguments.size() == 1; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,6 +22,7 @@ */ package com.oracle.graal.truffle.nodes.asserts; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @@ -30,8 +31,10 @@ @NodeInfo public final class NeverInlineMacroNode extends MacroStateSplitNode implements com.oracle.graal.graph.IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(NeverInlineMacroNode.class); + public NeverInlineMacroNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,14 +31,15 @@ @NodeInfo public class NeverPartOfCompilationNode extends MacroStateSplitNode implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(NeverPartOfCompilationNode.class); protected final String message; public NeverPartOfCompilationNode(Invoke invoke) { - this(invoke, "This code path should never be part of a compilation."); + this(TYPE, invoke, "This code path should never be part of a compilation."); } - public NeverPartOfCompilationNode(Invoke invoke, String message) { - super(invoke); + protected NeverPartOfCompilationNode(NodeClass c, Invoke invoke, String message) { + super(c, invoke); this.message = message; } @@ -47,7 +48,7 @@ } public static void verifyNotFoundIn(final StructuredGraph graph) { - for (NeverPartOfCompilationNode neverPartOfCompilationNode : graph.getNodes(NeverPartOfCompilationNode.class)) { + for (NeverPartOfCompilationNode neverPartOfCompilationNode : graph.getNodes(NeverPartOfCompilationNode.TYPE)) { Throwable exception = new VerificationError(neverPartOfCompilationNode.getMessage()); throw GraphUtil.approxSourceException(neverPartOfCompilationNode, exception); } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -23,17 +23,19 @@ package com.oracle.graal.truffle.nodes.frame; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; @NodeInfo -public class ForceMaterializeNode extends FixedWithNextNode implements LIRLowerable { +public final class ForceMaterializeNode extends FixedWithNextNode implements LIRLowerable { + public static final NodeClass TYPE = NodeClass.get(ForceMaterializeNode.class); @Input ValueNode object; public ForceMaterializeNode(ValueNode object) { - super(StampFactory.forVoid()); + super(TYPE, StampFactory.forVoid()); this.object = object; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,12 +31,13 @@ * Intrinsic node for materializing a Truffle frame. */ @NodeInfo(nameTemplate = "MaterializeFrame{p#frame/s}") -public class MaterializeFrameNode extends FixedWithNextNode implements IterableNodeType { +public final class MaterializeFrameNode extends FixedWithNextNode implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(MaterializeFrameNode.class); @Input ValueNode frame; public MaterializeFrameNode(ValueNode frame) { - super(frame.stamp()); + super(TYPE, frame.stamp()); this.frame = frame; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -48,11 +48,12 @@ @NodeInfo public final class NewFrameNode extends FixedWithNextNode implements IterableNodeType, VirtualizableAllocation, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(NewFrameNode.class); @Input ValueNode descriptor; @Input ValueNode arguments; public NewFrameNode(Stamp stamp, ValueNode descriptor, ValueNode arguments) { - super(stamp); + super(TYPE, stamp); this.descriptor = descriptor; this.arguments = arguments; } @@ -98,10 +99,11 @@ @NodeInfo public static final class VirtualOnlyInstanceNode extends VirtualInstanceNode { + public static final NodeClass TYPE = NodeClass.get(VirtualOnlyInstanceNode.class); protected boolean allowMaterialization; public VirtualOnlyInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) { - super(type, fields, true); + super(TYPE, type, fields, true); } @Override diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -38,6 +38,7 @@ */ @NodeInfo public final class CustomizedUnsafeLoadMacroNode extends NeverPartOfCompilationNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(CustomizedUnsafeLoadMacroNode.class); private static final int ARGUMENT_COUNT = 4; private static final int OBJECT_ARGUMENT_INDEX = 0; @@ -46,7 +47,7 @@ private static final int LOCATION_ARGUMENT_INDEX = 3; public CustomizedUnsafeLoadMacroNode(Invoke invoke) { - super(invoke, "The location argument could not be resolved to a constant."); + super(TYPE, invoke, "The location argument could not be resolved to a constant."); assert arguments.size() == ARGUMENT_COUNT; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -36,6 +36,7 @@ */ @NodeInfo public final class CustomizedUnsafeStoreMacroNode extends NeverPartOfCompilationNode implements Canonicalizable, StateSplit { + public static final NodeClass TYPE = NodeClass.get(CustomizedUnsafeStoreMacroNode.class); private static final int ARGUMENT_COUNT = 4; private static final int OBJECT_ARGUMENT_INDEX = 0; private static final int OFFSET_ARGUMENT_INDEX = 1; @@ -43,7 +44,7 @@ private static final int LOCATION_ARGUMENT_INDEX = 3; public CustomizedUnsafeStoreMacroNode(Invoke invoke) { - super(invoke, "The location argument could not be resolved to a constant."); + super(TYPE, invoke, "The location argument could not be resolved to a constant."); assert arguments.size() == ARGUMENT_COUNT; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.common.type.*; +import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; import com.oracle.graal.nodeinfo.*; import com.oracle.graal.nodes.*; @@ -36,8 +37,9 @@ * Macro node for method CompilerDirectives#unsafeCast. */ @NodeInfo -public class UnsafeTypeCastMacroNode extends NeverPartOfCompilationNode implements Simplifiable { +public final class UnsafeTypeCastMacroNode extends NeverPartOfCompilationNode implements Simplifiable { + public static final NodeClass TYPE = NodeClass.get(UnsafeTypeCastMacroNode.class); private static final int OBJECT_ARGUMENT_INDEX = 0; private static final int CLASS_ARGUMENT_INDEX = 1; private static final int CONDITION_ARGUMENT_INDEX = 2; @@ -45,7 +47,7 @@ private static final int ARGUMENT_COUNT = 4; public UnsafeTypeCastMacroNode(Invoke invoke) { - super(invoke, "The class of the unsafe cast could not be reduced to a compile time constant."); + super(TYPE, invoke, "The class of the unsafe cast could not be reduced to a compile time constant."); assert arguments.size() == ARGUMENT_COUNT; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -43,7 +43,7 @@ @Override protected void run(StructuredGraph graph) { - for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.class)) { + for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.TYPE)) { if (methodCallTarget.isAlive()) { InvokeKind invokeKind = methodCallTarget.invokeKind(); if (invokeKind.isDirect()) { diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java Mon Feb 16 21:45:12 2015 +0100 @@ -37,7 +37,7 @@ @Override protected void run(StructuredGraph graph) { - for (NewFrameNode virtualFrame : graph.getNodes(NewFrameNode.class)) { + for (NewFrameNode virtualFrame : graph.getNodes(NewFrameNode.TYPE)) { for (MethodCallTargetNode callTarget : virtualFrame.usages().filter(MethodCallTargetNode.class)) { if (callTarget.invoke() != null) { String properties = callTarget.getDebugProperties().toString(); diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,8 +31,9 @@ * This class encapsulated the materialized state of an escape analyzed object. */ @NodeInfo -public class MaterializedObjectState extends EscapeObjectState implements Node.ValueNumberable { +public final class MaterializedObjectState extends EscapeObjectState implements Node.ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(MaterializedObjectState.class); @Input ValueNode materializedValue; public ValueNode materializedValue() { @@ -40,7 +41,7 @@ } public MaterializedObjectState(VirtualObjectNode object, ValueNode materializedValue) { - super(object); + super(TYPE, object); this.materializedValue = materializedValue; } diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,8 +33,9 @@ * This class encapsulated the virtual state of an escape analyzed object. */ @NodeInfo -public class VirtualObjectState extends EscapeObjectState implements Node.ValueNumberable { +public final class VirtualObjectState extends EscapeObjectState implements Node.ValueNumberable { + public static final NodeClass TYPE = NodeClass.get(VirtualObjectState.class); @Input NodeInputList values; public NodeInputList values() { @@ -42,13 +43,13 @@ } public VirtualObjectState(VirtualObjectNode object, ValueNode[] values) { - super(object); + super(TYPE, object); assert object.entryCount() == values.length; this.values = new NodeInputList<>(this, values); } public VirtualObjectState(VirtualObjectNode object, List values) { - super(object); + super(TYPE, object); assert object.entryCount() == values.size(); this.values = new NodeInputList<>(this, values); } diff -r e2fd58839d38 -r 87a2901b1f42 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 Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,7 +44,8 @@ * this node can be canonicalized to a {@link IndexedLocationNode} or {@link ConstantLocationNode}. */ @NodeInfo -public class SnippetLocationNode extends LocationNode implements Canonicalizable { +public final class SnippetLocationNode extends LocationNode implements Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(SnippetLocationNode.class); protected final SnippetReflectionProvider snippetReflection; @@ -58,7 +59,7 @@ } public SnippetLocationNode(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement, ValueNode index, ValueNode indexScaling) { - super(StampFactory.object()); + super(TYPE, StampFactory.object()); this.snippetReflection = snippetReflection; this.locationIdentity = locationIdentity; this.displacement = displacement; diff -r e2fd58839d38 -r 87a2901b1f42 graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java Mon Feb 16 21:28:00 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java Mon Feb 16 21:45:12 2015 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -36,8 +36,9 @@ * impact on the pointer maps for the GC, so it must not be scheduled or optimized away. */ @NodeInfo -public class WordCastNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable { +public final class WordCastNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable { + public static final NodeClass TYPE = NodeClass.get(WordCastNode.class); @Input ValueNode input; public static WordCastNode wordToObject(ValueNode input, Kind wordKind) { @@ -51,7 +52,7 @@ } public WordCastNode(Stamp stamp, ValueNode input) { - super(stamp); + super(TYPE, stamp); this.input = input; } diff -r e2fd58839d38 -r 87a2901b1f42 mx/eclipse-settings/org.eclipse.jdt.core.prefs --- a/mx/eclipse-settings/org.eclipse.jdt.core.prefs Mon Feb 16 21:28:00 2015 +0100 +++ b/mx/eclipse-settings/org.eclipse.jdt.core.prefs Mon Feb 16 21:45:12 2015 +0100 @@ -45,7 +45,7 @@ org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=ignore org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore diff -r e2fd58839d38 -r 87a2901b1f42 src/share/vm/graal/vmStructs_graal.hpp --- a/src/share/vm/graal/vmStructs_graal.hpp Mon Feb 16 21:28:00 2015 +0100 +++ b/src/share/vm/graal/vmStructs_graal.hpp Mon Feb 16 21:45:12 2015 +0100 @@ -31,7 +31,6 @@ #include "graal/graalEnv.hpp" #define VM_STRUCTS_GRAAL(nonstatic_field, static_field) \ - nonstatic_field(InstanceKlass, _graal_node_class, oop) \ nonstatic_field(ThreadShadow, _pending_deoptimization, int) \ nonstatic_field(ThreadShadow, _pending_failed_speculation, oop) \ nonstatic_field(ThreadShadow, _pending_transfer_to_interpreter, bool) \ diff -r e2fd58839d38 -r 87a2901b1f42 src/share/vm/oops/instanceKlass.cpp --- a/src/share/vm/oops/instanceKlass.cpp Mon Feb 16 21:28:00 2015 +0100 +++ b/src/share/vm/oops/instanceKlass.cpp Mon Feb 16 21:45:12 2015 +0100 @@ -294,9 +294,6 @@ set_init_state(InstanceKlass::allocated); set_init_thread(NULL); set_reference_type(rt); -#ifdef GRAAL - set_graal_node_class(NULL); -#endif set_oop_map_cache(NULL); set_jni_ids(NULL); set_osr_nmethods_head(NULL); @@ -326,13 +323,6 @@ set_layout_helper(Klass::instance_layout_helper(0, true)); } -#ifdef GRAAL -void InstanceKlass::oops_do(OopClosure* cl) { - Klass::oops_do(cl); - cl->do_oop(adr_graal_node_class()); -} -#endif - void InstanceKlass::deallocate_methods(ClassLoaderData* loader_data, Array* methods) { if (methods != NULL && methods != Universe::the_empty_method_array() && @@ -1208,29 +1198,6 @@ JavaCalls::call(&result, h_method, &args, CHECK); // Static call (no args) } -#ifdef GRAAL - if (SystemDictionary::Node_klass() != NULL && this_oop->is_subtype_of(SystemDictionary::Node_klass())) { - if (this_oop() != SystemDictionary::Node_klass()) { - if (!GraalRuntime::is_HotSpotGraalRuntime_initialized() && JavaAssertions::systemClassDefault() == false) { - // We want to ensure that the process of initializing HotSpotGraalRuntime - // is fast since it executes at VM startup. We must avoid triggering - // class initialization of any Node classes during this process. - ResourceMark rm; - char buf[200]; - jio_snprintf(buf, sizeof(buf), "Node subclass %s must not be initialized before HotSpotGraalRuntime is initialized", this_oop->name()->as_C_string()); - THROW_MSG(vmSymbols::java_lang_InternalError(), buf); - } - // Create the NodeClass for a Node subclass. - TempNewSymbol sig = SymbolTable::new_symbol("(Ljava/lang/Class;)Lcom/oracle/graal/graph/NodeClass;", CHECK); - JavaValue result(T_OBJECT); - JavaCalls::call_static(&result, SystemDictionary::NodeClass_klass(), vmSymbols::get_name(), sig, this_oop->java_mirror(), CHECK); - this_oop->set_graal_node_class((oop) result.get_jobject()); - } else { - // A NodeClass cannot be created for Node due to checks in - // NodeClass.FieldScanner.scanField() - } - } -#endif } @@ -2310,10 +2277,6 @@ } init_implementor(); -#ifdef GRAAL - set_graal_node_class(NULL); -#endif - constants()->remove_unshareable_info(); for (int i = 0; i < methods()->length(); i++) { diff -r e2fd58839d38 -r 87a2901b1f42 src/share/vm/oops/instanceKlass.hpp --- a/src/share/vm/oops/instanceKlass.hpp Mon Feb 16 21:28:00 2015 +0100 +++ b/src/share/vm/oops/instanceKlass.hpp Mon Feb 16 21:45:12 2015 +0100 @@ -241,10 +241,6 @@ Thread* _init_thread; // Pointer to current thread doing initialization (to handle recusive initialization) int _vtable_len; // length of Java vtable (in words) int _itable_len; // length of Java itable (in words) -#ifdef GRAAL - // com/oracle/graal/graph/NodeClass instance mirroring this class - oop _graal_node_class; -#endif OopMapCache* volatile _oop_map_cache; // OopMapCache for all methods in the klass (allocated lazily) MemberNameTable* _member_names; // Member names JNIid* _jni_ids; // First JNI identifier for static fields in this class @@ -751,16 +747,6 @@ void call_class_initializer(TRAPS); void set_initialization_state_and_notify(ClassState state, TRAPS); -#ifdef GRAAL - // Graal com.oracle.graal.graph.NodeClass mirror - oop graal_node_class() { return _graal_node_class; } - void set_graal_node_class(oop m) { klass_oop_store(&_graal_node_class, m); } - oop* adr_graal_node_class() { return (oop*)&this->_graal_node_class; } - - // GC support - virtual void oops_do(OopClosure* cl); -#endif - // OopMapCache support OopMapCache* oop_map_cache() { return _oop_map_cache; } void set_oop_map_cache(OopMapCache *cache) { _oop_map_cache = cache; }