# HG changeset patch # User Thomas Wuerthinger # Date 1424097783 -3600 # Node ID 7e2c87dae93e91ce0d63b0928dae71b3d2e597e9 # Parent a306749d3e861767a630be2c0a97aeb207016d18 Create static final NodeClass field named TYPE in Node subclasses. diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java Mon Feb 16 15:43:03 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; } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java Mon Feb 16 15:43:03 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,11 @@ @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) { + super(TYPE); this.name = name; } @@ -47,6 +49,7 @@ @NodeInfo static class NodeB extends NodeA implements IterableNodeType { + public static final NodeClass TYPE = NodeClass.get(NodeB.class); public NodeB(String name) { super(name); @@ -56,6 +59,8 @@ @NodeInfo static class NodeC extends NodeB { + public static final NodeClass TYPE = NodeClass.get(NodeC.class); + public NodeC(String name) { super(name); } @@ -63,7 +68,9 @@ } @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); } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Mon Feb 16 15:43:03 2015 +0100 @@ -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); } } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java Mon Feb 16 15:43:03 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; @@ -198,9 +199,10 @@ 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() { diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java Mon Feb 16 15:43:03 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); + super(TYPE, object, null, null, true); this.startIndex = startIndex; this.length = length; } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java Mon Feb 16 15:43:03 2015 +0100 @@ -22,11 +22,13 @@ */ 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); diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java Mon Feb 16 15:43:03 2015 +0100 @@ -22,11 +22,13 @@ */ 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); diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java Mon Feb 16 15:43:03 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,11 +22,14 @@ */ 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); diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java Mon Feb 16 15:43:03 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 @@ -45,10 +45,11 @@ * parameter. */ @NodeInfo - public static class NodeClassGetNode extends PureFunctionMacroNode { + public static final class NodeClassGetNode extends PureFunctionMacroNode { + public static final NodeClass TYPE = NodeClass.get(NodeClassGetNode.class); public NodeClassGetNode(Invoke invoke) { - super(invoke); + super(TYPE, invoke); } @Override diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeProcessor.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java Mon Feb 16 15:43:03 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); + super(TYPE, stamp); } } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java Mon Feb 16 15:43:03 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; diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java Mon Feb 16 15:43:03 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,19 @@ 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java Mon Feb 16 15:43:03 2015 +0100 @@ -39,13 +39,15 @@ @NodeInfo public abstract class BinaryArithmeticNode extends BinaryNode implements ArithmeticLIRLowerable { + 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon Feb 16 15:43:03 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 { + 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Mon Feb 16 15:43:03 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 diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java Mon Feb 16 15:43:03 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 { + 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java Mon Feb 16 15:43:03 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 { + 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java Mon Feb 16 15:43:03 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,6 +36,7 @@ */ @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))); diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Mon Feb 16 15:43:03 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; } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Mon Feb 16 15:43:03 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, type.getInstanceFields(true), 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Mon Feb 16 15:43:03 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()); } } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon Feb 16 15:43:03 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; } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Mon Feb 16 15:43:03 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(); } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Mon Feb 16 15:43:03 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; } diff -r a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e 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 Sun Feb 15 23:13:11 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java Mon Feb 16 15:43:03 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 a306749d3e86 -r 7e2c87dae93e mx/eclipse-settings/org.eclipse.jdt.core.prefs --- a/mx/eclipse-settings/org.eclipse.jdt.core.prefs Sun Feb 15 23:13:11 2015 +0100 +++ b/mx/eclipse-settings/org.eclipse.jdt.core.prefs Mon Feb 16 15:43:03 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