# HG changeset patch # User Stefan Anzinger # Date 1421094266 -3600 # Node ID 55a30b4beb5f01d435c9be1edb21666c7ef4ae9a # Parent 49e5c062e77a839174fb7c89dfaf21c81aa8de88# Parent cff8333119b467d1c01d2408c00027f9b3c02956 Merge diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/MemoryBarriers.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/MemoryBarriers.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/MemoryBarriers.java Mon Jan 12 21:24:26 2015 +0100 @@ -24,7 +24,7 @@ /** * Constants and intrinsic definition for memory barriers. - * + * * The documentation for each constant is taken from Doug Lea's The JSR-133 Cookbook for Compiler * Writers. @@ -32,7 +32,7 @@ * The {@code JMM_*} constants capture the memory barriers necessary to implement the Java Memory * Model with respect to volatile field accesses. Their values are explained by this comment from * templateTable_i486.cpp in the HotSpot source code: - * + * *
  * Volatile variables demand their effects be made known to all CPU's in
  * order.  Store buffers on most chips allow reads & writes to reorder; the
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaMethod.java
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaMethod.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/ResolvedJavaMethod.java	Mon Jan 12 21:24:26 2015 +0100
@@ -245,7 +245,7 @@
     }
 
     default JavaType[] toParameterTypes() {
-        JavaType receiver = isStatic() ? null : getDeclaringClass();
+        JavaType receiver = isStatic() || isConstructor() ? null : getDeclaringClass();
         return getSignature().toParameterTypes(receiver);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java
--- a/graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.api.replacements/src/com/oracle/graal/api/replacements/SnippetReflectionProvider.java	Mon Jan 12 21:24:26 2015 +0100
@@ -110,10 +110,16 @@
             }
 
             Class c = resolveClassForSnippet(method.getDeclaringClass());
-            Method javaMethod = c.getDeclaredMethod(method.getName(), parameterClasses);
-            javaMethod.setAccessible(true);
-            return javaMethod.invoke(receiver, args);
-        } catch (IllegalAccessException | InvocationTargetException | ClassNotFoundException | NoSuchMethodException ex) {
+            if (method.isConstructor()) {
+                Constructor javaConstructor = c.getDeclaredConstructor(parameterClasses);
+                javaConstructor.setAccessible(true);
+                return javaConstructor.newInstance(args);
+            } else {
+                Method javaMethod = c.getDeclaredMethod(method.getName(), parameterClasses);
+                javaMethod.setAccessible(true);
+                return javaMethod.invoke(receiver, args);
+            }
+        } catch (IllegalAccessException | InstantiationException | InvocationTargetException | ClassNotFoundException | NoSuchMethodException ex) {
             throw new IllegalArgumentException(ex);
         }
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FlowSensitiveReductionTest.java
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FlowSensitiveReductionTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/FlowSensitiveReductionTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -175,10 +175,10 @@
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), null));
         IfNode ifNode = (IfNode) graph.start().next();
         InstanceOfNode instanceOf = (InstanceOfNode) ifNode.condition();
-        IsNullNode x = graph.unique(IsNullNode.create(graph.getParameter(0)));
+        IsNullNode x = graph.unique(new IsNullNode(graph.getParameter(0)));
         InstanceOfNode y = instanceOf;
-        ShortCircuitOrNode disjunction = graph.unique(ShortCircuitOrNode.create(x, false, y, false, NOT_FREQUENT_PROBABILITY));
-        LogicNegationNode negation = graph.unique(LogicNegationNode.create(disjunction));
+        ShortCircuitOrNode disjunction = graph.unique(new ShortCircuitOrNode(x, false, y, false, NOT_FREQUENT_PROBABILITY));
+        LogicNegationNode negation = graph.unique(new LogicNegationNode(disjunction));
         ifNode.setCondition(negation);
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders(), null));
         new FlowSensitiveReductionPhase(getMetaAccess()).apply(graph, new PhaseContext(getProviders(), null));
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -41,18 +41,14 @@
         @Input ConstantNode i1;
         @Input FloatingNode i2;
 
-        public static TestNode create() {
-            return new TestNode();
+        public TestNode() {
         }
 
-        protected TestNode() {
-            // TODO Auto-generated constructor stub
-        }
     }
 
     @Test
     public void testInputs() {
-        TestNode n = TestNode.create();
+        TestNode n = new TestNode();
 
         ConstantNode i1 = ConstantNode.forInt(1);
         ConstantNode i2 = ConstantNode.forDouble(1.0d);
@@ -139,11 +135,11 @@
 
     @Test
     public void testSuccessors() {
-        TestNode n = TestNode.create();
-        EndNode s1 = EndNode.create();
-        EndNode s2 = EndNode.create();
-        EndNode s3 = EndNode.create();
-        EndNode s4 = EndNode.create();
+        TestNode n = new TestNode();
+        EndNode s1 = new EndNode();
+        EndNode s2 = new EndNode();
+        EndNode s3 = new EndNode();
+        EndNode s4 = new EndNode();
         n.s1 = s1;
         n.s2 = s2;
         n.stail = new NodeSuccessorList<>(n, new Node[]{s3, s4});
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/SimpleCFGTest.java
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/SimpleCFGTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/SimpleCFGTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -42,21 +42,21 @@
     public void testImplies() {
         StructuredGraph graph = new StructuredGraph();
 
-        AbstractEndNode trueEnd = graph.add(EndNode.create());
-        AbstractEndNode falseEnd = graph.add(EndNode.create());
+        AbstractEndNode trueEnd = graph.add(new EndNode());
+        AbstractEndNode falseEnd = graph.add(new EndNode());
 
-        BeginNode trueBegin = graph.add(BeginNode.create());
+        BeginNode trueBegin = graph.add(new BeginNode());
         trueBegin.setNext(trueEnd);
-        BeginNode falseBegin = graph.add(BeginNode.create());
+        BeginNode falseBegin = graph.add(new BeginNode());
         falseBegin.setNext(falseEnd);
 
-        IfNode ifNode = graph.add(IfNode.create(null, trueBegin, falseBegin, 0.5));
+        IfNode ifNode = graph.add(new IfNode(null, trueBegin, falseBegin, 0.5));
         graph.start().setNext(ifNode);
 
-        MergeNode merge = graph.add(MergeNode.create());
+        MergeNode merge = graph.add(new MergeNode());
         merge.addForwardEnd(trueEnd);
         merge.addForwardEnd(falseEnd);
-        ReturnNode returnNode = graph.add(ReturnNode.create(null));
+        ReturnNode returnNode = graph.add(new ReturnNode(null));
         merge.setNext(returnNode);
 
         dumpGraph(graph);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EscapeAnalysisTest.java
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EscapeAnalysisTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EscapeAnalysisTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -276,8 +276,9 @@
         return obj2.x instanceof TestClassObject;
     }
 
+    @SuppressWarnings("unused")
     public static void testNewNodeSnippet() {
-        ValueAnchorNode.create(null);
+        new ValueAnchorNode(null);
     }
 
     /**
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,10 +36,6 @@
     static class TestNode extends Node {
         protected TestNode() {
         }
-
-        public static TestNode create() {
-            return new TestNode();
-        }
     }
 
     private Graph graph;
@@ -53,7 +49,7 @@
 
         graph = new Graph();
         for (int i = 0; i < nodes.length; i++) {
-            nodes[i] = graph.add(TestNode.create());
+            nodes[i] = graph.add(new TestNode());
         }
         map = new NodeMap<>(graph);
         for (int i = 0; i < nodes.length; i += 2) {
@@ -114,7 +110,7 @@
          * Failing here is not required, but if this behavior changes, usages of get need to be
          * checked for compatibility.
          */
-        TestNode newNode = graph.add(TestNode.create());
+        TestNode newNode = graph.add(new TestNode());
         try {
             map.get(newNode);
             fail("expected " + (assertionsEnabled() ? AssertionError.class.getSimpleName() : ArrayIndexOutOfBoundsException.class.getSimpleName()));
@@ -131,7 +127,7 @@
          * Failing here is not required, but if this behavior changes, usages of set need to be
          * checked for compatibility.
          */
-        TestNode newNode = graph.add(TestNode.create());
+        TestNode newNode = graph.add(new TestNode());
         try {
             map.set(newNode, 1);
             fail("expected " + (assertionsEnabled() ? AssertionError.class.getSimpleName() : ArrayIndexOutOfBoundsException.class.getSimpleName()));
@@ -144,13 +140,13 @@
 
     @Test
     public void testNewGetAndGrow() {
-        TestNode newNode = graph.add(TestNode.create());
+        TestNode newNode = graph.add(new TestNode());
         assertEquals(null, map.getAndGrow(newNode));
     }
 
     @Test
     public void testNewSetAndGrow() {
-        TestNode newNode = graph.add(TestNode.create());
+        TestNode newNode = graph.add(new TestNode());
         map.setAndGrow(newNode, 1);
         assertEquals((Integer) 1, map.get(newNode));
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,6 @@
     @NodeInfo
     static class Def extends Node {
         protected Def() {
-            // TODO Auto-generated constructor stub
-        }
-
-        public static Def create() {
-            return new Def();
         }
     }
 
@@ -50,25 +45,22 @@
         @Input Def in1;
         @Input Def in2;
 
-        public static Use create(Def in0, Def in1, Def in2) {
-            return new Use(in0, in1, in2);
-        }
-
-        protected Use(Def in0, Def in1, Def in2) {
+        public Use(Def in0, Def in1, Def in2) {
             this.in0 = in0;
             this.in1 = in1;
             this.in2 = in2;
         }
+
     }
 
     @Test
     public void testReplaceAtUsages() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -93,11 +85,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicateAll() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -122,11 +114,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicateNone() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -151,11 +143,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate1() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -182,11 +174,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate2() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -213,11 +205,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate0() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -244,11 +236,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate02() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -275,12 +267,12 @@
     @Test
     public void testReplaceAtUsagesWithPredicate023() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
-        Use use3 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
+        Use use3 = graph.add(new Use(null, null, def0));
 
         assertEquals(4, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -309,12 +301,12 @@
     @Test
     public void testReplaceAtUsagesWithPredicate013() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
-        Use use3 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
+        Use use3 = graph.add(new Use(null, null, def0));
 
         assertEquals(4, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -343,12 +335,12 @@
     @Test
     public void testReplaceAtUsagesWithPredicate203() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
-        Use use3 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
+        Use use3 = graph.add(new Use(null, null, def0));
 
         assertEquals(4, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -377,11 +369,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate01() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
@@ -408,11 +400,11 @@
     @Test
     public void testReplaceAtUsagesWithPredicate12() {
         Graph graph = new Graph();
-        Def def0 = graph.add(Def.create());
-        Def def1 = graph.add(Def.create());
-        Use use0 = graph.add(Use.create(def0, null, null));
-        Use use1 = graph.add(Use.create(null, def0, null));
-        Use use2 = graph.add(Use.create(null, null, def0));
+        Def def0 = graph.add(new Def());
+        Def def1 = graph.add(new Def());
+        Use use0 = graph.add(new Use(def0, null, null));
+        Use use1 = graph.add(new Use(null, def0, null));
+        Use use2 = graph.add(new Use(null, null, def0));
 
         assertEquals(3, def0.usages().count());
         assertThat(def0.usages(), contains(use0));
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
         protected final String name;
 
-        public static TestNode create(String name) {
-            return new TestNode(name);
-        }
-
-        protected TestNode(String name) {
+        public TestNode(String name) {
             this.name = name;
         }
 
@@ -54,14 +50,14 @@
     @Test
     public void singleNodeTest() {
         Graph graph = new Graph();
-        graph.add(TestNode.create("a"));
+        graph.add(new TestNode("a"));
         assertTrue(graph.hasNode(TestNode.class));
         assertEquals("a", toString(graph.getNodes(TestNode.class)));
     }
 
     @Test
     public void deletingNodeTest() {
-        TestNode testNode = TestNode.create("a");
+        TestNode testNode = new TestNode("a");
         Graph graph = new Graph();
         graph.add(testNode);
         testNode.safeDelete();
@@ -70,29 +66,29 @@
 
     @Test
     public void deleteAndAddTest() {
-        TestNode testNode = TestNode.create("b");
+        TestNode testNode = new TestNode("b");
         Graph graph = new Graph();
-        graph.add(TestNode.create("a"));
+        graph.add(new TestNode("a"));
         graph.add(testNode);
         testNode.safeDelete();
         assertEquals("a", toString(graph.getNodes(TestNode.class)));
-        graph.add(TestNode.create("c"));
+        graph.add(new TestNode("c"));
         assertEquals("ac", toString(graph.getNodes(TestNode.class)));
     }
 
     @Test
     public void iteratorBehaviorTest() {
         Graph graph = new Graph();
-        graph.add(TestNode.create("a"));
+        graph.add(new TestNode("a"));
         Iterator iterator = graph.getNodes(TestNode.class).iterator();
         assertTrue(iterator.hasNext());
         assertEquals("a", iterator.next().getName());
         assertFalse(iterator.hasNext());
-        graph.add(TestNode.create("b"));
+        graph.add(new TestNode("b"));
         assertTrue(iterator.hasNext());
         assertEquals("b", iterator.next().getName());
         assertFalse(iterator.hasNext());
-        TestNode c = TestNode.create("c");
+        TestNode c = new TestNode("c");
         graph.add(c);
         assertTrue(iterator.hasNext());
         c.safeDelete();
@@ -102,26 +98,26 @@
     @Test
     public void complicatedIterationTest() {
         Graph graph = new Graph();
-        graph.add(TestNode.create("a"));
+        graph.add(new TestNode("a"));
         for (TestNode tn : graph.getNodes(TestNode.class)) {
             String name = tn.getName();
             for (int i = 0; i < name.length(); ++i) {
                 char c = name.charAt(i);
                 if (c == 'a') {
                     tn.safeDelete();
-                    graph.add(TestNode.create("b"));
-                    graph.add(TestNode.create("c"));
+                    graph.add(new TestNode("b"));
+                    graph.add(new TestNode("c"));
                 } else if (c == 'b') {
                     tn.safeDelete();
                 } else if (c == 'c') {
-                    graph.add(TestNode.create("d"));
-                    graph.add(TestNode.create("e"));
-                    graph.add(TestNode.create("d"));
-                    graph.add(TestNode.create("e"));
-                    graph.add(TestNode.create("e"));
-                    graph.add(TestNode.create("d"));
-                    graph.add(TestNode.create("e"));
-                    graph.add(TestNode.create("d"));
+                    graph.add(new TestNode("d"));
+                    graph.add(new TestNode("e"));
+                    graph.add(new TestNode("d"));
+                    graph.add(new TestNode("e"));
+                    graph.add(new TestNode("e"));
+                    graph.add(new TestNode("d"));
+                    graph.add(new TestNode("e"));
+                    graph.add(new TestNode("d"));
                 } else if (c == 'd') {
                     for (TestNode tn2 : graph.getNodes(TestNode.class)) {
                         if (tn2.getName().equals("e")) {
@@ -141,12 +137,12 @@
     @Test
     public void addingNodeDuringIterationTest() {
         Graph graph = new Graph();
-        graph.add(TestNode.create("a"));
+        graph.add(new TestNode("a"));
         StringBuilder sb = new StringBuilder();
         int z = 0;
         for (TestNode tn : graph.getNodes(TestNode.class)) {
             if (z == 0) {
-                graph.add(TestNode.create("b"));
+                graph.add(new TestNode("b"));
             }
             sb.append(tn.getName());
             z++;
@@ -156,7 +152,7 @@
         z = 0;
         for (TestNode tn : graph.getNodes(TestNode.class)) {
             if (z == 0) {
-                graph.add(TestNode.create("c"));
+                graph.add(new TestNode("c"));
             }
             assertNotNull(tn);
             z++;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
 
         protected final String name;
 
-        public static NodeA create(String name) {
-            return new NodeA(name);
-        }
-
-        protected NodeA(String name) {
+        public NodeA(String name) {
             this.name = name;
         }
 
@@ -52,42 +48,33 @@
     @NodeInfo
     static class NodeB extends NodeA implements IterableNodeType {
 
-        public static NodeB create(String name) {
-            return new NodeB(name);
+        public NodeB(String name) {
+            super(name);
         }
 
-        protected NodeB(String name) {
-            super(name);
-        }
     }
 
     @NodeInfo
     static class NodeC extends NodeB {
-        public static NodeC create(String name) {
-            return new NodeC(name);
+        public NodeC(String name) {
+            super(name);
         }
 
-        protected NodeC(String name) {
-            super(name);
-        }
     }
 
     @NodeInfo
     static class NodeD extends NodeC {
-        public static NodeD create(String name) {
-            return new NodeD(name);
+        public NodeD(String name) {
+            super(name);
         }
 
-        protected NodeD(String name) {
-            super(name);
-        }
     }
 
     @Test
     public void simpleSubclassTest() {
         Graph graph = new Graph();
-        graph.add(NodeB.create("b"));
-        graph.add(NodeD.create("d"));
+        graph.add(new NodeB("b"));
+        graph.add(new NodeD("d"));
 
         Assert.assertEquals("bd", TypedNodeIteratorTest.toString(graph.getNodes(NodeB.class)));
         Assert.assertEquals("d", TypedNodeIteratorTest.toString(graph.getNodes(NodeD.class)));
@@ -96,19 +83,19 @@
     @Test
     public void addingNodeDuringIterationTest() {
         Graph graph = new Graph();
-        graph.add(NodeB.create("b1"));
-        NodeD d1 = graph.add(NodeD.create("d1"));
+        graph.add(new NodeB("b1"));
+        NodeD d1 = graph.add(new NodeD("d1"));
         StringBuilder sb = new StringBuilder();
         for (NodeB tn : graph.getNodes(NodeB.class)) {
             if (tn == d1) {
-                graph.add(NodeB.create("b2"));
+                graph.add(new NodeB("b2"));
             }
             sb.append(tn.getName());
         }
         assertEquals("b1d1b2", sb.toString());
         for (NodeB tn : graph.getNodes(NodeB.class)) {
             if (tn == d1) {
-                graph.add(NodeB.create("b3"));
+                graph.add(new NodeB("b3"));
             }
             assertNotNull(tn);
         }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Jan 12 21:24:26 2015 +0100
@@ -620,12 +620,9 @@
     // Fully qualified annotation name is required to satisfy javac
     @com.oracle.graal.nodeinfo.NodeInfo
     static class PlaceHolderNode extends Node {
-        public static PlaceHolderNode create() {
-            return new PlaceHolderNode();
+        public PlaceHolderNode() {
         }
 
-        protected PlaceHolderNode() {
-        }
     }
 
     static final Node PLACE_HOLDER = new PlaceHolderNode();
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java
--- a/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -157,11 +157,7 @@
 
         @Input protected ValueNode input;
 
-        public static LoadThroughPatchNode create(ValueNode input) {
-            return new LoadThroughPatchNode(input);
-        }
-
-        protected LoadThroughPatchNode(ValueNode input) {
+        public LoadThroughPatchNode(ValueNode input) {
             super(input.stamp());
             this.input = input;
         }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java	Mon Jan 12 21:24:26 2015 +0100
@@ -335,7 +335,7 @@
         HotSpotVMConfig config = HotSpotGraalRuntime.runtime().getConfig();
         RawNativeCallNodeFactory factory = new RawNativeCallNodeFactory() {
             public FixedWithNextNode createRawCallNode(Kind returnType, JavaConstant functionPointer, ValueNode... args) {
-                return AMD64RawNativeCallNode.create(returnType, functionPointer, args);
+                return new AMD64RawNativeCallNode(returnType, functionPointer, args);
             }
         };
         Backend backend = HotSpotGraalRuntime.runtime().getBackend(AMD64.class);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
     protected final JavaConstant functionPointer;
     @Input NodeInputList args;
 
-    public static AMD64RawNativeCallNode create(Kind returnType, JavaConstant functionPointer, ValueNode[] args) {
-        return new AMD64RawNativeCallNode(returnType, functionPointer, args);
-    }
-
-    protected AMD64RawNativeCallNode(Kind returnType, JavaConstant functionPointer, ValueNode[] args) {
+    public AMD64RawNativeCallNode(Kind returnType, JavaConstant functionPointer, ValueNode[] args) {
         super(StampFactory.forKind(returnType));
         this.functionPointer = functionPointer;
         this.args = new NodeInputList<>(this, args);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Mon Jan 12 21:24:26 2015 +0100
@@ -1074,10 +1074,10 @@
             return null;
         }
         StructuredGraph hostGraph = new StructuredGraph(method, -2);
-        ParameterNode deoptId = hostGraph.unique(ParameterNode.create(0, StampFactory.intValue()));
-        ParameterNode hsailFrame = hostGraph.unique(ParameterNode.create(1, StampFactory.forKind(providers.getCodeCache().getTarget().wordKind)));
-        ParameterNode reasonAndAction = hostGraph.unique(ParameterNode.create(2, StampFactory.intValue()));
-        ParameterNode speculation = hostGraph.unique(ParameterNode.create(3, StampFactory.object()));
+        ParameterNode deoptId = hostGraph.unique(new ParameterNode(0, StampFactory.intValue()));
+        ParameterNode hsailFrame = hostGraph.unique(new ParameterNode(1, StampFactory.forKind(providers.getCodeCache().getTarget().wordKind)));
+        ParameterNode reasonAndAction = hostGraph.unique(new ParameterNode(2, StampFactory.intValue()));
+        ParameterNode speculation = hostGraph.unique(new ParameterNode(3, StampFactory.object()));
         BeginNode[] branches = new BeginNode[deopts.size() + 1];
         int[] keys = new int[deopts.size()];
         int[] keySuccessors = new int[deopts.size() + 1];
@@ -1100,7 +1100,7 @@
         keyProbabilities[deopts.size()] = 0; // default
         keySuccessors[deopts.size()] = deopts.size();
         branches[deopts.size()] = createHostCrashBranch(hostGraph, deoptId);
-        IntegerSwitchNode switchNode = hostGraph.add(IntegerSwitchNode.create(deoptId, branches, keys, keyProbabilities, keySuccessors));
+        IntegerSwitchNode switchNode = hostGraph.add(new IntegerSwitchNode(deoptId, branches, keys, keyProbabilities, keySuccessors));
         StartNode start = hostGraph.start();
         start.setNext(switchNode);
         /*
@@ -1111,16 +1111,16 @@
     }
 
     private static BeginNode createHostCrashBranch(StructuredGraph hostGraph, ValueNode deoptId) {
-        VMErrorNode vmError = hostGraph.add(VMErrorNode.create("Error in HSAIL deopt. DeoptId=%d", deoptId));
+        VMErrorNode vmError = hostGraph.add(new VMErrorNode("Error in HSAIL deopt. DeoptId=%d", deoptId));
         // ConvertNode.convert(hostGraph, Kind.Long, deoptId)));
-        vmError.setNext(hostGraph.add(ReturnNode.create(ConstantNode.defaultForKind(hostGraph.method().getSignature().getReturnKind(), hostGraph))));
+        vmError.setNext(hostGraph.add(new ReturnNode(ConstantNode.defaultForKind(hostGraph.method().getSignature().getReturnKind(), hostGraph))));
         return BeginNode.begin(vmError);
     }
 
     private static BeginNode createHostDeoptBranch(DeoptimizingOp deopt, ParameterNode hsailFrame, ValueNode reasonAndAction, ValueNode speculation, HotSpotProviders providers,
                     HotSpotVMConfig config, int numSRegs, int numDRegs) {
-        BeginNode branch = hsailFrame.graph().add(BeginNode.create());
-        DynamicDeoptimizeNode deoptimization = hsailFrame.graph().add(DynamicDeoptimizeNode.create(reasonAndAction, speculation));
+        BeginNode branch = hsailFrame.graph().add(new BeginNode());
+        DynamicDeoptimizeNode deoptimization = hsailFrame.graph().add(new DynamicDeoptimizeNode(reasonAndAction, speculation));
         deoptimization.setStateBefore(createFrameState(deopt.getFrameState().topFrame, hsailFrame, providers, config, numSRegs, numDRegs));
         branch.setNext(deoptimization);
         return branch;
@@ -1153,7 +1153,7 @@
             locks[i] = lirValueToHirNode.apply(lockValue);
             monitorIds[i] = getMonitorIdForHotSpotMonitorValueFromFrame(lockValue, hsailFrame, hostGraph);
         }
-        FrameState frameState = hostGraph.add(FrameState.create(lowLevelFrame.getMethod(), lowLevelFrame.getBCI(), locals, stack, locks, monitorIds, lowLevelFrame.rethrowException, false));
+        FrameState frameState = hostGraph.add(new FrameState(lowLevelFrame.getMethod(), lowLevelFrame.getBCI(), locals, stack, locks, monitorIds, lowLevelFrame.rethrowException, false));
         if (outterFrameState != null) {
             frameState.setOuterFrameState(outterFrameState);
         }
@@ -1168,7 +1168,7 @@
                 VirtualObject virtualObject = entry.getKey();
                 VirtualObjectNode virtualObjectNode = entry.getValue();
                 List fieldValues = Arrays.stream(virtualObject.getValues()).map(lirValueToHirNode).collect(Collectors.toList());
-                virtualStates.add(VirtualObjectState.create(virtualObjectNode, fieldValues));
+                virtualStates.add(new VirtualObjectState(virtualObjectNode, fieldValues));
             }
             // New virtual objects may have been discovered while processing the previous set.
             // Wait until a fixed point is reached
@@ -1213,9 +1213,9 @@
     private static ValueNode getNodeForVirtualObjectFromFrame(VirtualObject virtualObject, Map virtualObjects, StructuredGraph hostGraph) {
         return virtualObjects.computeIfAbsent(virtualObject, vo -> {
             if (vo.getType().isArray()) {
-                return hostGraph.add(VirtualArrayNode.create(vo.getType().getComponentType(), vo.getValues().length));
+                return hostGraph.add(new VirtualArrayNode(vo.getType().getComponentType(), vo.getValues().length));
             } else {
-                return hostGraph.add(VirtualInstanceNode.create(vo.getType(), true));
+                return hostGraph.add(new VirtualInstanceNode(vo.getType(), true));
             }
         });
     }
@@ -1228,14 +1228,14 @@
         int intSize = providers.getCodeCache().getTarget().arch.getSizeInBytes(Kind.Int);
         if (regNumber >= HSAIL.s0.number && regNumber <= HSAIL.s31.number) {
             long offset = config.hsailFrameHeaderSize + intSize * (regNumber - HSAIL.s0.number);
-            location = ConstantLocationNode.create(FINAL_LOCATION, offset, hostGraph);
+            location = hostGraph.unique(new ConstantLocationNode(FINAL_LOCATION, offset));
         } else if (regNumber >= HSAIL.d0.number && regNumber <= HSAIL.d15.number) {
             long offset = config.hsailFrameHeaderSize + intSize * numSRegs + longSize * (regNumber - HSAIL.d0.number);
-            location = ConstantLocationNode.create(FINAL_LOCATION, offset, hostGraph);
+            location = hostGraph.unique(new ConstantLocationNode(FINAL_LOCATION, offset));
         } else {
             throw GraalInternalError.shouldNotReachHere("unknown hsail register: " + regNumber);
         }
-        valueNode = hostGraph.unique(FloatingReadNode.create(hsailFrame, location, null, StampFactory.forKind(valueKind)));
+        valueNode = hostGraph.unique(new FloatingReadNode(hsailFrame, location, null, StampFactory.forKind(valueKind)));
         return valueNode;
     }
 
@@ -1246,8 +1246,8 @@
             int longSize = providers.getCodeCache().getTarget().arch.getSizeInBytes(Kind.Long);
             int intSize = providers.getCodeCache().getTarget().arch.getSizeInBytes(Kind.Int);
             long offset = config.hsailFrameHeaderSize + (intSize * numSRegs) + (longSize * numDRegs) + HSAIL.getStackOffsetStart(slot, slotSizeInBits);
-            LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, offset, hostGraph);
-            ValueNode valueNode = hostGraph.unique(FloatingReadNode.create(hsailFrame, location, null, StampFactory.forKind(valueKind)));
+            LocationNode location = hostGraph.unique(new ConstantLocationNode(FINAL_LOCATION, offset));
+            ValueNode valueNode = hostGraph.unique(new FloatingReadNode(hsailFrame, location, null, StampFactory.forKind(valueKind)));
             return valueNode;
         } else {
             throw GraalInternalError.shouldNotReachHere("unsupported stack slot kind: " + valueKind);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java	Mon Jan 12 21:24:26 2015 +0100
@@ -94,7 +94,7 @@
                     default:
                         reason = DeoptimizationReason.None;
                 }
-                unwind.replaceAtPredecessor(graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateReprofile, reason)));
+                unwind.replaceAtPredecessor(graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateReprofile, reason)));
                 unwind.safeDelete();
             } else {
                 // unwind whose exception is not an instance of ForeignCallNode
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectLoadAcquireNode.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectLoadAcquireNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectLoadAcquireNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,11 +34,7 @@
 @NodeInfo
 public class HSAILDirectLoadAcquireNode extends DirectReadNode {
 
-    public static HSAILDirectLoadAcquireNode create(ValueNode address, Kind readKind) {
-        return new HSAILDirectLoadAcquireNode(address, readKind);
-    }
-
-    protected HSAILDirectLoadAcquireNode(ValueNode address, Kind readKind) {
+    public HSAILDirectLoadAcquireNode(ValueNode address, Kind readKind) {
         super(address, readKind);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILDirectStoreReleaseNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,11 +34,7 @@
 @NodeInfo
 public class HSAILDirectStoreReleaseNode extends DirectStoreNode {
 
-    public static HSAILDirectStoreReleaseNode create(ValueNode address, ValueNode value, Kind kind) {
-        return new HSAILDirectStoreReleaseNode(address, value, kind);
-    }
-
-    protected HSAILDirectStoreReleaseNode(ValueNode address, ValueNode value, Kind kind) {
+    public HSAILDirectStoreReleaseNode(ValueNode address, ValueNode value, Kind kind) {
         super(address, value, kind);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILWorkItemAbsIdNode.java
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILWorkItemAbsIdNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/replacements/HSAILWorkItemAbsIdNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 @NodeInfo
 public class HSAILWorkItemAbsIdNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static HSAILWorkItemAbsIdNode create() {
-        return new HSAILWorkItemAbsIdNode();
-    }
-
-    protected HSAILWorkItemAbsIdNode() {
+    public HSAILWorkItemAbsIdNode() {
         super(StampFactory.forKind(Kind.Int));
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java
--- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXWrapperBuilder.java	Mon Jan 12 21:24:26 2015 +0100
@@ -192,7 +192,7 @@
 
         InvokeNode kernelStart = createInvoke(getClass(), "getKernelStart", ConstantNode.forConstant(kernel.asConstant(), providers.getMetaAccess(), getGraph()));
 
-        AllocaNode buf = append(AllocaNode.create(bufSize / wordSize, wordKind, new BitSet()));
+        AllocaNode buf = append(new AllocaNode(bufSize / wordSize, wordKind, new BitSet()));
         ValueNode objectParametersOffsets;
         ValueNode pinnedObjects;
         ConstantNode nullWord = ConstantNode.forIntegerKind(wordKind, 0L, getGraph());
@@ -202,22 +202,22 @@
         } else {
             int intsPerWord = wordSize / intSize;
             int slots = roundUp(objectSlots.size(), intsPerWord);
-            objectParametersOffsets = append(AllocaNode.create(slots, wordKind, new BitSet()));
+            objectParametersOffsets = append(new AllocaNode(slots, wordKind, new BitSet()));
             // No refmap for pinned objects list since kernel execution is (currently) GC unsafe
-            pinnedObjects = append(AllocaNode.create(objectSlots.size(), wordKind, new BitSet()));
+            pinnedObjects = append(new AllocaNode(objectSlots.size(), wordKind, new BitSet()));
 
             // Initialize the object parameter offsets array
             int index = 0;
             for (int slot : objectSlots) {
                 int offset = slot * wordSize;
-                LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, index * intSize, getGraph());
-                append(WriteNode.create(objectParametersOffsets, ConstantNode.forInt(offset, getGraph()), location, BarrierType.NONE, false));
+                LocationNode location = getGraph().unique(new ConstantLocationNode(FINAL_LOCATION, index * intSize));
+                append(new WriteNode(objectParametersOffsets, ConstantNode.forInt(offset, getGraph()), location, BarrierType.NONE, false));
                 index++;
             }
         }
 
         Map args = new EnumMap<>(LaunchArg.class);
-        args.put(Thread, append(ReadRegisterNode.create(providers.getRegisters().getThreadRegister(), true, false)));
+        args.put(Thread, append(new ReadRegisterNode(providers.getRegisters().getThreadRegister(), true, false)));
         args.put(Kernel, kernelStart);
         args.put(DimX, forInt(1, getGraph()));
         args.put(DimY, forInt(1, getGraph()));
@@ -233,13 +233,13 @@
         for (javaParametersIndex = 0; javaParametersIndex < javaParameters.length; javaParametersIndex++) {
             ParameterNode javaParameter = javaParameters[javaParametersIndex];
             int javaParameterOffset = javaParameterOffsetsInKernelParametersBuffer[javaParametersIndex];
-            LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, javaParameterOffset, getGraph());
-            append(WriteNode.create(buf, javaParameter, location, BarrierType.NONE, false));
+            LocationNode location = getGraph().unique(new ConstantLocationNode(FINAL_LOCATION, javaParameterOffset));
+            append(new WriteNode(buf, javaParameter, location, BarrierType.NONE, false));
             updateDimArg(method, sig, sigIndex++, args, javaParameter);
         }
         if (returnKind != Kind.Void) {
-            LocationNode location = ConstantLocationNode.create(FINAL_LOCATION, bufSize - wordSize, getGraph());
-            append(WriteNode.create(buf, nullWord, location, BarrierType.NONE, false));
+            LocationNode location = getGraph().unique(new ConstantLocationNode(FINAL_LOCATION, bufSize - wordSize));
+            append(new WriteNode(buf, nullWord, location, BarrierType.NONE, false));
         }
 
         HIRFrameStateBuilder fsb = new HIRFrameStateBuilder(method, getGraph(), true);
@@ -247,7 +247,7 @@
         getGraph().start().setStateAfter(fs);
 
         ValueNode[] launchArgsArray = args.values().toArray(new ValueNode[args.size()]);
-        ForeignCallNode result = append(ForeignCallNode.create(providers.getForeignCalls(), CALL_KERNEL, launchArgsArray));
+        ForeignCallNode result = append(new ForeignCallNode(providers.getForeignCalls(), CALL_KERNEL, launchArgsArray));
         result.setStateAfter(fs);
 
         InvokeNode getObjectResult = null;
@@ -261,13 +261,13 @@
             case Short:
             case Char:
             case Int:
-                returnValue = unique(NarrowNode.create(result, 32));
+                returnValue = unique(new NarrowNode(result, 32));
                 break;
             case Long:
                 returnValue = result;
                 break;
             case Float: {
-                ValueNode asInt = unique(NarrowNode.create(result, 32));
+                ValueNode asInt = unique(new NarrowNode(result, 32));
                 returnValue = ReinterpretNode.reinterpret(Kind.Float, asInt);
                 break;
             }
@@ -282,7 +282,7 @@
                 throw new GraalInternalError("%s return kind not supported", returnKind);
         }
 
-        append(ReturnNode.create(returnValue));
+        append(new ReturnNode(returnValue));
 
         if (Debug.isDumpEnabled()) {
             Debug.dump(getGraph(), "Initial kernel launch graph");
@@ -314,7 +314,7 @@
         } else {
             stamp = StampFactory.forKind(kind);
         }
-        javaParameters[javaParametersIndex] = unique(ParameterNode.create(javaParametersIndex, stamp));
+        javaParameters[javaParametersIndex] = unique(new ParameterNode(javaParametersIndex, stamp));
         bufSize += kindByteSize;
     }
 
@@ -326,7 +326,7 @@
         if (sigIndex >= 0) {
             ParallelOver parallelOver = method.getParameterAnnotation(ParallelOver.class, sigIndex);
             if (parallelOver != null && sig.getParameterType(sigIndex, method.getDeclaringClass()).equals(providers.getMetaAccess().lookupJavaType(int[].class))) {
-                ArrayLengthNode dimension = append(ArrayLengthNode.create(javaParameter));
+                ArrayLengthNode dimension = append(new ArrayLengthNode(javaParameter));
                 LaunchArg argKey = LaunchArg.valueOf(LaunchArg.class, "Dim" + parallelOver.dimension());
                 ValueNode existing = launchArgs.put(argKey, dimension);
                 if (existing != null && existing instanceof ArrayLengthNode) {
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java	Mon Jan 12 21:24:26 2015 +0100
@@ -96,11 +96,7 @@
 
         @Input protected ValueNode input;
 
-        public static ConstantFoldBarrier create(ValueNode input) {
-            return new ConstantFoldBarrier(input);
-        }
-
-        protected ConstantFoldBarrier(ValueNode input) {
+        public ConstantFoldBarrier(ValueNode input) {
             super(input.stamp());
             this.input = input;
         }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java	Mon Jan 12 21:24:26 2015 +0100
@@ -379,18 +379,18 @@
     public static void lower(DynamicCounterNode counter, HotSpotRegistersProvider registers, HotSpotVMConfig config, Kind wordKind) {
         StructuredGraph graph = counter.graph();
 
-        ReadRegisterNode thread = graph.add(ReadRegisterNode.create(registers.getThreadRegister(), wordKind, true, false));
+        ReadRegisterNode thread = graph.add(new ReadRegisterNode(registers.getThreadRegister(), wordKind, true, false));
 
         int index = BenchmarkCounters.getIndex(counter);
         if (index >= config.graalCountersSize) {
             throw new GraalInternalError("too many counters, reduce number of counters or increase -XX:GraalCounterSize=... (current value: " + config.graalCountersSize + ")");
         }
-        ConstantLocationNode arrayLocation = ConstantLocationNode.create(COUNTER_LOCATION, config.graalCountersThreadOffset, graph);
-        ReadNode readArray = graph.add(ReadNode.create(thread, arrayLocation, StampFactory.forKind(wordKind), BarrierType.NONE));
-        ConstantLocationNode location = ConstantLocationNode.create(COUNTER_LOCATION, Unsafe.ARRAY_LONG_INDEX_SCALE * index, graph);
-        ReadNode read = graph.add(ReadNode.create(readArray, location, StampFactory.forKind(Kind.Long), BarrierType.NONE));
-        AddNode add = graph.unique(AddNode.create(read, counter.getIncrement()));
-        WriteNode write = graph.add(WriteNode.create(readArray, add, location, BarrierType.NONE));
+        ConstantLocationNode arrayLocation = graph.unique(new ConstantLocationNode(COUNTER_LOCATION, config.graalCountersThreadOffset));
+        ReadNode readArray = graph.add(new ReadNode(thread, arrayLocation, StampFactory.forKind(wordKind), BarrierType.NONE));
+        ConstantLocationNode location = graph.unique(new ConstantLocationNode(COUNTER_LOCATION, Unsafe.ARRAY_LONG_INDEX_SCALE * index));
+        ReadNode read = graph.add(new ReadNode(readArray, location, StampFactory.forKind(Kind.Long), BarrierType.NONE));
+        AddNode add = graph.unique(new AddNode(read, counter.getIncrement()));
+        WriteNode write = graph.add(new WriteNode(readArray, add, location, BarrierType.NONE));
 
         graph.addBeforeFixed(counter, thread);
         graph.addBeforeFixed(counter, readArray);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Mon Jan 12 21:24:26 2015 +0100
@@ -191,9 +191,9 @@
             return;
         }
         StructuredGraph graph = n.graph();
-        LocationNode location = ConstantLocationNode.create(KLASS_LAYOUT_HELPER_LOCATION, runtime.getConfig().klassLayoutHelperOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(KLASS_LAYOUT_HELPER_LOCATION, runtime.getConfig().klassLayoutHelperOffset));
         assert !n.getHub().isConstant();
-        graph.replaceFloating(n, graph.unique(FloatingReadNode.create(n.getHub(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE)));
+        graph.replaceFloating(n, graph.unique(new FloatingReadNode(n.getHub(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE)));
     }
 
     private void lowerHubGetClassNode(HubGetClassNode n, LoweringTool tool) {
@@ -202,9 +202,9 @@
         }
 
         StructuredGraph graph = n.graph();
-        LocationNode location = ConstantLocationNode.create(CLASS_MIRROR_LOCATION, runtime.getConfig().classMirrorOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(CLASS_MIRROR_LOCATION, runtime.getConfig().classMirrorOffset));
         assert !n.getHub().isConstant();
-        FloatingReadNode read = graph.unique(FloatingReadNode.create(n.getHub(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE));
+        FloatingReadNode read = graph.unique(new FloatingReadNode(n.getHub(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE));
         graph.replaceFloating(n, read);
     }
 
@@ -214,9 +214,9 @@
         }
 
         StructuredGraph graph = n.graph();
-        LocationNode location = ConstantLocationNode.create(CLASS_KLASS_LOCATION, runtime.getConfig().klassOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(CLASS_KLASS_LOCATION, runtime.getConfig().klassOffset));
         assert !n.getValue().isConstant();
-        FloatingReadNode read = graph.unique(FloatingReadNode.create(n.getValue(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE));
+        FloatingReadNode read = graph.unique(new FloatingReadNode(n.getValue(), location, null, n.stamp(), n.getGuard(), BarrierType.NONE));
         graph.replaceFloating(n, read);
     }
 
@@ -244,10 +244,11 @@
                     // We use LocationNode.ANY_LOCATION for the reads that access the
                     // compiled code entry as HotSpot does not guarantee they are final
                     // values.
-                    ReadNode compiledEntry = graph.add(ReadNode.create(metaspaceMethod, ConstantLocationNode.create(ANY_LOCATION, runtime.getConfig().methodCompiledEntryOffset, graph),
-                                    StampFactory.forKind(wordKind), BarrierType.NONE));
+                    int methodCompiledEntryOffset = runtime.getConfig().methodCompiledEntryOffset;
+                    ReadNode compiledEntry = graph.add(new ReadNode(metaspaceMethod, graph.unique(new ConstantLocationNode(ANY_LOCATION, methodCompiledEntryOffset)), StampFactory.forKind(wordKind),
+                                    BarrierType.NONE));
 
-                    loweredCallTarget = graph.add(HotSpotIndirectCallTargetNode.create(metaspaceMethod, compiledEntry, parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(),
+                    loweredCallTarget = graph.add(new HotSpotIndirectCallTargetNode(metaspaceMethod, compiledEntry, parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(),
                                     CallingConvention.Type.JavaCall, callTarget.invokeKind()));
 
                     graph.addBeforeFixed(invoke.asNode(), metaspaceMethod);
@@ -256,7 +257,7 @@
             }
 
             if (loweredCallTarget == null) {
-                loweredCallTarget = graph.add(HotSpotDirectCallTargetNode.create(parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(), CallingConvention.Type.JavaCall,
+                loweredCallTarget = graph.add(new HotSpotDirectCallTargetNode(parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(), CallingConvention.Type.JavaCall,
                                 callTarget.invokeKind()));
             }
             callTarget.replaceAndDelete(loweredCallTarget);
@@ -296,12 +297,12 @@
 
     @Override
     protected ValueNode createReadArrayComponentHub(StructuredGraph graph, ValueNode arrayHub, FixedNode anchor) {
-        LocationNode location = ConstantLocationNode.create(OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION, runtime.getConfig().arrayClassElementOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION, runtime.getConfig().arrayClassElementOffset));
         /*
          * Anchor the read of the element klass to the cfg, because it is only valid when arrayClass
          * is an object class, which might not be the case in other parts of the compiled method.
          */
-        return graph.unique(FloatingReadNode.create(arrayHub, location, null, KlassPointerStamp.klassNonNull(), BeginNode.prevBegin(anchor)));
+        return graph.unique(new FloatingReadNode(arrayHub, location, null, KlassPointerStamp.klassNonNull(), BeginNode.prevBegin(anchor)));
     }
 
     @Override
@@ -339,9 +340,9 @@
     private void lowerOSRStartNode(OSRStartNode osrStart) {
         StructuredGraph graph = osrStart.graph();
         if (graph.getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS) {
-            StartNode newStart = graph.add(StartNode.create());
-            ParameterNode buffer = graph.unique(ParameterNode.create(0, StampFactory.forKind(runtime.getTarget().wordKind)));
-            ForeignCallNode migrationEnd = graph.add(ForeignCallNode.create(foreignCalls, OSR_MIGRATION_END, buffer));
+            StartNode newStart = graph.add(new StartNode());
+            ParameterNode buffer = graph.unique(new ParameterNode(0, StampFactory.forKind(runtime.getTarget().wordKind)));
+            ForeignCallNode migrationEnd = graph.add(new ForeignCallNode(foreignCalls, OSR_MIGRATION_END, buffer));
             migrationEnd.setStateAfter(osrStart.stateAfter());
 
             newStart.setNext(migrationEnd);
@@ -355,8 +356,8 @@
             for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.class)) {
                 int size = HIRFrameStateBuilder.stackSlots(osrLocal.getKind());
                 int offset = localsOffset - (osrLocal.index() + size - 1) * 8;
-                IndexedLocationNode location = IndexedLocationNode.create(ANY_LOCATION, offset, ConstantNode.forLong(0, graph), graph, 1);
-                ReadNode load = graph.add(ReadNode.create(buffer, location, osrLocal.stamp(), BarrierType.NONE));
+                IndexedLocationNode location = graph.unique(new IndexedLocationNode(ANY_LOCATION, offset, ConstantNode.forLong(0, graph), 1));
+                ReadNode load = graph.add(new ReadNode(buffer, location, osrLocal.stamp(), BarrierType.NONE));
                 osrLocal.replaceAndDelete(load);
                 graph.addBeforeFixed(migrationEnd, load);
             }
@@ -414,7 +415,7 @@
                     throw GraalInternalError.shouldNotReachHere();
                 }
 
-                ForeignCallNode foreignCallNode = graph.add(ForeignCallNode.create(foreignCalls, descriptor, node.stamp(), node.getArguments()));
+                ForeignCallNode foreignCallNode = graph.add(new ForeignCallNode(foreignCalls, descriptor, node.stamp(), node.getArguments()));
                 graph.replaceFixedWithFixed(node, foreignCallNode);
             }
         }
@@ -440,14 +441,14 @@
         // We use LocationNode.ANY_LOCATION for the reads that access the vtable
         // entry as HotSpot does not guarantee that this is a final value.
         Stamp methodStamp = MethodPointerStamp.method();
-        ReadNode metaspaceMethod = graph.add(ReadNode.create(hub, ConstantLocationNode.create(ANY_LOCATION, vtableEntryOffset, graph), methodStamp, BarrierType.NONE));
+        ReadNode metaspaceMethod = graph.add(new ReadNode(hub, graph.unique(new ConstantLocationNode(ANY_LOCATION, vtableEntryOffset)), methodStamp, BarrierType.NONE));
         return metaspaceMethod;
     }
 
     @Override
     protected ValueNode createReadHub(StructuredGraph graph, ValueNode object, GuardingNode guard) {
         HotSpotVMConfig config = runtime.getConfig();
-        LocationNode location = ConstantLocationNode.create(HUB_LOCATION, config.hubOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(HUB_LOCATION, config.hubOffset));
         assert !object.isConstant() || object.isNullConstant();
 
         KlassPointerStamp hubStamp = KlassPointerStamp.klassNonNull();
@@ -455,7 +456,7 @@
             hubStamp = hubStamp.compressed(config.getKlassEncoding());
         }
 
-        FloatingReadNode memoryRead = graph.unique(FloatingReadNode.create(object, location, null, hubStamp, guard, BarrierType.NONE));
+        FloatingReadNode memoryRead = graph.unique(new FloatingReadNode(object, location, null, hubStamp, guard, BarrierType.NONE));
         if (config.useCompressedClassPointers) {
             return CompressionNode.uncompress(memoryRead, config.getKlassEncoding());
         } else {
@@ -465,7 +466,7 @@
 
     private WriteNode createWriteHub(StructuredGraph graph, ValueNode object, ValueNode value) {
         HotSpotVMConfig config = runtime.getConfig();
-        LocationNode location = ConstantLocationNode.create(HUB_WRITE_LOCATION, config.hubOffset, graph);
+        LocationNode location = graph.unique(new ConstantLocationNode(HUB_WRITE_LOCATION, config.hubOffset));
         assert !object.isConstant() || object.isNullConstant();
 
         ValueNode writeValue = value;
@@ -473,7 +474,7 @@
             writeValue = CompressionNode.compress(value, config.getKlassEncoding());
         }
 
-        return graph.add(WriteNode.create(object, writeValue, location, BarrierType.NONE));
+        return graph.add(new WriteNode(object, writeValue, location, BarrierType.NONE));
     }
 
     @Override
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nfi/NativeCallStubGraphBuilder.java	Mon Jan 12 21:24:26 2015 +0100
@@ -53,10 +53,10 @@
         try {
             ResolvedJavaMethod method = providers.getMetaAccess().lookupJavaMethod(NativeCallStubGraphBuilder.class.getMethod("libCall", Object.class, Object.class, Object.class));
             StructuredGraph g = new StructuredGraph(method);
-            ParameterNode arg0 = g.unique(ParameterNode.create(0, StampFactory.forKind(Kind.Object)));
-            ParameterNode arg1 = g.unique(ParameterNode.create(1, StampFactory.forKind(Kind.Object)));
-            ParameterNode arg2 = g.unique(ParameterNode.create(2, StampFactory.forKind(Kind.Object)));
-            FrameState frameState = g.add(FrameState.create(null, method, 0, Arrays.asList(new ValueNode[]{arg0, arg1, arg2}), 3, 0, false, false, new ArrayList(),
+            ParameterNode arg0 = g.unique(new ParameterNode(0, StampFactory.forKind(Kind.Object)));
+            ParameterNode arg1 = g.unique(new ParameterNode(1, StampFactory.forKind(Kind.Object)));
+            ParameterNode arg2 = g.unique(new ParameterNode(2, StampFactory.forKind(Kind.Object)));
+            FrameState frameState = g.add(new FrameState(null, method, 0, Arrays.asList(new ValueNode[]{arg0, arg1, arg2}), 3, 0, false, false, new ArrayList(),
                             new ArrayList()));
             g.start().setStateAfter(frameState);
             List parameters = new ArrayList<>();
@@ -84,12 +84,12 @@
                     throw new IllegalArgumentException("Return type not supported: " + returnType.getName());
                 }
                 ResolvedJavaType type = providers.getMetaAccess().lookupJavaType(callNode.getKind().toBoxedJavaClass());
-                boxedResult = g.unique(BoxNode.create(callNode, type, callNode.getKind()));
+                boxedResult = g.unique(new BoxNode(callNode, type, callNode.getKind()));
             } else {
-                boxedResult = g.unique(BoxNode.create(ConstantNode.forLong(0, g), providers.getMetaAccess().lookupJavaType(Long.class), Kind.Long));
+                boxedResult = g.unique(new BoxNode(ConstantNode.forLong(0, g), providers.getMetaAccess().lookupJavaType(Long.class), Kind.Long));
             }
 
-            ReturnNode returnNode = g.add(ReturnNode.create(boxedResult));
+            ReturnNode returnNode = g.add(new ReturnNode(boxedResult));
             callNode.setNext(returnNode);
             (new HotSpotWordTypeRewriterPhase(providers.getMetaAccess(), providers.getSnippetReflection(), providers.getConstantReflection(), Kind.Long)).apply(g);
             return g;
@@ -103,7 +103,7 @@
         FixedWithNextNode last = null;
         for (int i = 0; i < numArgs; i++) {
             // load boxed array element:
-            LoadIndexedNode boxedElement = g.add(LoadIndexedNode.create(argumentsArray, ConstantNode.forInt(i, g), Kind.Object));
+            LoadIndexedNode boxedElement = g.add(new LoadIndexedNode(argumentsArray, ConstantNode.forInt(i, g), Kind.Object));
             if (i == 0) {
                 g.start().setNext(boxedElement);
                 last = boxedElement;
@@ -120,15 +120,15 @@
                 int displacement = runtime().getArrayBaseOffset(arrayElementKind);
                 ConstantNode index = ConstantNode.forInt(0, g);
                 int indexScaling = runtime().getArrayIndexScale(arrayElementKind);
-                IndexedLocationNode locationNode = IndexedLocationNode.create(locationIdentity, displacement, index, g, indexScaling);
+                IndexedLocationNode locationNode = g.unique(new IndexedLocationNode(locationIdentity, displacement, index, indexScaling));
                 Stamp wordStamp = StampFactory.forKind(providers.getCodeCache().getTarget().wordKind);
-                ComputeAddressNode arrayAddress = g.unique(ComputeAddressNode.create(boxedElement, locationNode, wordStamp));
+                ComputeAddressNode arrayAddress = g.unique(new ComputeAddressNode(boxedElement, locationNode, wordStamp));
                 args.add(arrayAddress);
             } else {
                 // boxed primitive value
                 try {
                     ResolvedJavaField field = providers.getMetaAccess().lookupJavaField(kind.toBoxedJavaClass().getDeclaredField("value"));
-                    LoadFieldNode loadFieldNode = g.add(LoadFieldNode.create(boxedElement, field));
+                    LoadFieldNode loadFieldNode = g.add(new LoadFieldNode(boxedElement, field));
                     last.setNext(loadFieldNode);
                     last = loadFieldNode;
                     args.add(loadFieldNode);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,11 +50,7 @@
      */
     protected final BitSet objects;
 
-    public static AllocaNode create(int slots, Kind wordKind, BitSet objects) {
-        return new AllocaNode(slots, wordKind, objects);
-    }
-
-    protected AllocaNode(int slots, Kind wordKind, BitSet objects) {
+    public AllocaNode(int slots, Kind wordKind, BitSet objects) {
         super(StampFactory.forKind(wordKind));
         this.slots = slots;
         this.objects = objects;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -42,11 +42,7 @@
 
     protected int lockDepth;
 
-    public static BeginLockScopeNode create(int lockDepth) {
-        return new BeginLockScopeNode(lockDepth);
-    }
-
-    protected BeginLockScopeNode(int lockDepth) {
+    public BeginLockScopeNode(int lockDepth) {
         super(null);
         this.lockDepth = lockDepth;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
 
     protected final String string;
 
-    public static CStringNode create(String string) {
-        return new CStringNode(string);
-    }
-
-    protected CStringNode(String string) {
+    public CStringNode(String string) {
         super(null);
         this.string = string;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 @NodeInfo
 public class ClassCastNode extends MacroStateSplitNode implements Canonicalizable.Binary {
 
-    public static ClassCastNode create(Invoke invoke) {
-        return new ClassCastNode(invoke);
-    }
-
-    protected ClassCastNode(Invoke invoke) {
+    public ClassCastNode(Invoke invoke) {
         super(invoke);
     }
 
@@ -67,7 +63,7 @@
         if (forJavaClass.isConstant()) {
             ResolvedJavaType type = tool.getConstantReflection().asJavaType(forJavaClass.asConstant());
             if (type != null && !type.isPrimitive()) {
-                return CheckCastNode.create(type, forObject, null, false);
+                return new CheckCastNode(type, forObject, null, false);
             }
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java	Mon Jan 12 21:24:26 2015 +0100
@@ -40,11 +40,7 @@
 @NodeInfo
 public class ClassGetClassLoader0Node extends MacroStateSplitNode implements Canonicalizable {
 
-    public static ClassGetClassLoader0Node create(Invoke invoke) {
-        return new ClassGetClassLoader0Node(invoke);
-    }
-
-    protected ClassGetClassLoader0Node(Invoke invoke) {
+    public ClassGetClassLoader0Node(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
 @NodeInfo
 public class ClassGetComponentTypeNode extends MacroNode implements Canonicalizable {
 
-    public static ClassGetComponentTypeNode create(Invoke invoke) {
-        return new ClassGetComponentTypeNode(invoke);
-    }
-
-    protected ClassGetComponentTypeNode(Invoke invoke) {
+    public ClassGetComponentTypeNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 @NodeInfo
 public class ClassGetModifiersNode extends MacroNode implements Canonicalizable {
 
-    public static ClassGetModifiersNode create(Invoke invoke) {
-        return new ClassGetModifiersNode(invoke);
-    }
-
-    protected ClassGetModifiersNode(Invoke invoke) {
+    public ClassGetModifiersNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
 @NodeInfo
 public class ClassGetSuperclassNode extends MacroNode implements Canonicalizable {
 
-    public static ClassGetSuperclassNode create(Invoke invoke) {
-        return new ClassGetSuperclassNode(invoke);
-    }
-
-    protected ClassGetSuperclassNode(Invoke invoke) {
+    public ClassGetSuperclassNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 @NodeInfo
 public class ClassIsArrayNode extends MacroNode implements Canonicalizable {
 
-    public static ClassIsArrayNode create(Invoke invoke) {
-        return new ClassIsArrayNode(invoke);
-    }
-
-    protected ClassIsArrayNode(Invoke invoke) {
+    public ClassIsArrayNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsAssignableFromNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsAssignableFromNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsAssignableFromNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,11 +37,7 @@
  */
 @NodeInfo
 public class ClassIsAssignableFromNode extends MacroStateSplitNode implements Canonicalizable {
-    public static ClassIsAssignableFromNode create(Invoke invoke) {
-        return new ClassIsAssignableFromNode(invoke);
-    }
-
-    protected ClassIsAssignableFromNode(Invoke invoke) {
+    public ClassIsAssignableFromNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInstanceNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -40,11 +40,7 @@
 @NodeInfo
 public class ClassIsInstanceNode extends MacroNode implements Canonicalizable {
 
-    public static ClassIsInstanceNode create(Invoke invoke) {
-        return new ClassIsInstanceNode(invoke);
-    }
-
-    protected ClassIsInstanceNode(Invoke invoke) {
+    public ClassIsInstanceNode(Invoke invoke) {
         super(invoke);
     }
 
@@ -71,8 +67,8 @@
                     JavaConstant c = object.asJavaConstant();
                     return ConstantNode.forBoolean(c.isNonNull() && type.isInstance(c));
                 }
-                InstanceOfNode instanceOf = InstanceOfNode.create(type, object, null);
-                return ConditionalNode.create(instanceOf, ConstantNode.forBoolean(true), ConstantNode.forBoolean(false));
+                InstanceOfNode instanceOf = new InstanceOfNode(type, object, null);
+                return new ConditionalNode(instanceOf, ConstantNode.forBoolean(true), ConstantNode.forBoolean(false));
             }
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 @NodeInfo
 public class ClassIsInterfaceNode extends MacroNode implements Canonicalizable {
 
-    public static ClassIsInterfaceNode create(Invoke invoke) {
-        return new ClassIsInterfaceNode(invoke);
-    }
-
-    protected ClassIsInterfaceNode(Invoke invoke) {
+    public ClassIsInterfaceNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 @NodeInfo
 public class ClassIsPrimitiveNode extends MacroNode implements Canonicalizable {
 
-    public static ClassIsPrimitiveNode create(Invoke invoke) {
-        return new ClassIsPrimitiveNode(invoke);
-    }
-
-    protected ClassIsPrimitiveNode(Invoke invoke) {
+    public ClassIsPrimitiveNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,11 +50,7 @@
     protected final CompressionOp op;
     protected final CompressEncoding encoding;
 
-    public static CompressionNode create(CompressionOp op, ValueNode input, CompressEncoding encoding) {
-        return new CompressionNode(op, input, encoding);
-    }
-
-    protected CompressionNode(CompressionOp op, ValueNode input, CompressEncoding encoding) {
+    public CompressionNode(CompressionOp op, ValueNode input, CompressEncoding encoding) {
         super(mkStamp(op, input.stamp(), encoding), input);
         this.op = op;
         this.encoding = encoding;
@@ -66,11 +62,11 @@
     }
 
     public static CompressionNode compress(ValueNode input, CompressEncoding encoding) {
-        return input.graph().unique(CompressionNode.create(CompressionOp.Compress, input, encoding));
+        return input.graph().unique(new CompressionNode(CompressionOp.Compress, input, encoding));
     }
 
     public static CompressionNode uncompress(ValueNode input, CompressEncoding encoding) {
-        return input.graph().unique(CompressionNode.create(CompressionOp.Uncompress, input, encoding));
+        return input.graph().unique(new CompressionNode(CompressionOp.Uncompress, input, encoding));
     }
 
     private static Constant compress(Constant c, CompressEncoding encoding) {
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -42,11 +42,7 @@
 
     protected LIRKind wordKind;
 
-    public static CurrentJavaThreadNode create(Kind kind) {
-        return new CurrentJavaThreadNode(kind);
-    }
-
-    protected CurrentJavaThreadNode(Kind kind) {
+    public CurrentJavaThreadNode(Kind kind) {
         super(StampFactory.forKind(kind));
         this.wordKind = LIRKind.value(kind);
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
     protected int lockDepth;
 
-    public static CurrentLockNode create(int lockDepth) {
-        return new CurrentLockNode(lockDepth);
-    }
-
-    protected CurrentLockNode(int lockDepth) {
+    public CurrentLockNode(int lockDepth) {
         super(null);
         this.lockDepth = lockDepth;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -44,11 +44,7 @@
     @Input SaveAllRegistersNode registerSaver;
     protected final ForeignCallsProvider foreignCalls;
 
-    public static DeoptimizationFetchUnrollInfoCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver) {
-        return new DeoptimizationFetchUnrollInfoCallNode(foreignCalls, registerSaver);
-    }
-
-    protected DeoptimizationFetchUnrollInfoCallNode(ForeignCallsProvider foreignCalls, ValueNode registerSaver) {
+    public DeoptimizationFetchUnrollInfoCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver) {
         super(StampFactory.forKind(Kind.fromJavaClass(FETCH_UNROLL_INFO.getResultType())));
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
         this.foreignCalls = foreignCalls;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
     protected final DeoptimizationAction action;
     protected final DeoptimizationReason reason;
 
-    public static DeoptimizeCallerNode create(DeoptimizationAction action, DeoptimizationReason reason) {
-        return new DeoptimizeCallerNode(action, reason);
-    }
-
-    protected DeoptimizeCallerNode(DeoptimizationAction action, DeoptimizationReason reason) {
+    public DeoptimizeCallerNode(DeoptimizationAction action, DeoptimizationReason reason) {
         super(StampFactory.forVoid());
         this.action = action;
         this.reason = reason;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java	Mon Jan 12 21:24:26 2015 +0100
@@ -29,11 +29,7 @@
 @NodeInfo
 public class DeoptimizingStubCall extends DeoptimizingFixedWithNextNode {
 
-    public static DeoptimizingStubCall create(Stamp stamp) {
-        return new DeoptimizingStubCall(stamp);
-    }
-
-    protected DeoptimizingStubCall(Stamp stamp) {
+    public DeoptimizingStubCall(Stamp stamp) {
         super(stamp);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -43,11 +43,7 @@
 
     protected final int rank;
 
-    public static DimensionsNode create(int rank) {
-        return new DimensionsNode(rank);
-    }
-
-    protected DimensionsNode(int rank) {
+    public DimensionsNode(int rank) {
         super(null);
         this.rank = rank;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -47,11 +47,7 @@
 
     protected final LocationIdentity locationIdentity;
 
-    public static DirectCompareAndSwapNode create(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) {
-        return new DirectCompareAndSwapNode(object, offset, expected, newValue, locationIdentity);
-    }
-
-    protected DirectCompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) {
+    public DirectCompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, LocationIdentity locationIdentity) {
         super(expected.stamp());
         this.object = object;
         this.offset = offset;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public class EndLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorExit, MemoryCheckpoint.Single {
 
-    public static EndLockScopeNode create() {
-        return new EndLockScopeNode();
-    }
-
-    protected EndLockScopeNode() {
+    public EndLockScopeNode() {
         super(StampFactory.forVoid());
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -43,11 +43,7 @@
     @Input ValueNode senderFp;
     @Input SaveAllRegistersNode registerSaver;
 
-    public static EnterUnpackFramesStackFrameNode create(ValueNode framePc, ValueNode senderSp, ValueNode senderFp, ValueNode registerSaver) {
-        return new EnterUnpackFramesStackFrameNode(framePc, senderSp, senderFp, registerSaver);
-    }
-
-    protected EnterUnpackFramesStackFrameNode(ValueNode framePc, ValueNode senderSp, ValueNode senderFp, ValueNode registerSaver) {
+    public EnterUnpackFramesStackFrameNode(ValueNode framePc, ValueNode senderSp, ValueNode senderFp, ValueNode registerSaver) {
         super(StampFactory.forVoid());
         this.framePc = framePc;
         this.senderSp = senderSp;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -28,11 +28,8 @@
 @NodeInfo
 public class G1ArrayRangePostWriteBarrier extends ArrayRangeWriteBarrier {
 
-    public static G1ArrayRangePostWriteBarrier create(ValueNode object, ValueNode startIndex, ValueNode length) {
-        return new G1ArrayRangePostWriteBarrier(object, startIndex, length);
+    public G1ArrayRangePostWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
+        super(object, startIndex, length);
     }
 
-    protected G1ArrayRangePostWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
-        super(object, startIndex, length);
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -28,11 +28,8 @@
 @NodeInfo
 public class G1ArrayRangePreWriteBarrier extends ArrayRangeWriteBarrier {
 
-    public static G1ArrayRangePreWriteBarrier create(ValueNode object, ValueNode startIndex, ValueNode length) {
-        return new G1ArrayRangePreWriteBarrier(object, startIndex, length);
+    public G1ArrayRangePreWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
+        super(object, startIndex, length);
     }
 
-    protected G1ArrayRangePreWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
-        super(object, startIndex, length);
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 
     protected final boolean alwaysNull;
 
-    public static G1PostWriteBarrier create(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
-        return new G1PostWriteBarrier(object, value, location, precise, alwaysNull);
-    }
-
-    protected G1PostWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
+    public G1PostWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
         super(object, value, location, precise);
         this.alwaysNull = alwaysNull;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
     protected final boolean nullCheck;
     protected final boolean doLoad;
 
-    public static G1PreWriteBarrier create(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) {
-        return new G1PreWriteBarrier(object, expectedObject, location, doLoad, nullCheck);
-    }
-
-    protected G1PreWriteBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) {
+    public G1PreWriteBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad, boolean nullCheck) {
         super(object, expectedObject, location, true);
         this.doLoad = doLoad;
         this.nullCheck = nullCheck;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,11 +37,7 @@
 
     protected final boolean doLoad;
 
-    public static G1ReferentFieldReadBarrier create(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) {
-        return new G1ReferentFieldReadBarrier(object, expectedObject, location, doLoad);
-    }
-
-    protected G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) {
+    public G1ReferentFieldReadBarrier(ValueNode object, ValueNode expectedObject, LocationNode location, boolean doLoad) {
         super(object, expectedObject, location, true);
         this.doLoad = doLoad;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
     @Input ValueNode object;
 
-    public static GetObjectAddressNode create(ValueNode obj) {
-        return new GetObjectAddressNode(obj);
-    }
-
-    protected GetObjectAddressNode(ValueNode obj) {
+    public GetObjectAddressNode(ValueNode obj) {
         super(StampFactory.forKind(Kind.Long));
         this.object = obj;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,8 @@
 
 @NodeInfo
 public class HotSpotDirectCallTargetNode extends DirectCallTargetNode {
-    public static HotSpotDirectCallTargetNode create(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) {
-        return new HotSpotDirectCallTargetNode(arguments, returnStamp, signature, target, callType, invokeKind);
+    public HotSpotDirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) {
+        super(arguments, returnStamp, signature, target, callType, invokeKind);
     }
 
-    protected HotSpotDirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) {
-        super(arguments, returnStamp, signature, target, callType, invokeKind);
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,12 +35,7 @@
 
     @Input ValueNode metaspaceMethod;
 
-    public static HotSpotIndirectCallTargetNode create(ValueNode metaspaceMethod, ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature,
-                    ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) {
-        return new HotSpotIndirectCallTargetNode(metaspaceMethod, computedAddress, arguments, returnStamp, signature, target, callType, invokeKind);
-    }
-
-    protected HotSpotIndirectCallTargetNode(ValueNode metaspaceMethod, ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target,
+    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);
         this.metaspaceMethod = metaspaceMethod;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -40,11 +40,7 @@
     @Input ValueNode exception;
     @Input ValueNode exceptionPc;
 
-    public static JumpToExceptionHandlerInCallerNode create(ValueNode handlerInCallerPc, ValueNode exception, ValueNode exceptionPc) {
-        return new JumpToExceptionHandlerInCallerNode(handlerInCallerPc, exception, exceptionPc);
-    }
-
-    protected JumpToExceptionHandlerInCallerNode(ValueNode handlerInCallerPc, ValueNode exception, ValueNode exceptionPc) {
+    public JumpToExceptionHandlerInCallerNode(ValueNode handlerInCallerPc, ValueNode exception, ValueNode exceptionPc) {
         super(StampFactory.forVoid());
         this.handlerInCallerPc = handlerInCallerPc;
         this.exception = exception;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
     @Input SaveAllRegistersNode registerSaver;
 
-    public static LeaveCurrentStackFrameNode create(ValueNode registerSaver) {
-        return new LeaveCurrentStackFrameNode(registerSaver);
-    }
-
-    protected LeaveCurrentStackFrameNode(ValueNode registerSaver) {
+    public LeaveCurrentStackFrameNode(ValueNode registerSaver) {
         super(StampFactory.forVoid());
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -41,11 +41,7 @@
     @Input ValueNode frameSize;
     @Input ValueNode initialInfo;
 
-    public static LeaveDeoptimizedStackFrameNode create(ValueNode frameSize, ValueNode initialInfo) {
-        return new LeaveDeoptimizedStackFrameNode(frameSize, initialInfo);
-    }
-
-    protected LeaveDeoptimizedStackFrameNode(ValueNode frameSize, ValueNode initialInfo) {
+    public LeaveDeoptimizedStackFrameNode(ValueNode frameSize, ValueNode initialInfo) {
         super(StampFactory.forVoid());
         this.frameSize = frameSize;
         this.initialInfo = initialInfo;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
     @Input SaveAllRegistersNode registerSaver;
 
-    public static LeaveUnpackFramesStackFrameNode create(ValueNode registerSaver) {
-        return new LeaveUnpackFramesStackFrameNode(registerSaver);
-    }
-
-    protected LeaveUnpackFramesStackFrameNode(ValueNode registerSaver) {
+    public LeaveUnpackFramesStackFrameNode(ValueNode registerSaver) {
         super(StampFactory.forVoid());
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 @NodeInfo
 public class LoadIndexedPointerNode extends LoadIndexedNode {
 
-    public static LoadIndexedPointerNode create(Stamp stamp, ValueNode array, ValueNode index) {
-        return new LoadIndexedPointerNode(stamp, array, index);
-    }
-
-    protected LoadIndexedPointerNode(Stamp stamp, ValueNode array, ValueNode index) {
+    public LoadIndexedPointerNode(Stamp stamp, ValueNode array, ValueNode index) {
         super(stamp, array, index, Kind.Illegal);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,11 +37,7 @@
 @NodeInfo
 public class MonitorCounterNode extends FloatingNode implements LIRLowerable {
 
-    public static MonitorCounterNode create() {
-        return new MonitorCounterNode();
-    }
-
-    protected MonitorCounterNode() {
+    public MonitorCounterNode() {
         super(null);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java	Mon Jan 12 21:24:26 2015 +0100
@@ -45,11 +45,7 @@
     @Input ValueNode hub;
     @Input ValueNode length;
 
-    public static NewArrayStubCall create(ValueNode hub, ValueNode length) {
-        return new NewArrayStubCall(hub, length);
-    }
-
-    protected NewArrayStubCall(ValueNode hub, ValueNode length) {
+    public NewArrayStubCall(ValueNode hub, ValueNode length) {
         super(defaultStamp);
         this.hub = hub;
         this.length = length;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java	Mon Jan 12 21:24:26 2015 +0100
@@ -44,11 +44,7 @@
 
     @Input ValueNode hub;
 
-    public static NewInstanceStubCall create(ValueNode hub) {
-        return new NewInstanceStubCall(hub);
-    }
-
-    protected NewInstanceStubCall(ValueNode hub) {
+    public NewInstanceStubCall(ValueNode hub) {
         super(defaultStamp);
         this.hub = hub;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java	Mon Jan 12 21:24:26 2015 +0100
@@ -46,11 +46,7 @@
     @Input ValueNode dims;
     protected final int rank;
 
-    public static NewMultiArrayStubCall create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode hub, int rank, ValueNode dims) {
-        return new NewMultiArrayStubCall(foreignCalls, hub, rank, dims);
-    }
-
-    protected NewMultiArrayStubCall(ForeignCallsProvider foreignCalls, ValueNode hub, int rank, ValueNode dims) {
+    public NewMultiArrayStubCall(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode hub, int rank, ValueNode dims) {
         super(foreignCalls, NEW_MULTI_ARRAY, defaultStamp);
         this.hub = hub;
         this.rank = rank;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,11 +37,7 @@
 
     @Input ValueNode address;
 
-    public static PatchReturnAddressNode create(ValueNode address) {
-        return new PatchReturnAddressNode(address);
-    }
-
-    protected PatchReturnAddressNode(ValueNode address) {
+    public PatchReturnAddressNode(ValueNode address) {
         super(StampFactory.forVoid());
         this.address = address;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
     @Input ValueNode distance;
     @Input ValueNode address;
 
-    public static PrefetchAllocateNode create(ValueNode address, ValueNode distance) {
-        return new PrefetchAllocateNode(address, distance);
-    }
-
-    protected PrefetchAllocateNode(ValueNode address, ValueNode distance) {
+    public PrefetchAllocateNode(ValueNode address, ValueNode distance) {
         super(StampFactory.forVoid());
         this.address = address;
         this.distance = distance;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -41,11 +41,7 @@
     @Input ValueNode senderSp;
     @Input ValueNode initialInfo;
 
-    public static PushInterpreterFrameNode create(ValueNode frameSize, ValueNode framePc, ValueNode senderSp, ValueNode initialInfo) {
-        return new PushInterpreterFrameNode(frameSize, framePc, senderSp, initialInfo);
-    }
-
-    protected PushInterpreterFrameNode(ValueNode frameSize, ValueNode framePc, ValueNode senderSp, ValueNode initialInfo) {
+    public PushInterpreterFrameNode(ValueNode frameSize, ValueNode framePc, ValueNode senderSp, ValueNode initialInfo) {
         super(StampFactory.forVoid());
         this.frameSize = frameSize;
         this.framePc = framePc;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
 
     protected SaveRegistersOp saveRegistersOp;
 
-    public static SaveAllRegistersNode create() {
-        return new SaveAllRegistersNode();
-    }
-
-    protected SaveAllRegistersNode() {
+    public SaveAllRegistersNode() {
         super(StampFactory.forKind(Kind.Long));
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -28,11 +28,8 @@
 @NodeInfo
 public class SerialArrayRangeWriteBarrier extends ArrayRangeWriteBarrier {
 
-    public static SerialArrayRangeWriteBarrier create(ValueNode object, ValueNode startIndex, ValueNode length) {
-        return new SerialArrayRangeWriteBarrier(object, startIndex, length);
+    public SerialArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
+        super(object, startIndex, length);
     }
 
-    protected SerialArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
-        super(object, startIndex, length);
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 
     protected final boolean alwaysNull;
 
-    public static SerialWriteBarrier create(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
-        return new SerialWriteBarrier(object, location, precise, alwaysNull);
-    }
-
-    protected SerialWriteBarrier(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
+    public SerialWriteBarrier(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
         super(object, null, location, precise);
         this.alwaysNull = alwaysNull;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Value, InputType.Anchor, InputType.Guard})
 public class SnippetAnchorNode extends FixedWithNextNode implements Simplifiable, GuardingNode {
 
-    public static SnippetAnchorNode create() {
-        return new SnippetAnchorNode();
-    }
-
-    protected SnippetAnchorNode() {
+    public SnippetAnchorNode() {
         super(StampFactory.object());
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
 
     @Input(InputType.Unchecked) ValueNode location;
 
-    public static SnippetLocationProxyNode create(ValueNode location) {
-        return new SnippetLocationProxyNode(location);
-    }
-
-    protected SnippetLocationProxyNode(ValueNode location) {
+    public SnippetLocationProxyNode(ValueNode location) {
         super(StampFactory.object());
         this.location = location;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -45,11 +45,7 @@
 
     protected final ForeignCallDescriptor descriptor;
 
-    public static StubForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) {
-        return new StubForeignCallNode(foreignCalls, descriptor, arguments);
-    }
-
-    protected StubForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) {
+    public StubForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) {
         super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType())));
         this.arguments = new NodeInputList<>(this, arguments);
         this.descriptor = descriptor;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,11 +34,7 @@
 
     protected final Stub stub;
 
-    public static StubStartNode create(Stub stub) {
-        return new StubStartNode(stub);
-    }
-
-    protected StubStartNode(Stub stub) {
+    public StubStartNode(Stub stub) {
         this.stub = stub;
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/TailcallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -46,17 +46,7 @@
     @Input(InputType.State) FrameState frameState;
     @Input ValueNode target;
 
-    /**
-     * Creates a TailcallNode.
-     *
-     * @param target points to the start of an nmethod
-     * @param frameState the parameters will be taken from this FrameState
-     */
-    public static TailcallNode create(ValueNode target, FrameState frameState) {
-        return new TailcallNode(target, frameState);
-    }
-
-    protected TailcallNode(ValueNode target, FrameState frameState) {
+    public TailcallNode(ValueNode target, FrameState frameState) {
         super(StampFactory.forVoid());
         this.target = target;
         this.frameState = frameState;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -45,11 +45,7 @@
     @Input SaveAllRegistersNode registerSaver;
     protected final ForeignCallsProvider foreignCalls;
 
-    public static UncommonTrapCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) {
-        return new UncommonTrapCallNode(foreignCalls, registerSaver, trapRequest);
-    }
-
-    protected UncommonTrapCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) {
+    public UncommonTrapCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ValueNode registerSaver, ValueNode trapRequest) {
         super(StampFactory.forKind(Kind.fromJavaClass(UNCOMMON_TRAP.getResultType())));
         this.trapRequest = trapRequest;
         this.registerSaver = (SaveAllRegistersNode) registerSaver;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -43,11 +43,7 @@
     protected final String format;
     @Input ValueNode value;
 
-    public static VMErrorNode create(String format, ValueNode value) {
-        return new VMErrorNode(format, value);
-    }
-
-    protected VMErrorNode(String format, ValueNode value) {
+    public VMErrorNode(String format, ValueNode value) {
         super(StampFactory.forVoid());
         this.format = format;
         this.value = value;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/LoadJavaMirrorWithKlassPhase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -70,7 +70,7 @@
                 Constant klass;
                 LocationNode location;
                 if (type instanceof HotSpotResolvedObjectType) {
-                    location = ConstantLocationNode.create(CLASS_MIRROR_LOCATION, classMirrorOffset, graph);
+                    location = graph.unique(new ConstantLocationNode(CLASS_MIRROR_LOCATION, classMirrorOffset));
                     klass = ((HotSpotResolvedObjectType) type).klass();
                 } else {
                     /*
@@ -91,12 +91,12 @@
                     if (typeField == null) {
                         throw new GraalInternalError("Can't find TYPE field in class");
                     }
-                    location = ConstantLocationNode.create(FINAL_LOCATION, typeField.offset(), graph);
+                    location = graph.unique(new ConstantLocationNode(FINAL_LOCATION, typeField.offset()));
                 }
                 ConstantNode klassNode = ConstantNode.forConstant(KlassPointerStamp.klassNonNull(), klass, metaAccess, graph);
 
                 Stamp stamp = StampFactory.exactNonNull(metaAccess.lookupJavaType(Class.class));
-                FloatingReadNode freadNode = graph.unique(FloatingReadNode.create(klassNode, location, null, stamp));
+                FloatingReadNode freadNode = graph.unique(new FloatingReadNode(klassNode, location, null, stamp));
 
                 if (((HotSpotObjectConstant) constant).isCompressed()) {
                     return CompressionNode.compress(freadNode, oopEncoding);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -86,7 +86,7 @@
 
         FrameState osrState = osr.stateAfter();
         osr.setStateAfter(null);
-        OSRStartNode osrStart = graph.add(OSRStartNode.create());
+        OSRStartNode osrStart = graph.add(new OSRStartNode());
         StartNode start = graph.start();
         FixedNode next = osr.next();
         osr.setNext(null);
@@ -102,7 +102,7 @@
                  * we need to drop the stamp since the types we see during OSR may be too precise
                  * (if a branch was not parsed for example).
                  */
-                proxy.replaceAndDelete(graph.unique(OSRLocalNode.create(i, proxy.stamp().unrestricted())));
+                proxy.replaceAndDelete(graph.unique(new OSRLocalNode(i, proxy.stamp().unrestricted())));
             } else {
                 assert value == null || value instanceof OSRLocalNode;
             }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/WriteBarrierAdditionPhase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -65,7 +65,7 @@
     private void addReadNodeBarriers(ReadNode node, StructuredGraph graph) {
         if (node.getBarrierType() == BarrierType.PRECISE) {
             assert config.useG1GC;
-            G1ReferentFieldReadBarrier barrier = graph.add(G1ReferentFieldReadBarrier.create(node.object(), node, node.location(), false));
+            G1ReferentFieldReadBarrier barrier = graph.add(new G1ReferentFieldReadBarrier(node.object(), node, node.location(), false));
             graph.addAfterFixed(node, barrier);
         } else {
             assert node.getBarrierType() == BarrierType.NONE : "Non precise read barrier has been attached to read node.";
@@ -73,7 +73,7 @@
     }
 
     protected static void addG1PreWriteBarrier(FixedAccessNode node, ValueNode object, ValueNode value, LocationNode location, boolean doLoad, boolean nullCheck, StructuredGraph graph) {
-        G1PreWriteBarrier preBarrier = graph.add(G1PreWriteBarrier.create(object, value, location, doLoad, nullCheck));
+        G1PreWriteBarrier preBarrier = graph.add(new G1PreWriteBarrier(object, value, location, doLoad, nullCheck));
         preBarrier.setStateBefore(node.stateBefore());
         node.setNullCheck(false);
         node.setStateBefore(null);
@@ -82,13 +82,13 @@
 
     protected void addG1PostWriteBarrier(FixedAccessNode node, ValueNode object, ValueNode value, LocationNode location, boolean precise, StructuredGraph graph) {
         final boolean alwaysNull = StampTool.isPointerAlwaysNull(value);
-        graph.addAfterFixed(node, graph.add(G1PostWriteBarrier.create(object, value, location, precise, alwaysNull)));
+        graph.addAfterFixed(node, graph.add(new G1PostWriteBarrier(object, value, location, precise, alwaysNull)));
     }
 
     protected void addSerialPostWriteBarrier(FixedAccessNode node, ValueNode object, ValueNode value, LocationNode location, boolean precise, StructuredGraph graph) {
         final boolean alwaysNull = StampTool.isPointerAlwaysNull(value);
         final LocationNode loc = (precise ? location : null);
-        graph.addAfterFixed(node, graph.add(SerialWriteBarrier.create(object, loc, precise, alwaysNull)));
+        graph.addAfterFixed(node, graph.add(new SerialWriteBarrier(object, loc, precise, alwaysNull)));
     }
 
     private void addWriteNodeBarriers(WriteNode node, StructuredGraph graph) {
@@ -159,13 +159,13 @@
     private void addArrayRangeBarriers(ArrayRangeWriteNode node, StructuredGraph graph) {
         if (config.useG1GC) {
             if (!node.isInitialization()) {
-                G1ArrayRangePreWriteBarrier g1ArrayRangePreWriteBarrier = graph.add(G1ArrayRangePreWriteBarrier.create(node.getArray(), node.getIndex(), node.getLength()));
+                G1ArrayRangePreWriteBarrier g1ArrayRangePreWriteBarrier = graph.add(new G1ArrayRangePreWriteBarrier(node.getArray(), node.getIndex(), node.getLength()));
                 graph.addBeforeFixed(node, g1ArrayRangePreWriteBarrier);
             }
-            G1ArrayRangePostWriteBarrier g1ArrayRangePostWriteBarrier = graph.add(G1ArrayRangePostWriteBarrier.create(node.getArray(), node.getIndex(), node.getLength()));
+            G1ArrayRangePostWriteBarrier g1ArrayRangePostWriteBarrier = graph.add(new G1ArrayRangePostWriteBarrier(node.getArray(), node.getIndex(), node.getLength()));
             graph.addAfterFixed(node, g1ArrayRangePostWriteBarrier);
         } else {
-            SerialArrayRangeWriteBarrier serialArrayRangeWriteBarrier = graph.add(SerialArrayRangeWriteBarrier.create(node.getArray(), node.getIndex(), node.getLength()));
+            SerialArrayRangeWriteBarrier serialArrayRangeWriteBarrier = graph.add(new SerialArrayRangeWriteBarrier(node.getArray(), node.getIndex(), node.getLength()));
             graph.addAfterFixed(node, serialArrayRangeWriteBarrier);
         }
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
 @NodeInfo
 public class CallSiteTargetNode extends MacroStateSplitNode implements Canonicalizable, Lowerable {
 
-    public static CallSiteTargetNode create(Invoke invoke) {
-        return new CallSiteTargetNode(invoke);
-    }
-
-    protected CallSiteTargetNode(Invoke invoke) {
+    public CallSiteTargetNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 @NodeInfo
 public class CardTableAddressNode extends FloatingNode implements LIRLowerable {
 
-    public static CardTableAddressNode create() {
-        return new CardTableAddressNode();
-    }
-
-    protected CardTableAddressNode() {
+    public CardTableAddressNode() {
         super(StampFactory.forKind(Kind.Long));
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 @NodeInfo
 public class CardTableShiftNode extends FloatingNode implements LIRLowerable {
 
-    public static CardTableShiftNode create() {
-        return new CardTableShiftNode();
-    }
-
-    protected CardTableShiftNode() {
+    public CardTableShiftNode() {
         super(StampFactory.intValue());
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -45,15 +45,11 @@
 public class ClassGetHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode {
     @Input protected ValueNode clazz;
 
-    public static ClassGetHubNode create(ValueNode clazz) {
-        return new ClassGetHubNode(clazz, null);
+    public ClassGetHubNode(ValueNode clazz) {
+        this(clazz, null);
     }
 
-    public static ClassGetHubNode create(ValueNode clazz, ValueNode guard) {
-        return new ClassGetHubNode(clazz, guard);
-    }
-
-    protected ClassGetHubNode(ValueNode clazz, ValueNode guard) {
+    public ClassGetHubNode(ValueNode clazz, ValueNode guard) {
         super(KlassPointerStamp.klass(), (GuardingNode) guard);
         this.clazz = clazz;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java	Mon Jan 12 21:24:26 2015 +0100
@@ -47,11 +47,7 @@
     @NodeInfo
     public static class CompositeValueClassGetNode extends PureFunctionMacroNode {
 
-        public static CompositeValueClassGetNode create(Invoke invoke) {
-            return new CompositeValueClassGetNode(invoke);
-        }
-
-        protected CompositeValueClassGetNode(Invoke invoke) {
+        public CompositeValueClassGetNode(Invoke invoke) {
             super(invoke);
         }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Mon Jan 12 21:24:26 2015 +0100
@@ -47,11 +47,7 @@
     @NodeInfo
     public static class NodeClassGetNode extends PureFunctionMacroNode {
 
-        public static NodeClassGetNode create(Invoke invoke) {
-            return new NodeClassGetNode(invoke);
-        }
-
-        protected NodeClassGetNode(Invoke invoke) {
+        public NodeClassGetNode(Invoke invoke) {
             super(invoke);
         }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -41,11 +41,7 @@
 public class HubGetClassNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode {
     @Input protected ValueNode hub;
 
-    public static HubGetClassNode create(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode hub) {
-        return new HubGetClassNode(hub, metaAccess);
-    }
-
-    protected HubGetClassNode(ValueNode hub, MetaAccessProvider metaAccess) {
+    protected HubGetClassNode(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode hub) {
         super(StampFactory.declaredNonNull(metaAccess.lookupJavaType(Class.class)), null);
         this.hub = hub;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -43,15 +43,11 @@
     @Input protected ValueNode klass;
     protected final HotSpotVMConfig config;
 
-    public static KlassLayoutHelperNode create(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass) {
-        return new KlassLayoutHelperNode(config, klass, null);
+    public KlassLayoutHelperNode(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass) {
+        this(config, klass, null);
     }
 
-    public static KlassLayoutHelperNode create(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass, ValueNode guard) {
-        return new KlassLayoutHelperNode(config, klass, guard);
-    }
-
-    protected KlassLayoutHelperNode(HotSpotVMConfig config, ValueNode klass, ValueNode guard) {
+    public KlassLayoutHelperNode(@InjectedNodeParameter HotSpotVMConfig config, ValueNode klass, ValueNode guard) {
         super(StampFactory.forKind(Kind.Int), (GuardingNode) guard);
         this.klass = klass;
         this.config = config;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java	Mon Jan 12 21:24:26 2015 +0100
@@ -78,9 +78,9 @@
         public void lower(LoadExceptionObjectNode loadExceptionObject, HotSpotRegistersProvider registers, LoweringTool tool) {
             if (USE_C_RUNTIME) {
                 StructuredGraph graph = loadExceptionObject.graph();
-                ReadRegisterNode thread = graph.add(ReadRegisterNode.create(registers.getThreadRegister(), true, false));
+                ReadRegisterNode thread = graph.add(new ReadRegisterNode(registers.getThreadRegister(), true, false));
                 graph.addBeforeFixed(loadExceptionObject, thread);
-                ForeignCallNode loadExceptionC = graph.add(ForeignCallNode.create(providers.getForeignCalls(), LOAD_AND_CLEAR_EXCEPTION, thread));
+                ForeignCallNode loadExceptionC = graph.add(new ForeignCallNode(providers.getForeignCalls(), LOAD_AND_CLEAR_EXCEPTION, thread));
                 loadExceptionC.setStateAfter(loadExceptionObject.stateAfter());
                 graph.replaceFixedWithFixed(loadExceptionObject, loadExceptionC);
             } else {
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,15 +50,9 @@
     protected JavaType replacementReturnType;
     @Input NodeInputList replacementArguments;
 
-    public static MethodHandleNode create(Invoke invoke) {
-        return new MethodHandleNode(invoke);
-    }
-
-    protected MethodHandleNode(Invoke invoke) {
+    public MethodHandleNode(Invoke invoke) {
         super(invoke);
-
         MethodCallTargetNode callTarget = (MethodCallTargetNode) invoke.callTarget();
-
         // See if we need to save some replacement method data.
         if (callTarget instanceof SelfReplacingMethodCallTargetNode) {
             SelfReplacingMethodCallTargetNode selfReplacingMethodCallTargetNode = (SelfReplacingMethodCallTargetNode) callTarget;
@@ -221,7 +215,7 @@
                 ValueNode argument = arguments.get(index);
                 ResolvedJavaType argumentType = StampTool.typeOrNull(argument.stamp());
                 if (argumentType == null || (argumentType.isAssignableFrom(targetType) && !argumentType.equals(targetType))) {
-                    PiNode piNode = graph().unique(PiNode.create(argument, StampFactory.declared(targetType)));
+                    PiNode piNode = graph().unique(new PiNode(argument, StampFactory.declared(targetType)));
                     arguments.set(index, piNode);
                 }
             }
@@ -260,10 +254,10 @@
         // If there is already replacement information, use that instead.
         MethodCallTargetNode callTarget;
         if (replacementTargetMethod == null) {
-            callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, getTargetMethod(), originalArguments, getReturnType());
+            callTarget = new SelfReplacingMethodCallTargetNode(targetInvokeKind, target, targetArguments, targetReturnType, getTargetMethod(), originalArguments, getReturnType());
         } else {
             ValueNode[] args = replacementArguments.toArray(new ValueNode[replacementArguments.size()]);
-            callTarget = SelfReplacingMethodCallTargetNode.create(targetInvokeKind, target, targetArguments, targetReturnType, replacementTargetMethod, args, replacementReturnType);
+            callTarget = new SelfReplacingMethodCallTargetNode(targetInvokeKind, target, targetArguments, targetReturnType, replacementTargetMethod, args, replacementReturnType);
         }
         graph().add(callTarget);
 
@@ -274,9 +268,9 @@
         // (usually java.lang.Object).
         InvokeNode invoke;
         if (stamp() == StampFactory.forVoid()) {
-            invoke = InvokeNode.create(callTarget, getBci(), stamp());
+            invoke = new InvokeNode(callTarget, getBci(), stamp());
         } else {
-            invoke = InvokeNode.create(callTarget, getBci());
+            invoke = new InvokeNode(callTarget, getBci());
         }
         graph().add(invoke);
         invoke.setStateAfter(stateAfter());
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Mon Jan 12 21:24:26 2015 +0100
@@ -496,8 +496,8 @@
                 if (nodes.isEmpty()) {
                     // Only insert the nodes if this is the first monitorenter being lowered.
                     JavaType returnType = initCounter.getMethod().getSignature().getReturnType(initCounter.getMethod().getDeclaringClass());
-                    MethodCallTargetNode callTarget = graph.add(MethodCallTargetNode.create(InvokeKind.Static, initCounter.getMethod(), new ValueNode[0], returnType));
-                    InvokeNode invoke = graph.add(InvokeNode.create(callTarget, 0));
+                    MethodCallTargetNode callTarget = graph.add(new MethodCallTargetNode(InvokeKind.Static, initCounter.getMethod(), new ValueNode[0], returnType));
+                    InvokeNode invoke = graph.add(new InvokeNode(callTarget, 0));
                     invoke.setStateAfter(graph.start().stateAfter());
                     graph.addAfterFixed(graph.start(), invoke);
 
@@ -509,10 +509,10 @@
                         returnType = checkCounter.getMethod().getSignature().getReturnType(checkCounter.getMethod().getDeclaringClass());
                         String msg = "unbalanced monitors in " + graph.method().format("%H.%n(%p)") + ", count = %d";
                         ConstantNode errMsg = ConstantNode.forConstant(tool.getConstantReflection().forString(msg), providers.getMetaAccess(), graph);
-                        callTarget = graph.add(MethodCallTargetNode.create(InvokeKind.Static, checkCounter.getMethod(), new ValueNode[]{errMsg}, returnType));
-                        invoke = graph.add(InvokeNode.create(callTarget, 0));
+                        callTarget = graph.add(new MethodCallTargetNode(InvokeKind.Static, checkCounter.getMethod(), new ValueNode[]{errMsg}, returnType));
+                        invoke = graph.add(new InvokeNode(callTarget, 0));
                         List stack = Collections.emptyList();
-                        FrameState stateAfter = FrameState.create(graph.method(), BytecodeFrame.AFTER_BCI, new ValueNode[0], stack, new ValueNode[0], new MonitorIdNode[0], false, false);
+                        FrameState stateAfter = new FrameState(graph.method(), BytecodeFrame.AFTER_BCI, new ValueNode[0], stack, new ValueNode[0], new MonitorIdNode[0], false, false);
                         invoke.setStateAfter(graph.add(stateAfter));
                         graph.addBeforeFixed(ret, invoke);
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
 @NodeInfo
 public class ObjectCloneNode extends BasicObjectCloneNode implements VirtualizableAllocation, ArrayLengthProvider {
 
-    public static ObjectCloneNode create(Invoke invoke) {
-        return new ObjectCloneNode(invoke);
-    }
-
-    protected ObjectCloneNode(Invoke invoke) {
+    public ObjectCloneNode(Invoke invoke) {
         super(invoke);
     }
 
@@ -75,16 +71,16 @@
                 type = getConcreteType(getObject().stamp(), tool.assumptions(), tool.getMetaAccess());
                 if (type != null) {
                     StructuredGraph newGraph = new StructuredGraph();
-                    ParameterNode param = newGraph.unique(ParameterNode.create(0, getObject().stamp()));
-                    NewInstanceNode newInstance = newGraph.add(NewInstanceNode.create(type, true));
+                    ParameterNode param = newGraph.unique(new ParameterNode(0, getObject().stamp()));
+                    NewInstanceNode newInstance = newGraph.add(new NewInstanceNode(type, true));
                     newGraph.addAfterFixed(newGraph.start(), newInstance);
-                    ReturnNode returnNode = newGraph.add(ReturnNode.create(newInstance));
+                    ReturnNode returnNode = newGraph.add(new ReturnNode(newInstance));
                     newGraph.addAfterFixed(newInstance, returnNode);
 
                     for (ResolvedJavaField field : type.getInstanceFields(true)) {
-                        LoadFieldNode load = newGraph.add(LoadFieldNode.create(param, field));
+                        LoadFieldNode load = newGraph.add(new LoadFieldNode(param, field));
                         newGraph.addBeforeFixed(returnNode, load);
-                        newGraph.addBeforeFixed(returnNode, newGraph.add(StoreFieldNode.create(newInstance, field, load)));
+                        newGraph.addBeforeFixed(returnNode, newGraph.add(new StoreFieldNode(newInstance, field, load)));
                     }
                     return lowerReplacement(newGraph, tool);
                 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,11 +37,7 @@
 @NodeInfo
 public class ReflectionGetCallerClassNode extends MacroStateSplitNode implements Canonicalizable, Lowerable {
 
-    public static ReflectionGetCallerClassNode create(Invoke invoke) {
-        return new ReflectionGetCallerClassNode(invoke);
-    }
-
-    protected ReflectionGetCallerClassNode(Invoke invoke) {
+    public ReflectionGetCallerClassNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
 @NodeInfo
 public class SystemIdentityHashCodeNode extends PureFunctionMacroNode {
 
-    public static SystemIdentityHashCodeNode create(Invoke invoke) {
-        return new SystemIdentityHashCodeNode(invoke);
-    }
-
-    protected SystemIdentityHashCodeNode(Invoke invoke) {
+    public SystemIdentityHashCodeNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -58,9 +58,14 @@
 
     protected final HotSpotGraalRuntimeProvider runtime;
 
-    public static ArrayCopyCallNode create(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length,
-                    Kind elementKind, boolean aligned, boolean disjoint, boolean uninitialized) {
-        return new ArrayCopyCallNode(src, srcPos, dest, destPos, length, elementKind, aligned, disjoint, uninitialized, runtime);
+    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind,
+                    boolean aligned, boolean disjoint, boolean uninitialized) {
+        this(src, srcPos, dest, destPos, length, elementKind, aligned, disjoint, uninitialized, runtime);
+    }
+
+    public ArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind,
+                    boolean disjoint) {
+        this(src, srcPos, dest, destPos, length, elementKind, false, disjoint, false, runtime);
     }
 
     protected ArrayCopyCallNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind, boolean aligned, boolean disjoint, boolean uninitialized,
@@ -79,11 +84,6 @@
         this.runtime = runtime;
     }
 
-    public static ArrayCopyCallNode create(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length,
-                    Kind elementKind, boolean disjoint) {
-        return new ArrayCopyCallNode(src, srcPos, dest, destPos, length, elementKind, false, disjoint, false, runtime);
-    }
-
     public ValueNode getSource() {
         return src;
     }
@@ -109,10 +109,10 @@
     }
 
     private ValueNode computeBase(ValueNode base, ValueNode pos) {
-        FixedWithNextNode basePtr = graph().add(GetObjectAddressNode.create(base));
+        FixedWithNextNode basePtr = graph().add(new GetObjectAddressNode(base));
         graph().addBeforeFixed(this, basePtr);
-        ValueNode loc = IndexedLocationNode.create(getLocationIdentity(), runtime.getArrayBaseOffset(elementKind), pos, graph(), runtime.getArrayIndexScale(elementKind));
-        return graph().unique(ComputeAddressNode.create(basePtr, loc, StampFactory.forKind(Kind.Long)));
+        ValueNode loc = graph().unique(new IndexedLocationNode(getLocationIdentity(), runtime.getArrayBaseOffset(elementKind), pos, runtime.getArrayIndexScale(elementKind)));
+        return graph().unique(new ComputeAddressNode(basePtr, loc, StampFactory.forKind(Kind.Long)));
     }
 
     @Override
@@ -127,7 +127,7 @@
             if (len.stamp().getStackKind() != Kind.Long) {
                 len = IntegerConvertNode.convert(len, StampFactory.forKind(Kind.Long), graph());
             }
-            ForeignCallNode call = graph.add(ForeignCallNode.create(Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getForeignCalls(), desc, srcAddr, destAddr, len));
+            ForeignCallNode call = graph.add(new ForeignCallNode(Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getForeignCalls(), desc, srcAddr, destAddr, len));
             call.setStateAfter(stateAfter());
             graph.replaceFixedWithFixed(this, call);
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -40,11 +40,7 @@
 @NodeInfo
 public class ArrayCopyNode extends BasicArrayCopyNode implements Virtualizable, Lowerable {
 
-    public static ArrayCopyNode create(Invoke invoke) {
-        return new ArrayCopyNode(invoke);
-    }
-
-    protected ArrayCopyNode(Invoke invoke) {
+    public ArrayCopyNode(Invoke invoke) {
         super(invoke);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -52,13 +52,8 @@
 
     protected final HotSpotGraalRuntimeProvider runtime;
 
-    public static CheckcastArrayCopyCallNode create(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length,
+    protected CheckcastArrayCopyCallNode(@InjectedNodeParameter HotSpotGraalRuntimeProvider runtime, ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length,
                     ValueNode superCheckOffset, ValueNode destElemKlass, boolean uninit) {
-        return new CheckcastArrayCopyCallNode(src, srcPos, dest, destPos, length, superCheckOffset, destElemKlass, uninit, runtime);
-    }
-
-    protected CheckcastArrayCopyCallNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode superCheckOffset, ValueNode destElemKlass, boolean uninit,
-                    HotSpotGraalRuntimeProvider runtime) {
         super(StampFactory.forKind(Kind.Int));
         this.src = src;
         this.srcPos = srcPos;
@@ -96,10 +91,10 @@
     }
 
     private ValueNode computeBase(ValueNode base, ValueNode pos) {
-        FixedWithNextNode basePtr = graph().add(GetObjectAddressNode.create(base));
+        FixedWithNextNode basePtr = graph().add(new GetObjectAddressNode(base));
         graph().addBeforeFixed(this, basePtr);
-        ValueNode loc = IndexedLocationNode.create(getLocationIdentity(), runtime.getArrayBaseOffset(Kind.Object), pos, graph(), runtime.getArrayIndexScale(Kind.Object));
-        return graph().unique(ComputeAddressNode.create(basePtr, loc, StampFactory.forKind(Kind.Long)));
+        ValueNode loc = graph().unique(new IndexedLocationNode(getLocationIdentity(), runtime.getArrayBaseOffset(Kind.Object), pos, runtime.getArrayIndexScale(Kind.Object)));
+        return graph().unique(new ComputeAddressNode(basePtr, loc, StampFactory.forKind(Kind.Long)));
     }
 
     @Override
@@ -113,8 +108,8 @@
             if (len.stamp().getStackKind() != Kind.Long) {
                 len = IntegerConvertNode.convert(len, StampFactory.forKind(Kind.Long), graph());
             }
-            ForeignCallNode call = graph.add(ForeignCallNode.create(Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getForeignCalls(), desc, srcAddr, destAddr, len,
-                            superCheckOffset, destElemKlass));
+            ForeignCallNode call = graph.add(new ForeignCallNode(Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getForeignCalls(), desc, srcAddr, destAddr, len, superCheckOffset,
+                            destElemKlass));
             call.setStateAfter(stateAfter());
             graph.replaceFixedWithFixed(this, call);
         }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -44,11 +44,7 @@
 
     protected Kind elementKind;
 
-    public static UnsafeArrayCopyNode create(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) {
-        return new UnsafeArrayCopyNode(src, srcPos, dest, destPos, length, layoutHelper, elementKind);
-    }
-
-    protected UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) {
+    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) {
         super(StampFactory.forVoid());
         assert layoutHelper == null || elementKind == null;
         this.src = src;
@@ -60,19 +56,11 @@
         this.elementKind = elementKind;
     }
 
-    public static UnsafeArrayCopyNode create(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind) {
-        return new UnsafeArrayCopyNode(src, srcPos, dest, destPos, length, elementKind);
-    }
-
-    protected UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind) {
+    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, Kind elementKind) {
         this(src, srcPos, dest, destPos, length, null, elementKind);
     }
 
-    public static UnsafeArrayCopyNode create(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper) {
-        return new UnsafeArrayCopyNode(src, srcPos, dest, destPos, length, layoutHelper);
-    }
-
-    protected UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper) {
+    public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper) {
         this(src, srcPos, dest, destPos, length, layoutHelper, null);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/ForeignCallStub.java	Mon Jan 12 21:24:26 2015 +0100
@@ -195,14 +195,14 @@
         GraphKit kit = new HotSpotGraphKit(graph, providers);
         ParameterNode[] params = createParameters(kit, args);
 
-        ReadRegisterNode thread = kit.append(ReadRegisterNode.create(providers.getRegisters().getThreadRegister(), true, false));
+        ReadRegisterNode thread = kit.append(new ReadRegisterNode(providers.getRegisters().getThreadRegister(), true, false));
         ValueNode result = createTargetCall(kit, params, thread);
         kit.createInvoke(StubUtil.class, "handlePendingException", thread, ConstantNode.forBoolean(isObjectResult, graph));
         if (isObjectResult) {
             InvokeNode object = kit.createInvoke(HotSpotReplacementsUtil.class, "getAndClearObjectResult", thread);
             result = kit.createInvoke(StubUtil.class, "verifyObject", object);
         }
-        kit.append(ReturnNode.create(linkage.getDescriptor().getResultType() == void.class ? null : result));
+        kit.append(new ReturnNode(linkage.getDescriptor().getResultType() == void.class ? null : result));
 
         if (Debug.isDumpEnabled()) {
             Debug.dump(graph, "Initial stub graph");
@@ -242,7 +242,7 @@
             } else {
                 stamp = StampFactory.forKind(type.getKind());
             }
-            ParameterNode param = kit.unique(ParameterNode.create(i, stamp));
+            ParameterNode param = kit.unique(new ParameterNode(i, stamp));
             params[i] = param;
         }
         return params;
@@ -253,9 +253,9 @@
             ValueNode[] targetArguments = new ValueNode[1 + params.length];
             targetArguments[0] = thread;
             System.arraycopy(params, 0, targetArguments, 1, params.length);
-            return kit.append(StubForeignCallNode.create(providers.getForeignCalls(), target.getDescriptor(), targetArguments));
+            return kit.append(new StubForeignCallNode(providers.getForeignCalls(), target.getDescriptor(), targetArguments));
         } else {
-            return kit.append(StubForeignCallNode.create(providers.getForeignCalls(), target.getDescriptor(), params));
+            return kit.append(new StubForeignCallNode(providers.getForeignCalls(), target.getDescriptor(), params));
         }
     }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/Stub.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/Stub.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/Stub.java	Mon Jan 12 21:24:26 2015 +0100
@@ -148,7 +148,7 @@
             try (Scope d = Debug.sandbox("CompilingStub", DebugScope.getConfig(), providers.getCodeCache(), debugScopeContext())) {
                 final StructuredGraph graph = getGraph();
                 if (!(graph.start() instanceof StubStartNode)) {
-                    StubStartNode newStart = graph.add(StubStartNode.create(Stub.this));
+                    StubStartNode newStart = graph.add(new StubStartNode(Stub.this));
                     newStart.setStateAfter(graph.start().stateAfter());
                     graph.replaceFixed(graph.start(), newStart);
                 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/HotSpotWordTypeRewriterPhase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -80,7 +80,7 @@
             /*
              * Prevent rewriting of the MetaspacePointerStamp in the CanonicalizerPhase.
              */
-            graph.replaceFixedWithFixed(node, graph.add(LoadIndexedPointerNode.create(node.stamp(), node.array(), node.index())));
+            graph.replaceFixedWithFixed(node, graph.add(new LoadIndexedPointerNode(node.stamp(), node.array(), node.index())));
         } else {
             super.rewriteAccessIndexed(graph, node);
         }
@@ -115,17 +115,17 @@
 
                 case FROM_POINTER:
                     assert arguments.size() == 1;
-                    replace(invoke, graph.unique(PointerCastNode.create(StampFactory.forKind(wordKind), arguments.get(0))));
+                    replace(invoke, graph.unique(new PointerCastNode(StampFactory.forKind(wordKind), arguments.get(0))));
                     break;
 
                 case TO_KLASS_POINTER:
                     assert arguments.size() == 1;
-                    replace(invoke, graph.unique(PointerCastNode.create(KlassPointerStamp.klass(), arguments.get(0))));
+                    replace(invoke, graph.unique(new PointerCastNode(KlassPointerStamp.klass(), arguments.get(0))));
                     break;
 
                 case TO_METHOD_POINTER:
                     assert arguments.size() == 1;
-                    replace(invoke, graph.unique(PointerCastNode.create(MethodPointerStamp.method(), arguments.get(0))));
+                    replace(invoke, graph.unique(new PointerCastNode(MethodPointerStamp.method(), arguments.get(0))));
                     break;
 
                 case READ_KLASS_POINTER:
@@ -150,7 +150,7 @@
         assert op == READ_KLASS_POINTER;
         final BarrierType barrier = BarrierType.NONE;
 
-        ReadNode read = graph.add(ReadNode.create(base, location, readStamp, barrier));
+        ReadNode read = graph.add(new ReadNode(base, location, readStamp, barrier));
         graph.addBeforeFixed(invoke.asNode(), read);
         /*
          * The read must not float outside its block otherwise it may float above an explicit zero
@@ -164,16 +164,16 @@
         assert left.stamp() instanceof MetaspacePointerStamp && right.stamp() instanceof MetaspacePointerStamp;
         assert opcode == POINTER_EQ || opcode == POINTER_NE;
 
-        PointerEqualsNode comparison = graph.unique(PointerEqualsNode.create(left, right));
+        PointerEqualsNode comparison = graph.unique(new PointerEqualsNode(left, right));
         ValueNode eqValue = ConstantNode.forBoolean(opcode == POINTER_EQ, graph);
         ValueNode neValue = ConstantNode.forBoolean(opcode == POINTER_NE, graph);
-        return graph.unique(ConditionalNode.create(comparison, eqValue, neValue));
+        return graph.unique(new ConditionalNode(comparison, eqValue, neValue));
     }
 
     private static ValueNode pointerIsNullOp(StructuredGraph graph, ValueNode pointer) {
         assert pointer.stamp() instanceof MetaspacePointerStamp;
 
-        IsNullNode isNull = graph.unique(IsNullNode.create(pointer));
-        return graph.unique(ConditionalNode.create(isNull, ConstantNode.forBoolean(true, graph), ConstantNode.forBoolean(false, graph)));
+        IsNullNode isNull = graph.unique(new IsNullNode(pointer));
+        return graph.unique(new ConditionalNode(isNull, ConstantNode.forBoolean(true, graph), ConstantNode.forBoolean(false, graph)));
     }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,11 +38,7 @@
 
     @Input ValueNode input;
 
-    public static PointerCastNode create(Stamp stamp, ValueNode input) {
-        return new PointerCastNode(stamp, input);
-    }
-
-    protected PointerCastNode(Stamp stamp, ValueNode input) {
+    public PointerCastNode(Stamp stamp, ValueNode input) {
         super(stamp);
         this.input = input;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -263,7 +263,7 @@
             @Override
             protected void handleUnresolvedLoadConstant(JavaType type) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -273,7 +273,7 @@
             @Override
             protected void handleUnresolvedCheckCast(JavaType type, ValueNode object) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(FixedGuardNode.create(currentGraph.unique(IsNullNode.create(object)), Unresolved, InvalidateRecompile));
+                append(new FixedGuardNode(currentGraph.unique(new IsNullNode(object)), Unresolved, InvalidateRecompile));
                 frameState.apush(appendConstant(JavaConstant.NULL_POINTER));
             }
 
@@ -284,9 +284,9 @@
             @Override
             protected void handleUnresolvedInstanceOf(JavaType type, ValueNode object) {
                 assert !graphBuilderConfig.eagerResolving();
-                BeginNode successor = currentGraph.add(BeginNode.create());
-                DeoptimizeNode deopt = currentGraph.add(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
-                append(IfNode.create(currentGraph.unique(IsNullNode.create(object)), successor, deopt, 1));
+                BeginNode successor = currentGraph.add(new BeginNode());
+                DeoptimizeNode deopt = currentGraph.add(new DeoptimizeNode(InvalidateRecompile, Unresolved));
+                append(new IfNode(currentGraph.unique(new IsNullNode(object)), successor, deopt, 1));
                 lastInstr = successor;
                 frameState.ipush(appendConstant(JavaConstant.INT_0));
             }
@@ -297,7 +297,7 @@
             @Override
             protected void handleUnresolvedNewInstance(JavaType type) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -307,7 +307,7 @@
             @Override
             protected void handleUnresolvedNewObjectArray(JavaType type, ValueNode length) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -317,7 +317,7 @@
             @Override
             protected void handleUnresolvedNewMultiArray(JavaType type, List dims) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -328,7 +328,7 @@
             @Override
             protected void handleUnresolvedLoadField(JavaField field, ValueNode receiver) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -340,7 +340,7 @@
             @Override
             protected void handleUnresolvedStoreField(JavaField field, ValueNode value, ValueNode receiver) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -349,7 +349,7 @@
             @Override
             protected void handleUnresolvedExceptionType(JavaType type) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             /**
@@ -358,7 +358,7 @@
              */
             protected void handleUnresolvedInvoke(JavaMethod javaMethod, InvokeKind invokeKind) {
                 assert !graphBuilderConfig.eagerResolving();
-                append(DeoptimizeNode.create(InvalidateRecompile, Unresolved));
+                append(new DeoptimizeNode(InvalidateRecompile, Unresolved));
             }
 
             private DispatchBeginNode handleException(ValueNode exceptionObject, int bci) {
@@ -380,12 +380,12 @@
 
                 DispatchBeginNode dispatchBegin;
                 if (exceptionObject == null) {
-                    dispatchBegin = currentGraph.add(ExceptionObjectNode.create(metaAccess));
+                    dispatchBegin = currentGraph.add(new ExceptionObjectNode(metaAccess));
                     dispatchState.apush(dispatchBegin);
                     dispatchState.setRethrowException(true);
                     dispatchBegin.setStateAfter(dispatchState.create(bci));
                 } else {
-                    dispatchBegin = currentGraph.add(DispatchBeginNode.create());
+                    dispatchBegin = currentGraph.add(new DispatchBeginNode());
                     dispatchState.apush(exceptionObject);
                     dispatchBegin.setStateAfter(dispatchState.create(bci));
                     dispatchState.setRethrowException(true);
@@ -398,122 +398,122 @@
 
             @Override
             protected ValueNode genLoadIndexed(ValueNode array, ValueNode index, Kind kind) {
-                return LoadIndexedNode.create(array, index, kind);
+                return new LoadIndexedNode(array, index, kind);
             }
 
             @Override
             protected ValueNode genStoreIndexed(ValueNode array, ValueNode index, Kind kind, ValueNode value) {
-                return StoreIndexedNode.create(array, index, kind, value);
+                return new StoreIndexedNode(array, index, kind, value);
             }
 
             @Override
             protected ValueNode genIntegerAdd(Kind kind, ValueNode x, ValueNode y) {
-                return AddNode.create(x, y);
+                return new AddNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerSub(Kind kind, ValueNode x, ValueNode y) {
-                return SubNode.create(x, y);
+                return new SubNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerMul(Kind kind, ValueNode x, ValueNode y) {
-                return MulNode.create(x, y);
+                return new MulNode(x, y);
             }
 
             @Override
             protected ValueNode genFloatAdd(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) {
-                return AddNode.create(x, y);
+                return new AddNode(x, y);
             }
 
             @Override
             protected ValueNode genFloatSub(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) {
-                return SubNode.create(x, y);
+                return new SubNode(x, y);
             }
 
             @Override
             protected ValueNode genFloatMul(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) {
-                return MulNode.create(x, y);
+                return new MulNode(x, y);
             }
 
             @Override
             protected ValueNode genFloatDiv(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) {
-                return DivNode.create(x, y);
+                return new DivNode(x, y);
             }
 
             @Override
             protected ValueNode genFloatRem(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) {
-                return RemNode.create(x, y);
+                return new RemNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerDiv(Kind kind, ValueNode x, ValueNode y) {
-                return IntegerDivNode.create(x, y);
+                return new IntegerDivNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerRem(Kind kind, ValueNode x, ValueNode y) {
-                return IntegerRemNode.create(x, y);
+                return new IntegerRemNode(x, y);
             }
 
             @Override
             protected ValueNode genNegateOp(ValueNode x) {
-                return (NegateNode.create(x));
+                return (new NegateNode(x));
             }
 
             @Override
             protected ValueNode genLeftShift(Kind kind, ValueNode x, ValueNode y) {
-                return LeftShiftNode.create(x, y);
+                return new LeftShiftNode(x, y);
             }
 
             @Override
             protected ValueNode genRightShift(Kind kind, ValueNode x, ValueNode y) {
-                return RightShiftNode.create(x, y);
+                return new RightShiftNode(x, y);
             }
 
             @Override
             protected ValueNode genUnsignedRightShift(Kind kind, ValueNode x, ValueNode y) {
-                return UnsignedRightShiftNode.create(x, y);
+                return new UnsignedRightShiftNode(x, y);
             }
 
             @Override
             protected ValueNode genAnd(Kind kind, ValueNode x, ValueNode y) {
-                return AndNode.create(x, y);
+                return new AndNode(x, y);
             }
 
             @Override
             protected ValueNode genOr(Kind kind, ValueNode x, ValueNode y) {
-                return OrNode.create(x, y);
+                return new OrNode(x, y);
             }
 
             @Override
             protected ValueNode genXor(Kind kind, ValueNode x, ValueNode y) {
-                return XorNode.create(x, y);
+                return new XorNode(x, y);
             }
 
             @Override
             protected ValueNode genNormalizeCompare(ValueNode x, ValueNode y, boolean isUnorderedLess) {
-                return NormalizeCompareNode.create(x, y, isUnorderedLess);
+                return new NormalizeCompareNode(x, y, isUnorderedLess);
             }
 
             @Override
             protected ValueNode genFloatConvert(FloatConvert op, ValueNode input) {
-                return FloatConvertNode.create(op, input);
+                return new FloatConvertNode(op, input);
             }
 
             @Override
             protected ValueNode genNarrow(ValueNode input, int bitCount) {
-                return NarrowNode.create(input, bitCount);
+                return new NarrowNode(input, bitCount);
             }
 
             @Override
             protected ValueNode genSignExtend(ValueNode input, int bitCount) {
-                return SignExtendNode.create(input, bitCount);
+                return new SignExtendNode(input, bitCount);
             }
 
             @Override
             protected ValueNode genZeroExtend(ValueNode input, int bitCount) {
-                return ZeroExtendNode.create(input, bitCount);
+                return new ZeroExtendNode(input, bitCount);
             }
 
             @Override
@@ -524,17 +524,17 @@
 
             @Override
             protected ValueNode genObjectEquals(ValueNode x, ValueNode y) {
-                return ObjectEqualsNode.create(x, y);
+                return new ObjectEqualsNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerEquals(ValueNode x, ValueNode y) {
-                return IntegerEqualsNode.create(x, y);
+                return new IntegerEqualsNode(x, y);
             }
 
             @Override
             protected ValueNode genIntegerLessThan(ValueNode x, ValueNode y) {
-                return IntegerLessThanNode.create(x, y);
+                return new IntegerLessThanNode(x, y);
             }
 
             @Override
@@ -543,49 +543,49 @@
             }
 
             protected ValueNode genIfNode(ValueNode condition, ValueNode falseSuccessor, ValueNode trueSuccessor, double d) {
-                return IfNode.create((LogicNode) condition, (FixedNode) falseSuccessor, (FixedNode) trueSuccessor, d);
+                return new IfNode((LogicNode) condition, (FixedNode) falseSuccessor, (FixedNode) trueSuccessor, d);
             }
 
             @Override
             protected void genThrow() {
                 ValueNode exception = frameState.apop();
-                append(FixedGuardNode.create(currentGraph.unique(IsNullNode.create(exception)), NullCheckException, InvalidateReprofile, true));
+                append(new FixedGuardNode(currentGraph.unique(new IsNullNode(exception)), NullCheckException, InvalidateReprofile, true));
                 lastInstr.setNext(handleException(exception, bci()));
             }
 
             @Override
             protected ValueNode createCheckCast(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck, boolean forStoreCheck) {
-                return CheckCastNode.create(type, object, profileForTypeCheck, forStoreCheck);
+                return new CheckCastNode(type, object, profileForTypeCheck, forStoreCheck);
             }
 
             @Override
             protected ValueNode createInstanceOf(ResolvedJavaType type, ValueNode object, JavaTypeProfile profileForTypeCheck) {
-                return InstanceOfNode.create(type, object, profileForTypeCheck);
+                return new InstanceOfNode(type, object, profileForTypeCheck);
             }
 
             @Override
             protected ValueNode genConditional(ValueNode x) {
-                return ConditionalNode.create((LogicNode) x);
+                return new ConditionalNode((LogicNode) x);
             }
 
             @Override
             protected NewInstanceNode createNewInstance(ResolvedJavaType type, boolean fillContents) {
-                return NewInstanceNode.create(type, fillContents);
+                return new NewInstanceNode(type, fillContents);
             }
 
             @Override
             protected NewArrayNode createNewArray(ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
-                return NewArrayNode.create(elementType, length, fillContents);
+                return new NewArrayNode(elementType, length, fillContents);
             }
 
             @Override
             protected NewMultiArrayNode createNewMultiArray(ResolvedJavaType type, List dimensions) {
-                return NewMultiArrayNode.create(type, dimensions.toArray(new ValueNode[0]));
+                return new NewMultiArrayNode(type, dimensions.toArray(new ValueNode[0]));
             }
 
             @Override
             protected ValueNode genLoadField(ValueNode receiver, ResolvedJavaField field) {
-                return LoadFieldNode.create(receiver, field);
+                return new LoadFieldNode(receiver, field);
             }
 
             @Override
@@ -593,9 +593,9 @@
                 if (StampTool.isPointerNonNull(receiver.stamp())) {
                     return;
                 }
-                BytecodeExceptionNode exception = currentGraph.add(BytecodeExceptionNode.create(metaAccess, NullPointerException.class));
-                BeginNode falseSucc = currentGraph.add(BeginNode.create());
-                append(IfNode.create(currentGraph.unique(IsNullNode.create(receiver)), exception, falseSucc, 0.01));
+                BytecodeExceptionNode exception = currentGraph.add(new BytecodeExceptionNode(metaAccess, NullPointerException.class));
+                BeginNode falseSucc = currentGraph.add(new BeginNode());
+                append(new IfNode(currentGraph.unique(new IsNullNode(receiver)), exception, falseSucc, 0.01));
                 lastInstr = falseSucc;
 
                 exception.setStateAfter(frameState.create(bci()));
@@ -604,9 +604,9 @@
 
             @Override
             protected void emitBoundsCheck(ValueNode index, ValueNode length) {
-                BeginNode trueSucc = currentGraph.add(BeginNode.create());
-                BytecodeExceptionNode exception = currentGraph.add(BytecodeExceptionNode.create(metaAccess, ArrayIndexOutOfBoundsException.class, index));
-                append(IfNode.create(currentGraph.unique(IntegerBelowNode.create(index, length)), trueSucc, exception, 0.99));
+                BeginNode trueSucc = currentGraph.add(new BeginNode());
+                BytecodeExceptionNode exception = currentGraph.add(new BytecodeExceptionNode(metaAccess, ArrayIndexOutOfBoundsException.class, index));
+                append(new IfNode(currentGraph.unique(new IntegerBelowNode(index, length)), trueSucc, exception, 0.99));
                 lastInstr = trueSucc;
 
                 exception.setStateAfter(frameState.create(bci()));
@@ -615,12 +615,12 @@
 
             @Override
             protected ValueNode genArrayLength(ValueNode x) {
-                return ArrayLengthNode.create(x);
+                return new ArrayLengthNode(x);
             }
 
             @Override
             protected ValueNode genStoreField(ValueNode receiver, ResolvedJavaField field, ValueNode value) {
-                return StoreFieldNode.create(receiver, field, value);
+                return new StoreFieldNode(receiver, field, value);
             }
 
             /**
@@ -721,7 +721,7 @@
             private void appendInvoke(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args) {
                 Kind resultType = targetMethod.getSignature().getReturnKind();
                 if (DeoptALot.getValue()) {
-                    append(DeoptimizeNode.create(DeoptimizationAction.None, RuntimeConstraint));
+                    append(new DeoptimizeNode(DeoptimizationAction.None, RuntimeConstraint));
                     frameState.pushReturn(resultType, ConstantNode.defaultForKind(resultType, currentGraph));
                     return;
                 }
@@ -746,25 +746,25 @@
                     createInvoke(callTarget, resultType);
                 } else {
                     InvokeWithExceptionNode invoke = createInvokeWithException(callTarget, resultType);
-                    BeginNode beginNode = currentGraph.add(KillingBeginNode.create(LocationIdentity.ANY_LOCATION));
+                    BeginNode beginNode = currentGraph.add(new KillingBeginNode(LocationIdentity.ANY_LOCATION));
                     invoke.setNext(beginNode);
                     lastInstr = beginNode;
                 }
             }
 
             protected MethodCallTargetNode createMethodCallTarget(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, JavaType returnType) {
-                return MethodCallTargetNode.create(invokeKind, targetMethod, args, returnType);
+                return new MethodCallTargetNode(invokeKind, targetMethod, args, returnType);
             }
 
             protected InvokeNode createInvoke(CallTargetNode callTarget, Kind resultType) {
-                InvokeNode invoke = append(InvokeNode.create(callTarget, bci()));
+                InvokeNode invoke = append(new InvokeNode(callTarget, bci()));
                 frameState.pushReturn(resultType, invoke);
                 return invoke;
             }
 
             protected InvokeWithExceptionNode createInvokeWithException(CallTargetNode callTarget, Kind resultType) {
                 DispatchBeginNode exceptionEdge = handleException(null, bci());
-                InvokeWithExceptionNode invoke = append(InvokeWithExceptionNode.create(callTarget, exceptionEdge, bci()));
+                InvokeWithExceptionNode invoke = append(new InvokeWithExceptionNode(callTarget, exceptionEdge, bci()));
                 frameState.pushReturn(resultType, invoke);
                 invoke.setStateAfter(frameState.create(stream.nextBCI()));
                 return invoke;
@@ -783,13 +783,13 @@
                     throw new BailoutException("unbalanced monitors");
                 }
 
-                append(ReturnNode.create(x));
+                append(new ReturnNode(x));
             }
 
             @Override
             protected MonitorEnterNode genMonitorEnter(ValueNode x) {
-                MonitorIdNode monitorId = currentGraph.add(MonitorIdNode.create(frameState.lockDepth()));
-                MonitorEnterNode monitorEnter = append(MonitorEnterNode.create(x, monitorId));
+                MonitorIdNode monitorId = currentGraph.add(new MonitorIdNode(frameState.lockDepth()));
+                MonitorEnterNode monitorEnter = append(new MonitorEnterNode(x, monitorId));
                 frameState.pushLock(x, monitorId);
                 return monitorEnter;
             }
@@ -801,7 +801,7 @@
                 if (GraphUtil.originalValue(lockedObject) != GraphUtil.originalValue(x)) {
                     throw new BailoutException("unbalanced monitors: mismatch at monitorexit, %s != %s", GraphUtil.originalValue(x), GraphUtil.originalValue(lockedObject));
                 }
-                MonitorExitNode monitorExit = append(MonitorExitNode.create(x, monitorId, returnValue));
+                MonitorExitNode monitorExit = append(new MonitorExitNode(x, monitorId, returnValue));
                 return monitorExit;
             }
 
@@ -829,9 +829,9 @@
                 JsrScope scope = currentBlock.getJsrScope();
                 int retAddress = scope.nextReturnAddress();
                 ConstantNode returnBciNode = getJsrConstant(retAddress);
-                LogicNode guard = IntegerEqualsNode.create(local, returnBciNode);
+                LogicNode guard = new IntegerEqualsNode(local, returnBciNode);
                 guard = currentGraph.unique(guard);
-                append(FixedGuardNode.create(guard, JavaSubroutineMismatch, InvalidateReprofile));
+                append(new FixedGuardNode(guard, JavaSubroutineMismatch, InvalidateReprofile));
                 if (!successor.getJsrScope().equals(scope.pop())) {
                     throw new JsrNotSupportedBailout("unstructured control flow (ret leaves more than one scope)");
                 }
@@ -841,14 +841,14 @@
             private ConstantNode getJsrConstant(long bci) {
                 JavaConstant nextBciConstant = new RawConstant(bci);
                 Stamp nextBciStamp = StampFactory.forConstant(nextBciConstant);
-                ConstantNode nextBciNode = ConstantNode.create(nextBciConstant, nextBciStamp);
+                ConstantNode nextBciNode = new ConstantNode(nextBciConstant, nextBciStamp);
                 return currentGraph.unique(nextBciNode);
             }
 
             @Override
             protected void genIntegerSwitch(ValueNode value, ArrayList actualSuccessors, int[] keys, double[] keyProbabilities, int[] keySuccessors) {
                 double[] successorProbabilities = successorProbabilites(actualSuccessors.size(), keySuccessors, keyProbabilities);
-                IntegerSwitchNode switchNode = append(IntegerSwitchNode.create(value, actualSuccessors.size(), keys, keyProbabilities, keySuccessors));
+                IntegerSwitchNode switchNode = append(new IntegerSwitchNode(value, actualSuccessors.size(), keys, keyProbabilities, keySuccessors));
                 for (int i = 0; i < actualSuccessors.size(); i++) {
                     switchNode.setBlockSuccessor(i, createBlockTarget(successorProbabilities[i], actualSuccessors.get(i), frameState));
                 }
@@ -943,7 +943,7 @@
                         HIRFrameStateBuilder newState = state.copy();
                         for (BciBlock loop : exitLoops) {
                             LoopBeginNode loopBegin = (LoopBeginNode) loop.firstInstruction;
-                            LoopExitNode loopExit = currentGraph.add(LoopExitNode.create(loopBegin));
+                            LoopExitNode loopExit = currentGraph.add(new LoopExitNode(loopBegin));
                             if (lastLoopExit != null) {
                                 lastLoopExit.setNext(loopExit);
                             }
@@ -966,7 +966,7 @@
             private FixedNode createTarget(double probability, BciBlock block, HIRFrameStateBuilder stateAfter) {
                 assert probability >= 0 && probability <= 1.01 : probability;
                 if (isNeverExecutedCode(probability)) {
-                    return currentGraph.add(DeoptimizeNode.create(InvalidateReprofile, UnreachedCode));
+                    return currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode));
                 } else {
                     assert block != null;
                     return createTarget(block, stateAfter);
@@ -984,7 +984,7 @@
                      * this block again.
                      */
                     FixedNode targetNode;
-                    block.firstInstruction = currentGraph.add(BeginNode.create());
+                    block.firstInstruction = currentGraph.add(new BeginNode());
                     targetNode = block.firstInstruction;
                     Target target = checkLoopExit(targetNode, block, state);
                     FixedNode result = target.fixed;
@@ -1007,7 +1007,7 @@
                      * the loop begin node created before.
                      */
                     LoopBeginNode loopBegin = (LoopBeginNode) block.firstInstruction;
-                    Target target = checkLoopExit(currentGraph.add(LoopEndNode.create(loopBegin)), block, state);
+                    Target target = checkLoopExit(currentGraph.add(new LoopEndNode(loopBegin)), block, state);
                     FixedNode result = target.fixed;
                     ((HIRFrameStateBuilder) block.entryState).merge(loopBegin, target.state);
 
@@ -1026,9 +1026,9 @@
                     BeginNode placeholder = (BeginNode) block.firstInstruction;
 
                     // The EndNode for the already existing edge.
-                    AbstractEndNode end = currentGraph.add(EndNode.create());
+                    AbstractEndNode end = currentGraph.add(new EndNode());
                     // The MergeNode that replaces the placeholder.
-                    MergeNode mergeNode = currentGraph.add(MergeNode.create());
+                    MergeNode mergeNode = currentGraph.add(new MergeNode());
                     FixedNode next = placeholder.next();
 
                     if (placeholder.predecessor() instanceof ControlSplitNode) {
@@ -1047,7 +1047,7 @@
                 MergeNode mergeNode = (MergeNode) block.firstInstruction;
 
                 // The EndNode for the newly merged edge.
-                AbstractEndNode newEnd = currentGraph.add(EndNode.create());
+                AbstractEndNode newEnd = currentGraph.add(new EndNode());
                 Target target = checkLoopExit(newEnd, block, state);
                 FixedNode result = target.fixed;
                 ((HIRFrameStateBuilder) block.entryState).merge(mergeNode, target.state);
@@ -1138,7 +1138,7 @@
                 assert frameState.stackSize() == 1 : frameState;
                 ValueNode exception = frameState.apop();
                 synchronizedEpilogue(BytecodeFrame.AFTER_EXCEPTION_BCI, null);
-                append(UnwindNode.create(exception));
+                append(new UnwindNode(exception));
             }
 
             private void synchronizedEpilogue(int bci, ValueNode returnValue) {
@@ -1171,9 +1171,9 @@
                         if (skippedType.isAssignableFrom(resolvedCatchType)) {
                             BciBlock nextBlock = block.getSuccessorCount() == 1 ? unwindBlock() : block.getSuccessor(1);
                             ValueNode exception = frameState.stackAt(0);
-                            FixedNode trueSuccessor = currentGraph.add(DeoptimizeNode.create(InvalidateReprofile, UnreachedCode));
+                            FixedNode trueSuccessor = currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode));
                             FixedNode nextDispatch = createTarget(nextBlock, frameState);
-                            append(IfNode.create(currentGraph.unique(InstanceOfNode.create((ResolvedJavaType) catchType, exception, null)), trueSuccessor, nextDispatch, 0));
+                            append(new IfNode(currentGraph.unique(new InstanceOfNode((ResolvedJavaType) catchType, exception, null)), trueSuccessor, nextDispatch, 0));
                             return;
                         }
                     }
@@ -1182,7 +1182,7 @@
                 if (initialized) {
                     BciBlock nextBlock = block.getSuccessorCount() == 1 ? unwindBlock() : block.getSuccessor(1);
                     ValueNode exception = frameState.stackAt(0);
-                    CheckCastNode checkCast = currentGraph.add(CheckCastNode.create((ResolvedJavaType) catchType, exception, null, false));
+                    CheckCastNode checkCast = currentGraph.add(new CheckCastNode((ResolvedJavaType) catchType, exception, null, false));
                     frameState.apop();
                     frameState.push(Kind.Object, checkCast);
                     FixedNode catchSuccessor = createTarget(block.getSuccessor(0), frameState);
@@ -1190,7 +1190,7 @@
                     frameState.push(Kind.Object, exception);
                     FixedNode nextDispatch = createTarget(nextBlock, frameState);
                     checkCast.setNext(catchSuccessor);
-                    append(IfNode.create(currentGraph.unique(InstanceOfNode.create((ResolvedJavaType) catchType, exception, null)), checkCast, nextDispatch, 0.5));
+                    append(new IfNode(currentGraph.unique(new InstanceOfNode((ResolvedJavaType) catchType, exception, null)), checkCast, nextDispatch, 0.5));
                 } else {
                     handleUnresolvedExceptionType(catchType);
                 }
@@ -1212,8 +1212,8 @@
                     // Create the loop header block, which later will merge the backward branches of
                     // the
                     // loop.
-                    AbstractEndNode preLoopEnd = currentGraph.add(EndNode.create());
-                    LoopBeginNode loopBegin = currentGraph.add(LoopBeginNode.create());
+                    AbstractEndNode preLoopEnd = currentGraph.add(new EndNode());
+                    LoopBeginNode loopBegin = currentGraph.add(new LoopBeginNode());
                     lastInstr.setNext(preLoopEnd);
                     // Add the single non-loop predecessor of the loop header.
                     loopBegin.addForwardEnd(preLoopEnd);
@@ -1265,7 +1265,7 @@
                         if (block.getJsrScope() != JsrScope.EMPTY_SCOPE) {
                             throw new BailoutException("OSR into a JSR scope is not supported");
                         }
-                        EntryMarkerNode x = append(EntryMarkerNode.create());
+                        EntryMarkerNode x = append(new EntryMarkerNode());
                         frameState.insertProxies(x);
                         x.setStateAfter(frameState.create(bci));
                     }
@@ -1317,9 +1317,9 @@
 
             private InfopointNode createInfoPointNode(InfopointReason reason) {
                 if (graphBuilderConfig.insertFullDebugInfo()) {
-                    return FullInfopointNode.create(reason, frameState.create(bci()));
+                    return new FullInfopointNode(reason, frameState.create(bci()));
                 } else {
-                    return SimpleInfopointNode.create(reason, new BytecodePosition(null, method, bci()));
+                    return new SimpleInfopointNode(reason, new BytecodePosition(null, method, bci()));
                 }
             }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java	Mon Jan 12 21:24:26 2015 +0100
@@ -56,7 +56,7 @@
         int index = 0;
         if (!method.isStatic()) {
             // add the receiver
-            ParameterNode receiver = graph.unique(ParameterNode.create(javaIndex, StampFactory.declaredNonNull(method.getDeclaringClass())));
+            ParameterNode receiver = graph.unique(new ParameterNode(javaIndex, StampFactory.declaredNonNull(method.getDeclaringClass())));
             storeLocal(javaIndex, receiver);
             javaIndex = 1;
             index = 1;
@@ -76,7 +76,7 @@
             } else {
                 stamp = StampFactory.forKind(kind);
             }
-            ParameterNode param = graph.unique(ParameterNode.create(index, stamp));
+            ParameterNode param = graph.unique(new ParameterNode(index, stamp));
             storeLocal(javaIndex, param);
             javaIndex += stackSlots(kind);
             index++;
@@ -123,7 +123,7 @@
     }
 
     public FrameState create(int bci) {
-        return graph.add(FrameState.create(method, bci, locals, Arrays.asList(stack).subList(0, stackSize), lockedObjects, monitorIds, rethrowException, false));
+        return graph.add(new FrameState(method, bci, locals, Arrays.asList(stack).subList(0, stackSize), lockedObjects, monitorIds, rethrowException, false));
     }
 
     @Override
@@ -190,7 +190,7 @@
                 return null;
             }
 
-            ValuePhiNode phi = graph.addWithoutUnique(ValuePhiNode.create(currentValue.stamp().unrestricted(), block));
+            ValuePhiNode phi = graph.addWithoutUnique(new ValuePhiNode(currentValue.stamp().unrestricted(), block));
             for (int i = 0; i < block.phiPredecessorCount(); i++) {
                 phi.addInput(currentValue);
             }
@@ -288,7 +288,7 @@
         }
         assert !block.isPhiAtMerge(value) : "phi function for this block already created";
 
-        ValuePhiNode phi = graph.addWithoutUnique(ValuePhiNode.create(value.stamp().unrestricted(), block));
+        ValuePhiNode phi = graph.addWithoutUnique(new ValuePhiNode(value.stamp().unrestricted(), block));
         phi.addInput(value);
         return phi;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResultBase.java
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResultBase.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGenerationResultBase.java	Mon Jan 12 21:24:26 2015 +0100
@@ -68,5 +68,4 @@
         assert frameMap != null : "getFrameMap() can only be used after calling buildFrameMap()!";
         return frameMap;
     }
-
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/BasicInductionVariable.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/BasicInductionVariable.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/BasicInductionVariable.java	Mon Jan 12 21:24:26 2015 +0100
@@ -86,7 +86,7 @@
             return rawStride;
         }
         if (op instanceof SubNode) {
-            return graph().unique(NegateNode.create(rawStride));
+            return graph().unique(new NegateNode(rawStride));
         }
         throw GraalInternalError.shouldNotReachHere();
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java	Mon Jan 12 21:24:26 2015 +0100
@@ -63,13 +63,13 @@
                 range = BinaryArithmeticNode.sub(graph, range, ConstantNode.forIntegerStamp(stamp, 1, graph));
             }
         }
-        IntegerDivNode div = graph.add(IntegerDivNode.create(range, iv.strideNode()));
+        IntegerDivNode div = graph.add(new IntegerDivNode(range, iv.strideNode()));
         graph.addBeforeFixed(loop.entryPoint(), div);
         ConstantNode zero = ConstantNode.forIntegerStamp(stamp, 0, graph);
         if (assumePositive) {
             return div;
         }
-        return graph.unique(ConditionalNode.create(graph.unique(IntegerLessThanNode.create(zero, div)), div, zero));
+        return graph.unique(new ConditionalNode(graph.unique(new IntegerLessThanNode(zero, div)), div, zero));
     }
 
     public boolean isConstantMaxTripCount() {
@@ -148,16 +148,16 @@
             if (oneOff) {
                 v1 = sub(graph, v1, one);
             }
-            cond = graph.unique(IntegerLessThanNode.create(v1, end));
+            cond = graph.unique(new IntegerLessThanNode(v1, end));
         } else {
             assert iv.direction() == Direction.Down;
             BinaryArithmeticNode v1 = add(graph, ConstantNode.forIntegerStamp(stamp, CodeUtil.minValue(stamp.getBits()), graph), sub(graph, one, iv.strideNode()));
             if (oneOff) {
                 v1 = add(graph, v1, one);
             }
-            cond = graph.unique(IntegerLessThanNode.create(end, v1));
+            cond = graph.unique(new IntegerLessThanNode(end, v1));
         }
-        overflowGuard = graph.unique(GuardNode.create(cond, BeginNode.prevBegin(loop.entryPoint()), DeoptimizationReason.LoopLimitCheck, DeoptimizationAction.InvalidateRecompile, true,
+        overflowGuard = graph.unique(new GuardNode(cond, BeginNode.prevBegin(loop.entryPoint()), DeoptimizationReason.LoopLimitCheck, DeoptimizationAction.InvalidateRecompile, true,
                         JavaConstant.NULL_POINTER)); // TODO gd: use speculation
         loop.loopBegin().setOverflowGuard(overflowGuard);
         return overflowGuard;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedOffsetInductionVariable.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedOffsetInductionVariable.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/DerivedOffsetInductionVariable.java	Mon Jan 12 21:24:26 2015 +0100
@@ -86,7 +86,7 @@
     @Override
     public ValueNode strideNode() {
         if (value instanceof SubNode && base.valueNode() == value.getY()) {
-            return graph().unique(NegateNode.create(base.strideNode()));
+            return graph().unique(new NegateNode(base.strideNode()));
         }
         return base.strideNode();
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragment.java	Mon Jan 12 21:24:26 2015 +0100
@@ -312,9 +312,9 @@
             if (newEarlyExit == null) {
                 continue;
             }
-            MergeNode merge = graph.add(MergeNode.create());
-            AbstractEndNode originalEnd = graph.add(EndNode.create());
-            AbstractEndNode newEnd = graph.add(EndNode.create());
+            MergeNode merge = graph.add(new MergeNode());
+            AbstractEndNode originalEnd = graph.add(new EndNode());
+            AbstractEndNode newEnd = graph.add(new EndNode());
             merge.addForwardEnd(originalEnd);
             merge.addForwardEnd(newEnd);
             loopEarlyExit.setNext(originalEnd);
@@ -354,9 +354,9 @@
                 if (newVpn != null) {
                     PhiNode phi;
                     if (vpn instanceof ValueProxyNode) {
-                        phi = graph.addWithoutUnique(ValuePhiNode.create(vpn.stamp(), merge));
+                        phi = graph.addWithoutUnique(new ValuePhiNode(vpn.stamp(), merge));
                     } else if (vpn instanceof GuardProxyNode) {
-                        phi = graph.addWithoutUnique(GuardPhiNode.create(merge));
+                        phi = graph.addWithoutUnique(new GuardPhiNode(merge));
                     } else {
                         throw GraalInternalError.shouldNotReachHere();
                     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentInside.java	Mon Jan 12 21:24:26 2015 +0100
@@ -152,7 +152,7 @@
                     if (value != null) {
                         return value;
                     }
-                    BeginNode newValue = graph.add(BeginNode.create());
+                    BeginNode newValue = graph.add(new BeginNode());
                     seenNode.put(original, newValue);
                     return newValue;
                 }
@@ -161,7 +161,7 @@
                     if (value != null) {
                         return value;
                     }
-                    BeginNode newValue = graph.add(BeginNode.create());
+                    BeginNode newValue = graph.add(new BeginNode());
                     seenNode.put(original, newValue);
                     return newValue;
                 }
@@ -170,7 +170,7 @@
                     if (value != null) {
                         return value;
                     }
-                    EndNode newValue = graph.add(EndNode.create());
+                    EndNode newValue = graph.add(new EndNode());
                     seenNode.put(original, newValue);
                     return newValue;
                 }
@@ -187,11 +187,11 @@
     private static PhiNode patchPhi(StructuredGraph graph, PhiNode phi, MergeNode merge) {
         PhiNode ret;
         if (phi instanceof ValuePhiNode) {
-            ret = ValuePhiNode.create(phi.stamp(), merge);
+            ret = new ValuePhiNode(phi.stamp(), merge);
         } else if (phi instanceof GuardPhiNode) {
-            ret = GuardPhiNode.create(merge);
+            ret = new GuardPhiNode(merge);
         } else if (phi instanceof MemoryPhiNode) {
-            ret = MemoryPhiNode.create(merge, ((MemoryPhiNode) phi).getLocationIdentity());
+            ret = new MemoryPhiNode(merge, ((MemoryPhiNode) phi).getLocationIdentity());
         } else {
             throw GraalInternalError.shouldNotReachHere();
         }
@@ -310,12 +310,12 @@
         if (endsToMerge.size() == 1) {
             AbstractEndNode end = endsToMerge.get(0);
             assert end.usages().isEmpty();
-            newExit = graph.add(BeginNode.create());
+            newExit = graph.add(new BeginNode());
             end.replaceAtPredecessor(newExit);
             end.safeDelete();
         } else {
             assert endsToMerge.size() > 1;
-            MergeNode newExitMerge = graph.add(MergeNode.create());
+            MergeNode newExitMerge = graph.add(new MergeNode());
             newExit = newExitMerge;
             FrameState state = loopBegin.stateAfter();
             FrameState duplicateState = null;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopFragmentWhole.java	Mon Jan 12 21:24:26 2015 +0100
@@ -79,7 +79,7 @@
             public Node replacement(Node o) {
                 if (o == entry) {
                     if (endNode == null) {
-                        endNode = graph.add(EndNode.create());
+                        endNode = graph.add(new EndNode());
                     }
                     return endNode;
                 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeVerifier.java
--- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeVerifier.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeVerifier.java	Mon Jan 12 21:24:26 2015 +0100
@@ -194,10 +194,8 @@
         for (ExecutableElement constructor : ElementFilter.constructorsIn(node.getEnclosedElements())) {
             if (constructor.getModifiers().contains(PRIVATE)) {
                 continue;
-            } else if (constructor.getModifiers().contains(PUBLIC)) {
-                throw new ElementException(constructor, "Node class constructor must not be public");
-            } else if (!constructor.getModifiers().contains(PROTECTED)) {
-                throw new ElementException(constructor, "Node class constructor must be protected");
+            } else if (!constructor.getModifiers().contains(PUBLIC) && !constructor.getModifiers().contains(PROTECTED)) {
+                throw new ElementException(constructor, "Node class constructor must be public or protected");
             }
 
             foundValidConstructor = true;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -87,15 +87,15 @@
     public DeoptimizeNode lowerToIf() {
         FixedNode currentNext = next();
         setNext(null);
-        DeoptimizeNode deopt = graph().add(DeoptimizeNode.create(action, reason));
+        DeoptimizeNode deopt = graph().add(new DeoptimizeNode(action, reason));
         deopt.setStateBefore(stateBefore());
         IfNode ifNode;
         BeginNode noDeoptSuccessor;
         if (negated) {
-            ifNode = graph().add(IfNode.create(condition, deopt, currentNext, 0));
+            ifNode = graph().add(new IfNode(condition, deopt, currentNext, 0));
             noDeoptSuccessor = ifNode.falseSuccessor();
         } else {
-            ifNode = graph().add(IfNode.create(condition, currentNext, deopt, 1));
+            ifNode = graph().add(new IfNode(condition, currentNext, deopt, 1));
             noDeoptSuccessor = ifNode.trueSuccessor();
         }
         ((FixedWithNextNode) predecessor()).setNext(ifNode);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -38,19 +38,11 @@
 @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor})
 public class BeginNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, GuardingNode, AnchoringNode, IterableNodeType {
 
-    public static BeginNode create() {
-        return new BeginNode();
-    }
-
-    protected BeginNode() {
+    public BeginNode() {
         super(StampFactory.forVoid());
     }
 
-    public static BeginNode create(Stamp stamp) {
-        return new BeginNode(stamp);
-    }
-
-    protected BeginNode(Stamp stamp) {
+    public BeginNode(Stamp stamp) {
         super(stamp);
     }
 
@@ -58,7 +50,7 @@
         if (with instanceof BeginNode) {
             return (BeginNode) with;
         }
-        BeginNode begin = with.graph().add(BeginNode.create());
+        BeginNode begin = with.graph().add(new BeginNode());
         begin.setNext(with);
         return begin;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,11 +50,7 @@
 
     @Input NodeInputList arguments;
 
-    public static BreakpointNode create(ValueNode[] arguments) {
-        return new BreakpointNode(arguments);
-    }
-
-    protected BreakpointNode(ValueNode... arguments) {
+    public BreakpointNode(ValueNode[] arguments) {
         super(StampFactory.forVoid());
         this.arguments = new NodeInputList<>(this, arguments);
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,19 +35,11 @@
     @Input(InputType.Condition) LogicNode condition;
     protected boolean negated;
 
-    public static ConditionAnchorNode create(LogicNode condition) {
-        return new ConditionAnchorNode(condition);
-    }
-
-    protected ConditionAnchorNode(LogicNode condition) {
+    public ConditionAnchorNode(LogicNode condition) {
         this(condition, false);
     }
 
-    public static ConditionAnchorNode create(LogicNode condition, boolean negated) {
-        return new ConditionAnchorNode(condition, negated);
-    }
-
-    protected ConditionAnchorNode(LogicNode condition, boolean negated) {
+    public ConditionAnchorNode(LogicNode condition, boolean negated) {
         super(StampFactory.forVoid());
         this.negated = negated;
         this.condition = condition;
@@ -73,14 +65,14 @@
     public Node canonical(CanonicalizerTool tool, Node forValue) {
         if (condition instanceof LogicNegationNode) {
             LogicNegationNode negation = (LogicNegationNode) condition;
-            return ConditionAnchorNode.create(negation.getValue(), !negated);
+            return new ConditionAnchorNode(negation.getValue(), !negated);
         }
         if (condition instanceof LogicConstantNode) {
             LogicConstantNode c = (LogicConstantNode) condition;
             if (c.getValue() != negated) {
                 return null;
             } else {
-                return ValueAnchorNode.create(null);
+                return new ValueAnchorNode(null);
             }
         }
         return this;
@@ -89,7 +81,7 @@
     @Override
     public void lower(LoweringTool tool) {
         if (graph().getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS) {
-            ValueAnchorNode newAnchor = graph().add(ValueAnchorNode.create(null));
+            ValueAnchorNode newAnchor = graph().add(new ValueAnchorNode(null));
             graph().replaceFixedWithFixed(this, newAnchor);
         }
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -47,7 +47,7 @@
 
     private static ConstantNode createPrimitive(JavaConstant value) {
         assert value.getKind() != Kind.Object;
-        return ConstantNode.create(value, StampFactory.forConstant(value));
+        return new ConstantNode(value, StampFactory.forConstant(value));
     }
 
     /**
@@ -55,11 +55,7 @@
      *
      * @param value the constant
      */
-    public static ConstantNode create(Constant value, Stamp stamp) {
-        return new ConstantNode(value, stamp);
-    }
-
-    protected ConstantNode(Constant value, Stamp stamp) {
+    public ConstantNode(Constant value, Stamp stamp) {
         super(stamp);
         assert stamp != null && isCompatible(value, stamp);
         this.value = value;
@@ -128,7 +124,7 @@
             return forInt(constant.asInt(), graph);
         }
         if (constant.getKind() == Kind.Object) {
-            return unique(graph, ConstantNode.create(constant, StampFactory.forConstant(constant, metaAccess)));
+            return unique(graph, new ConstantNode(constant, StampFactory.forConstant(constant, metaAccess)));
         } else {
             return unique(graph, createPrimitive(constant));
         }
@@ -139,18 +135,18 @@
             return forInt(constant.asInt());
         }
         if (constant.getKind() == Kind.Object) {
-            return ConstantNode.create(constant, StampFactory.forConstant(constant, metaAccess));
+            return new ConstantNode(constant, StampFactory.forConstant(constant, metaAccess));
         } else {
             return createPrimitive(constant);
         }
     }
 
     public static ConstantNode forConstant(Stamp stamp, Constant constant, MetaAccessProvider metaAccess, StructuredGraph graph) {
-        return graph.unique(ConstantNode.create(constant, stamp.constant(constant, metaAccess)));
+        return graph.unique(new ConstantNode(constant, stamp.constant(constant, metaAccess)));
     }
 
     public static ConstantNode forConstant(Stamp stamp, Constant constant, MetaAccessProvider metaAccess) {
-        return ConstantNode.create(constant, stamp.constant(constant, metaAccess));
+        return new ConstantNode(constant, stamp.constant(constant, metaAccess));
     }
 
     /**
@@ -198,7 +194,7 @@
             return forConstant(primitive, null);
         } else {
             assert !(stamp instanceof AbstractObjectStamp);
-            return ConstantNode.create(constant, stamp.constant(constant, null));
+            return new ConstantNode(constant, stamp.constant(constant, null));
         }
     }
 
@@ -339,7 +335,7 @@
     private static ConstantNode forIntegerBits(int bits, JavaConstant constant, StructuredGraph graph) {
         long value = constant.asLong();
         long bounds = CodeUtil.signExtend(value, bits);
-        return unique(graph, ConstantNode.create(constant, StampFactory.forInteger(bits, bounds, bounds)));
+        return unique(graph, new ConstantNode(constant, StampFactory.forInteger(bits, bounds, bounds)));
     }
 
     /**
@@ -353,7 +349,7 @@
     private static ConstantNode forIntegerBits(int bits, JavaConstant constant) {
         long value = constant.asLong();
         long bounds = CodeUtil.signExtend(value, bits);
-        return ConstantNode.create(constant, StampFactory.forInteger(bits, bounds, bounds));
+        return new ConstantNode(constant, StampFactory.forInteger(bits, bounds, bounds));
     }
 
     /**
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,19 +34,11 @@
     protected final int debugId;
     protected final JavaConstant speculation;
 
-    public static DeoptimizeNode create(DeoptimizationAction action, DeoptimizationReason reason) {
-        return new DeoptimizeNode(action, reason);
-    }
-
-    protected DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason) {
+    public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason) {
         this(action, reason, 0, JavaConstant.NULL_POINTER, null);
     }
 
-    public static DeoptimizeNode create(DeoptimizationAction action, DeoptimizationReason reason, int debugId, JavaConstant speculation, FrameState stateBefore) {
-        return new DeoptimizeNode(action, reason, debugId, speculation, stateBefore);
-    }
-
-    protected DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, int debugId, JavaConstant speculation, FrameState stateBefore) {
+    public DeoptimizeNode(DeoptimizationAction action, DeoptimizationReason reason, int debugId, JavaConstant speculation, FrameState stateBefore) {
         super(stateBefore);
         assert action != null;
         assert reason != null;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 @NodeInfo
 public class DirectCallTargetNode extends LoweredCallTargetNode {
 
-    public static DirectCallTargetNode create(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
-        return new DirectCallTargetNode(arguments, returnStamp, signature, target, callType, invokeKind);
-    }
-
-    protected DirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
+    public DirectCallTargetNode(List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
         super(arguments, returnStamp, signature, target, callType, invokeKind);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,18 +31,11 @@
 @NodeInfo
 public class DispatchBeginNode extends BeginStateSplitNode {
 
-    public static DispatchBeginNode create() {
-        return new DispatchBeginNode();
-    }
-
-    protected DispatchBeginNode() {
+    public DispatchBeginNode() {
     }
 
-    public static DispatchBeginNode create(Stamp stamp) {
-        return new DispatchBeginNode(stamp);
+    public DispatchBeginNode(Stamp stamp) {
+        super(stamp);
     }
 
-    protected DispatchBeginNode(Stamp stamp) {
-        super(stamp);
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
     @Input ValueNode actionAndReason;
     @Input ValueNode speculation;
 
-    public static DynamicDeoptimizeNode create(ValueNode actionAndReason, ValueNode speculation) {
-        return new DynamicDeoptimizeNode(actionAndReason, speculation);
-    }
-
-    protected DynamicDeoptimizeNode(ValueNode actionAndReason, ValueNode speculation) {
+    public DynamicDeoptimizeNode(ValueNode actionAndReason, ValueNode speculation) {
         this.actionAndReason = actionAndReason;
         this.speculation = speculation;
     }
@@ -74,8 +70,8 @@
         if (actionAndReason.isConstant() && speculation.isConstant()) {
             JavaConstant constant = actionAndReason.asJavaConstant();
             JavaConstant speculationConstant = speculation.asJavaConstant();
-            DeoptimizeNode newDeopt = DeoptimizeNode.create(tool.getMetaAccess().decodeDeoptAction(constant), tool.getMetaAccess().decodeDeoptReason(constant),
-                            tool.getMetaAccess().decodeDebugId(constant), speculationConstant, stateBefore());
+            DeoptimizeNode newDeopt = new DeoptimizeNode(tool.getMetaAccess().decodeDeoptAction(constant), tool.getMetaAccess().decodeDeoptReason(constant), tool.getMetaAccess().decodeDebugId(
+                            constant), speculationConstant, stateBefore());
             return newDeopt;
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -26,10 +26,7 @@
 
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public class EndNode extends AbstractEndNode {
-    public static EndNode create() {
-        return new EndNode();
+    public EndNode() {
     }
 
-    protected EndNode() {
-    }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public class EntryMarkerNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable, LIRLowerable {
 
-    public static EntryMarkerNode create() {
-        return new EntryMarkerNode();
-    }
-
-    protected EntryMarkerNode() {
+    public EntryMarkerNode() {
     }
 
     @Override
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,19 +32,11 @@
 @NodeInfo(nameTemplate = "FixedGuard(!={p#negated}) {p#reason/s}", allowedUsageTypes = {InputType.Guard})
 public class FixedGuardNode extends AbstractFixedGuardNode implements Lowerable, IterableNodeType {
 
-    public static FixedGuardNode create(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) {
-        return new FixedGuardNode(condition, deoptReason, action);
-    }
-
-    protected FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) {
+    public FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) {
         this(condition, deoptReason, action, false);
     }
 
-    public static FixedGuardNode create(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
-        return new FixedGuardNode(condition, deoptReason, action, negated);
-    }
-
-    protected FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
+    public FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
         super(condition, deoptReason, action, negated);
     }
 
@@ -60,7 +52,7 @@
                     tool.deleteBranch(currentNext);
                 }
 
-                DeoptimizeNode deopt = graph().add(DeoptimizeNode.create(getAction(), getReason()));
+                DeoptimizeNode deopt = graph().add(new DeoptimizeNode(getAction(), getReason()));
                 deopt.setStateBefore(stateBefore());
                 setNext(deopt);
             }
@@ -69,8 +61,8 @@
         } else if (condition() instanceof ShortCircuitOrNode) {
             ShortCircuitOrNode shortCircuitOr = (ShortCircuitOrNode) condition();
             if (isNegated() && usages().isEmpty()) {
-                graph().addAfterFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getY(), getReason(), getAction(), !shortCircuitOr.isYNegated())));
-                graph().replaceFixedWithFixed(this, graph().add(FixedGuardNode.create(shortCircuitOr.getX(), getReason(), getAction(), !shortCircuitOr.isXNegated())));
+                graph().addAfterFixed(this, graph().add(new FixedGuardNode(shortCircuitOr.getY(), getReason(), getAction(), !shortCircuitOr.isYNegated())));
+                graph().replaceFixedWithFixed(this, graph().add(new FixedGuardNode(shortCircuitOr.getX(), getReason(), getAction(), !shortCircuitOr.isXNegated())));
             }
         }
     }
@@ -80,7 +72,7 @@
         if (graph().getGuardsStage() == StructuredGraph.GuardsStage.FLOATING_GUARDS) {
             ValueNode guard = tool.createGuard(this, condition(), getReason(), getAction(), isNegated()).asNode();
             this.replaceAtUsages(guard);
-            ValueAnchorNode newAnchor = graph().add(ValueAnchorNode.create(guard.asNode()));
+            ValueAnchorNode newAnchor = graph().add(new ValueAnchorNode(guard.asNode()));
             graph().replaceFixedWithFixed(this, newAnchor);
         } else {
             lowerToIf().lower(tool);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Jan 12 21:24:26 2015 +0100
@@ -74,26 +74,7 @@
 
     protected final ResolvedJavaMethod method;
 
-    /**
-     * Creates a {@code FrameState} with the given locals, stack expressions and locked monitors.
-     *
-     * @param method the method for this frame state
-     * @param bci the bytecode index of the frame state
-     * @param values the locals, stack expressions and locked objects, in this order
-     * @param localsSize the number of locals in the values list
-     * @param stackSize the number of stack expressions in the values list
-     * @param rethrowException if true, this FrameState will throw an exception (taken from the top
-     *            of the expression stack) during deoptimization
-     * @param duringCall true if this FrameState describes the state during a call
-     * @param monitorIds one MonitorIdNode for each locked object
-     * @param virtualObjectMappings a description of the current state for every virtual object
-     */
-    public static FrameState create(FrameState outerFrameState, ResolvedJavaMethod method, int bci, List values, int localsSize, int stackSize, boolean rethrowException,
-                    boolean duringCall, List monitorIds, List virtualObjectMappings) {
-        return new FrameState(outerFrameState, method, bci, values, localsSize, stackSize, rethrowException, duringCall, monitorIds, virtualObjectMappings);
-    }
-
-    protected FrameState(FrameState outerFrameState, ResolvedJavaMethod method, int bci, List values, int localsSize, int stackSize, boolean rethrowException, boolean duringCall,
+    public FrameState(FrameState outerFrameState, ResolvedJavaMethod method, int bci, List values, int localsSize, int stackSize, boolean rethrowException, boolean duringCall,
                     List monitorIds, List virtualObjectMappings) {
         assert stackSize >= 0;
         this.outerFrameState = outerFrameState;
@@ -111,27 +92,13 @@
         METRIC_FRAMESTATE_COUNT.increment();
     }
 
-    /**
-     * Simple constructor used to create marker FrameStates.
-     *
-     * @param bci marker bci, needs to be < 0
-     */
-    public static FrameState create(int bci) {
-        return new FrameState(bci);
-    }
-
-    protected FrameState(int bci) {
+    public FrameState(int bci) {
         this(null, null, bci, Collections. emptyList(), 0, 0, false, false, Collections. emptyList(), Collections. emptyList());
         assert bci == BytecodeFrame.BEFORE_BCI || bci == BytecodeFrame.AFTER_BCI || bci == BytecodeFrame.AFTER_EXCEPTION_BCI || bci == BytecodeFrame.UNKNOWN_BCI ||
                         bci == BytecodeFrame.INVALID_FRAMESTATE_BCI;
     }
 
-    public static FrameState create(ResolvedJavaMethod method, int bci, ValueNode[] locals, List stack, ValueNode[] locks, MonitorIdNode[] monitorIds, boolean rethrowException,
-                    boolean duringCall) {
-        return new FrameState(method, bci, locals, stack, locks, monitorIds, rethrowException, duringCall);
-    }
-
-    protected FrameState(ResolvedJavaMethod method, int bci, ValueNode[] locals, List stack, ValueNode[] locks, MonitorIdNode[] monitorIds, boolean rethrowException, boolean duringCall) {
+    public FrameState(ResolvedJavaMethod method, int bci, ValueNode[] locals, List stack, ValueNode[] locks, MonitorIdNode[] monitorIds, boolean rethrowException, boolean duringCall) {
         this(null, method, bci, createValues(locals, stack, locks), locals.length, stack.size(), rethrowException, duringCall, Arrays.asList(monitorIds), Collections. emptyList());
     }
 
@@ -204,7 +171,7 @@
      * Gets a copy of this frame state.
      */
     public FrameState duplicate(int newBci) {
-        return graph().add(FrameState.create(outerFrameState(), method, newBci, values, localsSize, stackSize, rethrowException, duringCall, monitorIds, virtualObjectMappings));
+        return graph().add(new FrameState(outerFrameState(), method, newBci, values, localsSize, stackSize, rethrowException, duringCall, monitorIds, virtualObjectMappings));
     }
 
     /**
@@ -228,7 +195,7 @@
         for (EscapeObjectState state : virtualObjectMappings) {
             newVirtualMappings.add(state.duplicateWithVirtualState());
         }
-        return graph().add(FrameState.create(newOuterFrameState, method, bci, values, localsSize, stackSize, rethrowException, duringCall, monitorIds, newVirtualMappings));
+        return graph().add(new FrameState(newOuterFrameState, method, bci, values, localsSize, stackSize, rethrowException, duringCall, monitorIds, newVirtualMappings));
     }
 
     /**
@@ -279,7 +246,7 @@
         copy.addAll(values.subList(localsSize + stackSize, values.size()));
 
         assert checkStackDepth(bci, stackSize, duringCall, newBci, newStackSize, newDuringCall);
-        return graph().add(FrameState.create(outerFrameState(), method, newBci, copy, localsSize, newStackSize, newRethrowException, newDuringCall, monitorIds, virtualObjectMappings));
+        return graph().add(new FrameState(outerFrameState(), method, newBci, copy, localsSize, newStackSize, newRethrowException, newDuringCall, monitorIds, virtualObjectMappings));
     }
 
     /**
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
 public class FullInfopointNode extends InfopointNode implements LIRLowerable, NodeWithState {
     @Input(InputType.State) FrameState state;
 
-    public static FullInfopointNode create(InfopointReason reason, FrameState state) {
-        return new FullInfopointNode(reason, state);
-    }
-
-    protected FullInfopointNode(InfopointReason reason, FrameState state) {
+    public FullInfopointNode(InfopointReason reason, FrameState state) {
         super(reason);
         this.state = state;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,11 +50,7 @@
     protected DeoptimizationAction action;
     protected boolean negated;
 
-    public static GuardNode create(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) {
-        return new GuardNode(condition, anchor, reason, action, negated, speculation);
-    }
-
-    protected GuardNode(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) {
+    public GuardNode(LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) {
         super(StampFactory.forVoid(), anchor);
         this.condition = condition;
         this.reason = reason;
@@ -103,7 +99,7 @@
     public Node canonical(CanonicalizerTool tool) {
         if (condition() instanceof LogicNegationNode) {
             LogicNegationNode negation = (LogicNegationNode) condition();
-            return GuardNode.create(negation.getValue(), getAnchor(), reason, action, !negated, speculation);
+            return new GuardNode(negation.getValue(), getAnchor(), reason, action, !negated, speculation);
         }
         if (condition() instanceof LogicConstantNode) {
             LogicConstantNode c = (LogicConstantNode) condition();
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,20 +35,12 @@
 
     @OptionalInput(InputType.Guard) NodeInputList values;
 
-    public static GuardPhiNode create(MergeNode merge) {
-        return new GuardPhiNode(merge);
-    }
-
-    protected GuardPhiNode(MergeNode merge) {
+    public GuardPhiNode(MergeNode merge) {
         super(StampFactory.forVoid(), merge);
         this.values = new NodeInputList<>(this);
     }
 
-    public static GuardPhiNode create(MergeNode merge, ValueNode[] values) {
-        return new GuardPhiNode(merge, values);
-    }
-
-    protected GuardPhiNode(MergeNode merge, ValueNode[] values) {
+    public GuardPhiNode(MergeNode merge, ValueNode[] values) {
         super(StampFactory.forVoid(), merge);
         this.values = new NodeInputList<>(this, values);
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
 
     @Input(InputType.Guard) GuardingNode value;
 
-    public static GuardProxyNode create(GuardingNode value, BeginNode proxyPoint) {
-        return new GuardProxyNode(value, proxyPoint);
-    }
-
-    protected GuardProxyNode(GuardingNode value, BeginNode proxyPoint) {
+    public GuardProxyNode(GuardingNode value, BeginNode proxyPoint) {
         super(StampFactory.forVoid(), proxyPoint);
         this.value = value;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -42,21 +42,13 @@
     @Input ValueNode object;
     protected final Stamp piStamp;
 
-    public static GuardedValueNode create(ValueNode object, GuardingNode guard, Stamp stamp) {
-        return new GuardedValueNode(object, guard, stamp);
-    }
-
-    protected GuardedValueNode(ValueNode object, GuardingNode guard, Stamp stamp) {
+    public GuardedValueNode(ValueNode object, GuardingNode guard, Stamp stamp) {
         super(stamp, guard);
         this.object = object;
         this.piStamp = stamp;
     }
 
-    public static GuardedValueNode create(ValueNode object, GuardingNode guard) {
-        return new GuardedValueNode(object, guard);
-    }
-
-    protected GuardedValueNode(ValueNode object, GuardingNode guard) {
+    public GuardedValueNode(ValueNode object, GuardingNode guard) {
         this(object, guard, object.stamp());
     }
 
@@ -93,7 +85,7 @@
             if (stamp().equals(object().stamp())) {
                 return object();
             } else {
-                return PiNode.create(object(), stamp());
+                return new PiNode(object(), stamp());
             }
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -65,30 +65,11 @@
         return action;
     }
 
-    /**
-     * Constructor for {@link #guardingNonNull(Object)} node intrinsic.
-     */
-    public static GuardingPiNode create(ValueNode object) {
-        return new GuardingPiNode(object);
-    }
-
-    protected GuardingPiNode(ValueNode object) {
-        this(object, object.graph().unique(IsNullNode.create(object)), true, DeoptimizationReason.NullCheckException, DeoptimizationAction.None, object.stamp().join(StampFactory.objectNonNull()));
+    public GuardingPiNode(ValueNode object) {
+        this(object, object.graph().unique(new IsNullNode(object)), true, DeoptimizationReason.NullCheckException, DeoptimizationAction.None, object.stamp().join(StampFactory.objectNonNull()));
     }
 
-    /**
-     * Creates a guarding pi node.
-     *
-     * @param object the object whose type is refined if this guard succeeds
-     * @param condition the condition to test
-     * @param negateCondition the guard succeeds if {@code condition != negateCondition}
-     * @param stamp the refined type of the object if the guard succeeds
-     */
-    public static GuardingPiNode create(ValueNode object, ValueNode condition, boolean negateCondition, DeoptimizationReason reason, DeoptimizationAction action, Stamp stamp) {
-        return new GuardingPiNode(object, condition, negateCondition, reason, action, stamp);
-    }
-
-    protected GuardingPiNode(ValueNode object, ValueNode condition, boolean negateCondition, DeoptimizationReason reason, DeoptimizationAction action, Stamp stamp) {
+    public GuardingPiNode(ValueNode object, ValueNode condition, boolean negateCondition, DeoptimizationReason reason, DeoptimizationAction action, Stamp stamp) {
         super(stamp);
         assert stamp != null;
         this.piStamp = stamp;
@@ -102,9 +83,9 @@
     @Override
     public void lower(LoweringTool tool) {
         GuardingNode guard = tool.createGuard(next(), condition, reason, action, negated);
-        ValueAnchorNode anchor = graph().add(ValueAnchorNode.create((ValueNode) guard));
+        ValueAnchorNode anchor = graph().add(new ValueAnchorNode((ValueNode) guard));
         if (usages().isNotEmpty()) {
-            PiNode pi = graph().unique(PiNode.create(object, stamp(), (ValueNode) guard));
+            PiNode pi = graph().unique(new PiNode(object, stamp(), (ValueNode) guard));
             replaceAtUsages(pi);
         }
         graph().replaceFixedWithFixed(this, anchor);
@@ -127,19 +108,19 @@
     public Node canonical(CanonicalizerTool tool) {
         if (stamp() == StampFactory.illegal(object.getKind())) {
             // The guard always fails
-            return DeoptimizeNode.create(action, reason);
+            return new DeoptimizeNode(action, reason);
         }
         if (condition instanceof LogicConstantNode) {
             LogicConstantNode c = (LogicConstantNode) condition;
             if (c.getValue() == negated) {
                 // The guard always fails
-                return DeoptimizeNode.create(action, reason);
+                return new DeoptimizeNode(action, reason);
             } else if (stamp().equals(object().stamp())) {
                 // The guard always succeeds, and does not provide new type information
                 return object;
             } else {
                 // The guard always succeeds, and provides new type information
-                return PiNode.create(object, stamp());
+                return new PiNode(object, stamp());
             }
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -65,25 +65,16 @@
         condition = x;
     }
 
-    public static IfNode create(LogicNode condition, FixedNode trueSuccessor, FixedNode falseSuccessor, double trueSuccessorProbability) {
-        return new IfNode(condition, trueSuccessor, falseSuccessor, trueSuccessorProbability);
-    }
-
-    protected IfNode(LogicNode condition, FixedNode trueSuccessor, FixedNode falseSuccessor, double trueSuccessorProbability) {
+    public IfNode(LogicNode condition, FixedNode trueSuccessor, FixedNode falseSuccessor, double trueSuccessorProbability) {
         this(condition, BeginNode.begin(trueSuccessor), BeginNode.begin(falseSuccessor), trueSuccessorProbability);
     }
 
-    public static IfNode create(LogicNode condition, BeginNode trueSuccessor, BeginNode falseSuccessor, double trueSuccessorProbability) {
-        return new IfNode(condition, trueSuccessor, falseSuccessor, trueSuccessorProbability);
-    }
-
-    protected IfNode(LogicNode condition, BeginNode trueSuccessor, BeginNode falseSuccessor, double trueSuccessorProbability) {
+    public IfNode(LogicNode condition, BeginNode trueSuccessor, BeginNode falseSuccessor, double trueSuccessorProbability) {
         super(StampFactory.forVoid());
         this.condition = condition;
         this.falseSuccessor = falseSuccessor;
         this.trueSuccessor = trueSuccessor;
         setTrueSuccessorProbability(trueSuccessorProbability);
-
     }
 
     /**
@@ -167,7 +158,7 @@
             setTrueSuccessor(null);
             setFalseSuccessor(null);
             LogicNegationNode negation = (LogicNegationNode) condition();
-            IfNode newIfNode = graph().add(IfNode.create(negation.getValue(), falseSucc, trueSucc, 1 - trueSuccessorProbability));
+            IfNode newIfNode = graph().add(new IfNode(negation.getValue(), falseSucc, trueSucc, 1 - trueSuccessorProbability));
             predecessor().replaceFirstSuccessor(this, newIfNode);
             GraphUtil.killWithUnusedFloatingInputs(this);
             return;
@@ -293,7 +284,7 @@
                      */
                     if (lessThan2.getX() == lessThan.getX() && lessThan2.getY().stamp() instanceof IntegerStamp && ((IntegerStamp) lessThan2.getY().stamp()).isPositive() &&
                                     sameDestination(trueSuccessor(), ifNode2.falseSuccessor)) {
-                        below = graph().unique(IntegerBelowNode.create(lessThan2.getX(), lessThan2.getY()));
+                        below = graph().unique(new IntegerBelowNode(lessThan2.getX(), lessThan2.getY()));
                         // swap direction
                         BeginNode tmp = falseSucc;
                         falseSucc = trueSucc;
@@ -308,14 +299,14 @@
                         JavaConstant positive = lessThan2.getX().asJavaConstant();
                         if (positive != null && positive.asLong() > 0 && positive.asLong() < positive.getKind().getMaxValue()) {
                             ConstantNode newLimit = ConstantNode.forIntegerKind(positive.getKind(), positive.asLong() + 1, graph());
-                            below = graph().unique(IntegerBelowNode.create(lessThan.getX(), newLimit));
+                            below = graph().unique(new IntegerBelowNode(lessThan.getX(), newLimit));
                         }
                     }
                     if (below != null) {
                         ifNode2.setTrueSuccessor(null);
                         ifNode2.setFalseSuccessor(null);
 
-                        IfNode newIfNode = graph().add(IfNode.create(below, falseSucc, trueSucc, 1 - trueSuccessorProbability));
+                        IfNode newIfNode = graph().add(new IfNode(below, falseSucc, trueSucc, 1 - trueSuccessorProbability));
                         // Remove the < 0 test.
                         tool.deleteBranch(trueSuccessor);
                         graph().removeSplit(this, falseSuccessor);
@@ -552,7 +543,7 @@
                     }
                 }
             }
-            ReturnNode newReturn = graph().add(ReturnNode.create(value));
+            ReturnNode newReturn = graph().add(new ReturnNode(value));
             replaceAtPredecessor(newReturn);
             GraphUtil.killCFG(this);
             return true;
@@ -574,7 +565,7 @@
             return null;
         }
         if (trueValue.isConstant() && falseValue.isConstant()) {
-            return graph().unique(ConditionalNode.create(condition(), trueValue, falseValue));
+            return graph().unique(new ConditionalNode(condition(), trueValue, falseValue));
         } else {
             ConditionalNode conditional = null;
             ValueNode constant = null;
@@ -604,7 +595,7 @@
             if (otherValue.isConstant()) {
                 double shortCutProbability = probability(trueSuccessor());
                 LogicNode newCondition = LogicNode.or(condition(), negateCondition, conditional.condition(), negateConditionalCondition, shortCutProbability);
-                return graph().unique(ConditionalNode.create(newCondition, constant, otherValue));
+                return graph().unique(new ConditionalNode(newCondition, constant, otherValue));
             }
         }
         return null;
@@ -859,9 +850,9 @@
             } else {
                 // Need a new phi in case the frame state is used by more than the merge being
                 // removed
-                MergeNode newMerge = graph().add(MergeNode.create());
+                MergeNode newMerge = graph().add(new MergeNode());
                 PhiNode oldPhi = (PhiNode) oldMerge.usages().first();
-                PhiNode newPhi = graph().addWithoutUnique(ValuePhiNode.create(oldPhi.stamp(), newMerge));
+                PhiNode newPhi = graph().addWithoutUnique(new ValuePhiNode(oldPhi.stamp(), newMerge));
 
                 for (AbstractEndNode end : ends) {
                     newPhi.addInput(phiValues.get(end));
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,12 +34,7 @@
 
     @Input protected ValueNode computedAddress;
 
-    public static IndirectCallTargetNode create(ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target,
-                    CallingConvention.Type callType, InvokeKind invokeKind) {
-        return new IndirectCallTargetNode(computedAddress, arguments, returnStamp, signature, target, callType, invokeKind);
-    }
-
-    protected IndirectCallTargetNode(ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType,
+    public IndirectCallTargetNode(ValueNode computedAddress, List arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType,
                     InvokeKind invokeKind) {
         super(arguments, returnStamp, signature, target, callType, invokeKind);
         this.computedAddress = computedAddress;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -46,32 +46,11 @@
     protected boolean polymorphic;
     protected boolean useForInlining;
 
-    /**
-     * Constructs a new Invoke instruction.
-     *
-     * @param callTarget the target method being called
-     * @param bci the bytecode index of the original invoke (used for debug infos)
-     */
-    public static InvokeNode create(CallTargetNode callTarget, int bci) {
-        return new InvokeNode(callTarget, bci);
-    }
-
-    protected InvokeNode(CallTargetNode callTarget, int bci) {
+    public InvokeNode(CallTargetNode callTarget, int bci) {
         this(callTarget, bci, callTarget.returnStamp());
     }
 
-    /**
-     * Constructs a new Invoke instruction.
-     *
-     * @param callTarget the target method being called
-     * @param bci the bytecode index of the original invoke (used for debug infos)
-     * @param stamp the stamp to be used for this value
-     */
-    public static InvokeNode create(CallTargetNode callTarget, int bci, Stamp stamp) {
-        return new InvokeNode(callTarget, bci, stamp);
-    }
-
-    protected InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp) {
+    public InvokeNode(CallTargetNode callTarget, int bci, Stamp stamp) {
         super(stamp);
         this.callTarget = callTarget;
         this.bci = bci;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -48,11 +48,7 @@
     protected boolean useForInlining;
     protected double exceptionProbability;
 
-    public static InvokeWithExceptionNode create(CallTargetNode callTarget, BeginNode exceptionEdge, int bci) {
-        return new InvokeWithExceptionNode(callTarget, exceptionEdge, bci);
-    }
-
-    protected InvokeWithExceptionNode(CallTargetNode callTarget, BeginNode exceptionEdge, int bci) {
+    public InvokeWithExceptionNode(CallTargetNode callTarget, BeginNode exceptionEdge, int bci) {
         super(callTarget.returnStamp());
         this.exceptionEdge = exceptionEdge;
         this.bci = bci;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 
     protected LocationIdentity locationIdentity;
 
-    public static KillingBeginNode create(LocationIdentity locationIdentity) {
-        return new KillingBeginNode(locationIdentity);
-    }
-
-    protected KillingBeginNode(LocationIdentity locationIdentity) {
+    public KillingBeginNode(LocationIdentity locationIdentity) {
         this.locationIdentity = locationIdentity;
     }
 
@@ -43,7 +39,7 @@
         if (with instanceof KillingBeginNode) {
             return (KillingBeginNode) with;
         }
-        KillingBeginNode begin = with.graph().add(KillingBeginNode.create(locationIdentity));
+        KillingBeginNode begin = with.graph().add(new KillingBeginNode(locationIdentity));
         begin.setNext(with);
         return begin;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,11 +34,7 @@
 
     protected final boolean value;
 
-    public static LogicConstantNode create(boolean value) {
-        return new LogicConstantNode(value);
-    }
-
-    protected LogicConstantNode(boolean value) {
+    public LogicConstantNode(boolean value) {
         super();
         this.value = value;
     }
@@ -51,7 +47,7 @@
      * @return a node representing the boolean
      */
     public static LogicConstantNode forBoolean(boolean v, Graph graph) {
-        return graph.unique(LogicConstantNode.create(v));
+        return graph.unique(new LogicConstantNode(v));
     }
 
     /**
@@ -61,7 +57,7 @@
      * @return a node representing the boolean
      */
     public static LogicConstantNode forBoolean(boolean v) {
-        return LogicConstantNode.create(v);
+        return new LogicConstantNode(v);
     }
 
     /**
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -33,11 +33,7 @@
 
     @Input(InputType.Condition) LogicNode value;
 
-    public static LogicNegationNode create(LogicNode value) {
-        return new LogicNegationNode(value);
-    }
-
-    protected LogicNegationNode(LogicNode value) {
+    public LogicNegationNode(LogicNode value) {
         this.value = value;
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -41,8 +41,8 @@
 
     public static LogicNode and(LogicNode a, boolean negateA, LogicNode b, boolean negateB, double shortCircuitProbability) {
         StructuredGraph graph = a.graph();
-        ShortCircuitOrNode notAorNotB = graph.unique(ShortCircuitOrNode.create(a, !negateA, b, !negateB, shortCircuitProbability));
-        return graph.unique(LogicNegationNode.create(notAorNotB));
+        ShortCircuitOrNode notAorNotB = graph.unique(new ShortCircuitOrNode(a, !negateA, b, !negateB, shortCircuitProbability));
+        return graph.unique(new LogicNegationNode(notAorNotB));
     }
 
     public static LogicNode or(LogicNode a, LogicNode b, double shortCircuitProbability) {
@@ -50,6 +50,6 @@
     }
 
     public static LogicNode or(LogicNode a, boolean negateA, LogicNode b, boolean negateB, double shortCircuitProbability) {
-        return a.graph().unique(ShortCircuitOrNode.create(a, negateA, b, negateB, shortCircuitProbability));
+        return a.graph().unique(new ShortCircuitOrNode(a, negateA, b, negateB, shortCircuitProbability));
     }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -44,11 +44,7 @@
     protected int unswitches;
     @OptionalInput(InputType.Guard) GuardingNode overflowGuard;
 
-    public static LoopBeginNode create() {
-        return new LoopBeginNode();
-    }
-
-    protected LoopBeginNode() {
+    public LoopBeginNode() {
         loopFrequency = 1;
     }
 
@@ -195,7 +191,7 @@
         for (LoopExitNode loopexit : loopExits().snapshot()) {
             loopexit.removeProxies();
             FrameState loopStateAfter = loopexit.stateAfter();
-            graph().replaceFixedWithFixed(loopexit, graph().add(BeginNode.create()));
+            graph().replaceFixedWithFixed(loopexit, graph().add(new BeginNode()));
             if (loopStateAfter != null && loopStateAfter.isAlive() && loopStateAfter.usages().isEmpty()) {
                 GraphUtil.killWithUnusedFloatingInputs(loopStateAfter);
             }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
     protected boolean canSafepoint;
     protected int endIndex;
 
-    public static LoopEndNode create(LoopBeginNode begin) {
-        return new LoopEndNode(begin);
-    }
-
-    protected LoopEndNode(LoopBeginNode begin) {
+    public LoopEndNode(LoopBeginNode begin) {
         int idx = begin.nextEndIndex();
         assert idx >= 0;
         this.endIndex = idx;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
 
     @Input(InputType.Association) LoopBeginNode loopBegin;
 
-    public static LoopExitNode create(LoopBeginNode loop) {
-        return new LoopExitNode(loop);
-    }
-
-    protected LoopExitNode(LoopBeginNode loop) {
+    public LoopExitNode(LoopBeginNode loop) {
         assert loop != null;
         loopBegin = loop;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -50,11 +50,7 @@
         return true;
     }
 
-    public static MemoryMapNode create(Map mmap) {
-        return new MemoryMapNode(mmap);
-    }
-
-    protected MemoryMapNode(Map mmap) {
+    public MemoryMapNode(Map mmap) {
         super(StampFactory.forVoid());
         locationIdentities = new ArrayList<>(mmap.keySet());
         nodes = new NodeInputList<>(this, mmap.values());
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,21 +37,13 @@
     @Input(InputType.Memory) NodeInputList values;
     protected final LocationIdentity locationIdentity;
 
-    public static MemoryPhiNode create(MergeNode merge, LocationIdentity locationIdentity) {
-        return new MemoryPhiNode(merge, locationIdentity);
-    }
-
-    protected MemoryPhiNode(MergeNode merge, LocationIdentity locationIdentity) {
+    public MemoryPhiNode(MergeNode merge, LocationIdentity locationIdentity) {
         super(StampFactory.forVoid(), merge);
         this.locationIdentity = locationIdentity;
         this.values = new NodeInputList<>(this);
     }
 
-    public static MemoryPhiNode create(MergeNode merge, LocationIdentity locationIdentity, ValueNode[] values) {
-        return new MemoryPhiNode(merge, locationIdentity, values);
-    }
-
-    protected MemoryPhiNode(MergeNode merge, LocationIdentity locationIdentity, ValueNode[] values) {
+    public MemoryPhiNode(MergeNode merge, LocationIdentity locationIdentity, ValueNode[] values) {
         super(StampFactory.forVoid(), merge);
         this.locationIdentity = locationIdentity;
         this.values = new NodeInputList<>(this, values);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public class MergeNode extends BeginStateSplitNode implements IterableNodeType, LIRLowerable {
-    public static MergeNode create() {
-        return new MergeNode();
-    }
-
-    protected MergeNode() {
+    public MergeNode() {
     }
 
     @Input(InputType.Association) protected NodeInputList ends = new NodeInputList<>(this);
@@ -175,9 +171,9 @@
                 }
                 AbstractEndNode newEnd;
                 if (merge instanceof LoopBeginNode) {
-                    newEnd = graph().add(LoopEndNode.create((LoopBeginNode) merge));
+                    newEnd = graph().add(new LoopEndNode((LoopBeginNode) merge));
                 } else {
-                    newEnd = graph().add(EndNode.create());
+                    newEnd = graph().add(new EndNode());
                     merge.addForwardEnd(newEnd);
                 }
                 for (PhiNode phi : merge.phis()) {
@@ -216,7 +212,7 @@
             ValuePhiNode returnValuePhi = returnNode.result() == null || !isPhiAtMerge(returnNode.result()) ? null : (ValuePhiNode) returnNode.result();
             List endNodes = forwardEnds().snapshot();
             for (AbstractEndNode end : endNodes) {
-                ReturnNode newReturn = graph().add(ReturnNode.create(returnValuePhi == null ? returnNode.result() : returnValuePhi.valueAt(end)));
+                ReturnNode newReturn = graph().add(new ReturnNode(returnValuePhi == null ? returnNode.result() : returnValuePhi.valueAt(end)));
                 if (tool != null) {
                     tool.addToWorkList(end.predecessor());
                 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -34,11 +34,7 @@
 @NodeInfo(nameTemplate = "Param({p#index})")
 public class ParameterNode extends AbstractLocalNode implements IterableNodeType, UncheckedInterfaceProvider {
 
-    public static ParameterNode create(int index, Stamp stamp) {
-        return new ParameterNode(index, stamp);
-    }
-
-    protected ParameterNode(int index, Stamp stamp) {
+    public ParameterNode(int index, Stamp stamp) {
         super(index, stamp);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -143,17 +143,13 @@
     @NodeInfo
     static class MultipleValuesNode extends ValueNode {
 
-        public static MultipleValuesNode create() {
-            return new MultipleValuesNode();
-        }
-
-        protected MultipleValuesNode() {
+        public MultipleValuesNode() {
             super(null);
         }
 
     }
 
-    public static final ValueNode MULTIPLE_VALUES = MultipleValuesNode.create();
+    public static final ValueNode MULTIPLE_VALUES = new MultipleValuesNode();
 
     /**
      * If all inputs are the same value, this value is returned, otherwise {@link #MULTIPLE_VALUES}.
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -44,11 +44,7 @@
         return length;
     }
 
-    public static PiArrayNode create(ValueNode object, ValueNode length, Stamp stamp) {
-        return new PiArrayNode(object, length, stamp);
-    }
-
-    protected PiArrayNode(ValueNode object, ValueNode length, Stamp stamp) {
+    public PiArrayNode(ValueNode object, ValueNode length, Stamp stamp) {
         super(object, stamp);
         this.length = length;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -51,31 +51,19 @@
         return object;
     }
 
-    public static PiNode create(ValueNode object, Stamp stamp) {
-        return new PiNode(object, stamp);
-    }
-
-    protected PiNode(ValueNode object, Stamp stamp) {
+    public PiNode(ValueNode object, Stamp stamp) {
         super(stamp);
         this.piStamp = stamp;
         this.object = object;
     }
 
-    public static PiNode create(ValueNode object, Stamp stamp, ValueNode anchor) {
-        return new PiNode(object, stamp, anchor);
-    }
-
-    protected PiNode(ValueNode object, Stamp stamp, ValueNode anchor) {
+    public PiNode(ValueNode object, Stamp stamp, ValueNode anchor) {
         super(stamp, (GuardingNode) anchor);
         this.object = object;
         this.piStamp = stamp;
     }
 
-    public static PiNode create(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) {
-        return new PiNode(object, toType, exactType, nonNull);
-    }
-
-    protected PiNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) {
+    public PiNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) {
         this(object, StampFactory.object(toType, exactType, nonNull || StampTool.isPointerNonNull(object.stamp()), true));
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -59,10 +59,10 @@
     }
 
     public static ValueProxyNode forValue(ValueNode value, BeginNode exit, StructuredGraph graph) {
-        return graph.unique(ValueProxyNode.create(value, exit));
+        return graph.unique(new ValueProxyNode(value, exit));
     }
 
     public static GuardProxyNode forGuard(GuardingNode value, BeginNode exit, StructuredGraph graph) {
-        return graph.unique(GuardProxyNode.create(value, exit));
+        return graph.unique(new GuardProxyNode(value, exit));
     }
 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -37,25 +37,11 @@
         return result;
     }
 
-    /**
-     * Constructs a new Return instruction.
-     *
-     * @param result the instruction producing the result for this return; {@code null} if this is a
-     *            void return
-     */
-    public static ReturnNode create(ValueNode result) {
-        return new ReturnNode(result);
-    }
-
-    protected ReturnNode(ValueNode result) {
+    public ReturnNode(ValueNode result) {
         this(result, null);
     }
 
-    public static ReturnNode create(ValueNode result, MemoryMapNode memoryMap) {
-        return new ReturnNode(result, memoryMap);
-    }
-
-    protected ReturnNode(ValueNode result, MemoryMapNode memoryMap) {
+    public ReturnNode(ValueNode result, MemoryMapNode memoryMap) {
         super(StampFactory.forVoid());
         this.result = result;
         this.memoryMap = memoryMap;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 @NodeInfo
 public class SafepointNode extends DeoptimizingFixedWithNextNode implements LIRLowerable {
 
-    public static SafepointNode create() {
-        return new SafepointNode();
-    }
-
-    protected SafepointNode() {
+    public SafepointNode() {
         super(StampFactory.forVoid());
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
     protected boolean yNegated;
     protected double shortCircuitProbability;
 
-    public static ShortCircuitOrNode create(LogicNode x, boolean xNegated, LogicNode y, boolean yNegated, double shortCircuitProbability) {
-        return new ShortCircuitOrNode(x, xNegated, y, yNegated, shortCircuitProbability);
-    }
-
-    protected ShortCircuitOrNode(LogicNode x, boolean xNegated, LogicNode y, boolean yNegated, double shortCircuitProbability) {
+    public ShortCircuitOrNode(LogicNode x, boolean xNegated, LogicNode y, boolean yNegated, double shortCircuitProbability) {
         this.x = x;
         this.xNegated = xNegated;
         this.y = y;
@@ -87,7 +83,7 @@
         }
 
         if (xCond != forX || yCond != forY) {
-            return ShortCircuitOrNode.create(xCond, xNeg, yCond, yNeg, shortCircuitProbability);
+            return new ShortCircuitOrNode(xCond, xNeg, yCond, yNeg, shortCircuitProbability);
         } else {
             return this;
         }
@@ -109,7 +105,7 @@
             if (isXNegated()) {
                 if (isYNegated()) {
                     // !a || !a = !a
-                    return LogicNegationNode.create(forX);
+                    return new LogicNegationNode(forX);
                 } else {
                     // !a || a = true
                     return LogicConstantNode.tautology();
@@ -129,7 +125,7 @@
                 return LogicConstantNode.tautology();
             } else {
                 if (isYNegated()) {
-                    return LogicNegationNode.create(forY);
+                    return new LogicNegationNode(forY);
                 } else {
                     return forY;
                 }
@@ -140,7 +136,7 @@
                 return LogicConstantNode.tautology();
             } else {
                 if (isXNegated()) {
-                    return LogicNegationNode.create(forX);
+                    return new LogicNegationNode(forX);
                 } else {
                     return forX;
                 }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 public class SimpleInfopointNode extends InfopointNode implements LIRLowerable, IterableNodeType, Simplifiable {
     protected BytecodePosition position;
 
-    public static SimpleInfopointNode create(InfopointReason reason, BytecodePosition position) {
-        return new SimpleInfopointNode(reason, position);
-    }
-
-    protected SimpleInfopointNode(InfopointReason reason, BytecodePosition position) {
+    public SimpleInfopointNode(InfopointReason reason, BytecodePosition position) {
         super(reason);
         this.position = position;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -31,11 +31,7 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public class StartNode extends BeginStateSplitNode implements MemoryCheckpoint.Single {
-    public static StartNode create() {
-        return new StartNode();
-    }
-
-    protected StartNode() {
+    public StartNode() {
     }
 
     @Override
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Mon Jan 12 21:24:26 2015 +0100
@@ -105,7 +105,7 @@
 
     private StructuredGraph(String name, ResolvedJavaMethod method, long graphId, int entryBCI) {
         super(name);
-        this.setStart(add(StartNode.create()));
+        this.setStart(add(new StartNode()));
         this.method = method;
         this.graphId = graphId;
         this.entryBCI = entryBCI;
@@ -392,7 +392,7 @@
         if (begin.forwardEndCount() == 1) { // bypass merge and remove
             reduceTrivialMerge(begin);
         } else { // convert to merge
-            MergeNode merge = this.add(MergeNode.create());
+            MergeNode merge = this.add(new MergeNode());
             this.replaceFixedWithFixed(begin, merge);
         }
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -55,11 +55,7 @@
             // Only null profiling is not beneficial enough to keep the node around.
             return object;
         }
-        return object.graph().addWithoutUnique(create(object, profile));
-    }
-
-    public static ValueNode create(ValueNode object, JavaTypeProfile profile) {
-        return new TypeProfileProxyNode(object, profile);
+        return object.graph().addWithoutUnique(new TypeProfileProxyNode(object, profile));
     }
 
     protected TypeProfileProxyNode(ValueNode value, JavaTypeProfile profile) {
@@ -97,7 +93,7 @@
             }
             if (newProfile != this.profile) {
                 Debug.log("Improved profile via other profile.");
-                return TypeProfileProxyNode.create(forValue, newProfile);
+                return new TypeProfileProxyNode(forValue, newProfile);
             }
         } else if (StampTool.typeOrNull(forValue) != null) {
             ResolvedJavaType type = StampTool.typeOrNull(forValue);
@@ -119,7 +115,7 @@
                     // Only null profiling is not beneficial enough to keep the node around.
                     return forValue;
                 }
-                return TypeProfileProxyNode.create(forValue, newProfile);
+                return new TypeProfileProxyNode(forValue, newProfile);
             }
         }
         return this;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -39,11 +39,7 @@
         return exception;
     }
 
-    public static UnwindNode create(ValueNode exception) {
-        return new UnwindNode(exception);
-    }
-
-    protected UnwindNode(ValueNode exception) {
+    public UnwindNode(ValueNode exception) {
         super(StampFactory.forVoid());
         assert exception == null || exception.getKind() == Kind.Object;
         this.exception = exception;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,34 +35,13 @@
 
     @Input protected NodeInputList values;
 
-    /**
-     * Create a value phi with the specified stamp.
-     *
-     * @param stamp the stamp of the value
-     * @param merge the merge that the new phi belongs to
-     */
-    public static ValuePhiNode create(Stamp stamp, MergeNode merge) {
-        return new ValuePhiNode(stamp, merge);
-    }
-
-    protected ValuePhiNode(Stamp stamp, MergeNode merge) {
+    public ValuePhiNode(Stamp stamp, MergeNode merge) {
         super(stamp, merge);
         assert stamp != StampFactory.forVoid();
         values = new NodeInputList<>(this);
     }
 
-    /**
-     * Create a value phi with the specified stamp and the given values.
-     *
-     * @param stamp the stamp of the value
-     * @param merge the merge that the new phi belongs to
-     * @param values the initial values of the phi
-     */
-    public static ValuePhiNode create(Stamp stamp, MergeNode merge, ValueNode[] values) {
-        return new ValuePhiNode(stamp, merge, values);
-    }
-
-    protected ValuePhiNode(Stamp stamp, MergeNode merge, ValueNode[] values) {
+    public ValuePhiNode(Stamp stamp, MergeNode merge, ValueNode[] values) {
         super(stamp, merge);
         assert stamp != StampFactory.forVoid();
         this.values = new NodeInputList<>(this, values);
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -32,11 +32,7 @@
 
     @Input ValueNode value;
 
-    public static ValueProxyNode create(ValueNode value, BeginNode proxyPoint) {
-        return new ValueProxyNode(value, proxyPoint);
-    }
-
-    protected ValueProxyNode(ValueNode value, BeginNode proxyPoint) {
+    public ValueProxyNode(ValueNode value, BeginNode proxyPoint) {
         super(value.stamp(), proxyPoint);
         this.value = value;
     }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
 @NodeInfo
 public class AbsNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode {
 
-    public static AbsNode create(ValueNode x) {
-        return new AbsNode(x);
-    }
-
-    protected AbsNode(ValueNode x) {
+    public AbsNode(ValueNode x) {
         super(ArithmeticOpTable::getAbs, x);
     }
 
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
 @NodeInfo(shortName = "+")
 public class AddNode extends BinaryArithmeticNode implements NarrowableArithmeticNode {
 
-    public static AddNode create(ValueNode x, ValueNode y) {
-        return new AddNode(x, y);
-    }
-
-    protected AddNode(ValueNode x, ValueNode y) {
+    public AddNode(ValueNode x, ValueNode y) {
         super(ArithmeticOpTable::getAdd, x, y);
     }
 
@@ -51,7 +47,7 @@
         }
 
         if (forX.isConstant() && !forY.isConstant()) {
-            return AddNode.create(forY, forX);
+            return new AddNode(forY, forX);
         }
         BinaryOp op = getOp(forX, forY);
         boolean associative = op.isAssociative();
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -36,11 +36,7 @@
 @NodeInfo(shortName = "&")
 public class AndNode extends BinaryArithmeticNode implements NarrowableArithmeticNode {
 
-    public static AndNode create(ValueNode x, ValueNode y) {
-        return new AndNode(x, y);
-    }
-
-    protected AndNode(ValueNode x, ValueNode y) {
+    public AndNode(ValueNode x, ValueNode y) {
         super(ArithmeticOpTable::getAnd, x, y);
     }
 
@@ -55,7 +51,7 @@
             return forX;
         }
         if (forX.isConstant() && !forY.isConstant()) {
-            return AndNode.create(forY, forX);
+            return new AndNode(forY, forX);
         }
         if (forY.isConstant()) {
             Constant c = forY.asConstant();
@@ -72,7 +68,7 @@
                 if (forX instanceof SignExtendNode) {
                     SignExtendNode ext = (SignExtendNode) forX;
                     if (rawY == ((1L << ext.getInputBits()) - 1)) {
-                        return ZeroExtendNode.create(ext.getValue(), ext.getResultBits());
+                        return new ZeroExtendNode(ext.getValue(), ext.getResultBits());
                     }
                 }
                 IntegerStamp xStamp = (IntegerStamp) forX.stamp();
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -74,27 +74,27 @@
     }
 
     public static AddNode add(StructuredGraph graph, ValueNode v1, ValueNode v2) {
-        return graph.unique(AddNode.create(v1, v2));
+        return graph.unique(new AddNode(v1, v2));
     }
 
     public static AddNode add(ValueNode v1, ValueNode v2) {
-        return AddNode.create(v1, v2);
+        return new AddNode(v1, v2);
     }
 
     public static MulNode mul(StructuredGraph graph, ValueNode v1, ValueNode v2) {
-        return graph.unique(MulNode.create(v1, v2));
+        return graph.unique(new MulNode(v1, v2));
     }
 
     public static MulNode mul(ValueNode v1, ValueNode v2) {
-        return MulNode.create(v1, v2);
+        return new MulNode(v1, v2);
     }
 
     public static SubNode sub(StructuredGraph graph, ValueNode v1, ValueNode v2) {
-        return graph.unique(SubNode.create(v1, v2));
+        return graph.unique(new SubNode(v1, v2));
     }
 
     public static SubNode sub(ValueNode v1, ValueNode v2) {
-        return SubNode.create(v1, v2);
+        return new SubNode(v1, v2);
     }
 
     private enum ReassociateMatch {
@@ -224,11 +224,11 @@
         } else if (node instanceof MulNode) {
             return BinaryArithmeticNode.mul(a, AddNode.mul(m1, m2));
         } else if (node instanceof AndNode) {
-            return AndNode.create(a, AndNode.create(m1, m2));
+            return new AndNode(a, new AndNode(m1, m2));
         } else if (node instanceof OrNode) {
-            return OrNode.create(a, OrNode.create(m1, m2));
+            return new OrNode(a, new OrNode(m1, m2));
         } else if (node instanceof XorNode) {
-            return XorNode.create(a, XorNode.create(m1, m2));
+            return new XorNode(a, new XorNode(m1, m2));
         } else {
             throw GraalInternalError.shouldNotReachHere();
         }
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -79,7 +79,7 @@
                     return conditionalNode.condition();
                 } else {
                     assert falseResult == true;
-                    return LogicNegationNode.create(conditionalNode.condition());
+                    return new LogicNegationNode(conditionalNode.condition());
 
                 }
             }
@@ -159,20 +159,20 @@
         CompareNode comparison;
         if (condition == Condition.EQ) {
             if (x.stamp() instanceof AbstractObjectStamp) {
-                comparison = ObjectEqualsNode.create(x, y);
+                comparison = new ObjectEqualsNode(x, y);
             } else if (x.stamp() instanceof AbstractPointerStamp) {
-                comparison = PointerEqualsNode.create(x, y);
+                comparison = new PointerEqualsNode(x, y);
             } else {
                 assert x.getKind().isNumericInteger();
-                comparison = IntegerEqualsNode.create(x, y);
+                comparison = new IntegerEqualsNode(x, y);
             }
         } else if (condition == Condition.LT) {
             assert x.getKind().isNumericInteger();
-            comparison = IntegerLessThanNode.create(x, y);
+            comparison = new IntegerLessThanNode(x, y);
         } else {
             assert condition == Condition.BT;
             assert x.getKind().isNumericInteger();
-            comparison = IntegerBelowNode.create(x, y);
+            comparison = new IntegerBelowNode(x, y);
         }
 
         return comparison;
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -48,19 +48,11 @@
         return condition;
     }
 
-    public static ConditionalNode create(LogicNode condition) {
-        return new ConditionalNode(condition);
-    }
-
-    protected ConditionalNode(LogicNode condition) {
+    public ConditionalNode(LogicNode condition) {
         this(condition, ConstantNode.forInt(1, condition.graph()), ConstantNode.forInt(0, condition.graph()));
     }
 
-    public static ConditionalNode create(LogicNode condition, ValueNode trueValue, ValueNode falseValue) {
-        return new ConditionalNode(condition, trueValue, falseValue);
-    }
-
-    protected ConditionalNode(LogicNode condition, ValueNode trueValue, ValueNode falseValue) {
+    public ConditionalNode(LogicNode condition, ValueNode trueValue, ValueNode falseValue) {
         super(trueValue.stamp().meet(falseValue.stamp()));
         assert trueValue.stamp().isCompatible(falseValue.stamp());
         this.condition = condition;
@@ -85,7 +77,7 @@
     public ValueNode canonical(CanonicalizerTool tool) {
         if (condition instanceof LogicNegationNode) {
             LogicNegationNode negated = (LogicNegationNode) condition;
-            return ConditionalNode.create(negated.getValue(), falseValue(), trueValue());
+            return new ConditionalNode(negated.getValue(), falseValue(), trueValue());
         }
 
         // this optimizes the case where a value that can only be 0 or 1 is materialized to 0 or 1
@@ -127,20 +119,12 @@
         generator.emitConditional(this);
     }
 
-    public static ConditionalNode create(@InjectedNodeParameter StructuredGraph graph, Condition condition, ValueNode x, ValueNode y) {
-        return new ConditionalNode(graph, condition, x, y);
-    }
-
-    protected ConditionalNode(StructuredGraph graph, Condition condition, ValueNode x, ValueNode y) {
+    public ConditionalNode(@InjectedNodeParameter StructuredGraph graph, Condition condition, ValueNode x, ValueNode y) {
         this(createCompareNode(graph, condition, x, y));
     }
 
-    public static ConditionalNode create(ValueNode type, ValueNode object) {
-        return new ConditionalNode(type, object);
-    }
-
-    protected ConditionalNode(ValueNode type, ValueNode object) {
-        this(type.graph().unique(InstanceOfDynamicNode.create(type, object)));
+    public ConditionalNode(ValueNode type, ValueNode object) {
+        this(type.graph().unique(new InstanceOfDynamicNode(type, object)));
     }
 
     @NodeIntrinsic
diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Mon Jan 12 21:12:24 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Mon Jan 12 21:24:26 2015 +0100
@@ -35,11 +35,7 @@
 @NodeInfo(shortName = "/")
 public class DivNode extends BinaryArithmeticNode
{ - public static DivNode create(ValueNode x, ValueNode y) { - return new DivNode(x, y); - } - - protected DivNode(ValueNode x, ValueNode y) { + public DivNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getDiv, x, y); } @@ -64,11 +60,11 @@ } ValueNode divResult = null; if (CodeUtil.isPowerOf2(i)) { - divResult = RightShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(i))); + divResult = new RightShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(i))); } if (divResult != null) { if (signFlip) { - return NegateNode.create(divResult); + return new NegateNode(divResult); } else { return divResult; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,11 +41,7 @@ protected final FloatConvert op; - public static FloatConvertNode create(FloatConvert op, ValueNode input) { - return new FloatConvertNode(op, input); - } - - protected FloatConvertNode(FloatConvert op, ValueNode input) { + public FloatConvertNode(FloatConvert op, ValueNode input) { super(table -> table.getFloatConvert(op), input); this.op = op; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,17 +33,7 @@ @NodeInfo(shortName = "==") public class FloatEqualsNode extends CompareNode { - /** - * Constructs a new floating point equality comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static FloatEqualsNode create(ValueNode x, ValueNode y) { - return new FloatEqualsNode(x, y); - } - - protected FloatEqualsNode(ValueNode x, ValueNode y) { + public FloatEqualsNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp() instanceof FloatStamp && y.stamp() instanceof FloatStamp : x.stamp() + " " + y.stamp(); assert x.stamp().isCompatible(y.stamp()); @@ -80,9 +70,9 @@ @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { if (newX.stamp() instanceof FloatStamp && newY.stamp() instanceof FloatStamp) { - return FloatEqualsNode.create(newX, newY); + return new FloatEqualsNode(newX, newY); } else if (newX.stamp() instanceof IntegerStamp && newY.stamp() instanceof IntegerStamp) { - return IntegerEqualsNode.create(newX, newY); + return new IntegerEqualsNode(newX, newY); } throw GraalInternalError.shouldNotReachHere(); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,19 +35,7 @@ protected final boolean unorderedIsTrue; - /** - * Constructs a new floating point comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - * @param unorderedIsTrue whether a comparison that is undecided (involving NaNs, etc.) leads to - * a "true" result - */ - public static FloatLessThanNode create(ValueNode x, ValueNode y, boolean unorderedIsTrue) { - return new FloatLessThanNode(x, y, unorderedIsTrue); - } - - protected FloatLessThanNode(ValueNode x, ValueNode y, boolean unorderedIsTrue) { + public FloatLessThanNode(ValueNode x, ValueNode y, boolean unorderedIsTrue) { super(x, y); assert x.stamp() instanceof FloatStamp && y.stamp() instanceof FloatStamp; assert x.stamp().isCompatible(y.stamp()); @@ -79,9 +67,9 @@ @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { if (newX.stamp() instanceof FloatStamp && newY.stamp() instanceof FloatStamp) { - return FloatLessThanNode.create(newX, newY, unorderedIsTrue); + return new FloatLessThanNode(newX, newY, unorderedIsTrue); } else if (newX.stamp() instanceof IntegerStamp && newY.stamp() instanceof IntegerStamp) { - return IntegerLessThanNode.create(newX, newY); + return new IntegerLessThanNode(newX, newY); } throw GraalInternalError.shouldNotReachHere(); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,17 +32,7 @@ @NodeInfo(shortName = "|<|") public class IntegerBelowNode extends CompareNode { - /** - * Constructs a new unsigned integer comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static IntegerBelowNode create(ValueNode x, ValueNode y) { - return new IntegerBelowNode(x, y); - } - - protected IntegerBelowNode(ValueNode x, ValueNode y) { + public IntegerBelowNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp() instanceof IntegerStamp; assert y.stamp() instanceof IntegerStamp; @@ -79,13 +69,13 @@ } if (forX.isConstant() && forX.asJavaConstant().asLong() == 0) { // 0 |<| y is the same as 0 != y - return LogicNegationNode.create(CompareNode.createCompareNode(Condition.EQ, forX, forY)); + return new LogicNegationNode(CompareNode.createCompareNode(Condition.EQ, forX, forY)); } return this; } @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { - return IntegerBelowNode.create(newX, newY); + return new IntegerBelowNode(newX, newY); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -120,13 +120,13 @@ if (toStamp.getBits() == fromStamp.getBits()) { result = input; } else if (toStamp.getBits() < fromStamp.getBits()) { - result = NarrowNode.create(input, fromStamp.getBits(), toStamp.getBits()); + result = new NarrowNode(input, fromStamp.getBits(), toStamp.getBits()); } else if (zeroExtend) { // toStamp.getBits() > fromStamp.getBits() - result = ZeroExtendNode.create(input, toStamp.getBits()); + result = new ZeroExtendNode(input, toStamp.getBits()); } else { // toStamp.getBits() > fromStamp.getBits() - result = SignExtendNode.create(input, toStamp.getBits()); + result = new SignExtendNode(input, toStamp.getBits()); } IntegerStamp resultStamp = (IntegerStamp) result.stamp(); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,11 +35,7 @@ @NodeInfo(shortName = "/") public class IntegerDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { - public static IntegerDivNode create(ValueNode x, ValueNode y) { - return new IntegerDivNode(x, y); - } - - protected IntegerDivNode(ValueNode x, ValueNode y) { + public IntegerDivNode(ValueNode x, ValueNode y) { super(IntegerStamp.OPS.getDiv().foldStamp(x.stamp(), y.stamp()), x, y); } @@ -63,7 +59,7 @@ return forX; } if (c == -1) { - return NegateNode.create(forX); + return new NegateNode(forX); } long abs = Math.abs(c); if (CodeUtil.isPowerOf2(abs) && forX.stamp() instanceof IntegerStamp) { @@ -73,13 +69,13 @@ // no rounding if dividend is positive or if its low bits are always 0 if (stampX.canBeNegative() || (stampX.upMask() & (abs - 1)) != 0) { int bits = PrimitiveStamp.getBits(stamp()); - RightShiftNode sign = RightShiftNode.create(forX, ConstantNode.forInt(bits - 1)); - UnsignedRightShiftNode round = UnsignedRightShiftNode.create(sign, ConstantNode.forInt(bits - log2)); + RightShiftNode sign = new RightShiftNode(forX, ConstantNode.forInt(bits - 1)); + UnsignedRightShiftNode round = new UnsignedRightShiftNode(sign, ConstantNode.forInt(bits - log2)); dividend = BinaryArithmeticNode.add(dividend, round); } - RightShiftNode shift = RightShiftNode.create(dividend, ConstantNode.forInt(log2)); + RightShiftNode shift = new RightShiftNode(dividend, ConstantNode.forInt(log2)); if (c < 0) { - return NegateNode.create(shift); + return new NegateNode(shift); } return shift; } @@ -92,7 +88,7 @@ IntegerRemNode integerRemNode = (IntegerRemNode) integerSubNode.getY(); if (integerSubNode.stamp().isCompatible(this.stamp()) && integerRemNode.stamp().isCompatible(this.stamp()) && integerSubNode.getX() == integerRemNode.getX() && forY == integerRemNode.getY()) { - return IntegerDivNode.create(integerSubNode.getX(), forY); + return new IntegerDivNode(integerSubNode.getX(), forY); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,17 +34,7 @@ @NodeInfo(shortName = "==") public class IntegerEqualsNode extends CompareNode { - /** - * Constructs a new integer equality comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static IntegerEqualsNode create(ValueNode x, ValueNode y) { - return new IntegerEqualsNode(x, y); - } - - protected IntegerEqualsNode(ValueNode x, ValueNode y) { + public IntegerEqualsNode(ValueNode x, ValueNode y) { super(x, y); assert !x.getKind().isNumericFloat() && x.getKind() != Kind.Object; assert !y.getKind().isNumericFloat() && y.getKind() != Kind.Object; @@ -68,9 +58,9 @@ ValueNode b = mirrored ? normalizeNode.getX() : normalizeNode.getY(); if (normalizeNode.getX().getKind() == Kind.Double || normalizeNode.getX().getKind() == Kind.Float) { - return FloatEqualsNode.create(a, b); + return new FloatEqualsNode(a, b); } else { - return IntegerEqualsNode.create(a, b); + return new IntegerEqualsNode(a, b); } } return this; @@ -79,9 +69,9 @@ @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { if (newX.stamp() instanceof FloatStamp && newY.stamp() instanceof FloatStamp) { - return FloatEqualsNode.create(newX, newY); + return new FloatEqualsNode(newX, newY); } else if (newX.stamp() instanceof IntegerStamp && newY.stamp() instanceof IntegerStamp) { - return IntegerEqualsNode.create(newX, newY); + return new IntegerEqualsNode(newX, newY); } throw GraalInternalError.shouldNotReachHere(); } @@ -101,7 +91,7 @@ if (constant instanceof PrimitiveConstant && ((PrimitiveConstant) constant).asLong() == 0) { if (nonConstant instanceof AndNode) { AndNode andNode = (AndNode) nonConstant; - return IntegerTestNode.create(andNode.getX(), andNode.getY()); + return new IntegerTestNode(andNode.getX(), andNode.getY()); } else if (nonConstant instanceof ShiftNode && nonConstant.stamp() instanceof IntegerStamp) { if (nonConstant instanceof LeftShiftNode) { LeftShiftNode shift = (LeftShiftNode) nonConstant; @@ -109,10 +99,10 @@ int mask = shift.getShiftAmountMask(); int amount = shift.getY().asJavaConstant().asInt() & mask; if (shift.getX().getKind() == Kind.Int) { - return IntegerTestNode.create(shift.getX(), ConstantNode.forInt(-1 >>> amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 >>> amount)); } else { assert shift.getX().getKind() == Kind.Long; - return IntegerTestNode.create(shift.getX(), ConstantNode.forLong(-1L >>> amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L >>> amount)); } } } else if (nonConstant instanceof RightShiftNode) { @@ -121,10 +111,10 @@ int mask = shift.getShiftAmountMask(); int amount = shift.getY().asJavaConstant().asInt() & mask; if (shift.getX().getKind() == Kind.Int) { - return IntegerTestNode.create(shift.getX(), ConstantNode.forInt(-1 << amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 << amount)); } else { assert shift.getX().getKind() == Kind.Long; - return IntegerTestNode.create(shift.getX(), ConstantNode.forLong(-1L << amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L << amount)); } } } else if (nonConstant instanceof UnsignedRightShiftNode) { @@ -133,10 +123,10 @@ int mask = shift.getShiftAmountMask(); int amount = shift.getY().asJavaConstant().asInt() & mask; if (shift.getX().getKind() == Kind.Int) { - return IntegerTestNode.create(shift.getX(), ConstantNode.forInt(-1 << amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forInt(-1 << amount)); } else { assert shift.getX().getKind() == Kind.Long; - return IntegerTestNode.create(shift.getX(), ConstantNode.forLong(-1L << amount)); + return new IntegerTestNode(shift.getX(), ConstantNode.forLong(-1L << amount)); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,17 +34,7 @@ @NodeInfo(shortName = "<") public class IntegerLessThanNode extends CompareNode { - /** - * Constructs a new integer comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static IntegerLessThanNode create(ValueNode x, ValueNode y) { - return new IntegerLessThanNode(x, y); - } - - protected IntegerLessThanNode(ValueNode x, ValueNode y) { + public IntegerLessThanNode(ValueNode x, ValueNode y) { super(x, y); assert !x.getKind().isNumericFloat() && x.getKind() != Kind.Object; assert !y.getKind().isNumericFloat() && y.getKind() != Kind.Object; @@ -69,9 +59,9 @@ ValueNode b = mirrored ? normalizeNode.getX() : normalizeNode.getY(); if (normalizeNode.getX().getKind() == Kind.Double || normalizeNode.getX().getKind() == Kind.Float) { - return FloatLessThanNode.create(a, b, mirrored ^ normalizeNode.isUnorderedLess); + return new FloatLessThanNode(a, b, mirrored ^ normalizeNode.isUnorderedLess); } else { - return IntegerLessThanNode.create(a, b); + return new IntegerLessThanNode(a, b); } } return this; @@ -96,7 +86,7 @@ } if (forX.stamp() instanceof IntegerStamp && forY.stamp() instanceof IntegerStamp) { if (IntegerStamp.sameSign((IntegerStamp) forX.stamp(), (IntegerStamp) forY.stamp())) { - return IntegerBelowNode.create(forX, forY); + return new IntegerBelowNode(forX, forY); } } return this; @@ -105,9 +95,9 @@ @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { if (newX.stamp() instanceof FloatStamp && newY.stamp() instanceof FloatStamp) { - return FloatLessThanNode.create(newX, newY, true); + return new FloatLessThanNode(newX, newY, true); } else if (newX.stamp() instanceof IntegerStamp && newY.stamp() instanceof IntegerStamp) { - return IntegerLessThanNode.create(newX, newY); + return new IntegerLessThanNode(newX, newY); } throw GraalInternalError.shouldNotReachHere(); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @NodeInfo(shortName = "%") public class IntegerRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { - public static IntegerRemNode create(ValueNode x, ValueNode y) { - return new IntegerRemNode(x, y); - } - - protected IntegerRemNode(ValueNode x, ValueNode y) { + public IntegerRemNode(ValueNode x, ValueNode y) { super(IntegerStamp.OPS.getRem().foldStamp(x.stamp(), y.stamp()), x, y); } @@ -59,7 +55,7 @@ if (c == 1 || c == -1) { return ConstantNode.forIntegerStamp(stamp(), 0); } else if (c > 0 && CodeUtil.isPowerOf2(c) && forX.stamp() instanceof IntegerStamp && ((IntegerStamp) forX.stamp()).isPositive()) { - return AndNode.create(forX, ConstantNode.forIntegerStamp(stamp(), c - 1)); + return new AndNode(forX, ConstantNode.forIntegerStamp(stamp(), c - 1)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,17 +35,7 @@ @NodeInfo public class IntegerTestNode extends BinaryOpLogicNode { - /** - * Constructs a new Test instruction. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static IntegerTestNode create(ValueNode x, ValueNode y) { - return new IntegerTestNode(x, y); - } - - protected IntegerTestNode(ValueNode x, ValueNode y) { + public IntegerTestNode(ValueNode x, ValueNode y) { super(x, y); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,16 +35,7 @@ @NodeInfo public class IsNullNode extends UnaryOpLogicNode implements LIRLowerable, Virtualizable, PiPushable { - /** - * Constructs a new IsNullNode instruction. - * - * @param object the instruction producing the object to check against null - */ - public static IsNullNode create(ValueNode object) { - return new IsNullNode(object); - } - - protected IsNullNode(ValueNode object) { + public IsNullNode(ValueNode object) { super(object); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @NodeInfo(shortName = "<<") public class LeftShiftNode extends ShiftNode { - public static LeftShiftNode create(ValueNode x, ValueNode y) { - return new LeftShiftNode(x, y); - } - - protected LeftShiftNode(ValueNode x, ValueNode y) { + public LeftShiftNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getShl, x, y); } @@ -66,19 +62,19 @@ if (total != (total & mask)) { return ConstantNode.forIntegerKind(getKind(), 0); } - return LeftShiftNode.create(other.getX(), ConstantNode.forInt(total)); + return new LeftShiftNode(other.getX(), ConstantNode.forInt(total)); } else if ((other instanceof RightShiftNode || other instanceof UnsignedRightShiftNode) && otherAmount == amount) { if (getKind() == Kind.Long) { - return AndNode.create(other.getX(), ConstantNode.forLong(-1L << amount)); + return new AndNode(other.getX(), ConstantNode.forLong(-1L << amount)); } else { assert getKind() == Kind.Int; - return AndNode.create(other.getX(), ConstantNode.forInt(-1 << amount)); + return new AndNode(other.getX(), ConstantNode.forInt(-1 << amount)); } } } } if (originalAmout != amount) { - return LeftShiftNode.create(forX, ConstantNode.forInt(amount)); + return new LeftShiftNode(forX, ConstantNode.forInt(amount)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,11 +36,7 @@ @NodeInfo(shortName = "*") public class MulNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { - public static MulNode create(ValueNode x, ValueNode y) { - return new MulNode(x, y); - } - - protected MulNode(ValueNode x, ValueNode y) { + public MulNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getMul, x, y); } @@ -52,7 +48,7 @@ } if (forX.isConstant() && !forY.isConstant()) { - return MulNode.create(forY, forX); + return new MulNode(forY, forX); } if (forY.isConstant()) { BinaryOp op = getOp(forX, forY); @@ -74,18 +70,18 @@ long bit2 = i - bit1; bit2 = bit2 & -bit2; // Extract 2nd bit if (CodeUtil.isPowerOf2(i)) { // - mulResult = LeftShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(i))); + mulResult = new LeftShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(i))); } else if (bit2 + bit1 == i) { // We can work with two shifts and add - ValueNode shift1 = LeftShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(bit1))); - ValueNode shift2 = LeftShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(bit2))); - mulResult = AddNode.create(shift1, shift2); + ValueNode shift1 = new LeftShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(bit1))); + ValueNode shift2 = new LeftShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(bit2))); + mulResult = new AddNode(shift1, shift2); } else if (CodeUtil.isPowerOf2(i + 1)) { // shift and subtract - ValueNode shift1 = LeftShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(i + 1))); - mulResult = SubNode.create(shift1, forX); + ValueNode shift1 = new LeftShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(i + 1))); + mulResult = new SubNode(shift1, forX); } if (mulResult != null) { if (signFlip) { - return NegateNode.create(mulResult); + return new NegateNode(mulResult); } else { return mulResult; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,17 +37,12 @@ @NodeInfo public class NarrowNode extends IntegerConvertNode { - public static NarrowNode create(ValueNode input, int resultBits) { - int inputBits = PrimitiveStamp.getBits(input.stamp()); - assert 0 < resultBits && resultBits <= inputBits; - return create(input, inputBits, resultBits); + public NarrowNode(ValueNode input, int resultBits) { + this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); + assert 0 < resultBits && resultBits <= PrimitiveStamp.getBits(input.stamp()); } - public static NarrowNode create(ValueNode input, int inputBits, int resultBits) { - return new NarrowNode(input, inputBits, resultBits); - } - - protected NarrowNode(ValueNode input, int inputBits, int resultBits) { + public NarrowNode(ValueNode input, int inputBits, int resultBits) { super(ArithmeticOpTable::getNarrow, ArithmeticOpTable::getSignExtend, inputBits, resultBits, input); } @@ -67,7 +62,7 @@ // zzzzzzzz yyyyxxxx -(narrow)-> yyyyxxxx -(narrow)-> xxxx // ==> zzzzzzzz yyyyxxxx -(narrow)-> xxxx NarrowNode other = (NarrowNode) forValue; - return NarrowNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new NarrowNode(other.getValue(), other.getInputBits(), getResultBits()); } else if (forValue instanceof IntegerConvertNode) { // SignExtendNode or ZeroExtendNode IntegerConvertNode other = (IntegerConvertNode) forValue; @@ -78,16 +73,16 @@ } else if (getResultBits() < other.getInputBits()) { // yyyyxxxx -(extend)-> zzzzzzzz yyyyxxxx -(narrow)-> xxxx // ==> yyyyxxxx -(narrow)-> xxxx - return NarrowNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new NarrowNode(other.getValue(), other.getInputBits(), getResultBits()); } else { if (other instanceof SignExtendNode) { // sxxx -(sign-extend)-> ssssssss sssssxxx -(narrow)-> sssssxxx // ==> sxxx -(sign-extend)-> sssssxxx - return SignExtendNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new SignExtendNode(other.getValue(), other.getInputBits(), getResultBits()); } else if (other instanceof ZeroExtendNode) { // xxxx -(zero-extend)-> 00000000 00000xxx -(narrow)-> 0000xxxx // ==> xxxx -(zero-extend)-> 0000xxxx - return ZeroExtendNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new ZeroExtendNode(other.getValue(), other.getInputBits(), getResultBits()); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,16 +36,7 @@ @NodeInfo public class NegateNode extends UnaryArithmeticNode implements NarrowableArithmeticNode { - /** - * Creates new NegateNode instance. - * - * @param value the instruction producing the value that is input to this instruction - */ - public static NegateNode create(ValueNode value) { - return new NegateNode(value); - } - - protected NegateNode(ValueNode value) { + public NegateNode(ValueNode value) { super(ArithmeticOpTable::getNeg, value); } @@ -60,7 +51,7 @@ } if (forValue instanceof SubNode) { SubNode sub = (SubNode) forValue; - return SubNode.create(sub.getY(), sub.getX()); + return new SubNode(sub.getY(), sub.getX()); } return this; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,19 +39,7 @@ protected final boolean isUnorderedLess; - /** - * Creates a new compare operation. - * - * @param x the first input - * @param y the second input - * @param isUnorderedLess true when an unordered floating point comparison is interpreted as - * less, false when greater. - */ - public static NormalizeCompareNode create(ValueNode x, ValueNode y, boolean isUnorderedLess) { - return new NormalizeCompareNode(x, y, isUnorderedLess); - } - - protected NormalizeCompareNode(ValueNode x, ValueNode y, boolean isUnorderedLess) { + public NormalizeCompareNode(ValueNode x, ValueNode y, boolean isUnorderedLess) { super(StampFactory.forKind(Kind.Int), x, y); this.isUnorderedLess = isUnorderedLess; } @@ -67,15 +55,15 @@ LogicNode equalComp; LogicNode lessComp; if (getX().stamp() instanceof FloatStamp) { - equalComp = graph().unique(FloatEqualsNode.create(getX(), getY())); - lessComp = graph().unique(FloatLessThanNode.create(getX(), getY(), isUnorderedLess)); + equalComp = graph().unique(new FloatEqualsNode(getX(), getY())); + lessComp = graph().unique(new FloatLessThanNode(getX(), getY(), isUnorderedLess)); } else { - equalComp = graph().unique(IntegerEqualsNode.create(getX(), getY())); - lessComp = graph().unique(IntegerLessThanNode.create(getX(), getY())); + equalComp = graph().unique(new IntegerEqualsNode(getX(), getY())); + lessComp = graph().unique(new IntegerLessThanNode(getX(), getY())); } - ConditionalNode equalValue = graph().unique(ConditionalNode.create(equalComp, ConstantNode.forInt(0, graph()), ConstantNode.forInt(1, graph()))); - ConditionalNode value = graph().unique(ConditionalNode.create(lessComp, ConstantNode.forInt(-1, graph()), equalValue)); + ConditionalNode equalValue = graph().unique(new ConditionalNode(equalComp, ConstantNode.forInt(0, graph()), ConstantNode.forInt(1, graph()))); + ConditionalNode value = graph().unique(new ConditionalNode(lessComp, ConstantNode.forInt(-1, graph()), equalValue)); graph().replaceFloating(this, value); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,16 +36,7 @@ @NodeInfo public class NotNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { - /** - * Creates new NotNode instance. - * - * @param x the instruction producing the value that is input to this instruction - */ - public static NotNode create(ValueNode x) { - return new NotNode(x); - } - - protected NotNode(ValueNode x) { + public NotNode(ValueNode x) { super(ArithmeticOpTable::getNot, x); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,17 +32,7 @@ @NodeInfo(shortName = "==") public class ObjectEqualsNode extends PointerEqualsNode implements Virtualizable { - /** - * Constructs a new object equality comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static ObjectEqualsNode create(ValueNode x, ValueNode y) { - return new ObjectEqualsNode(x, y); - } - - protected ObjectEqualsNode(ValueNode x, ValueNode y) { + public ObjectEqualsNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp() instanceof AbstractObjectStamp; assert y.stamp() instanceof AbstractObjectStamp; @@ -54,7 +44,7 @@ JavaConstant otherUnboxed = tool.getConstantReflectionProvider().unboxPrimitive(other.asJavaConstant()); if (otherUnboxed != null && otherUnboxed.getKind() == Kind.Boolean) { int expectedValue = otherUnboxed.asBoolean() ? 1 : 0; - IntegerEqualsNode equals = IntegerEqualsNode.create(state.getEntry(0), ConstantNode.forInt(expectedValue, graph())); + IntegerEqualsNode equals = new IntegerEqualsNode(state.getEntry(0), ConstantNode.forInt(expectedValue, graph())); tool.addNode(equals); tool.replaceWithValue(equals); } else { @@ -85,7 +75,7 @@ /* * One of the two objects has identity, the other doesn't. In code, this looks like * "Integer.valueOf(a) == new Integer(b)", which is always false. - * + * * In other words: an object created via valueOf can never be equal to one created * by new in the same compilation unit. */ @@ -98,7 +88,7 @@ // both are virtual without identity: check contents assert stateX.getVirtualObject().entryCount() == 1 && stateY.getVirtualObject().entryCount() == 1; assert stateX.getVirtualObject().entryKind(0).getStackKind() == Kind.Int || stateX.getVirtualObject().entryKind(0) == Kind.Long; - IntegerEqualsNode equals = IntegerEqualsNode.create(stateX.getEntry(0), stateY.getEntry(0)); + IntegerEqualsNode equals = new IntegerEqualsNode(stateX.getEntry(0), stateY.getEntry(0)); tool.addNode(equals); tool.replaceWithValue(equals); } @@ -113,9 +103,9 @@ @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { if (newX.stamp() instanceof ObjectStamp && newY.stamp() instanceof ObjectStamp) { - return ObjectEqualsNode.create(newX, newY); + return new ObjectEqualsNode(newX, newY); } else if (newX.stamp() instanceof AbstractPointerStamp && newY.stamp() instanceof AbstractPointerStamp) { - return PointerEqualsNode.create(newX, newY); + return new PointerEqualsNode(newX, newY); } throw GraalInternalError.shouldNotReachHere(); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,11 +36,7 @@ @NodeInfo(shortName = "|") public class OrNode extends BinaryArithmeticNode { - public static OrNode create(ValueNode x, ValueNode y) { - return new OrNode(x, y); - } - - protected OrNode(ValueNode x, ValueNode y) { + public OrNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getOr, x, y); } @@ -55,7 +51,7 @@ return forX; } if (forX.isConstant() && !forY.isConstant()) { - return create(forY, forX); + return new OrNode(forY, forX); } if (forY.isConstant()) { Constant c = forY.asConstant(); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,17 +32,7 @@ @NodeInfo(shortName = "==") public class PointerEqualsNode extends CompareNode { - /** - * Constructs a new pointer equality comparison node. - * - * @param x the instruction producing the first input to the instruction - * @param y the instruction that produces the second input to this instruction - */ - public static PointerEqualsNode create(ValueNode x, ValueNode y) { - return new PointerEqualsNode(x, y); - } - - protected PointerEqualsNode(ValueNode x, ValueNode y) { + public PointerEqualsNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp() instanceof AbstractPointerStamp; assert y.stamp() instanceof AbstractPointerStamp; @@ -65,15 +55,15 @@ } else if (forX.stamp().alwaysDistinct(forY.stamp())) { return LogicConstantNode.contradiction(); } else if (((AbstractPointerStamp) forX.stamp()).alwaysNull()) { - return IsNullNode.create(forY); + return new IsNullNode(forY); } else if (((AbstractPointerStamp) forY.stamp()).alwaysNull()) { - return IsNullNode.create(forX); + return new IsNullNode(forX); } return super.canonical(tool, forX, forY); } @Override protected CompareNode duplicateModified(ValueNode newX, ValueNode newY) { - return PointerEqualsNode.create(newX, newY); + return new PointerEqualsNode(newX, newY); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,19 +40,11 @@ @NodeInfo public class ReinterpretNode extends UnaryNode implements ArithmeticLIRLowerable { - public static ReinterpretNode create(Kind to, ValueNode value) { - return new ReinterpretNode(to, value); - } - - protected ReinterpretNode(Kind to, ValueNode value) { + public ReinterpretNode(Kind to, ValueNode value) { this(StampFactory.forKind(to), value); } - public static ReinterpretNode create(Stamp to, ValueNode value) { - return new ReinterpretNode(to, value); - } - - protected ReinterpretNode(Stamp to, ValueNode value) { + public ReinterpretNode(Stamp to, ValueNode value) { super(to, value); assert to instanceof ArithmeticStamp; } @@ -81,7 +73,7 @@ } if (forValue instanceof ReinterpretNode) { ReinterpretNode reinterpret = (ReinterpretNode) forValue; - return ReinterpretNode.create(stamp(), reinterpret.getValue()); + return new ReinterpretNode(stamp(), reinterpret.getValue()); } return this; } @@ -93,7 +85,7 @@ } public static ValueNode reinterpret(Kind toKind, ValueNode value) { - return value.graph().unique(ReinterpretNode.create(toKind, value)); + return value.graph().unique(new ReinterpretNode(toKind, value)); } @NodeIntrinsic diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @NodeInfo(shortName = "%") public class RemNode extends BinaryArithmeticNode implements Lowerable { - public static RemNode create(ValueNode x, ValueNode y) { - return new RemNode(x, y); - } - - protected RemNode(ValueNode x, ValueNode y) { + public RemNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getRem, x, y); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,11 +33,7 @@ @NodeInfo(shortName = ">>") public class RightShiftNode extends ShiftNode { - public static RightShiftNode create(ValueNode x, ValueNode y) { - return new RightShiftNode(x, y); - } - - protected RightShiftNode(ValueNode x, ValueNode y) { + public RightShiftNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getShr, x, y); } @@ -49,7 +45,7 @@ } if (forX.stamp() instanceof IntegerStamp && ((IntegerStamp) forX.stamp()).isPositive()) { - return UnsignedRightShiftNode.create(forX, forY); + return new UnsignedRightShiftNode(forX, forY); } if (forY.isConstant()) { @@ -82,14 +78,14 @@ * full shift for this kind */ assert total >= mask; - return RightShiftNode.create(other.getX(), ConstantNode.forInt(mask)); + return new RightShiftNode(other.getX(), ConstantNode.forInt(mask)); } - return RightShiftNode.create(other.getX(), ConstantNode.forInt(total)); + return new RightShiftNode(other.getX(), ConstantNode.forInt(total)); } } } if (originalAmout != amount) { - return RightShiftNode.create(forX, ConstantNode.forInt(amount)); + return new RightShiftNode(forX, ConstantNode.forInt(amount)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,17 +37,12 @@ @NodeInfo public class SignExtendNode extends IntegerConvertNode { - public static SignExtendNode create(ValueNode input, int resultBits) { - int inputBits = PrimitiveStamp.getBits(input.stamp()); - assert 0 < inputBits && inputBits <= resultBits; - return create(input, inputBits, resultBits); + public SignExtendNode(ValueNode input, int resultBits) { + this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); + assert 0 < PrimitiveStamp.getBits(input.stamp()) && PrimitiveStamp.getBits(input.stamp()) <= resultBits; } - public static SignExtendNode create(ValueNode input, int inputBits, int resultBits) { - return new SignExtendNode(input, inputBits, resultBits); - } - - protected SignExtendNode(ValueNode input, int inputBits, int resultBits) { + public SignExtendNode(ValueNode input, int inputBits, int resultBits) { super(ArithmeticOpTable::getSignExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); } @@ -67,13 +62,13 @@ // sxxx -(sign-extend)-> ssss sxxx -(sign-extend)-> ssssssss sssssxxx // ==> sxxx -(sign-extend)-> ssssssss sssssxxx SignExtendNode other = (SignExtendNode) forValue; - return SignExtendNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new SignExtendNode(other.getValue(), other.getInputBits(), getResultBits()); } else if (forValue instanceof ZeroExtendNode) { ZeroExtendNode other = (ZeroExtendNode) forValue; if (other.getResultBits() > other.getInputBits()) { // sxxx -(zero-extend)-> 0000 sxxx -(sign-extend)-> 00000000 0000sxxx // ==> sxxx -(zero-extend)-> 00000000 0000sxxx - return ZeroExtendNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new ZeroExtendNode(other.getValue(), other.getInputBits(), getResultBits()); } } @@ -82,7 +77,7 @@ if ((inputStamp.upMask() & (1L << (getInputBits() - 1))) == 0L) { // 0xxx -(sign-extend)-> 0000 0xxx // ==> 0xxx -(zero-extend)-> 0000 0xxx - return ZeroExtendNode.create(forValue, getInputBits(), getResultBits()); + return new ZeroExtendNode(forValue, getInputBits(), getResultBits()); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,11 +35,7 @@ @NodeInfo public class SqrtNode extends UnaryArithmeticNode implements ArithmeticLIRLowerable, NarrowableArithmeticNode { - public static SqrtNode create(ValueNode x) { - return new SqrtNode(x); - } - - protected SqrtNode(ValueNode x) { + public SqrtNode(ValueNode x) { super(ArithmeticOpTable::getSqrt, x); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,11 +36,7 @@ @NodeInfo(shortName = "-") public class SubNode extends BinaryArithmeticNode implements NarrowableArithmeticNode { - public static SubNode create(ValueNode x, ValueNode y) { - return new SubNode(x, y); - } - - protected SubNode(ValueNode x, ValueNode y) { + public SubNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getSub, x, y); } @@ -75,18 +71,18 @@ SubNode x = (SubNode) forX; if (x.getX() == forY) { // (a - b) - a - return NegateNode.create(x.getY()); + return new NegateNode(x.getY()); } } if (forY instanceof AddNode) { AddNode y = (AddNode) forY; if (y.getX() == forX) { // a - (a + b) - return NegateNode.create(y.getY()); + return new NegateNode(y.getY()); } if (y.getY() == forX) { // b - (a + b) - return NegateNode.create(y.getX()); + return new NegateNode(y.getX()); } } else if (forY instanceof SubNode) { SubNode y = (SubNode) forY; @@ -123,7 +119,7 @@ * have to test for the neutral element of +, because we are doing this * transformation: 0 - x == (-x) + 0 == -x. */ - return NegateNode.create(forY); + return new NegateNode(forY); } if (associative) { return reassociate(this, ValueNode.isConstantPredicate(), forX, forY); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @NodeInfo(shortName = "|/|") public class UnsignedDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable { - public static UnsignedDivNode create(ValueNode x, ValueNode y) { - return new UnsignedDivNode(x, y); - } - - protected UnsignedDivNode(ValueNode x, ValueNode y) { + public UnsignedDivNode(ValueNode x, ValueNode y) { super(x.stamp().unrestricted(), x, y); } @@ -54,7 +50,7 @@ return forX; } if (CodeUtil.isPowerOf2(c)) { - return UnsignedRightShiftNode.create(forX, ConstantNode.forInt(CodeUtil.log2(c))); + return new UnsignedRightShiftNode(forX, ConstantNode.forInt(CodeUtil.log2(c))); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @NodeInfo(shortName = "|%|") public class UnsignedRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable { - public static UnsignedRemNode create(ValueNode x, ValueNode y) { - return new UnsignedRemNode(x, y); - } - - protected UnsignedRemNode(ValueNode x, ValueNode y) { + public UnsignedRemNode(ValueNode x, ValueNode y) { super(x.stamp().unrestricted(), x, y); } @@ -53,7 +49,7 @@ if (c == 1) { return ConstantNode.forIntegerStamp(stamp(), 0); } else if (CodeUtil.isPowerOf2(c)) { - return AndNode.create(forX, ConstantNode.forIntegerStamp(stamp(), c - 1)); + return new AndNode(forX, ConstantNode.forIntegerStamp(stamp(), c - 1)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @NodeInfo(shortName = ">>>") public class UnsignedRightShiftNode extends ShiftNode { - public static UnsignedRightShiftNode create(ValueNode x, ValueNode y) { - return new UnsignedRightShiftNode(x, y); - } - - protected UnsignedRightShiftNode(ValueNode x, ValueNode y) { + public UnsignedRightShiftNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getUShr, x, y); } @@ -66,19 +62,19 @@ if (total != (total & mask)) { return ConstantNode.forIntegerKind(getKind(), 0); } - return UnsignedRightShiftNode.create(other.getX(), ConstantNode.forInt(total)); + return new UnsignedRightShiftNode(other.getX(), ConstantNode.forInt(total)); } else if (other instanceof LeftShiftNode && otherAmount == amount) { if (getKind() == Kind.Long) { - return AndNode.create(other.getX(), ConstantNode.forLong(-1L >>> amount)); + return new AndNode(other.getX(), ConstantNode.forLong(-1L >>> amount)); } else { assert getKind() == Kind.Int; - return AndNode.create(other.getX(), ConstantNode.forInt(-1 >>> amount)); + return new AndNode(other.getX(), ConstantNode.forInt(-1 >>> amount)); } } } } if (originalAmout != amount) { - return UnsignedRightShiftNode.create(forX, ConstantNode.forInt(amount)); + return new UnsignedRightShiftNode(forX, ConstantNode.forInt(amount)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,11 +36,7 @@ @NodeInfo(shortName = "^") public class XorNode extends BinaryArithmeticNode { - public static XorNode create(ValueNode x, ValueNode y) { - return new XorNode(x, y); - } - - protected XorNode(ValueNode x, ValueNode y) { + public XorNode(ValueNode x, ValueNode y) { super(ArithmeticOpTable::getXor, x, y); assert x.stamp().isCompatible(y.stamp()); } @@ -56,7 +52,7 @@ return ConstantNode.forPrimitive(stamp(), getOp(forX, forY).getZero(forX.stamp())); } if (forX.isConstant() && !forY.isConstant()) { - return XorNode.create(forY, forX); + return new XorNode(forY, forX); } if (forY.isConstant()) { Constant c = forY.asConstant(); @@ -68,7 +64,7 @@ long rawY = ((PrimitiveConstant) c).asLong(); long mask = CodeUtil.mask(PrimitiveStamp.getBits(stamp())); if ((rawY & mask) == mask) { - return NotNode.create(forX); + return new NotNode(forX); } } return reassociate(this, ValueNode.isConstantPredicate(), forX, forY); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,17 +39,12 @@ @NodeInfo public class ZeroExtendNode extends IntegerConvertNode { - public static ZeroExtendNode create(ValueNode input, int resultBits) { - int inputBits = PrimitiveStamp.getBits(input.stamp()); - assert 0 < inputBits && inputBits <= resultBits; - return create(input, inputBits, resultBits); + public ZeroExtendNode(ValueNode input, int resultBits) { + this(input, PrimitiveStamp.getBits(input.stamp()), resultBits); + assert 0 < PrimitiveStamp.getBits(input.stamp()) && PrimitiveStamp.getBits(input.stamp()) <= resultBits; } - public static ZeroExtendNode create(ValueNode input, int inputBits, int resultBits) { - return new ZeroExtendNode(input, inputBits, resultBits); - } - - protected ZeroExtendNode(ValueNode input, int inputBits, int resultBits) { + public ZeroExtendNode(ValueNode input, int inputBits, int resultBits) { super(ArithmeticOpTable::getZeroExtend, ArithmeticOpTable::getNarrow, inputBits, resultBits, input); } @@ -82,7 +77,7 @@ // xxxx -(zero-extend)-> 0000 xxxx -(zero-extend)-> 00000000 0000xxxx // ==> xxxx -(zero-extend)-> 00000000 0000xxxx ZeroExtendNode other = (ZeroExtendNode) forValue; - return ZeroExtendNode.create(other.getValue(), other.getInputBits(), getResultBits()); + return new ZeroExtendNode(other.getValue(), other.getInputBits(), getResultBits()); } if (forValue instanceof NarrowNode) { NarrowNode narrow = (NarrowNode) forValue; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,11 +44,7 @@ protected final String group; protected final boolean withContext; - public static DynamicCounterNode create(String name, String group, ValueNode increment, boolean withContext) { - return new DynamicCounterNode(name, group, increment, withContext); - } - - protected DynamicCounterNode(String name, String group, ValueNode increment, boolean withContext) { + public DynamicCounterNode(String name, String group, ValueNode increment, boolean withContext) { super(StampFactory.forVoid()); this.name = name; this.group = group; @@ -79,7 +75,7 @@ public static void addCounterBefore(String group, String name, long increment, boolean withContext, FixedNode position) { StructuredGraph graph = position.graph(); - graph.addBeforeFixed(position, position.graph().add(DynamicCounterNode.create(name, group, ConstantNode.forLong(increment, position.graph()), withContext))); + graph.addBeforeFixed(position, position.graph().add(new DynamicCounterNode(name, group, ConstantNode.forLong(increment, position.graph()), withContext))); } @NodeIntrinsic diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @NodeInfo public class VerifyHeapNode extends FixedWithNextNode implements Lowerable { - public static VerifyHeapNode create() { - return new VerifyHeapNode(); - } - - protected VerifyHeapNode() { + public VerifyHeapNode() { super(StampFactory.forVoid()); } @@ -49,12 +45,12 @@ public static void addBefore(FixedNode position) { StructuredGraph graph = position.graph(); - graph.addBeforeFixed(position, graph.add(VerifyHeapNode.create())); + graph.addBeforeFixed(position, graph.add(new VerifyHeapNode())); } public static void addAfter(FixedWithNextNode position) { StructuredGraph graph = position.graph(); - graph.addAfterFixed(position, graph.add(VerifyHeapNode.create())); + graph.addAfterFixed(position, graph.add(new VerifyHeapNode())); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @Input ValueNode checkedValue; - public static WeakCounterNode create(String group, String name, ValueNode increment, boolean addContext, ValueNode checkedValue) { - return new WeakCounterNode(group, name, increment, addContext, checkedValue); - } - - protected WeakCounterNode(String group, String name, ValueNode increment, boolean addContext, ValueNode checkedValue) { + public WeakCounterNode(String group, String name, ValueNode increment, boolean addContext, ValueNode checkedValue) { super(group, name, increment, addContext); this.checkedValue = checkedValue; } @@ -65,7 +61,7 @@ public static void addCounterBefore(String group, String name, long increment, boolean addContext, ValueNode checkedValue, FixedNode position) { StructuredGraph graph = position.graph(); - WeakCounterNode counter = graph.add(WeakCounterNode.create(name, group, ConstantNode.forLong(increment, graph), addContext, checkedValue)); + WeakCounterNode counter = graph.add(new WeakCounterNode(name, group, ConstantNode.forLong(increment, graph), addContext, checkedValue)); graph.addBeforeFixed(position, counter); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -24,7 +24,6 @@ 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.*; @@ -50,17 +49,9 @@ return (LocationNode) y; } - public static AddLocationNode create(LocationNode x, LocationNode y, Graph graph) { + public AddLocationNode(LocationNode x, LocationNode y) { + super(StampFactory.forVoid()); assert x.getLocationIdentity().equals(y.getLocationIdentity()); - return graph.unique(AddLocationNode.create(x, y)); - } - - public static AddLocationNode create(ValueNode x, ValueNode y) { - return new AddLocationNode(x, y); - } - - protected AddLocationNode(ValueNode x, ValueNode y) { - super(StampFactory.forVoid()); this.x = x; this.y = y; } @@ -83,7 +74,7 @@ if (xIdx.getIndexScaling() == yIdx.getIndexScaling()) { long displacement = xIdx.getDisplacement() + yIdx.getDisplacement(); ValueNode index = BinaryArithmeticNode.add(xIdx.getIndex(), yIdx.getIndex()); - return IndexedLocationNode.create(getLocationIdentity(), displacement, index, xIdx.getIndexScaling()); + return new IndexedLocationNode(getLocationIdentity(), displacement, index, xIdx.getIndexScaling()); } } return this; @@ -92,15 +83,15 @@ private LocationNode canonical(ConstantLocationNode constant, LocationNode other) { if (other instanceof ConstantLocationNode) { ConstantLocationNode otherConst = (ConstantLocationNode) other; - return ConstantLocationNode.create(getLocationIdentity(), otherConst.getDisplacement() + constant.getDisplacement()); + return new ConstantLocationNode(getLocationIdentity(), otherConst.getDisplacement() + constant.getDisplacement()); } else if (other instanceof IndexedLocationNode) { IndexedLocationNode otherIdx = (IndexedLocationNode) other; - return IndexedLocationNode.create(getLocationIdentity(), otherIdx.getDisplacement() + constant.getDisplacement(), otherIdx.getIndex(), otherIdx.getIndexScaling()); + return new IndexedLocationNode(getLocationIdentity(), otherIdx.getDisplacement() + constant.getDisplacement(), otherIdx.getIndex(), otherIdx.getIndexScaling()); } else if (other instanceof AddLocationNode) { AddLocationNode otherAdd = (AddLocationNode) other; LocationNode newInner = otherAdd.canonical(constant, otherAdd.getX()); if (newInner != otherAdd) { - return AddLocationNode.create(newInner, otherAdd.getY()); + return new AddLocationNode(newInner, otherAdd.getY()); } } return this; @@ -116,7 +107,4 @@ public IntegerStamp getDisplacementStamp() { return (IntegerStamp) IntegerStamp.OPS.getAdd().foldStamp(getX().getDisplacementStamp(), getY().getDisplacementStamp()); } - - @NodeIntrinsic - public static native Location addLocation(Location x, Location y); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,11 +44,7 @@ protected final Kind boxingKind; - public static BoxNode create(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) { - return new BoxNode(value, resultType, boxingKind); - } - - protected BoxNode(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) { + public BoxNode(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) { super(StampFactory.exactNonNull(resultType), value); this.boxingKind = boxingKind; } @@ -76,7 +72,7 @@ ValueNode v = tool.getReplacedValue(getValue()); ResolvedJavaType type = StampTool.typeOrNull(stamp()); - VirtualBoxingNode newVirtual = VirtualBoxingNode.create(type, boxingKind); + VirtualBoxingNode newVirtual = new VirtualBoxingNode(type, boxingKind); assert newVirtual.getFields().length == 1; tool.createVirtualObject(newVirtual, new ValueNode[]{v}, Collections. emptyList()); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -53,11 +53,7 @@ @Input ValueNode probability; @Input ValueNode condition; - public static BranchProbabilityNode create(ValueNode probability, ValueNode condition) { - return new BranchProbabilityNode(probability, condition); - } - - protected BranchProbabilityNode(ValueNode probability, ValueNode condition) { + public BranchProbabilityNode(ValueNode probability, ValueNode condition) { super(condition.stamp()); this.probability = probability; this.condition = condition; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,11 +39,7 @@ protected final Class exceptionClass; @Input NodeInputList arguments; - public static BytecodeExceptionNode create(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { - return new BytecodeExceptionNode(metaAccess, exceptionClass, arguments); - } - - protected BytecodeExceptionNode(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { + public BytecodeExceptionNode(MetaAccessProvider metaAccess, Class exceptionClass, ValueNode... arguments) { super(StampFactory.exactNonNull(metaAccess.lookupJavaType(exceptionClass))); this.exceptionClass = exceptionClass; this.arguments = new NodeInputList<>(this, arguments); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -43,11 +43,7 @@ return (LocationNode) location; } - public static ComputeAddressNode create(ValueNode object, ValueNode location, Stamp stamp) { - return new ComputeAddressNode(object, location, stamp); - } - - protected ComputeAddressNode(ValueNode object, ValueNode location, Stamp stamp) { + public ComputeAddressNode(ValueNode object, ValueNode location, Stamp stamp) { super(stamp); this.object = object; this.location = location; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -24,7 +24,6 @@ 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.*; @@ -39,15 +38,7 @@ protected final LocationIdentity locationIdentity; protected final long displacement; - public static ConstantLocationNode create(LocationIdentity identity, long displacement, Graph graph) { - return graph.unique(ConstantLocationNode.create(identity, displacement)); - } - - public static ConstantLocationNode create(LocationIdentity identity, long displacement) { - return new ConstantLocationNode(identity, displacement); - } - - protected ConstantLocationNode(LocationIdentity identity, long displacement) { + public ConstantLocationNode(LocationIdentity identity, long displacement) { super(StampFactory.forVoid()); this.locationIdentity = identity; this.displacement = displacement; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,14 +36,9 @@ return object; } - public static FixedValueAnchorNode create(ValueNode object) { - return new FixedValueAnchorNode(object); - } - - protected FixedValueAnchorNode(ValueNode object) { + public FixedValueAnchorNode(ValueNode object) { super(StampFactory.forNodeIntrinsic()); this.object = object; - } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,27 +39,15 @@ @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess; - public static FloatingReadNode create(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp) { - return new FloatingReadNode(object, location, lastLocationAccess, stamp); - } - - protected FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp) { + public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp) { this(object, location, lastLocationAccess, stamp, null, BarrierType.NONE); } - public static FloatingReadNode create(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard) { - return new FloatingReadNode(object, location, lastLocationAccess, stamp, guard); - } - - protected FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard) { + public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard) { this(object, location, lastLocationAccess, stamp, guard, BarrierType.NONE); } - public static FloatingReadNode create(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - return new FloatingReadNode(object, location, lastLocationAccess, stamp, guard, barrierType); - } - - protected FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + public FloatingReadNode(ValueNode object, LocationNode location, MemoryNode lastLocationAccess, Stamp stamp, GuardingNode guard, BarrierType barrierType) { super(object, location, stamp, guard, barrierType); this.lastLocationAccess = lastLocationAccess; } @@ -83,14 +71,14 @@ @Override public Node canonical(CanonicalizerTool tool) { if (object() instanceof PiNode && ((PiNode) object()).getGuard() == getGuard()) { - return FloatingReadNode.create(((PiNode) object()).getOriginalNode(), location(), getLastLocationAccess(), stamp(), getGuard(), getBarrierType()); + return new FloatingReadNode(((PiNode) object()).getOriginalNode(), location(), getLastLocationAccess(), stamp(), getGuard(), getBarrierType()); } return ReadNode.canonicalizeRead(this, location(), object(), tool); } @Override public FixedAccessNode asFixedNode() { - return graph().add(ReadNode.create(object(), accessLocation(), stamp(), getGuard(), getBarrierType())); + return graph().add(new ReadNode(object(), accessLocation(), stamp(), getGuard(), getBarrierType())); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -45,41 +45,25 @@ protected final ForeignCallDescriptor descriptor; protected int bci = BytecodeFrame.UNKNOWN_BCI; - public static ForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { - return new ForeignCallNode(foreignCalls, descriptor, arguments); - } - - protected ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { + public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, ValueNode... arguments) { super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); this.arguments = new NodeInputList<>(this, arguments); this.descriptor = descriptor; this.foreignCalls = foreignCalls; } - public static ForeignCallNode create(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, List arguments) { - return new ForeignCallNode(foreignCalls, descriptor, arguments); - } - - protected ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, List arguments) { + public ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, List arguments) { this(foreignCalls, descriptor, StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType())), arguments); } - public static ForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp, List arguments) { - return new ForeignCallNode(foreignCalls, descriptor, stamp, arguments); - } - - protected ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp, List arguments) { + public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp, List arguments) { super(stamp); this.arguments = new NodeInputList<>(this, arguments); this.descriptor = descriptor; this.foreignCalls = foreignCalls; } - public static ForeignCallNode create(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) { - return new ForeignCallNode(foreignCalls, descriptor, stamp); - } - - protected ForeignCallNode(ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) { + public ForeignCallNode(@InjectedNodeParameter ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) { super(stamp); this.arguments = new NodeInputList<>(this); this.descriptor = descriptor; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -63,15 +63,7 @@ return indexScaling; } - public static IndexedLocationNode create(LocationIdentity identity, long displacement, ValueNode index, Graph graph, int indexScaling) { - return graph.unique(IndexedLocationNode.create(identity, displacement, index, indexScaling)); - } - - public static IndexedLocationNode create(LocationIdentity identity, long displacement, ValueNode index, int indexScaling) { - return new IndexedLocationNode(identity, displacement, index, indexScaling); - } - - protected IndexedLocationNode(LocationIdentity identity, long displacement, ValueNode index, int indexScaling) { + public IndexedLocationNode(LocationIdentity identity, long displacement, ValueNode index, int indexScaling) { super(StampFactory.forVoid()); assert index != null; assert indexScaling != 0; @@ -89,7 +81,7 @@ @Override public Node canonical(CanonicalizerTool tool) { if (index.isConstant()) { - return ConstantLocationNode.create(getLocationIdentity(), index.asJavaConstant().asLong() * indexScaling + displacement); + return new ConstantLocationNode(getLocationIdentity(), index.asJavaConstant().asLong() * indexScaling + displacement); } return this; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,21 +41,7 @@ protected final int[] keys; - /** - * Constructs a integer switch instruction. The keyProbabilities and keySuccessors array contain - * key.length + 1 entries, the last entry describes the default (fall through) case. - * - * @param value the instruction producing the value being switched on - * @param successors the list of successors - * @param keys the sorted list of keys - * @param keyProbabilities the probabilities of the keys - * @param keySuccessors the successor index for each key - */ - public static IntegerSwitchNode create(ValueNode value, BeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { - return new IntegerSwitchNode(value, successors, keys, keyProbabilities, keySuccessors); - } - - protected IntegerSwitchNode(ValueNode value, BeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { + public IntegerSwitchNode(ValueNode value, BeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { super(value, successors, keySuccessors, keyProbabilities); assert keySuccessors.length == keys.length + 1; assert keySuccessors.length == keyProbabilities.length; @@ -71,21 +57,7 @@ return true; } - /** - * Constructs a integer switch instruction. The keyProbabilities and keySuccessors array contain - * key.length + 1 entries, the last entry describes the default (fall through) case. - * - * @param value the instruction producing the value being switched on - * @param successorCount the number of successors - * @param keys the sorted list of keys - * @param keyProbabilities the probabilities of the keys - * @param keySuccessors the successor index for each key - */ - public static IntegerSwitchNode create(ValueNode value, int successorCount, int[] keys, double[] keyProbabilities, int[] keySuccessors) { - return new IntegerSwitchNode(value, successorCount, keys, keyProbabilities, keySuccessors); - } - - protected IntegerSwitchNode(ValueNode value, int successorCount, int[] keys, double[] keyProbabilities, int[] keySuccessors) { + public IntegerSwitchNode(ValueNode value, int successorCount, int[] keys, double[] keyProbabilities, int[] keySuccessors) { this(value, new BeginNode[successorCount], keys, keyProbabilities, keySuccessors); } @@ -199,7 +171,7 @@ } BeginNode[] successorsArray = newSuccessors.toArray(new BeginNode[newSuccessors.size()]); - IntegerSwitchNode newSwitch = graph().add(IntegerSwitchNode.create(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); + IntegerSwitchNode newSwitch = graph().add(new IntegerSwitchNode(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); ((FixedWithNextNode) predecessor()).setNext(newSwitch); GraphUtil.killWithUnusedFloatingInputs(this); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,11 +40,7 @@ protected final Kind readKind; protected final boolean compressible; - public static JavaReadNode create(Kind readKind, ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { - return new JavaReadNode(readKind, object, location, barrierType, compressible); - } - - protected JavaReadNode(Kind readKind, ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { + public JavaReadNode(Kind readKind, ValueNode object, LocationNode location, BarrierType barrierType, boolean compressible) { super(object, location, StampFactory.forKind(readKind), barrierType); this.readKind = readKind; this.compressible = compressible; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,11 +37,7 @@ protected final Kind writeKind; protected final boolean compressible; - public static JavaWriteNode create(Kind writeKind, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { - return new JavaWriteNode(writeKind, object, value, location, barrierType, compressible, initialization); - } - - protected JavaWriteNode(Kind writeKind, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { + public JavaWriteNode(Kind writeKind, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean compressible, boolean initialization) { super(object, value, location, barrierType, initialization); this.writeKind = writeKind; this.compressible = compressible; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,21 +41,17 @@ return value; } - public static LoadHubNode create(@InjectedNodeParameter StampProvider stampProvider, ValueNode value) { - return new LoadHubNode(hubStamp(stampProvider, value), value, null); - } - - public static LoadHubNode create(@InjectedNodeParameter StampProvider stampProvider, ValueNode value, ValueNode guard) { - return new LoadHubNode(hubStamp(stampProvider, value), value, guard); - } - private static Stamp hubStamp(StampProvider stampProvider, ValueNode value) { assert value.stamp() instanceof ObjectStamp; return stampProvider.createHubStamp(((ObjectStamp) value.stamp())); } - protected LoadHubNode(Stamp stamp, ValueNode value, ValueNode guard) { - super(stamp, (GuardingNode) guard); + public LoadHubNode(@InjectedNodeParameter StampProvider stampProvider, ValueNode value) { + this(stampProvider, value, null); + } + + public LoadHubNode(@InjectedNodeParameter StampProvider stampProvider, ValueNode value, ValueNode guard) { + super(hubStamp(stampProvider, value), (GuardingNode) guard); assert value != guard; this.value = value; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -45,11 +45,7 @@ return hub; } - public static LoadMethodNode create(@InjectedNodeParameter Stamp stamp, ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub) { - return new LoadMethodNode(stamp, method, receiverType, hub); - } - - protected LoadMethodNode(Stamp stamp, ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub) { + public LoadMethodNode(@InjectedNodeParameter Stamp stamp, ResolvedJavaMethod method, ResolvedJavaType receiverType, ValueNode hub) { super(stamp); this.receiverType = receiverType; this.hub = hub; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -28,7 +28,6 @@ import sun.misc.*; -import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.compiler.common.type.*; @@ -44,14 +43,7 @@ protected final int barriers; - /** - * @param barriers a mask of the barrier constants defined in {@link MemoryBarriers} - */ - public static MembarNode create(int barriers) { - return new MembarNode(barriers); - } - - protected MembarNode(int barriers) { + public MembarNode(int barriers) { super(StampFactory.forVoid()); this.barriers = barriers; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @Input ValueNode object; - public static NullCheckNode create(ValueNode object) { - return new NullCheckNode(object); - } - - protected NullCheckNode(ValueNode object) { + public NullCheckNode(ValueNode object) { super(StampFactory.forVoid()); this.object = object; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -30,11 +30,7 @@ @NodeInfo(nameTemplate = "OSRLocal({p#index})") public class OSRLocalNode extends AbstractLocalNode implements IterableNodeType { - public static OSRLocalNode create(int index, Stamp stamp) { - return new OSRLocalNode(index, stamp); - } - - protected OSRLocalNode(int index, Stamp stamp) { + public OSRLocalNode(int index, Stamp stamp) { super(index, stamp); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -29,11 +29,7 @@ @NodeInfo public class OSRStartNode extends StartNode implements Lowerable { - public static OSRStartNode create() { - return new OSRStartNode(); - } - - protected OSRStartNode() { + public OSRStartNode() { } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,35 +39,19 @@ @NodeInfo public class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, PiPushable, Virtualizable, GuardingNode { - public static ReadNode create(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { - return new ReadNode(object, location, stamp, barrierType); - } - - protected ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { + public ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) { super(object, location, stamp, null, barrierType); } - public static ReadNode create(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { - return new ReadNode(object, location, stamp, guard, barrierType); - } - - protected ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { + public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) { super(object, location, stamp, guard, barrierType); } - public static ReadNode create(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { - return new ReadNode(object, location, stamp, guard, barrierType, nullCheck, stateBefore); - } - - protected ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { + public ReadNode(ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) { super(object, location, stamp, guard, barrierType, nullCheck, stateBefore); } - public static ReadNode create(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType) { - return new ReadNode(object, location, guard, barrierType); - } - - protected ReadNode(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType) { + public ReadNode(ValueNode object, ValueNode location, ValueNode guard, BarrierType barrierType) { /* * Used by node intrinsics. Really, you can trust me on that! Since the initial value for * location is a parameter, i.e., a ParameterNode, the constructor cannot use the declared @@ -88,14 +72,14 @@ if (usages().isEmpty()) { if (getGuard() != null && !(getGuard() instanceof FixedNode)) { // The guard is necessary even if the read goes away. - return ValueAnchorNode.create((ValueNode) getGuard()); + return new ValueAnchorNode((ValueNode) getGuard()); } else { // Read without usages or guard can be safely removed. return null; } } if (object() instanceof PiNode && ((PiNode) object()).getGuard() == getGuard()) { - return ReadNode.create(((PiNode) object()).getOriginalNode(), location(), stamp(), getGuard(), getBarrierType(), getNullCheck(), stateBefore()); + return new ReadNode(((PiNode) object()).getOriginalNode(), location(), stamp(), getGuard(), getBarrierType(), getNullCheck(), stateBefore()); } if (!getNullCheck()) { return canonicalizeRead(this, location(), object(), tool); @@ -108,7 +92,7 @@ @Override public FloatingAccessNode asFloatingNode(MemoryNode lastLocationAccess) { - return graph().unique(FloatingReadNode.create(object(), location(), lastLocationAccess, stamp(), getGuard(), getBarrierType())); + return graph().unique(new FloatingReadNode(object(), location(), lastLocationAccess, stamp(), getGuard(), getBarrierType())); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,11 +41,7 @@ return object; } - public static StoreHubNode create(ValueNode object, ValueNode value) { - return new StoreHubNode(object, value); - } - - protected StoreHubNode(ValueNode object, ValueNode value) { + public StoreHubNode(ValueNode object, ValueNode value) { super(StampFactory.forVoid()); this.value = value; this.object = object; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,11 +35,7 @@ protected final Kind boxingKind; - public static UnboxNode create(ValueNode value, Kind boxingKind) { - return new UnboxNode(value, boxingKind); - } - - protected UnboxNode(ValueNode value, Kind boxingKind) { + public UnboxNode(ValueNode value, Kind boxingKind) { super(StampFactory.forKind(boxingKind.getStackKind()), value); this.boxingKind = boxingKind; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -42,29 +42,17 @@ @Input ValueNode object; - public static UnsafeCastNode create(ValueNode object, Stamp stamp) { - return new UnsafeCastNode(object, stamp); - } - - protected UnsafeCastNode(ValueNode object, Stamp stamp) { + public UnsafeCastNode(ValueNode object, Stamp stamp) { super(stamp); this.object = object; } - public static UnsafeCastNode create(ValueNode object, Stamp stamp, ValueNode anchor) { - return new UnsafeCastNode(object, stamp, anchor); - } - - protected UnsafeCastNode(ValueNode object, Stamp stamp, ValueNode anchor) { + public UnsafeCastNode(ValueNode object, Stamp stamp, ValueNode anchor) { super(stamp, (GuardingNode) anchor); this.object = object; } - public static UnsafeCastNode create(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) { - return new UnsafeCastNode(object, toType, exactType, nonNull); - } - - protected UnsafeCastNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) { + public UnsafeCastNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) { this(object, toType.getKind() == Kind.Object ? StampFactory.object(toType, exactType, nonNull || StampTool.isPointerNonNull(object.stamp()), true) : StampFactory.forKind(toType.getKind())); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,19 +41,11 @@ public class UnsafeLoadNode extends UnsafeAccessNode implements Lowerable, Virtualizable { @OptionalInput(InputType.Condition) LogicNode guardingCondition; - public static UnsafeLoadNode create(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { - return new UnsafeLoadNode(object, offset, accessKind, locationIdentity); - } - - protected UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { + public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) { this(object, offset, accessKind, locationIdentity, null); } - public static UnsafeLoadNode create(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity, LogicNode condition) { - return new UnsafeLoadNode(object, offset, accessKind, locationIdentity, condition); - } - - protected UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity, LogicNode condition) { + public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity, LogicNode condition) { super(StampFactory.forKind(accessKind.getStackKind()), object, offset, accessKind, locationIdentity); this.guardingCondition = condition; } @@ -89,12 +81,12 @@ @Override protected ValueNode cloneAsFieldAccess(ResolvedJavaField field) { - return LoadFieldNode.create(object(), field); + return new LoadFieldNode(object(), field); } @Override protected ValueNode cloneAsArrayAccess(ValueNode location, LocationIdentity identity) { - return UnsafeLoadNode.create(object(), location, accessKind(), identity, guardingCondition); + return new UnsafeLoadNode(object(), location, accessKind(), identity, guardingCondition); } @SuppressWarnings({"unchecked", "unused"}) diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -43,19 +43,11 @@ @Input ValueNode value; @OptionalInput(InputType.State) FrameState stateAfter; - public static UnsafeStoreNode create(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity) { - return new UnsafeStoreNode(object, offset, value, accessKind, locationIdentity); - } - - protected UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity) { + public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity) { this(object, offset, value, accessKind, locationIdentity, null); } - public static UnsafeStoreNode create(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) { - return new UnsafeStoreNode(object, offset, value, accessKind, locationIdentity, stateAfter); - } - - protected UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) { + public UnsafeStoreNode(ValueNode object, ValueNode offset, ValueNode value, Kind accessKind, LocationIdentity locationIdentity, FrameState stateAfter) { super(StampFactory.forVoid(), object, offset, accessKind, locationIdentity); this.value = value; this.stateAfter = stateAfter; @@ -122,12 +114,12 @@ @Override protected ValueNode cloneAsFieldAccess(ResolvedJavaField field) { - return StoreFieldNode.create(object(), field, value(), stateAfter()); + return new StoreFieldNode(object(), field, value(), stateAfter()); } @Override protected ValueNode cloneAsArrayAccess(ValueNode location, LocationIdentity identity) { - return UnsafeStoreNode.create(object(), location, value, accessKind(), identity, stateAfter()); + return new UnsafeStoreNode(object(), location, value, accessKind(), identity, stateAfter()); } public FrameState getState() { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @OptionalInput(InputType.Guard) ValueNode anchored; - public static ValueAnchorNode create(ValueNode value) { - return new ValueAnchorNode(value); - } - - protected ValueAnchorNode(ValueNode value) { + public ValueAnchorNode(ValueNode value) { super(StampFactory.forVoid()); this.anchored = value; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,27 +36,15 @@ @NodeInfo public class WriteNode extends AbstractWriteNode implements LIRLowerable, Simplifiable, Virtualizable { - public static WriteNode create(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { - return new WriteNode(object, value, location, barrierType); - } - - protected WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { + public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) { super(object, value, location, barrierType); } - public static WriteNode create(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { - return new WriteNode(object, value, location, barrierType, initialization); - } - - protected WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { + public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) { super(object, value, location, barrierType, initialization); } - public static WriteNode create(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { - return new WriteNode(object, value, location, barrierType, guard, initialization); - } - - protected WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { + public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) { super(object, value, location, barrierType, guard, initialization); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,18 +41,7 @@ return length; } - /** - * Constructs a new AbstractNewArrayNode. - * - * @param stamp the stamp of the newly created array - * @param length the node that produces the length for this allocation. - * @param fillContents determines whether the array elements should be initialized to zero/null. - */ - public static AbstractNewArrayNode create(Stamp stamp, ValueNode length, boolean fillContents) { - return new AbstractNewArrayNode(stamp, length, fillContents); - } - - protected AbstractNewArrayNode(Stamp stamp, ValueNode length, boolean fillContents) { + public AbstractNewArrayNode(Stamp stamp, ValueNode length, boolean fillContents) { super(stamp, fillContents); this.length = length; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,17 +40,7 @@ protected final boolean fillContents; - /** - * Constructs a new AbstractNewObjectNode. - * - * @param stamp the stamp of the newly created object - * @param fillContents determines if the object's contents should be initialized to zero/null. - */ - public static AbstractNewObjectNode create(Stamp stamp, boolean fillContents) { - return new AbstractNewObjectNode(stamp, fillContents); - } - - protected AbstractNewObjectNode(Stamp stamp, boolean fillContents) { + public AbstractNewObjectNode(Stamp stamp, boolean fillContents) { super(stamp); this.fillContents = fillContents; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -46,11 +46,7 @@ return array; } - public static ArrayLengthNode create(ValueNode array) { - return new ArrayLengthNode(array); - } - - protected ArrayLengthNode(ValueNode array) { + public ArrayLengthNode(ValueNode array) { super(StampFactory.positiveInt()); this.array = array; } @@ -77,7 +73,7 @@ } if (originalValue instanceof ValueProxyNode) { ValueProxyNode proxy = (ValueProxyNode) originalValue; - return ValueProxyNode.create(reproxyValue(proxy.getOriginalNode(), value), proxy.proxyPoint()); + return new ValueProxyNode(reproxyValue(proxy.getOriginalNode(), value), proxy.proxyPoint()); } else if (originalValue instanceof ValueProxy) { ValueProxy proxy = (ValueProxy) originalValue; return reproxyValue(proxy.getOriginalNode(), value); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,11 +44,7 @@ protected final LocationIdentity locationIdentity; - public static AtomicReadAndAddNode create(ValueNode object, ValueNode offset, ValueNode delta, LocationIdentity locationIdentity) { - return new AtomicReadAndAddNode(object, offset, delta, locationIdentity); - } - - protected AtomicReadAndAddNode(ValueNode object, ValueNode offset, ValueNode delta, LocationIdentity locationIdentity) { + public AtomicReadAndAddNode(ValueNode object, ValueNode offset, ValueNode delta, LocationIdentity locationIdentity) { super(StampFactory.forKind(delta.getKind())); this.object = object; this.offset = offset; @@ -73,7 +69,7 @@ } public void generate(NodeLIRBuilderTool gen) { - LocationNode location = IndexedLocationNode.create(getLocationIdentity(), 0, offset, graph(), 1); + LocationNode location = graph().unique(new IndexedLocationNode(getLocationIdentity(), 0, offset, 1)); Value address = location.generateAddress(gen, gen.getLIRGeneratorTool(), gen.operand(object())); Value result = gen.getLIRGeneratorTool().emitAtomicReadAndAdd(address, gen.operand(delta)); gen.setResult(this, result); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -46,11 +46,7 @@ protected final Kind valueKind; protected final LocationIdentity locationIdentity; - public static AtomicReadAndWriteNode create(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { - return new AtomicReadAndWriteNode(object, offset, newValue, valueKind, locationIdentity); - } - - protected AtomicReadAndWriteNode(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { + public AtomicReadAndWriteNode(ValueNode object, ValueNode offset, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { super(StampFactory.forKind(newValue.getKind())); this.object = object; this.offset = offset; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -45,15 +45,7 @@ */ protected final boolean forStoreCheck; - /** - * @param hub the type being cast to - * @param object the object being cast - */ - public static CheckCastDynamicNode create(ValueNode hub, ValueNode object, boolean forStoreCheck) { - return new CheckCastDynamicNode(hub, object, forStoreCheck); - } - - protected CheckCastDynamicNode(ValueNode hub, ValueNode object, boolean forStoreCheck) { + public CheckCastDynamicNode(ValueNode hub, ValueNode object, boolean forStoreCheck) { super(object.stamp()); this.hub = hub; this.object = object; @@ -101,7 +93,7 @@ if (forHub.isConstant()) { ResolvedJavaType t = tool.getConstantReflection().asJavaType(forHub.asConstant()); if (t != null) { - return CheckCastNode.create(t, forObject, null, forStoreCheck); + return new CheckCastNode(t, forObject, null, forStoreCheck); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -53,17 +53,7 @@ */ protected final boolean forStoreCheck; - /** - * Creates a new CheckCast instruction. - * - * @param type the type being cast to - * @param object the instruction producing the object - */ - public static CheckCastNode create(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile, boolean forStoreCheck) { - return new CheckCastNode(type, object, profile, forStoreCheck); - } - - protected CheckCastNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile, boolean forStoreCheck) { + public CheckCastNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile, boolean forStoreCheck) { super(StampFactory.declaredTrusted(type)); assert type != null; this.type = type; @@ -115,12 +105,12 @@ condition = LogicConstantNode.contradiction(graph()); newStamp = StampFactory.declaredTrusted(type); } else if (StampTool.isPointerNonNull(object)) { - condition = graph().addWithoutUnique(InstanceOfNode.create(type, object, profile)); + condition = graph().addWithoutUnique(new InstanceOfNode(type, object, profile)); } else { if (profile != null && profile.getNullSeen() == TriState.FALSE) { - FixedGuardNode nullCheck = graph().add(FixedGuardNode.create(graph().unique(IsNullNode.create(object)), UnreachedCode, InvalidateReprofile, true)); - PiNode nullGuarded = graph().unique(PiNode.create(object, object().stamp().join(StampFactory.objectNonNull()), nullCheck)); - InstanceOfNode typeTest = graph().addWithoutUnique(InstanceOfNode.create(type, nullGuarded, profile)); + FixedGuardNode nullCheck = graph().add(new FixedGuardNode(graph().unique(new IsNullNode(object)), UnreachedCode, InvalidateReprofile, true)); + PiNode nullGuarded = graph().unique(new PiNode(object, object().stamp().join(StampFactory.objectNonNull()), nullCheck)); + InstanceOfNode typeTest = graph().addWithoutUnique(new InstanceOfNode(type, nullGuarded, profile)); graph().addBeforeFixed(this, nullCheck); condition = typeTest; /* @@ -134,11 +124,11 @@ } else { // TODO (ds) replace with probability of null-seen when available double shortCircuitProbability = NOT_FREQUENT_PROBABILITY; - InstanceOfNode typeTest = graph().addWithoutUnique(InstanceOfNode.create(type, object, profile)); - condition = LogicNode.or(graph().unique(IsNullNode.create(object)), typeTest, shortCircuitProbability); + InstanceOfNode typeTest = graph().addWithoutUnique(new InstanceOfNode(type, object, profile)); + condition = LogicNode.or(graph().unique(new IsNullNode(object)), typeTest, shortCircuitProbability); } } - GuardingPiNode checkedObject = graph().add(GuardingPiNode.create(theValue, condition, false, forStoreCheck ? ArrayStoreException : ClassCastException, InvalidateReprofile, newStamp)); + GuardingPiNode checkedObject = graph().add(new GuardingPiNode(theValue, condition, false, forStoreCheck ? ArrayStoreException : ClassCastException, InvalidateReprofile, newStamp)); graph().replaceFixedWithFixed(this, checkedObject); checkedObject.lower(tool); } @@ -170,7 +160,7 @@ if (exactType != null && !exactType.equals(type)) { // Propagate more precise type information to usages of the checkcast. tool.assumptions().recordConcreteSubtype(type, exactType); - return CheckCastNode.create(exactType, object, profile, forStoreCheck); + return new CheckCastNode(exactType, object, profile, forStoreCheck); } } @@ -185,7 +175,7 @@ CheckCastNode ccn = (CheckCastNode) predecessor(); if (ccn != null && ccn.type != null && ccn == object && ccn.forStoreCheck == forStoreCheck && ccn.type.isAssignableFrom(type)) { StructuredGraph graph = ccn.graph(); - CheckCastNode newccn = graph.add(CheckCastNode.create(type, ccn.object, ccn.profile, ccn.forStoreCheck)); + CheckCastNode newccn = graph.add(new CheckCastNode(type, ccn.object, ccn.profile, ccn.forStoreCheck)); graph.replaceFixedWithFixed(ccn, newccn); replaceAtUsages(newccn); graph.removeFixed(this); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -46,11 +46,7 @@ protected final Kind valueKind; protected final LocationIdentity locationIdentity; - public static CompareAndSwapNode create(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { - return new CompareAndSwapNode(object, offset, expected, newValue, valueKind, locationIdentity); - } - - protected CompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { + public CompareAndSwapNode(ValueNode object, ValueNode offset, ValueNode expected, ValueNode newValue, Kind valueKind, LocationIdentity locationIdentity) { super(StampFactory.forKind(Kind.Boolean.getStackKind())); assert expected.stamp().isCompatible(newValue.stamp()); this.object = object; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -48,19 +48,11 @@ */ protected final Kind knownElementKind; - public static DynamicNewArrayNode create(ValueNode elementType, ValueNode length) { - return new DynamicNewArrayNode(elementType, length); - } - - protected DynamicNewArrayNode(ValueNode elementType, ValueNode length) { + public DynamicNewArrayNode(ValueNode elementType, ValueNode length) { this(elementType, length, true, null); } - public static DynamicNewArrayNode create(ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) { - return new DynamicNewArrayNode(elementType, length, fillContents, knownElementKind); - } - - protected DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) { + public DynamicNewArrayNode(ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) { super(StampFactory.objectNonNull(), length, fillContents); this.elementType = elementType; this.knownElementKind = knownElementKind; @@ -76,7 +68,7 @@ protected NewArrayNode forConstantType(ResolvedJavaType type) { ValueNode len = length(); - NewArrayNode ret = graph().add(NewArrayNode.create(type, len.isAlive() ? len : graph().addOrUniqueWithInputs(len), fillContents())); + NewArrayNode ret = graph().add(new NewArrayNode(type, len.isAlive() ? len : graph().addOrUniqueWithInputs(len), fillContents())); if (stateBefore() != null) { ret.setStateBefore(stateBefore()); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @Input ValueNode clazz; - public static DynamicNewInstanceNode create(ValueNode clazz, boolean fillContents) { - return new DynamicNewInstanceNode(clazz, fillContents); - } - - protected DynamicNewInstanceNode(ValueNode clazz, boolean fillContents) { + public DynamicNewInstanceNode(ValueNode clazz, boolean fillContents) { super(StampFactory.objectNonNull(), fillContents); this.clazz = clazz; } @@ -48,7 +44,7 @@ if (clazz.isConstant()) { ResolvedJavaType type = tool.getConstantReflection().asJavaType(clazz.asConstant()); if (type != null && type.isInitialized() && !type.isArray() && !type.isInterface() && !type.isPrimitive()) { - return NewInstanceNode.create(type, fillContents()); + return new NewInstanceNode(type, fillContents()); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -36,11 +36,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class ExceptionObjectNode extends DispatchBeginNode implements Lowerable, MemoryCheckpoint.Single { - public static ExceptionObjectNode create(MetaAccessProvider metaAccess) { - return new ExceptionObjectNode(metaAccess); - } - - protected ExceptionObjectNode(MetaAccessProvider metaAccess) { + public ExceptionObjectNode(MetaAccessProvider metaAccess) { super(StampFactory.declaredNonNull(metaAccess.lookupJavaType(Throwable.class))); } @@ -57,8 +53,8 @@ * deopts can float in between the begin node and the load exception node. */ LocationIdentity locationsKilledByInvoke = ((InvokeWithExceptionNode) predecessor()).getLocationIdentity(); - BeginNode entry = graph().add(KillingBeginNode.create(locationsKilledByInvoke)); - LoadExceptionObjectNode loadException = graph().add(LoadExceptionObjectNode.create(stamp())); + BeginNode entry = graph().add(new KillingBeginNode(locationsKilledByInvoke)); + LoadExceptionObjectNode loadException = graph().add(new LoadExceptionObjectNode(stamp())); loadException.setStateAfter(stateAfter()); replaceAtUsages(InputType.Value, loadException); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,15 +40,7 @@ @Input ValueNode object; @Input ValueNode mirror; - /** - * @param mirror the {@link Class} value representing the target target type of the test - * @param object the object being tested - */ - public static InstanceOfDynamicNode create(ValueNode mirror, ValueNode object) { - return new InstanceOfDynamicNode(mirror, object); - } - - protected InstanceOfDynamicNode(ValueNode mirror, ValueNode object) { + public InstanceOfDynamicNode(ValueNode mirror, ValueNode object) { this.mirror = mirror; this.object = object; assert mirror.getKind() == Kind.Object : mirror.getKind(); @@ -68,7 +60,7 @@ if (t.isPrimitive()) { return LogicConstantNode.contradiction(); } else { - return InstanceOfNode.create(t, forObject, null); + return new InstanceOfNode(t, forObject, null); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,17 +39,7 @@ protected final ResolvedJavaType type; protected JavaTypeProfile profile; - /** - * Constructs a new InstanceOfNode. - * - * @param type the target type of the instanceof check - * @param object the object being tested by the instanceof - */ - public static InstanceOfNode create(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile) { - return new InstanceOfNode(type, object, profile); - } - - protected InstanceOfNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile) { + public InstanceOfNode(ResolvedJavaType type, ValueNode object, JavaTypeProfile profile) { super(object); this.type = type; this.profile = profile; @@ -117,7 +107,7 @@ if (!nonNull) { // the instanceof matches if the object is non-null, so return true // depending on the null-ness. - return LogicNegationNode.create(IsNullNode.create(forValue)); + return new LogicNegationNode(new IsNullNode(forValue)); } } return null; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -30,11 +30,7 @@ @NodeInfo public class LoadExceptionObjectNode extends AbstractStateSplit implements Lowerable { - public static LoadExceptionObjectNode create(Stamp stamp) { - return new LoadExceptionObjectNode(stamp); - } - - protected LoadExceptionObjectNode(Stamp stamp) { + public LoadExceptionObjectNode(Stamp stamp) { super(stamp); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,17 +39,7 @@ @NodeInfo(nameTemplate = "LoadField#{p#field/s}") public class LoadFieldNode extends AccessFieldNode implements Canonicalizable.Unary, VirtualizableRoot, UncheckedInterfaceProvider { - /** - * Creates a new LoadFieldNode instance. - * - * @param object the receiver object - * @param field the compiler interface field - */ - public static LoadFieldNode create(ValueNode object, ResolvedJavaField field) { - return new LoadFieldNode(object, field); - } - - protected LoadFieldNode(ValueNode object, ResolvedJavaField field) { + public LoadFieldNode(ValueNode object, ResolvedJavaField field) { super(createStamp(field), object, field); } @@ -83,7 +73,7 @@ } } if (!isStatic() && forObject.isNullConstant()) { - return DeoptimizeNode.create(DeoptimizationAction.None, DeoptimizationReason.NullCheckException); + return new DeoptimizeNode(DeoptimizationAction.None, DeoptimizationReason.NullCheckException); } return this; } @@ -119,7 +109,7 @@ for (int i = 0; i < phi.valueCount(); i++) { constantNodes[i] = ConstantNode.forConstant(constants[i], metaAccess); } - return ValuePhiNode.create(stamp(), phi.merge(), constantNodes); + return new ValuePhiNode(stamp(), phi.merge(), constantNodes); } return null; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,8 +44,8 @@ * @param index the instruction producing the index * @param elementKind the element type */ - public static LoadIndexedNode create(ValueNode array, ValueNode index, Kind elementKind) { - return new LoadIndexedNode(createStamp(array, elementKind), array, index, elementKind); + public LoadIndexedNode(ValueNode array, ValueNode index, Kind elementKind) { + this(createStamp(array, elementKind), array, index, elementKind); } protected LoadIndexedNode(Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,11 +40,7 @@ @Input ValueNode newValue; @OptionalInput(InputType.State) FrameState stateAfter; - public static LoweredAtomicReadAndWriteNode create(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType) { - return new LoweredAtomicReadAndWriteNode(object, location, newValue, barrierType); - } - - protected LoweredAtomicReadAndWriteNode(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType) { + public LoweredAtomicReadAndWriteNode(ValueNode object, LocationNode location, ValueNode newValue, BarrierType barrierType) { super(object, location, newValue.stamp().unrestricted(), barrierType); this.newValue = newValue; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -61,11 +61,7 @@ return newValue; } - public static LoweredCompareAndSwapNode create(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) { - return new LoweredCompareAndSwapNode(object, location, expectedValue, newValue, barrierType); - } - - protected LoweredCompareAndSwapNode(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) { + public LoweredCompareAndSwapNode(ValueNode object, LocationNode location, ValueNode expectedValue, ValueNode newValue, BarrierType barrierType) { super(object, location, StampFactory.forKind(Kind.Boolean.getStackKind()), barrierType); assert expectedValue.getKind() == newValue.getKind(); this.expectedValue = expectedValue; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,14 +35,7 @@ public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Simplifiable { protected final JavaType returnType; - /** - * @param arguments - */ - public static MethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) { - return new MethodCallTargetNode(invokeKind, targetMethod, arguments, returnType); - } - - protected MethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) { + public MethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) { super(arguments, targetMethod, invokeKind); this.returnType = returnType; } @@ -190,11 +183,11 @@ * an assumption but as we need an instanceof check anyway we can verify both * properties by checking of the receiver is an instance of the single implementor. */ - LogicNode condition = graph().unique(InstanceOfNode.create(singleImplementor, receiver, getProfile())); + LogicNode condition = graph().unique(new InstanceOfNode(singleImplementor, receiver, getProfile())); GuardNode guard = graph().unique( - GuardNode.create(condition, BeginNode.prevBegin(invoke().asNode()), DeoptimizationReason.OptimizedTypeCheckViolated, DeoptimizationAction.InvalidateRecompile, false, + new GuardNode(condition, BeginNode.prevBegin(invoke().asNode()), DeoptimizationReason.OptimizedTypeCheckViolated, DeoptimizationAction.InvalidateRecompile, false, JavaConstant.NULL_POINTER)); - PiNode piNode = graph().unique(PiNode.create(receiver, StampFactory.declaredNonNull(singleImplementor), guard)); + PiNode piNode = graph().unique(new PiNode(receiver, StampFactory.declaredNonNull(singleImplementor), guard)); arguments().set(0, piNode); setInvokeKind(InvokeKind.Virtual); setTargetMethod(singleImplementorMethod); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,16 +35,7 @@ @NodeInfo public class MonitorEnterNode extends AccessMonitorNode implements Virtualizable, Lowerable, IterableNodeType, MonitorEnter, MemoryCheckpoint.Single { - /** - * Creates a new MonitorEnterNode. - * - * @param object the instruction producing the object - */ - public static MonitorEnterNode create(ValueNode object, MonitorIdNode monitorId) { - return new MonitorEnterNode(object, monitorId); - } - - protected MonitorEnterNode(ValueNode object, MonitorIdNode monitorId) { + public MonitorEnterNode(ValueNode object, MonitorIdNode monitorId) { super(object, monitorId); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,14 +41,7 @@ @OptionalInput ValueNode escapedReturnValue; - /** - * Creates a new MonitorExitNode. - */ - public static MonitorExitNode create(ValueNode object, MonitorIdNode monitorId, ValueNode escapedReturnValue) { - return new MonitorExitNode(object, monitorId, escapedReturnValue); - } - - protected MonitorExitNode(ValueNode object, MonitorIdNode monitorId, ValueNode escapedReturnValue) { + public MonitorExitNode(ValueNode object, MonitorIdNode monitorId, ValueNode escapedReturnValue) { super(object, monitorId); this.escapedReturnValue = escapedReturnValue; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ protected int lockDepth; - public static MonitorIdNode create(int lockDepth) { - return new MonitorIdNode(lockDepth); - } - - protected MonitorIdNode(int lockDepth) { + public MonitorIdNode(int lockDepth) { super(StampFactory.forVoid()); this.lockDepth = lockDepth; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,19 +40,7 @@ @NodeInfo public class NewArrayNode extends AbstractNewArrayNode implements VirtualizableAllocation { - /** - * Constructs a new NewArrayNode. - * - * @param elementType the the type of the elements of the newly created array (not the type of - * the array itself). - * @param length the node that produces the length for this allocation. - * @param fillContents determines whether the array elements should be initialized to zero/null. - */ - public static NewArrayNode create(ResolvedJavaType elementType, ValueNode length, boolean fillContents) { - return new NewArrayNode(elementType, length, fillContents); - } - - protected NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents) { + public NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents) { super(StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents); } @@ -90,7 +78,7 @@ } protected VirtualArrayNode createVirtualArrayNode(int constantLength) { - return VirtualArrayNode.create(elementType(), constantLength); + return new VirtualArrayNode(elementType(), constantLength); } /* Factored out in a separate method so that subclasses can override it. */ diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,18 +40,7 @@ protected final ResolvedJavaType instanceClass; - /** - * Constructs a NewInstanceNode. - * - * @param type the class being allocated - * @param fillContents determines whether the new object's fields should be initialized to - * zero/null. - */ - public static NewInstanceNode create(ResolvedJavaType type, boolean fillContents) { - return new NewInstanceNode(type, fillContents); - } - - protected NewInstanceNode(ResolvedJavaType type, boolean fillContents) { + public NewInstanceNode(ResolvedJavaType type, boolean fillContents) { super(StampFactory.exactNonNull(type), fillContents); assert !type.isArray() && !type.isInterface() && !type.isPrimitive(); this.instanceClass = type; @@ -85,7 +74,7 @@ } protected VirtualInstanceNode createVirtualInstanceNode(boolean hasIdentity) { - return VirtualInstanceNode.create(instanceClass(), hasIdentity); + return new VirtualInstanceNode(instanceClass(), hasIdentity); } /* Factored out in a separate method so that subclasses can override it. */ diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -50,17 +50,7 @@ return dimensions; } - /** - * Constructs a new NewMultiArrayNode. - * - * @param type the element type of the array - * @param dimensions the node which produce the dimensions for this array - */ - public static NewMultiArrayNode create(ResolvedJavaType type, ValueNode[] dimensions) { - return new NewMultiArrayNode(type, dimensions); - } - - protected NewMultiArrayNode(ResolvedJavaType type, ValueNode[] dimensions) { + public NewMultiArrayNode(ResolvedJavaType type, ValueNode[] dimensions) { super(StampFactory.exactNonNull(type)); this.type = type; this.dimensions = new NodeInputList<>(this, dimensions); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,11 +41,7 @@ @OptionalInput(InputType.State) FrameState deoptState; @Input ValueNode value; - public static RegisterFinalizerNode create(ValueNode value) { - return new RegisterFinalizerNode(value); - } - - protected RegisterFinalizerNode(ValueNode value) { + public RegisterFinalizerNode(ValueNode value) { super(StampFactory.forVoid()); this.value = value; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,12 +44,7 @@ protected final JavaType replacementReturnType; @Input NodeInputList replacementArguments; - public static SelfReplacingMethodCallTargetNode create(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, - ResolvedJavaMethod replacementTargetMethod, ValueNode[] replacementArguments, JavaType replacementReturnType) { - return new SelfReplacingMethodCallTargetNode(invokeKind, targetMethod, arguments, returnType, replacementTargetMethod, replacementArguments, replacementReturnType); - } - - protected SelfReplacingMethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, ResolvedJavaMethod replacementTargetMethod, + public SelfReplacingMethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType, ResolvedJavaMethod replacementTargetMethod, ValueNode[] replacementArguments, JavaType replacementReturnType) { super(invokeKind, targetMethod, arguments, returnType); this.replacementTargetMethod = replacementTargetMethod; @@ -73,7 +68,7 @@ public void lower(LoweringTool tool) { InvokeKind replacementInvokeKind = replacementTargetMethod.isStatic() ? InvokeKind.Static : InvokeKind.Special; MethodCallTargetNode replacement = graph().add( - MethodCallTargetNode.create(replacementInvokeKind, replacementTargetMethod, replacementArguments.toArray(new ValueNode[replacementArguments.size()]), replacementReturnType)); + new MethodCallTargetNode(replacementInvokeKind, replacementTargetMethod, replacementArguments.toArray(new ValueNode[replacementArguments.size()]), replacementReturnType)); // Replace myself... this.replaceAndDelete(replacement); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -56,27 +56,12 @@ return value; } - /** - * Creates a new StoreFieldNode. - * - * @param object the receiver object - * @param field the compiler interface field - * @param value the node representing the value to store to the field - */ - public static StoreFieldNode create(ValueNode object, ResolvedJavaField field, ValueNode value) { - return new StoreFieldNode(object, field, value); - } - - protected StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value) { + public StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value) { super(StampFactory.forVoid(), object, field); this.value = value; } - public static StoreFieldNode create(ValueNode object, ResolvedJavaField field, ValueNode value, FrameState stateAfter) { - return new StoreFieldNode(object, field, value, stateAfter); - } - - protected StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value, FrameState stateAfter) { + public StoreFieldNode(ValueNode object, ResolvedJavaField field, ValueNode value, FrameState stateAfter) { super(StampFactory.forVoid(), object, field); this.value = value; this.stateAfter = stateAfter; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -56,19 +56,7 @@ return value; } - /** - * Creates a new StoreIndexedNode. - * - * @param array the node producing the array - * @param index the node producing the index - * @param elementKind the element type - * @param value the value to store into the array - */ - public static StoreIndexedNode create(ValueNode array, ValueNode index, Kind elementKind, ValueNode value) { - return new StoreIndexedNode(array, index, elementKind, value); - } - - protected StoreIndexedNode(ValueNode array, ValueNode index, Kind elementKind, ValueNode value) { + public StoreIndexedNode(ValueNode array, ValueNode index, Kind elementKind, ValueNode value) { super(StampFactory.forVoid(), array, index, elementKind); this.value = value; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -42,21 +42,7 @@ protected final ResolvedJavaType[] keys; - /** - * Constructs a type switch instruction. The keyProbabilities array contain key.length + 1 - * entries. The last entry in every array describes the default case. - * - * @param value the instruction producing the value being switched on, the object hub - * @param successors the list of successors - * @param keys the list of types - * @param keyProbabilities the probabilities of the keys - * @param keySuccessors the successor index for each key - */ - public static TypeSwitchNode create(ValueNode value, BeginNode[] successors, ResolvedJavaType[] keys, double[] keyProbabilities, int[] keySuccessors) { - return new TypeSwitchNode(value, successors, keys, keyProbabilities, keySuccessors); - } - - protected TypeSwitchNode(ValueNode value, BeginNode[] successors, ResolvedJavaType[] keys, double[] keyProbabilities, int[] keySuccessors) { + public TypeSwitchNode(ValueNode value, BeginNode[] successors, ResolvedJavaType[] keys, double[] keyProbabilities, int[] keySuccessors) { super(value, successors, keySuccessors, keyProbabilities); assert successors.length <= keys.length + 1; assert keySuccessors.length == keyProbabilities.length; @@ -205,7 +191,7 @@ } BeginNode[] successorsArray = newSuccessors.toArray(new BeginNode[newSuccessors.size()]); - TypeSwitchNode newSwitch = graph().add(TypeSwitchNode.create(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); + TypeSwitchNode newSwitch = graph().add(new TypeSwitchNode(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); ((FixedWithNextNode) predecessor()).setNext(newSwitch); GraphUtil.killWithUnusedFloatingInputs(this); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @Input VirtualObjectNode virtualObject; @Input(InputType.Extension) CommitAllocationNode commit; - public static AllocatedObjectNode create(VirtualObjectNode virtualObject) { - return new AllocatedObjectNode(virtualObject); - } - - protected AllocatedObjectNode(VirtualObjectNode virtualObject) { + public AllocatedObjectNode(VirtualObjectNode virtualObject) { super(StampFactory.exactNonNull(virtualObject.type())); this.virtualObject = virtualObject; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -40,11 +40,7 @@ @Input(InputType.Association) NodeInputList locks = new NodeInputList<>(this); protected ArrayList lockIndexes = new ArrayList<>(Arrays.asList(0)); - public static CommitAllocationNode create() { - return new CommitAllocationNode(); - } - - protected CommitAllocationNode() { + public CommitAllocationNode() { super(StampFactory.forVoid()); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,11 +35,7 @@ protected final ResolvedJavaType componentType; protected final int length; - public static VirtualArrayNode create(ResolvedJavaType componentType, int length) { - return new VirtualArrayNode(componentType, length); - } - - protected VirtualArrayNode(ResolvedJavaType componentType, int length) { + public VirtualArrayNode(ResolvedJavaType componentType, int length) { super(componentType.getArrayClass(), true); this.componentType = componentType; this.length = length; @@ -141,12 +137,12 @@ @Override public VirtualArrayNode duplicate() { - return VirtualArrayNode.create(componentType, length); + return new VirtualArrayNode(componentType, length); } @Override public ValueNode getMaterializedRepresentation(FixedNode fixed, ValueNode[] entries, LockState locks) { - return AllocatedObjectNode.create(this); + return new AllocatedObjectNode(this); } public ValueNode length() { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ protected final Kind boxingKind; - public static VirtualBoxingNode create(ResolvedJavaType type, Kind boxingKind) { - return new VirtualBoxingNode(type, boxingKind); - } - - protected VirtualBoxingNode(ResolvedJavaType type, Kind boxingKind) { + public VirtualBoxingNode(ResolvedJavaType type, Kind boxingKind) { super(type, false); this.boxingKind = boxingKind; } @@ -47,13 +43,13 @@ @Override public VirtualBoxingNode duplicate() { - return VirtualBoxingNode.create(type(), boxingKind); + return new VirtualBoxingNode(type(), boxingKind); } @Override public ValueNode getMaterializedRepresentation(FixedNode fixed, ValueNode[] entries, LockState locks) { assert entries.length == 1; assert locks == null; - return BoxNode.create(entries[0], type(), boxingKind); + return new BoxNode(entries[0], type(), boxingKind); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,19 +32,11 @@ protected final ResolvedJavaType type; protected final ResolvedJavaField[] fields; - public static VirtualInstanceNode create(ResolvedJavaType type, boolean hasIdentity) { - return new VirtualInstanceNode(type, hasIdentity); - } - - protected VirtualInstanceNode(ResolvedJavaType type, boolean hasIdentity) { + public VirtualInstanceNode(ResolvedJavaType type, boolean hasIdentity) { this(type, type.getInstanceFields(true), hasIdentity); } - public static VirtualInstanceNode create(ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) { - return new VirtualInstanceNode(type, fields, hasIdentity); - } - - protected VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) { + public VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) { super(type, hasIdentity); this.type = type; this.fields = fields; @@ -105,11 +97,11 @@ @Override public VirtualInstanceNode duplicate() { - return VirtualInstanceNode.create(type, fields, super.hasIdentity()); + return new VirtualInstanceNode(type, fields, super.hasIdentity()); } @Override public ValueNode getMaterializedRepresentation(FixedNode fixed, ValueNode[] entries, LockState locks) { - return AllocatedObjectNode.create(this); + return new AllocatedObjectNode(this); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConditionalEliminationPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -699,9 +699,9 @@ PiNode piNode; if (isNull) { ConstantNode nullObject = ConstantNode.defaultForKind(Kind.Object, graph); - piNode = graph.unique(PiNode.create(nullObject, nullObject.stamp(), replacementAnchor.asNode())); + piNode = graph.unique(new PiNode(nullObject, nullObject.stamp(), replacementAnchor.asNode())); } else { - piNode = graph.unique(PiNode.create(object, StampFactory.declaredTrusted(type, nonNull), replacementAnchor.asNode())); + piNode = graph.unique(new PiNode(object, StampFactory.declaredTrusted(type, nonNull), replacementAnchor.asNode())); } checkCast.replaceAtUsages(piNode); graph.removeFixed(checkCast); @@ -753,7 +753,7 @@ if (replacement != null) { if (replacementAnchor != null && !(replacementAnchor instanceof BeginNode)) { - ValueAnchorNode anchor = graph.add(ValueAnchorNode.create(replacementAnchor.asNode())); + ValueAnchorNode anchor = graph.add(new ValueAnchorNode(replacementAnchor.asNode())); graph.addBeforeFixed(ifNode, anchor); } for (Node n : survivingSuccessor.usages().snapshot()) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -124,7 +124,7 @@ IfNode ifNode = (IfNode) deoptBegin.predecessor(); BeginNode otherBegin = ifNode.trueSuccessor(); LogicNode conditionNode = ifNode.condition(); - FixedGuardNode guard = graph.add(FixedGuardNode.create(conditionNode, deoptReason, deoptAction, deoptBegin == ifNode.trueSuccessor())); + FixedGuardNode guard = graph.add(new FixedGuardNode(conditionNode, deoptReason, deoptAction, deoptBegin == ifNode.trueSuccessor())); FixedWithNextNode pred = (FixedWithNextNode) ifNode.predecessor(); BeginNode survivingSuccessor; if (deoptBegin == ifNode.trueSuccessor()) { @@ -162,7 +162,7 @@ FixedNode next = deoptPred.next(); if (!(next instanceof DeoptimizeNode)) { - DeoptimizeNode newDeoptNode = graph.add(DeoptimizeNode.create(deoptAction, deoptReason)); + DeoptimizeNode newDeoptNode = graph.add(new DeoptimizeNode(deoptAction, deoptReason)); deoptPred.setNext(newDeoptNode); assert deoptPred == newDeoptNode.predecessor(); GraphUtil.killCFG(next); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -54,12 +54,12 @@ } MergeNode merge; if (target instanceof AbstractDeoptimizeNode) { - merge = graph.add(MergeNode.create()); - EndNode firstEnd = graph.add(EndNode.create()); + merge = graph.add(new MergeNode()); + EndNode firstEnd = graph.add(new EndNode()); ValueNode actionAndReason = ((AbstractDeoptimizeNode) target).getActionAndReason(context.getMetaAccess()); ValueNode speculation = ((AbstractDeoptimizeNode) target).getSpeculation(context.getMetaAccess()); - reasonActionPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(actionAndReason.getKind()), merge)); - speculationPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(speculation.getKind()), merge)); + reasonActionPhi = graph.addWithoutUnique(new ValuePhiNode(StampFactory.forKind(actionAndReason.getKind()), merge)); + speculationPhi = graph.addWithoutUnique(new ValuePhiNode(StampFactory.forKind(speculation.getKind()), merge)); merge.addForwardEnd(firstEnd); reasonActionPhi.addInput(actionAndReason); speculationPhi.addInput(speculation); @@ -67,14 +67,14 @@ exitLoops((AbstractDeoptimizeNode) target, firstEnd, cfg); - merge.setNext(graph.add(DynamicDeoptimizeNode.create(reasonActionPhi, speculationPhi))); + merge.setNext(graph.add(new DynamicDeoptimizeNode(reasonActionPhi, speculationPhi))); obsoletes = new LinkedList<>(); obsoletes.add((AbstractDeoptimizeNode) target); target = merge; } else { merge = (MergeNode) target; } - EndNode newEnd = graph.add(EndNode.create()); + EndNode newEnd = graph.add(new EndNode()); merge.addForwardEnd(newEnd); reasonActionPhi.addInput(deopt.getActionAndReason(context.getMetaAccess())); speculationPhi.addInput(deopt.getSpeculation(context.getMetaAccess())); @@ -96,7 +96,7 @@ Block block = cfg.blockFor(deopt); Loop loop = block.getLoop(); while (loop != null) { - end.graph().addBeforeFixed(end, end.graph().add(LoopExitNode.create((LoopBeginNode) loop.getHeader().getBeginNode()))); + end.graph().addBeforeFixed(end, end.graph().add(new LoopExitNode((LoopBeginNode) loop.getHeader().getBeginNode()))); loop = loop.getParent(); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -72,16 +72,16 @@ } ifNode.clearSuccessors(); Graph graph = ifNode.graph(); - MergeNode trueTargetMerge = graph.add(MergeNode.create()); + MergeNode trueTargetMerge = graph.add(new MergeNode()); trueTargetMerge.setNext(trueTarget); - EndNode firstTrueEnd = graph.add(EndNode.create()); - EndNode secondTrueEnd = graph.add(EndNode.create()); + EndNode firstTrueEnd = graph.add(new EndNode()); + EndNode secondTrueEnd = graph.add(new EndNode()); trueTargetMerge.addForwardEnd(firstTrueEnd); trueTargetMerge.addForwardEnd(secondTrueEnd); BeginNode firstTrueTarget = BeginNode.begin(firstTrueEnd); BeginNode secondTrueTarget = BeginNode.begin(secondTrueEnd); - BeginNode secondIf = BeginNode.begin(graph.add(IfNode.create(y, yNegated ? falseTarget : secondTrueTarget, yNegated ? secondTrueTarget : falseTarget, secondIfProbability))); - IfNode firstIf = graph.add(IfNode.create(x, xNegated ? secondIf : firstTrueTarget, xNegated ? firstTrueTarget : secondIf, firstIfProbability)); + BeginNode secondIf = BeginNode.begin(graph.add(new IfNode(y, yNegated ? falseTarget : secondTrueTarget, yNegated ? secondTrueTarget : falseTarget, secondIfProbability))); + IfNode firstIf = graph.add(new IfNode(x, xNegated ? secondIf : firstTrueTarget, xNegated ? firstTrueTarget : secondIf, firstIfProbability)); ifNode.replaceAtPredecessor(firstIf); ifNode.safeDelete(); } @@ -90,8 +90,8 @@ ValueNode trueTarget = conditional.trueValue(); ValueNode falseTarget = conditional.falseValue(); Graph graph = conditional.graph(); - ConditionalNode secondConditional = graph.unique(ConditionalNode.create(y, yNegated ? falseTarget : trueTarget, yNegated ? trueTarget : falseTarget)); - ConditionalNode firstConditional = graph.unique(ConditionalNode.create(x, xNegated ? secondConditional : trueTarget, xNegated ? trueTarget : secondConditional)); + ConditionalNode secondConditional = graph.unique(new ConditionalNode(y, yNegated ? falseTarget : trueTarget, yNegated ? trueTarget : falseTarget)); + ConditionalNode firstConditional = graph.unique(new ConditionalNode(x, xNegated ? secondConditional : trueTarget, xNegated ? trueTarget : secondConditional)); conditional.replaceAndDelete(firstConditional); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -186,7 +186,7 @@ } else { MemoryPhiNode phi = null; if (existingPhis == null || (phi = existingPhis.remove(key)) == null) { - phi = merge.graph().addWithoutUnique(MemoryPhiNode.create(merge, key)); + phi = merge.graph().addWithoutUnique(new MemoryPhiNode(merge, key)); } for (int j = 0; j < mergedStatesCount; j++) { phi.addInput(ValueNodeUtil.asNode(merged)); @@ -298,7 +298,7 @@ assert MemoryCheckpoint.TypeAssertion.correctType(node) : node; if (createMemoryMapNodes && node instanceof ReturnNode) { - ((ReturnNode) node).setMemoryMap(node.graph().unique(MemoryMapNode.create(state.lastMemorySnapshot))); + ((ReturnNode) node).setMemoryMap(node.graph().unique(new MemoryMapNode(state.lastMemorySnapshot))); } return state; } @@ -338,7 +338,7 @@ ValueAnchorNode anchor = null; GuardingNode guard = accessNode.getGuard(); if (guard != null) { - anchor = graph.add(ValueAnchorNode.create(guard.asNode())); + anchor = graph.add(new ValueAnchorNode(guard.asNode())); graph.addAfterFixed(accessNode, anchor); } graph.replaceFixedWithFloating(accessNode, floatingNode); @@ -392,7 +392,7 @@ for (LocationIdentity location : modifiedLocations) { if (!updateExistingPhis || !phis.containsKey(location)) { - MemoryPhiNode phi = loop.graph().addWithoutUnique(MemoryPhiNode.create(loop, location)); + MemoryPhiNode phi = loop.graph().addWithoutUnique(new MemoryPhiNode(loop, location)); phi.addInput(ValueNodeUtil.asNode(initialState.getLastLocationAccess(location))); phis.put(location, phi); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -161,9 +161,9 @@ private void lowerToIf(GuardNode guard) { StructuredGraph graph = guard.graph(); - BeginNode fastPath = graph.add(BeginNode.create()); + BeginNode fastPath = graph.add(new BeginNode()); @SuppressWarnings("deprecation") - DeoptimizeNode deopt = graph.add(DeoptimizeNode.create(guard.action(), guard.reason(), useGuardIdAsDebugId ? guard.getId() : 0, guard.getSpeculation(), null)); + DeoptimizeNode deopt = graph.add(new DeoptimizeNode(guard.action(), guard.reason(), useGuardIdAsDebugId ? guard.getId() : 0, guard.getSpeculation(), null)); BeginNode deoptBranch = BeginNode.begin(deopt); BeginNode trueSuccessor; BeginNode falseSuccessor; @@ -175,7 +175,7 @@ trueSuccessor = fastPath; falseSuccessor = deoptBranch; } - IfNode ifNode = graph.add(IfNode.create(guard.condition(), trueSuccessor, falseSuccessor, trueSuccessor == fastPath ? 1 : 0)); + IfNode ifNode = graph.add(new IfNode(guard.condition(), trueSuccessor, falseSuccessor, trueSuccessor == fastPath ? 1 : 0)); guard.replaceAndDelete(fastPath); insert(ifNode, fastPath); } @@ -184,7 +184,7 @@ Loop loop = block.getLoop(); StructuredGraph graph = deopt.graph(); while (loop != null) { - LoopExitNode exit = graph.add(LoopExitNode.create((LoopBeginNode) loop.getHeader().getBeginNode())); + LoopExitNode exit = graph.add(new LoopExitNode((LoopBeginNode) loop.getHeader().getBeginNode())); graph.addBeforeFixed(deopt, exit); loop = loop.getParent(); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,7 +37,7 @@ if (GenLoopSafepoints.getValue()) { for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.class)) { if (loopEndNode.canSafepoint()) { - SafepointNode safepointNode = graph.add(SafepointNode.create()); + SafepointNode safepointNode = graph.add(new SafepointNode()); graph.addBeforeFixed(loopEndNode, safepointNode); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -51,11 +51,7 @@ static class DummyGuardHandle extends ValueNode implements GuardedNode { @Input(InputType.Guard) GuardingNode guard; - public static DummyGuardHandle create(GuardingNode guard) { - return new DummyGuardHandle(guard); - } - - protected DummyGuardHandle(GuardingNode guard) { + public DummyGuardHandle(GuardingNode guard) { super(StampFactory.forVoid()); this.guard = guard; } @@ -146,15 +142,15 @@ } StructuredGraph graph = before.graph(); if (condition.graph().getGuardsStage().ordinal() >= StructuredGraph.GuardsStage.FIXED_DEOPTS.ordinal()) { - FixedGuardNode fixedGuard = graph.add(FixedGuardNode.create(condition, deoptReason, action, negated)); + FixedGuardNode fixedGuard = graph.add(new FixedGuardNode(condition, deoptReason, action, negated)); graph.addBeforeFixed(before, fixedGuard); - DummyGuardHandle handle = graph.add(DummyGuardHandle.create(fixedGuard)); + DummyGuardHandle handle = graph.add(new DummyGuardHandle(fixedGuard)); fixedGuard.lower(this); GuardingNode result = handle.getGuard(); handle.safeDelete(); return result; } else { - GuardNode newGuard = graph.unique(GuardNode.create(condition, guardAnchor, deoptReason, action, negated, JavaConstant.NULL_POINTER)); + GuardNode newGuard = graph.unique(new GuardNode(condition, guardAnchor, deoptReason, action, negated, JavaConstant.NULL_POINTER)); if (OptEliminateGuards.getValue()) { activeGuards.markAndGrow(newGuard); } @@ -347,7 +343,7 @@ // FixedWithNextNode is followed by some kind of BeginNode. // For example the when a FixedGuard followed by a loop exit is lowered to a // control-split + deopt. - BeginNode begin = node.graph().add(BeginNode.create()); + BeginNode begin = node.graph().add(new BeginNode()); nextLastFixed.replaceFirstSuccessor(nextNode, begin); begin.setNext(nextNode); nextLastFixed = begin; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -110,7 +110,7 @@ if (otherGuards.size() == successorCount - 1) { BeginNode anchor = computeOptimalAnchor(cfg.get(), BeginNode.prevBegin(controlSplit)); - GuardNode newGuard = controlSplit.graph().unique(GuardNode.create(guard.condition(), anchor, guard.reason(), guard.action(), guard.isNegated(), guard.getSpeculation())); + GuardNode newGuard = controlSplit.graph().unique(new GuardNode(guard.condition(), anchor, guard.reason(), guard.action(), guard.isNegated(), guard.getSpeculation())); for (GuardNode otherGuard : otherGuards) { otherGuard.replaceAndDelete(newGuard); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -62,13 +62,10 @@ @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor}) static class DummyAnchorNode extends FixedWithNextNode implements GuardingNode, AnchoringNode { - public static DummyAnchorNode create() { - return new DummyAnchorNode(); + public DummyAnchorNode() { + super(StampFactory.forVoid()); } - protected DummyAnchorNode() { - super(StampFactory.forVoid()); - } } /** @@ -341,7 +338,7 @@ * @return The new {@link ValueAnchorNode} that was created. */ private DummyAnchorNode addValueAnchor() { - DummyAnchorNode anchor = graph.add(DummyAnchorNode.create()); + DummyAnchorNode anchor = graph.add(new DummyAnchorNode()); graph.addAfterFixed(merge, anchor); merge.replaceAtUsages(InputType.Guard, anchor); merge.replaceAtUsages(InputType.Anchor, anchor); @@ -451,8 +448,8 @@ * @return The newly created end node. */ private AbstractEndNode createNewMerge(FixedNode successor, FrameState stateAfterMerge) { - MergeNode newBottomMerge = graph.add(MergeNode.create()); - AbstractEndNode newBottomEnd = graph.add(EndNode.create()); + MergeNode newBottomMerge = graph.add(new MergeNode()); + AbstractEndNode newBottomEnd = graph.add(new EndNode()); newBottomMerge.addForwardEnd(newBottomEnd); newBottomMerge.setStateAfter(stateAfterMerge); ((FixedWithNextNode) successor.predecessor()).setNext(newBottomEnd); @@ -526,7 +523,7 @@ ValueNode node = (ValueNode) duplicated; PhiNode newPhi = bottomPhis.get(node); if (newPhi == null) { - newPhi = graph.addWithoutUnique(ValuePhiNode.create(node.stamp().unrestricted(), newBottomMerge)); + newPhi = graph.addWithoutUnique(new ValuePhiNode(node.stamp().unrestricted(), newBottomMerge)); bottomPhis.put(node, newPhi); newPhi.addInput(node); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -162,7 +162,7 @@ IsNullNode isNullNode = (IsNullNode) condition; BeginNode nonTrappingContinuation = ifNode.falseSuccessor(); BeginNode trappingContinuation = ifNode.trueSuccessor(); - NullCheckNode trappingNullCheck = deopt.graph().add(NullCheckNode.create(isNullNode.getValue())); + NullCheckNode trappingNullCheck = deopt.graph().add(new NullCheckNode(isNullNode.getValue())); trappingNullCheck.setStateBefore(deopt.stateBefore()); deopt.graph().replaceSplit(ifNode, trappingNullCheck, nonTrappingContinuation); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Mon Jan 12 21:24:26 2015 +0100 @@ -97,7 +97,7 @@ metricUnconditionalDeoptInserted.increment(); StructuredGraph graph = fixed.graph(); // have to insert a FixedNode other than a ControlSinkNode - FixedGuardNode buckStopsHere = graph.add(FixedGuardNode.create(falseConstant, deoptReason, DeoptimizationAction.None)); + FixedGuardNode buckStopsHere = graph.add(new FixedGuardNode(falseConstant, deoptReason, DeoptimizationAction.None)); if (goesBeforeFixed) { fixed.replaceAtPredecessor(buckStopsHere); } else { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java Mon Jan 12 21:24:26 2015 +0100 @@ -231,7 +231,7 @@ * (1 of 3) definitely-non-null */ // addWithoutUnique for the same reason as in CheckCastNode.lower() - condition = graph.addWithoutUnique(InstanceOfNode.create(toType, subject, profile)); + condition = graph.addWithoutUnique(new InstanceOfNode(toType, subject, profile)); reasoner.added.add(condition); resultStamp = FlowUtil.asNonNullStamp(resultStamp); // TODO fix in CheckCastNode.lower() @@ -240,15 +240,15 @@ /* * (2 of 3) null-not-seen-in-profiling */ - IsNullNode isNN = graph.unique(IsNullNode.create(subject)); + IsNullNode isNN = graph.unique(new IsNullNode(subject)); reasoner.added.add(isNN); - FixedGuardNode nullCheck = graph.add(FixedGuardNode.create(isNN, UnreachedCode, InvalidateReprofile, true)); + FixedGuardNode nullCheck = graph.add(new FixedGuardNode(isNN, UnreachedCode, InvalidateReprofile, true)); graph.addBeforeFixed(checkCast, nullCheck); // not calling wrapInPiNode() because we don't want to rememberSubstitution() - PiNode nonNullGuarded = graph.unique(PiNode.create(subject, FlowUtil.asNonNullStamp(subjectStamp), nullCheck)); + PiNode nonNullGuarded = graph.unique(new PiNode(subject, FlowUtil.asNonNullStamp(subjectStamp), nullCheck)); reasoner.added.add(nonNullGuarded); // addWithoutUnique for the same reason as in CheckCastNode.lower() - condition = graph.addWithoutUnique(InstanceOfNode.create(toType, nonNullGuarded, profile)); + condition = graph.addWithoutUnique(new InstanceOfNode(toType, nonNullGuarded, profile)); reasoner.added.add(condition); resultStamp = FlowUtil.asNonNullStamp(resultStamp); } else { @@ -256,9 +256,9 @@ * (3 of 3) runtime-null-check-needed */ // addWithoutUnique for the same reason as in CheckCastNode.lower() - InstanceOfNode typeTest = graph.addWithoutUnique(InstanceOfNode.create(toType, subject, profile)); + InstanceOfNode typeTest = graph.addWithoutUnique(new InstanceOfNode(toType, subject, profile)); reasoner.added.add(typeTest); - LogicNode nullTest = graph.unique(IsNullNode.create(subject)); + LogicNode nullTest = graph.unique(new IsNullNode(subject)); reasoner.added.add(nullTest); // TODO (ds) replace with probability of null-seen when available final double shortCircuitProbability = NOT_FREQUENT_PROBABILITY; @@ -271,7 +271,7 @@ * Add a cast-guard (checking only what needs to be checked) and a PiNode (to be used in * place of the CheckCastNode). */ - FixedGuardNode castGuard = graph.add(FixedGuardNode.create(condition, checkCast.isForStoreCheck() ? ArrayStoreException : ClassCastException, InvalidateReprofile)); + FixedGuardNode castGuard = graph.add(new FixedGuardNode(condition, checkCast.isForStoreCheck() ? ArrayStoreException : ClassCastException, InvalidateReprofile)); graph.addBeforeFixed(checkCast, castGuard); assert FlowUtil.isLegalObjectStamp(resultStamp); @@ -280,7 +280,7 @@ if (!FlowUtil.lacksUsages(checkCast)) { // not calling wrapInPiNode() because we don't want to rememberSubstitution() - PiNode checkedObject = graph.unique(PiNode.create(subject, resultStamp, castGuard)); + PiNode checkedObject = graph.unique(new PiNode(subject, resultStamp, castGuard)); reasoner.added.add(checkedObject); assert !precisionLoss(originalCheckCastObject, checkedObject); assert !precisionLoss(subject, checkedObject); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Mon Jan 12 21:24:26 2015 +0100 @@ -662,7 +662,7 @@ try (Debug.Scope s = Debug.scope("Downcast", payload)) { assert payload != anchor : payload.graph().toString(); metricDowncasting.increment(); - PiNode result = graph.unique(PiNode.create(payload, newStamp, anchor.asNode())); + PiNode result = graph.unique(new PiNode(payload, newStamp, anchor.asNode())); // we've possibly got a new node in the graph --- bookkeeping is in order. added.add(result); if (remember) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FixedGuardReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FixedGuardReduction.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FixedGuardReduction.java Mon Jan 12 21:24:26 2015 +0100 @@ -31,7 +31,7 @@ * This class implements control-flow sensitive reductions for * {@link com.oracle.graal.nodes.FixedGuardNode}. *

- * + * *

* The laundry-list of all flow-sensitive reductions is summarized in * {@link com.oracle.graal.phases.common.cfs.FlowSensitiveReduction} @@ -151,5 +151,4 @@ graph.removeFixed(old); // `old.condition()` if unused will be removed in finished() } - } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/FlowSensitiveReduction.java Mon Jan 12 21:24:26 2015 +0100 @@ -497,9 +497,9 @@ * state-tracking. TODO the assumption here is that the code emitted for the resulting * FixedGuardNode is as efficient as for NullCheckNode. */ - IsNullNode isNN = graph.unique(IsNullNode.create(object)); + IsNullNode isNN = graph.unique(new IsNullNode(object)); reasoner.added.add(isNN); - FixedGuardNode nullCheck = graph.add(FixedGuardNode.create(isNN, UnreachedCode, InvalidateReprofile, true)); + FixedGuardNode nullCheck = graph.add(new FixedGuardNode(isNN, UnreachedCode, InvalidateReprofile, true)); graph.replaceFixedWithFixed(ncn, nullCheck); state.trackNN(object, nullCheck); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/GuardingPiReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/GuardingPiReduction.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/GuardingPiReduction.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,12 +37,12 @@ * This class implements control-flow sensitive reductions for * {@link com.oracle.graal.nodes.GuardingPiNode}. *

- * + * *

* The laundry-list of all flow-sensitive reductions is summarized in * {@link com.oracle.graal.phases.common.cfs.FlowSensitiveReduction} *

- * + * * @see #visitGuardingPiNode(com.oracle.graal.nodes.GuardingPiNode) */ public abstract class GuardingPiReduction extends BaseReduction { @@ -141,7 +141,7 @@ * FixedGuardNode allows tracking the condition via a GuardingNode, thus potentially * triggering simplifications down the road. */ - FixedGuardNode fixedGuard = graph.add(FixedGuardNode.create(envelope.condition(), envelope.getReason(), envelope.getAction(), envelope.isNegated())); + FixedGuardNode fixedGuard = graph.add(new FixedGuardNode(envelope.condition(), envelope.getReason(), envelope.getAction(), envelope.isNegated())); graph.addBeforeFixed(envelope, fixedGuard); /* @@ -152,7 +152,7 @@ if (!FlowUtil.lacksUsages(envelope)) { // not calling wrapInPiNode() because we don't want to rememberSubstitution() - PiNode replacement = graph.unique(PiNode.create(envelope.object(), envelope.stamp(), fixedGuard)); + PiNode replacement = graph.unique(new PiNode(envelope.object(), envelope.stamp(), fixedGuard)); reasoner.added.add(replacement); // before removing the GuardingPiNode replace its usages envelope.replaceAtUsages(replacement); @@ -281,7 +281,7 @@ * TODO The GuardingPiNode has an outgoing stamp whose narrowing goes beyond what * the condition checks. That's suspicious. */ - PiNode replacement = graph.unique(PiNode.create(payload, envelope.stamp())); + PiNode replacement = graph.unique(new PiNode(payload, envelope.stamp())); reasoner.added.add(replacement); removeGuardingPiNode(envelope, replacement); return true; @@ -295,7 +295,7 @@ Witness w = state.typeInfo(payload); GuardingNode nonNullAnchor = (w != null && w.isNonNull()) ? w.guard() : null; if (nonNullAnchor != null) { - PiNode replacement = graph.unique(PiNode.create(payload, envelope.stamp(), nonNullAnchor.asNode())); + PiNode replacement = graph.unique(new PiNode(payload, envelope.stamp(), nonNullAnchor.asNode())); reasoner.added.add(replacement); removeGuardingPiNode(envelope, replacement); return true; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java Mon Jan 12 21:24:26 2015 +0100 @@ -176,7 +176,7 @@ public static void replaceInvokeCallTarget(Invoke invoke, StructuredGraph graph, InvokeKind invokeKind, ResolvedJavaMethod targetMethod) { MethodCallTargetNode oldCallTarget = (MethodCallTargetNode) invoke.callTarget(); - MethodCallTargetNode newCallTarget = graph.add(MethodCallTargetNode.create(invokeKind, targetMethod, oldCallTarget.arguments().toArray(new ValueNode[0]), oldCallTarget.returnType())); + MethodCallTargetNode newCallTarget = graph.add(new MethodCallTargetNode(invokeKind, targetMethod, oldCallTarget.arguments().toArray(new ValueNode[0]), oldCallTarget.returnType())); invoke.asNode().replaceFirstInput(oldCallTarget, newCallTarget); } @@ -186,7 +186,7 @@ private static GuardedValueNode createAnchoredReceiver(StructuredGraph graph, GuardingNode anchor, ValueNode receiver, Stamp stamp) { // to avoid that floating reads on receiver fields float above the type check - return graph.unique(GuardedValueNode.create(receiver, anchor, stamp)); + return graph.unique(new GuardedValueNode(receiver, anchor, stamp)); } /** @@ -302,7 +302,7 @@ // get rid of memory kill BeginNode begin = invokeWithException.next(); if (begin instanceof KillingBeginNode) { - BeginNode newBegin = BeginNode.create(); + BeginNode newBegin = new BeginNode(); graph.addAfterFixed(begin, graph.add(newBegin)); begin.replaceAtUsages(newBegin); graph.removeFixed(begin); @@ -310,7 +310,7 @@ } else { if (unwindNode != null) { UnwindNode unwindDuplicate = (UnwindNode) duplicates.get(unwindNode); - DeoptimizeNode deoptimizeNode = graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); + DeoptimizeNode deoptimizeNode = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); unwindDuplicate.replaceAndDelete(deoptimizeNode); } } @@ -341,7 +341,7 @@ for (ReturnNode returnNode : returnNodes) { returnDuplicates.add((ReturnNode) duplicates.get(returnNode)); } - MergeNode merge = graph.add(MergeNode.create()); + MergeNode merge = graph.add(new MergeNode()); merge.setStateAfter(stateAfter); ValueNode returnValue = mergeReturns(merge, returnDuplicates, canonicalizedNodes); invokeNode.replaceAtUsages(returnValue); @@ -442,12 +442,12 @@ MergeNode merge = (MergeNode) fixedStateSplit; while (merge.isAlive()) { AbstractEndNode end = merge.forwardEnds().first(); - DeoptimizeNode deoptimizeNode = graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); + DeoptimizeNode deoptimizeNode = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); end.replaceAtPredecessor(deoptimizeNode); GraphUtil.killCFG(end); } } else { - FixedNode deoptimizeNode = graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); + FixedNode deoptimizeNode = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.NotCompiledExceptionHandler)); if (fixedStateSplit instanceof BeginNode) { deoptimizeNode = BeginNode.begin(deoptimizeNode); } @@ -464,12 +464,12 @@ for (ReturnNode returnNode : returnNodes) { // create and wire up a new EndNode - EndNode endNode = merge.graph().add(EndNode.create()); + EndNode endNode = merge.graph().add(new EndNode()); merge.addForwardEnd(endNode); if (returnNode.result() != null) { if (returnValuePhi == null) { - returnValuePhi = merge.graph().addWithoutUnique(ValuePhiNode.create(returnNode.result().stamp().unrestricted(), merge)); + returnValuePhi = merge.graph().addWithoutUnique(new ValuePhiNode(returnNode.result().stamp().unrestricted(), merge)); if (canonicalizedNodes != null) { canonicalizedNodes.add(returnValuePhi); } @@ -501,9 +501,9 @@ StructuredGraph graph = callTarget.graph(); ValueNode firstParam = callTarget.arguments().get(0); if (firstParam.getKind() == Kind.Object && !StampTool.isPointerNonNull(firstParam)) { - IsNullNode condition = graph.unique(IsNullNode.create(firstParam)); + IsNullNode condition = graph.unique(new IsNullNode(firstParam)); Stamp stamp = firstParam.stamp().join(objectNonNull()); - GuardingPiNode nonNullReceiver = graph.add(GuardingPiNode.create(firstParam, condition, true, NullCheckException, InvalidateReprofile, stamp)); + GuardingPiNode nonNullReceiver = graph.add(new GuardingPiNode(firstParam, condition, true, NullCheckException, InvalidateReprofile, stamp)); graph.addBeforeFixed(invoke.asNode(), nonNullReceiver); callTarget.replaceFirstInput(firstParam, nonNullReceiver); return nonNullReceiver; @@ -546,8 +546,8 @@ private static FixedWithNextNode createMacroNodeInstance(Class macroNodeClass, Invoke invoke) throws GraalInternalError { try { - Method factory = macroNodeClass.getDeclaredMethod("create", Invoke.class); - return (FixedWithNextNode) factory.invoke(null, invoke); + Constructor cons = macroNodeClass.getDeclaredConstructor(Invoke.class); + return (FixedWithNextNode) cons.newInstance(invoke); } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { throw new GraalGraphInternalError(e).addContext(invoke.asNode()).addContext("macroSubstitution", macroNodeClass); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/MultiTypeGuardInlineInfo.java Mon Jan 12 21:24:26 2015 +0100 @@ -173,12 +173,12 @@ ValueNode originalReceiver = ((MethodCallTargetNode) invoke.callTarget()).receiver(); // setup merge and phi nodes for results and exceptions - MergeNode returnMerge = graph.add(MergeNode.create()); + MergeNode returnMerge = graph.add(new MergeNode()); returnMerge.setStateAfter(invoke.stateAfter()); PhiNode returnValuePhi = null; if (invoke.asNode().getKind() != Kind.Void) { - returnValuePhi = graph.addWithoutUnique(ValuePhiNode.create(invoke.asNode().stamp().unrestricted(), returnMerge)); + returnValuePhi = graph.addWithoutUnique(new ValuePhiNode(invoke.asNode().stamp().unrestricted(), returnMerge)); } MergeNode exceptionMerge = null; @@ -187,11 +187,11 @@ InvokeWithExceptionNode invokeWithException = (InvokeWithExceptionNode) invoke; ExceptionObjectNode exceptionEdge = (ExceptionObjectNode) invokeWithException.exceptionEdge(); - exceptionMerge = graph.add(MergeNode.create()); + exceptionMerge = graph.add(new MergeNode()); FixedNode exceptionSux = exceptionEdge.next(); graph.addBeforeFixed(exceptionSux, exceptionMerge); - exceptionObjectPhi = graph.addWithoutUnique(ValuePhiNode.create(StampFactory.forKind(Kind.Object), exceptionMerge)); + exceptionObjectPhi = graph.addWithoutUnique(new ValuePhiNode(StampFactory.forKind(Kind.Object), exceptionMerge)); exceptionMerge.setStateAfter(exceptionEdge.stateAfter().duplicateModified(invoke.stateAfter().bci, true, Kind.Object, exceptionObjectPhi)); } @@ -206,7 +206,7 @@ if (shouldFallbackToInvoke()) { unknownTypeSux = createInvocationBlock(graph, invoke, returnMerge, returnValuePhi, exceptionMerge, exceptionObjectPhi, false); } else { - unknownTypeSux = graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.TypeCheckedInliningViolated)); + unknownTypeSux = graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.TypeCheckedInliningViolated)); } successors[successors.length - 1] = BeginNode.begin(unknownTypeSux); @@ -330,7 +330,7 @@ private Collection inlineSingleMethod(StructuredGraph graph, MetaAccessProvider metaAccess, Assumptions assumptions, StampProvider stampProvider) { assert concretes.size() == 1 && inlineableElements.length == 1 && ptypes.size() > 1 && !shouldFallbackToInvoke() && notRecordedTypeProbability == 0; - BeginNode calleeEntryNode = graph.add(BeginNode.create()); + BeginNode calleeEntryNode = graph.add(new BeginNode()); BeginNode unknownTypeSux = createUnknownTypeSuccessor(graph); BeginNode[] successors = new BeginNode[]{calleeEntryNode, unknownTypeSux}; @@ -344,7 +344,7 @@ private boolean createDispatchOnTypeBeforeInvoke(StructuredGraph graph, BeginNode[] successors, boolean invokeIsOnlySuccessor, MetaAccessProvider metaAccess, StampProvider stampProvider) { assert ptypes.size() >= 1; ValueNode nonNullReceiver = InliningUtil.nonNullReceiver(invoke); - LoadHubNode hub = graph.unique(LoadHubNode.create(stampProvider, nonNullReceiver)); + LoadHubNode hub = graph.unique(new LoadHubNode(stampProvider, nonNullReceiver)); if (!invokeIsOnlySuccessor && chooseMethodDispatch()) { assert successors.length == concretes.size() + 1; @@ -375,9 +375,9 @@ ResolvedJavaType receiverType = invoke.getReceiverType(); FixedNode lastSucc = successors[concretes.size()]; for (int i = concretes.size() - 1; i >= 0; --i) { - LoadMethodNode method = graph.add(LoadMethodNode.create(stampProvider.createMethodStamp(), concretes.get(i), receiverType, hub)); + LoadMethodNode method = graph.add(new LoadMethodNode(stampProvider.createMethodStamp(), concretes.get(i), receiverType, hub)); CompareNode methodCheck = CompareNode.createCompareNode(graph, Condition.EQ, method, constantMethods[i]); - IfNode ifNode = graph.add(IfNode.create(methodCheck, successors[i], lastSucc, probability[i])); + IfNode ifNode = graph.add(new IfNode(methodCheck, successors[i], lastSucc, probability[i])); method.setNext(ifNode); lastSucc = method; } @@ -408,7 +408,7 @@ keyProbabilities[i] /= totalProbability; } - TypeSwitchNode typeSwitch = graph.add(TypeSwitchNode.create(hub, successors, keys, keyProbabilities, keySuccessors)); + TypeSwitchNode typeSwitch = graph.add(new TypeSwitchNode(hub, successors, keys, keyProbabilities, keySuccessors)); FixedWithNextNode pred = (FixedWithNextNode) invoke.asNode().predecessor(); pred.setNext(typeSwitch); return false; @@ -462,10 +462,10 @@ private static BeginNode createInvocationBlock(StructuredGraph graph, Invoke invoke, MergeNode returnMerge, PhiNode returnValuePhi, MergeNode exceptionMerge, PhiNode exceptionObjectPhi, boolean useForInlining) { Invoke duplicatedInvoke = duplicateInvokeForInlining(graph, invoke, exceptionMerge, exceptionObjectPhi, useForInlining); - BeginNode calleeEntryNode = graph.add(BeginNode.create()); + BeginNode calleeEntryNode = graph.add(new BeginNode()); calleeEntryNode.setNext(duplicatedInvoke.asNode()); - AbstractEndNode endNode = graph.add(EndNode.create()); + AbstractEndNode endNode = graph.add(new EndNode()); duplicatedInvoke.setNext(endNode); returnMerge.addForwardEnd(endNode); @@ -500,7 +500,7 @@ // set new state (pop old exception object, push new one) newExceptionEdge.setStateAfter(stateAfterException.duplicateModified(Kind.Object, newExceptionEdge)); - AbstractEndNode endNode = graph.add(EndNode.create()); + AbstractEndNode endNode = graph.add(new EndNode()); newExceptionEdge.setNext(endNode); exceptionMerge.addForwardEnd(endNode); exceptionObjectPhi.addInput(newExceptionEdge); @@ -538,7 +538,7 @@ } private void devirtualizeWithTypeSwitch(StructuredGraph graph, InvokeKind kind, ResolvedJavaMethod target, MetaAccessProvider metaAccess, StampProvider stampProvider) { - BeginNode invocationEntry = graph.add(BeginNode.create()); + BeginNode invocationEntry = graph.add(new BeginNode()); BeginNode unknownTypeSux = createUnknownTypeSuccessor(graph); BeginNode[] successors = new BeginNode[]{invocationEntry, unknownTypeSux}; createDispatchOnTypeBeforeInvoke(graph, successors, true, metaAccess, stampProvider); @@ -551,7 +551,7 @@ } private static BeginNode createUnknownTypeSuccessor(StructuredGraph graph) { - return BeginNode.begin(graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.TypeCheckedInliningViolated))); + return BeginNode.begin(graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.TypeCheckedInliningViolated))); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/TypeGuardInlineInfo.java Mon Jan 12 21:24:26 2015 +0100 @@ -103,11 +103,11 @@ private void createGuard(StructuredGraph graph, Providers providers) { ValueNode nonNullReceiver = InliningUtil.nonNullReceiver(invoke); - LoadHubNode receiverHub = graph.unique(LoadHubNode.create(providers.getStampProvider(), nonNullReceiver)); + LoadHubNode receiverHub = graph.unique(new LoadHubNode(providers.getStampProvider(), nonNullReceiver)); ConstantNode typeHub = ConstantNode.forConstant(receiverHub.stamp(), type.getObjectHub(), providers.getMetaAccess(), graph); CompareNode typeCheck = CompareNode.createCompareNode(graph, Condition.EQ, receiverHub, typeHub); - FixedGuardNode guard = graph.add(FixedGuardNode.create(typeCheck, DeoptimizationReason.TypeCheckedInliningViolated, DeoptimizationAction.InvalidateReprofile)); + FixedGuardNode guard = graph.add(new FixedGuardNode(typeCheck, DeoptimizationReason.TypeCheckedInliningViolated, DeoptimizationAction.InvalidateReprofile)); assert invoke.predecessor() != null; ValueNode anchoredReceiver = InliningUtil.createAnchoredReceiver(graph, guard, type, nonNullReceiver, true); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/InferStamps.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/InferStamps.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/InferStamps.java Mon Jan 12 21:24:26 2015 +0100 @@ -90,5 +90,4 @@ } return true; } - } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64ConvertSnippets.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64ConvertSnippets.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64ConvertSnippets.java Mon Jan 12 21:24:26 2015 +0100 @@ -182,7 +182,7 @@ Arguments args = new Arguments(key, graph.getGuardsStage(), tool.getLoweringStage()); args.add("input", convert.getValue()); - args.add("result", graph.unique(AMD64FloatConvertNode.create(convert.getFloatConvert(), convert.getValue()))); + args.add("result", graph.unique(new AMD64FloatConvertNode(convert.getFloatConvert(), convert.getValue()))); SnippetTemplate template = template(args); Debug.log("Lowering %s in %s: node=%s, template=%s, arguments=%s", convert.getFloatConvert(), graph, convert, template, args); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,11 +37,7 @@ @NodeInfo public class AMD64CountLeadingZerosNode extends UnaryNode implements LIRLowerable { - public static AMD64CountLeadingZerosNode create(ValueNode value) { - return new AMD64CountLeadingZerosNode(value); - } - - protected AMD64CountLeadingZerosNode(ValueNode value) { + public AMD64CountLeadingZerosNode(ValueNode value) { super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,11 +37,7 @@ @NodeInfo public class AMD64CountTrailingZerosNode extends UnaryNode implements LIRLowerable { - public static AMD64CountTrailingZerosNode create(ValueNode value) { - return new AMD64CountTrailingZerosNode(value); - } - - protected AMD64CountTrailingZerosNode(ValueNode value) { + public AMD64CountTrailingZerosNode(ValueNode value) { super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java --- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,11 +41,7 @@ protected final FloatConvert op; - public static AMD64FloatConvertNode create(FloatConvert op, ValueNode value) { - return new AMD64FloatConvertNode(op, value); - } - - protected AMD64FloatConvertNode(FloatConvert op, ValueNode value) { + public AMD64FloatConvertNode(FloatConvert op, ValueNode value) { super(table -> table.getFloatConvert(op), value); this.op = op; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java --- a/graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.hsail/src/com/oracle/graal/replacements/hsail/HSAILMathIntrinsicsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -69,17 +69,7 @@ return operation; } - /** - * Creates a new HSAILMathIntrinsicNode. - * - * @param x the argument to the math operation - * @param op the math operation - */ - public static HSAILMathIntrinsicsNode create(ValueNode x, HSAILArithmetic op) { - return new HSAILMathIntrinsicsNode(x, op); - } - - protected HSAILMathIntrinsicsNode(ValueNode x, HSAILArithmetic op) { + public HSAILMathIntrinsicsNode(ValueNode x, HSAILArithmetic op) { super(StampFactory.forKind(x.getKind())); this.param = x; this.operation = op; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/CheckCastTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/CheckCastTest.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/CheckCastTest.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,7 +37,7 @@ protected void replaceProfile(StructuredGraph graph, JavaTypeProfile profile) { CheckCastNode ccn = graph.getNodes().filter(CheckCastNode.class).first(); if (ccn != null) { - CheckCastNode ccnNew = graph.add(CheckCastNode.create(ccn.type(), ccn.object(), profile, false)); + CheckCastNode ccnNew = graph.add(new CheckCastNode(ccn.type(), ccn.object(), profile, false)); graph.replaceFixedWithFixed(ccn, ccnNew); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java Mon Jan 12 21:24:26 2015 +0100 @@ -48,13 +48,9 @@ @Input ConstantNode i1; @Input FloatingNode i2; - public static TestNode create() { - return new TestNode(); + public TestNode() { } - protected TestNode() { - // TODO Auto-generated constructor stub - } } StructuredGraph graph = new StructuredGraph(); @@ -66,7 +62,7 @@ Edges inputs; public EdgesTest() { - node = TestNode.create(); + node = new TestNode(); i1 = ConstantNode.forInt(1, graph); i2 = ConstantNode.forDouble(1.0d, graph); i3 = ConstantNode.forInt(4, graph); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/InstanceOfTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/InstanceOfTest.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/InstanceOfTest.java Mon Jan 12 21:24:26 2015 +0100 @@ -50,7 +50,7 @@ protected void replaceProfile(StructuredGraph graph, JavaTypeProfile profile) { InstanceOfNode ion = graph.getNodes().filter(InstanceOfNode.class).first(); if (ion != null) { - InstanceOfNode ionNew = graph.unique(InstanceOfNode.create(ion.type(), ion.getValue(), profile)); + InstanceOfNode ionNew = graph.unique(new InstanceOfNode(ion.type(), ion.getValue(), profile)); graph.replaceFloating(ion, ionNew); } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/NewMultiArrayTest.java --- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/NewMultiArrayTest.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/NewMultiArrayTest.java Mon Jan 12 21:24:26 2015 +0100 @@ -64,7 +64,7 @@ dimensionNodes[i] = ConstantNode.forInt(dimensions[i], graph); } - NewMultiArrayNode repl = graph.add(NewMultiArrayNode.create(arrayType, dimensionNodes)); + NewMultiArrayNode repl = graph.add(new NewMultiArrayNode(arrayType, dimensionNodes)); graph.replaceFixedWithFixed(node, repl); forceCompile = true; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java --- a/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements.verifier/src/com/oracle/graal/replacements/verifier/NodeIntrinsicVerifier.java Mon Jan 12 21:24:26 2015 +0100 @@ -94,7 +94,7 @@ env.getMessager().printMessage(Kind.ERROR, String.format("Cannot make @NodeIntrinsic for abstract node class %s.", nodeClass.getSimpleName()), element, annotation); } else { TypeMirror[] constructorSignature = constructorSignature(intrinsicMethod); - findFactory(nodeClass, constructorSignature, intrinsicMethod, annotation); + findConstructor(nodeClass, constructorSignature, intrinsicMethod, annotation); } } else { env.getMessager().printMessage(Kind.ERROR, String.format("The class %s is not a Node subclass.", nodeClass.getSimpleName()), element, annotation); @@ -122,40 +122,37 @@ return parameters; } - private void findFactory(TypeElement nodeClass, TypeMirror[] signature, ExecutableElement intrinsicMethod, AnnotationMirror intrinsicAnnotation) { - List methods = ElementFilter.methodsIn(nodeClass.getEnclosedElements()); + private void findConstructor(TypeElement nodeClass, TypeMirror[] signature, ExecutableElement intrinsicMethod, AnnotationMirror intrinsicAnnotation) { + List constructors = ElementFilter.constructorsIn(nodeClass.getEnclosedElements()); List failureReasons = new ArrayList<>(); - nextMethod: for (ExecutableElement method : methods) { - if (!method.getSimpleName().contentEquals("create") || !method.getModifiers().contains(Modifier.STATIC)) { - continue; - } + nextConstructor: for (ExecutableElement constructor : constructors) { int sIdx = 0; - int mIdx = 0; - while (mIdx < method.getParameters().size()) { - VariableElement parameter = method.getParameters().get(mIdx++); + int cIdx = 0; + while (cIdx < constructor.getParameters().size()) { + VariableElement parameter = constructor.getParameters().get(cIdx++); if (parameter.getAnnotation(InjectedNodeParameter.class) != null) { // skip injected parameters continue; } TypeMirror paramType = parameter.asType(); - if (mIdx == method.getParameters().size() && paramType.getKind() == TypeKind.ARRAY) { - // last argument of method is varargs, match remaining intrinsic arguments + if (cIdx == constructor.getParameters().size() && paramType.getKind() == TypeKind.ARRAY) { + // last argument of constructor is varargs, match remaining intrinsic arguments TypeMirror varargsType = ((ArrayType) paramType).getComponentType(); while (sIdx < signature.length) { if (!isTypeCompatible(varargsType, signature[sIdx++])) { - failureReasons.add(String.format("Factory method %s failed because the types of argument %d are incompatible: %s != %s", method, sIdx, varargsType, signature[sIdx - 1])); - continue nextMethod; + failureReasons.add(String.format("Constructor %s failed because the types of argument %d are incompatible: %s != %s", constructor, sIdx, varargsType, signature[sIdx - 1])); + continue nextConstructor; } } } else if (sIdx >= signature.length) { // too many arguments in intrinsic method - failureReasons.add(String.format("Too many arguments for %s", method)); - continue nextMethod; + failureReasons.add(String.format("Too many arguments for %s", constructor)); + continue nextConstructor; } else if (!isTypeCompatible(paramType, signature[sIdx++])) { - failureReasons.add(String.format("Factory method %s failed because the types of argument %d are incompatible: %s != %s", method, sIdx, paramType, signature[sIdx - 1])); - continue nextMethod; + failureReasons.add(String.format("Constructor %s failed because the types of argument %d are incompatible: %s != %s", constructor, sIdx, paramType, signature[sIdx - 1])); + continue nextConstructor; } } @@ -165,12 +162,12 @@ } // too many arguments in constructor - failureReasons.add(String.format("Not enough arguments for %s", method)); + failureReasons.add(String.format("Not enough arguments for %s", constructor)); } // not found if (failureReasons.isEmpty()) { - env.getMessager().printMessage(Kind.ERROR, "Could not find matching factory method for node intrinsic.", intrinsicMethod, intrinsicAnnotation); + env.getMessager().printMessage(Kind.ERROR, "Could not find matching constructor for node intrinsic.", intrinsicMethod, intrinsicAnnotation); } else { for (String reason : failureReasons) { env.getMessager().printMessage(Kind.ERROR, reason, intrinsicMethod, intrinsicAnnotation); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/CollapseFrameForSingleSideEffectPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -228,7 +228,7 @@ assert bci == AFTER_BCI || bci == AFTER_EXCEPTION_BCI || bci == INVALID_FRAMESTATE_BCI; FrameState currentStateAfter = node.stateAfter(); if (currentStateAfter != null || !replaceOnly) { - node.setStateAfter(graph.add(FrameState.create(bci))); + node.setStateAfter(graph.add(new FrameState(bci))); if (currentStateAfter != null && currentStateAfter.usages().isEmpty()) { GraphUtil.killWithUnusedFloatingInputs(currentStateAfter); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/DefaultJavaLoweringProvider.java Mon Jan 12 21:24:26 2015 +0100 @@ -121,7 +121,7 @@ ConstantLocationNode location = createFieldLocation(graph, field, false); assert location != null : "Field that is loaded must not be eliminated"; - ReadNode memoryRead = graph.add(ReadNode.create(object, location, loadStamp, fieldLoadBarrierType(field))); + ReadNode memoryRead = graph.add(new ReadNode(object, location, loadStamp, fieldLoadBarrierType(field))); ValueNode readValue = implicitLoadConvert(graph, field.getKind(), memoryRead); loadField.replaceAtUsages(readValue); graph.replaceFixed(loadField, memoryRead); @@ -129,9 +129,9 @@ memoryRead.setGuard(createNullCheck(object, memoryRead, tool)); if (loadField.isVolatile()) { - MembarNode preMembar = graph.add(MembarNode.create(JMM_PRE_VOLATILE_READ)); + MembarNode preMembar = graph.add(new MembarNode(JMM_PRE_VOLATILE_READ)); graph.addBeforeFixed(memoryRead, preMembar); - MembarNode postMembar = graph.add(MembarNode.create(JMM_POST_VOLATILE_READ)); + MembarNode postMembar = graph.add(new MembarNode(JMM_POST_VOLATILE_READ)); graph.addAfterFixed(memoryRead, postMembar); } } @@ -149,15 +149,15 @@ graph.removeFixed(storeField); return; } - WriteNode memoryWrite = graph.add(WriteNode.create(object, value, location, fieldStoreBarrierType(storeField.field()))); + WriteNode memoryWrite = graph.add(new WriteNode(object, value, location, fieldStoreBarrierType(storeField.field()))); memoryWrite.setStateAfter(storeField.stateAfter()); graph.replaceFixedWithFixed(storeField, memoryWrite); memoryWrite.setGuard(createNullCheck(object, memoryWrite, tool)); if (storeField.isVolatile()) { - MembarNode preMembar = graph.add(MembarNode.create(JMM_PRE_VOLATILE_WRITE)); + MembarNode preMembar = graph.add(new MembarNode(JMM_PRE_VOLATILE_WRITE)); graph.addBeforeFixed(memoryWrite, preMembar); - MembarNode postMembar = graph.add(MembarNode.create(JMM_POST_VOLATILE_WRITE)); + MembarNode postMembar = graph.add(new MembarNode(JMM_POST_VOLATILE_WRITE)); graph.addAfterFixed(memoryWrite, postMembar); } } @@ -168,7 +168,7 @@ LocationNode location = createArrayLocation(graph, elementKind, loadIndexed.index(), false); Stamp loadStamp = loadStamp(loadIndexed.stamp(), elementKind); - ReadNode memoryRead = graph.add(ReadNode.create(loadIndexed.array(), location, loadStamp, BarrierType.NONE)); + ReadNode memoryRead = graph.add(new ReadNode(loadIndexed.array(), location, loadStamp, BarrierType.NONE)); ValueNode readValue = implicitLoadConvert(graph, elementKind, memoryRead); memoryRead.setGuard(createBoundsCheck(loadIndexed, tool)); @@ -192,20 +192,20 @@ if (arrayType != null && StampTool.isExactType(array)) { ResolvedJavaType elementType = arrayType.getComponentType(); if (!elementType.isJavaLangObject()) { - checkCastNode = graph.add(CheckCastNode.create(elementType, value, null, true)); + checkCastNode = graph.add(new CheckCastNode(elementType, value, null, true)); graph.addBeforeFixed(storeIndexed, checkCastNode); value = checkCastNode; } } else { ValueNode arrayClass = createReadHub(graph, array, boundsCheck); ValueNode componentHub = createReadArrayComponentHub(graph, arrayClass, storeIndexed); - checkCastNode = graph.add(CheckCastDynamicNode.create(componentHub, value, true)); + checkCastNode = graph.add(new CheckCastDynamicNode(componentHub, value, true)); graph.addBeforeFixed(storeIndexed, checkCastNode); value = checkCastNode; } } - WriteNode memoryWrite = graph.add(WriteNode.create(array, implicitStoreConvert(graph, elementKind, value), location, arrayStoreBarrierType(storeIndexed.elementKind()))); + WriteNode memoryWrite = graph.add(new WriteNode(array, implicitStoreConvert(graph, elementKind, value), location, arrayStoreBarrierType(storeIndexed.elementKind()))); memoryWrite.setGuard(boundsCheck); memoryWrite.setStateAfter(storeIndexed.stateAfter()); graph.replaceFixedWithFixed(storeIndexed, memoryWrite); @@ -219,9 +219,9 @@ protected void lowerArrayLengthNode(ArrayLengthNode arrayLengthNode, LoweringTool tool) { StructuredGraph graph = arrayLengthNode.graph(); ValueNode array = arrayLengthNode.array(); - ConstantLocationNode location = ConstantLocationNode.create(ARRAY_LENGTH_LOCATION, arrayLengthOffset(), graph); + ConstantLocationNode location = graph.unique(new ConstantLocationNode(ARRAY_LENGTH_LOCATION, arrayLengthOffset())); - ReadNode arrayLengthRead = graph.add(ReadNode.create(array, location, StampFactory.positiveInt(), BarrierType.NONE)); + ReadNode arrayLengthRead = graph.add(new ReadNode(array, location, StampFactory.positiveInt(), BarrierType.NONE)); arrayLengthRead.setGuard(createNullCheck(array, arrayLengthNode, tool)); graph.replaceFixedWithFixed(arrayLengthNode, arrayLengthRead); } @@ -243,7 +243,7 @@ ValueNode expectedValue = implicitStoreConvert(graph, valueKind, cas.expected()); ValueNode newValue = implicitStoreConvert(graph, valueKind, cas.newValue()); - LoweredCompareAndSwapNode atomicNode = graph.add(LoweredCompareAndSwapNode.create(cas.object(), location, expectedValue, newValue, compareAndSwapBarrierType(cas))); + LoweredCompareAndSwapNode atomicNode = graph.add(new LoweredCompareAndSwapNode(cas.object(), location, expectedValue, newValue, compareAndSwapBarrierType(cas))); atomicNode.setStateAfter(cas.stateAfter()); graph.replaceFixedWithFixed(cas, atomicNode); } @@ -251,11 +251,11 @@ protected void lowerAtomicReadAndWriteNode(AtomicReadAndWriteNode n) { StructuredGraph graph = n.graph(); Kind valueKind = n.getValueKind(); - LocationNode location = IndexedLocationNode.create(n.getLocationIdentity(), 0, n.offset(), graph, 1); + LocationNode location = graph.unique(new IndexedLocationNode(n.getLocationIdentity(), 0, n.offset(), 1)); ValueNode newValue = implicitStoreConvert(graph, valueKind, n.newValue()); - LoweredAtomicReadAndWriteNode memoryRead = graph.add(LoweredAtomicReadAndWriteNode.create(n.object(), location, newValue, atomicReadAndWriteBarrierType(n))); + LoweredAtomicReadAndWriteNode memoryRead = graph.add(new LoweredAtomicReadAndWriteNode(n.object(), location, newValue, atomicReadAndWriteBarrierType(n))); memoryRead.setStateAfter(n.stateAfter()); ValueNode readValue = implicitLoadConvert(graph, valueKind, memoryRead); @@ -266,7 +266,7 @@ protected void lowerUnsafeLoadNode(UnsafeLoadNode load, @SuppressWarnings("unused") LoweringTool tool) { StructuredGraph graph = load.graph(); if (load.getGuardingCondition() != null) { - ConditionAnchorNode valueAnchorNode = graph.add(ConditionAnchorNode.create(load.getGuardingCondition())); + ConditionAnchorNode valueAnchorNode = graph.add(new ConditionAnchorNode(load.getGuardingCondition())); ReadNode memoryRead = createUnsafeRead(graph, load, valueAnchorNode); graph.replaceFixedWithFixed(load, valueAnchorNode); graph.addAfterFixed(valueAnchorNode, memoryRead); @@ -293,7 +293,7 @@ object = base[0]; } Stamp loadStamp = loadStamp(load.stamp(), readKind, compressible); - ReadNode memoryRead = graph.add(ReadNode.create(object, location, loadStamp, guard, BarrierType.NONE)); + ReadNode memoryRead = graph.add(new ReadNode(object, location, loadStamp, guard, BarrierType.NONE)); ValueNode readValue = implicitLoadConvert(graph, readKind, memoryRead, compressible); load.replaceAtUsages(readValue); return memoryRead; @@ -313,7 +313,7 @@ boolean compressible = store.value().getKind() == Kind.Object; Kind valueKind = store.accessKind(); ValueNode value = implicitStoreConvert(graph, valueKind, store.value(), compressible); - WriteNode write = graph.add(WriteNode.create(object, value, location, unsafeStoreBarrierType(store))); + WriteNode write = graph.add(new WriteNode(object, value, location, unsafeStoreBarrierType(store))); write.setStateAfter(store.stateAfter()); graph.replaceFixedWithFixed(store, write); } @@ -323,7 +323,7 @@ Kind valueKind = read.getReadKind(); Stamp loadStamp = loadStamp(read.stamp(), valueKind, read.isCompressible()); - ReadNode memoryRead = graph.add(ReadNode.create(read.object(), read.location(), loadStamp, read.getBarrierType())); + ReadNode memoryRead = graph.add(new ReadNode(read.object(), read.location(), loadStamp, read.getBarrierType())); ValueNode readValue = implicitLoadConvert(graph, valueKind, memoryRead, read.isCompressible()); memoryRead.setGuard(read.getGuard()); read.replaceAtUsages(readValue); @@ -335,7 +335,7 @@ Kind valueKind = write.getWriteKind(); ValueNode value = implicitStoreConvert(graph, valueKind, write.value(), write.isCompressible()); - WriteNode memoryWrite = graph.add(WriteNode.create(write.object(), value, write.location(), write.getBarrierType(), write.isInitialization())); + WriteNode memoryWrite = graph.add(new WriteNode(write.object(), value, write.location(), write.getBarrierType(), write.isInitialization())); memoryWrite.setStateAfter(write.stateAfter()); graph.replaceFixedWithFixed(write, memoryWrite); memoryWrite.setGuard(write.getGuard()); @@ -382,15 +382,15 @@ ResolvedJavaField field = ((VirtualInstanceNode) virtual).field(i); long offset = fieldOffset(field); if (offset >= 0) { - location = ConstantLocationNode.create(initLocationIdentity(), offset, graph); + location = graph.unique(new ConstantLocationNode(initLocationIdentity(), offset)); barrierType = fieldInitializationBarrier(entryKind); } } else { - location = ConstantLocationNode.create(initLocationIdentity(), arrayBaseOffset(entryKind) + i * arrayScalingFactor(entryKind), graph); + location = graph.unique(new ConstantLocationNode(initLocationIdentity(), arrayBaseOffset(entryKind) + i * arrayScalingFactor(entryKind))); barrierType = arrayInitializationBarrier(entryKind); } if (location != null) { - WriteNode write = WriteNode.create(newObject, implicitStoreConvert(graph, entryKind, value), location, barrierType); + WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, entryKind, value), location, barrierType); graph.addAfterFixed(newObject, graph.add(write)); } } @@ -422,7 +422,7 @@ barrierType = BarrierType.PRECISE; } if (location != null) { - WriteNode write = WriteNode.create(newObject, implicitStoreConvert(graph, Kind.Object, allocValue), location, barrierType); + WriteNode write = new WriteNode(newObject, implicitStoreConvert(graph, Kind.Object, allocValue), location, barrierType); graph.addBeforeFixed(commit, graph.add(write)); } } @@ -441,23 +441,23 @@ } public NewInstanceNode createNewInstanceFromVirtual(VirtualObjectNode virtual) { - return NewInstanceNode.create(virtual.type(), true); + return new NewInstanceNode(virtual.type(), true); } protected NewArrayNode createNewArrayFromVirtual(VirtualObjectNode virtual, ValueNode length) { - return NewArrayNode.create(((VirtualArrayNode) virtual).componentType(), length, true); + return new NewArrayNode(((VirtualArrayNode) virtual).componentType(), length, true); } public static void finishAllocatedObjects(LoweringTool tool, CommitAllocationNode commit, ValueNode[] allocations) { StructuredGraph graph = commit.graph(); for (int objIndex = 0; objIndex < commit.getVirtualObjects().size(); objIndex++) { - FixedValueAnchorNode anchor = graph.add(FixedValueAnchorNode.create(allocations[objIndex])); + FixedValueAnchorNode anchor = graph.add(new FixedValueAnchorNode(allocations[objIndex])); allocations[objIndex] = anchor; graph.addBeforeFixed(commit, anchor); } for (int objIndex = 0; objIndex < commit.getVirtualObjects().size(); objIndex++) { for (MonitorIdNode monitorId : commit.getLocks(objIndex)) { - MonitorEnterNode enter = graph.add(MonitorEnterNode.create(allocations[objIndex], monitorId)); + MonitorEnterNode enter = graph.add(new MonitorEnterNode(allocations[objIndex], monitorId)); graph.addBeforeFixed(commit, enter); enter.lower(tool); } @@ -558,10 +558,10 @@ switch (kind) { case Byte: case Short: - return graph.unique(SignExtendNode.create(value, 32)); + return graph.unique(new SignExtendNode(value, 32)); case Boolean: case Char: - return graph.unique(ZeroExtendNode.create(value, 32)); + return graph.unique(new ZeroExtendNode(value, 32)); } return value; } @@ -574,10 +574,10 @@ switch (kind) { case Boolean: case Byte: - return graph.unique(NarrowNode.create(value, 8)); + return graph.unique(new NarrowNode(value, 8)); case Char: case Short: - return graph.unique(NarrowNode.create(value, 16)); + return graph.unique(new NarrowNode(value, 16)); } return value; } @@ -590,7 +590,7 @@ int offset = fieldOffset(field); if (offset >= 0) { LocationIdentity loc = initialization ? initLocationIdentity() : field; - return ConstantLocationNode.create(loc, offset, graph); + return graph.unique(new ConstantLocationNode(loc, offset)); } else { return null; } @@ -619,7 +619,7 @@ ValueNode offset = offsetNode; if (offset.isConstant()) { long offsetValue = offset.asJavaConstant().asLong(); - return ConstantLocationNode.create(locationIdentity, offsetValue, offset.graph()); + return offset.graph().unique(new ConstantLocationNode(locationIdentity, offsetValue)); } long displacement = 0; @@ -678,14 +678,14 @@ } if (signExtend) { // If we were using sign extended values before restore the sign extension. - offset = offset.graph().addOrUnique(SignExtendNode.create(offset, 64)); + offset = offset.graph().addOrUnique(new SignExtendNode(offset, 64)); } - return IndexedLocationNode.create(locationIdentity, displacement, offset, offset.graph(), indexScaling); + return offset.graph().unique(new IndexedLocationNode(locationIdentity, displacement, offset, indexScaling)); } public IndexedLocationNode createArrayLocation(Graph graph, Kind elementKind, ValueNode index, boolean initialization) { LocationIdentity loc = initialization ? initLocationIdentity() : NamedLocationIdentity.getArrayLocation(elementKind); - return IndexedLocationNode.create(loc, arrayBaseOffset(elementKind), index, graph, arrayScalingFactor(elementKind)); + return graph.unique(new IndexedLocationNode(loc, arrayBaseOffset(elementKind), index, arrayScalingFactor(elementKind))); } protected GuardingNode createBoundsCheck(AccessIndexedNode n, LoweringTool tool) { @@ -694,7 +694,7 @@ ValueNode arrayLength = readArrayLength(array, tool.getConstantReflection()); if (arrayLength == null) { Stamp stamp = StampFactory.positiveInt(); - ReadNode readArrayLength = graph.add(ReadNode.create(array, ConstantLocationNode.create(ARRAY_LENGTH_LOCATION, arrayLengthOffset(), graph), stamp, BarrierType.NONE)); + ReadNode readArrayLength = graph.add(new ReadNode(array, graph.unique(new ConstantLocationNode(ARRAY_LENGTH_LOCATION, arrayLengthOffset())), stamp, BarrierType.NONE)); graph.addBeforeFixed(n, readArrayLength); readArrayLength.setGuard(createNullCheck(array, readArrayLength, tool)); arrayLength = readArrayLength; @@ -711,14 +711,14 @@ } } - return tool.createGuard(n, graph.unique(IntegerBelowNode.create(n.index(), arrayLength)), BoundsCheckException, InvalidateReprofile); + return tool.createGuard(n, graph.unique(new IntegerBelowNode(n.index(), arrayLength)), BoundsCheckException, InvalidateReprofile); } protected GuardingNode createNullCheck(ValueNode object, FixedNode before, LoweringTool tool) { if (StampTool.isPointerNonNull(object)) { return null; } - return tool.createGuard(before, before.graph().unique(IsNullNode.create(object)), DeoptimizationReason.NullCheckException, DeoptimizationAction.InvalidateReprofile, true); + return tool.createGuard(before, before.graph().unique(new IsNullNode(object)), DeoptimizationReason.NullCheckException, DeoptimizationAction.InvalidateReprofile, true); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraphKit.java Mon Jan 12 21:24:26 2015 +0100 @@ -131,7 +131,7 @@ JavaType returnType = signature.getReturnType(null); assert checkArgs(method, args); MethodCallTargetNode callTarget = graph.add(createMethodCallTarget(invokeKind, method, args, returnType, bci)); - InvokeNode invoke = append(InvokeNode.create(callTarget, bci)); + InvokeNode invoke = append(new InvokeNode(callTarget, bci)); if (frameStateBuilder != null) { if (invoke.getKind() != Kind.Void) { @@ -146,7 +146,7 @@ } protected MethodCallTargetNode createMethodCallTarget(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args, JavaType returnType, @SuppressWarnings("unused") int bci) { - return MethodCallTargetNode.create(invokeKind, targetMethod, args, returnType); + return new MethodCallTargetNode(invokeKind, targetMethod, args, returnType); } /** @@ -246,9 +246,9 @@ * @param trueProbability The estimated probability the the condition is true */ public void startIf(LogicNode condition, double trueProbability) { - BeginNode thenSuccessor = graph.add(BeginNode.create()); - BeginNode elseSuccessor = graph.add(BeginNode.create()); - append(IfNode.create(condition, thenSuccessor, elseSuccessor, trueProbability)); + BeginNode thenSuccessor = graph.add(new BeginNode()); + BeginNode elseSuccessor = graph.add(new BeginNode()); + append(new IfNode(condition, thenSuccessor, elseSuccessor, trueProbability)); lastFixedNode = null; IfStructure s = new IfStructure(); @@ -298,12 +298,12 @@ if (thenPart != null && elsePart != null) { /* Both parts are alive, we need a real merge. */ - EndNode thenEnd = graph.add(EndNode.create()); + EndNode thenEnd = graph.add(new EndNode()); graph.addAfterFixed(thenPart, thenEnd); - EndNode elseEnd = graph.add(EndNode.create()); + EndNode elseEnd = graph.add(new EndNode()); graph.addAfterFixed(elsePart, elseEnd); - MergeNode merge = graph.add(MergeNode.create()); + MergeNode merge = graph.add(new MergeNode()); merge.addForwardEnd(thenEnd); merge.addForwardEnd(elseEnd); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/InstanceOfSnippetsTemplates.java Mon Jan 12 21:24:26 2015 +0100 @@ -160,7 +160,7 @@ // Can simply use the phi result if the same materialized values are expected. return result; } else { - return graph.unique(ConditionalNode.create(asCondition(trueValue), t, f)); + return graph.unique(new ConditionalNode(asCondition(trueValue), t, f)); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -85,15 +85,15 @@ ResolvedJavaType[] parameterTypes = resolveJavaTypes(target.toParameterTypes(), declaringClass); - // Prepare the arguments for the reflective factory method call on the node class. - Object[] nodeFactoryArguments = prepareArguments(methodCallTargetNode, parameterTypes, target, false); - if (nodeFactoryArguments == null) { + // Prepare the arguments for the reflective constructor call on the node class. + Object[] nodeConstructorArguments = prepareArguments(methodCallTargetNode, parameterTypes, target, false); + if (nodeConstructorArguments == null) { return false; } // Create the new node instance. ResolvedJavaType c = getNodeClass(target, intrinsic); - Node newInstance = createNodeInstance(graph, c, parameterTypes, methodCallTargetNode.invoke().asNode().stamp(), intrinsic.setStampFromReturnType(), nodeFactoryArguments); + Node newInstance = createNodeInstance(graph, c, parameterTypes, methodCallTargetNode.invoke().asNode().stamp(), intrinsic.setStampFromReturnType(), nodeConstructorArguments); // Replace the invoke with the new node. newInstance = graph.addOrUnique(newInstance); @@ -150,7 +150,7 @@ /** * Converts the arguments of an invoke node to object values suitable for use as the arguments - * to a reflective invocation of a Java method. + * to a reflective invocation of a Java constructor or method. * * @param folding specifies if the invocation is for handling a {@link Fold} annotation * @return the arguments for the reflective invocation or null if an argument of {@code invoke} @@ -220,38 +220,35 @@ } protected Node createNodeInstance(StructuredGraph graph, ResolvedJavaType nodeClass, ResolvedJavaType[] parameterTypes, Stamp invokeStamp, boolean setStampFromReturnType, - Object[] nodeFactoryArguments) { - ResolvedJavaMethod factory = null; + Object[] nodeConstructorArguments) { + ResolvedJavaMethod constructor = null; Object[] arguments = null; - for (ResolvedJavaMethod m : nodeClass.getDeclaredMethods()) { - if (m.getName().equals("create") && !m.isSynthetic()) { - Object[] match = match(graph, invokeStamp, m, parameterTypes, nodeFactoryArguments); + for (ResolvedJavaMethod c : nodeClass.getDeclaredConstructors()) { + Object[] match = match(graph, invokeStamp, c, parameterTypes, nodeConstructorArguments); - if (match != null) { - if (factory == null) { - factory = m; - arguments = match; - } else { - throw new GraalInternalError("Found multiple factory methods in %s compatible with signature %s: %s, %s", nodeClass.toJavaName(), sigString(parameterTypes), - factory.format("%n(%p)%r"), m.format("%n(%p)%r")); - } + if (match != null) { + if (constructor == null) { + constructor = c; + arguments = match; + } else { + throw new GraalInternalError("Found multiple constructors in %s compatible with signature %s: %s, %s", nodeClass.toJavaName(), sigString(parameterTypes), constructor, c); } } } - if (factory == null) { - throw new GraalInternalError("Could not find factory method in %s compatible with signature %s", nodeClass.toJavaName(), sigString(parameterTypes)); + if (constructor == null) { + throw new GraalInternalError("Could not find constructor in %s compatible with signature %s", nodeClass.toJavaName(), sigString(parameterTypes)); } try { - ValueNode intrinsicNode = (ValueNode) snippetReflection.invoke(factory, null, arguments); + ValueNode intrinsicNode = (ValueNode) snippetReflection.invoke(constructor, null, arguments); if (setStampFromReturnType) { intrinsicNode.setStamp(invokeStamp); } return intrinsicNode; } catch (Exception e) { - throw new RuntimeException(factory + Arrays.toString(nodeFactoryArguments), e); + throw new RuntimeException(constructor + Arrays.toString(nodeConstructorArguments), e); } } @@ -277,14 +274,14 @@ return true; } - private Object[] match(StructuredGraph graph, Stamp invokeStamp, ResolvedJavaMethod m, ResolvedJavaType[] parameterTypes, Object[] nodeFactoryArguments) { + private Object[] match(StructuredGraph graph, Stamp invokeStamp, ResolvedJavaMethod c, ResolvedJavaType[] parameterTypes, Object[] nodeConstructorArguments) { Object[] arguments = null; Object[] injected = null; - ResolvedJavaType[] signature = resolveJavaTypes(m.getSignature().toParameterTypes(null), m.getDeclaringClass()); + ResolvedJavaType[] signature = resolveJavaTypes(c.getSignature().toParameterTypes(null), c.getDeclaringClass()); MetaAccessProvider metaAccess = providers.getMetaAccess(); for (int i = 0; i < signature.length; i++) { - if (m.getParameterAnnotation(InjectedNodeParameter.class, i) != null) { + if (c.getParameterAnnotation(InjectedNodeParameter.class, i) != null) { injected = injected == null ? new Object[1] : Arrays.copyOf(injected, injected.length + 1); Object injectedParameter = snippetReflection.getInjectedNodeIntrinsicParameter(signature[i]); if (injectedParameter != null) { @@ -302,24 +299,24 @@ } else if (signature[i].isAssignableFrom(metaAccess.lookupJavaType(StampProvider.class))) { injected[injected.length - 1] = providers.getStampProvider(); } else { - throw new GraalInternalError("Cannot handle injected argument of type %s in %s", signature[i].toJavaName(), m.format("%H.%n(%p)")); + throw new GraalInternalError("Cannot handle injected argument of type %s in %s", signature[i].toJavaName(), c.format("%H.%n(%p)")); } } else { if (i > 0) { // Chop injected arguments from signature signature = Arrays.copyOfRange(signature, i, signature.length); } - assert checkNoMoreInjected(m, i); + assert checkNoMoreInjected(c, i); break; } } if (Arrays.equals(parameterTypes, signature)) { // Exact match - arguments = nodeFactoryArguments; + arguments = nodeConstructorArguments; } else if (signature.length > 0 && signature[signature.length - 1].isArray()) { - // Last parameter is an array, so check if we have a vararg match + // Last constructor parameter is an array, so check if we have a vararg match int fixedArgs = signature.length - 1; if (parameterTypes.length < fixedArgs) { return null; @@ -332,20 +329,20 @@ ResolvedJavaType componentType = signature[fixedArgs].getComponentType(); assert componentType != null; - for (int i = fixedArgs; i < nodeFactoryArguments.length; i++) { + for (int i = fixedArgs; i < nodeConstructorArguments.length; i++) { if (!parameterTypes[i].equals(componentType)) { return null; } } - arguments = Arrays.copyOf(nodeFactoryArguments, fixedArgs + 1); - arguments[fixedArgs] = snippetReflection.newArray(componentType, nodeFactoryArguments.length - fixedArgs); + arguments = Arrays.copyOf(nodeConstructorArguments, fixedArgs + 1); + arguments[fixedArgs] = snippetReflection.newArray(componentType, nodeConstructorArguments.length - fixedArgs); Object varargs = arguments[fixedArgs]; - for (int i = fixedArgs; i < nodeFactoryArguments.length; i++) { + for (int i = fixedArgs; i < nodeConstructorArguments.length; i++) { if (componentType.isPrimitive()) { - Array.set(varargs, i - fixedArgs, nodeFactoryArguments[i]); + Array.set(varargs, i - fixedArgs, nodeConstructorArguments[i]); } else { - ((Object[]) varargs)[i - fixedArgs] = nodeFactoryArguments[i]; + ((Object[]) varargs)[i - fixedArgs] = nodeConstructorArguments[i]; } } } else { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Jan 12 21:24:26 2015 +0100 @@ -588,7 +588,7 @@ MetaAccessProvider metaAccess = replacements.providers.getMetaAccess(); if (MethodsElidedInSnippets != null && methodToParse.getSignature().getReturnKind() == Kind.Void && MethodFilter.matches(MethodsElidedInSnippets, methodToParse)) { - graph.addAfterFixed(graph.start(), graph.add(ReturnNode.create(null))); + graph.addAfterFixed(graph.start(), graph.add(new ReturnNode(null))); } else { createGraphBuilder(metaAccess, GraphBuilderConfiguration.getSnippetDefault(), OptimisticOptimizations.NONE).apply(graph); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Mon Jan 12 21:24:26 2015 +0100 @@ -395,11 +395,7 @@ protected final Varargs varargs; - public static VarargsPlaceholderNode create(Varargs varargs, MetaAccessProvider metaAccess) { - return new VarargsPlaceholderNode(varargs, metaAccess); - } - - protected VarargsPlaceholderNode(Varargs varargs, MetaAccessProvider metaAccess) { + public VarargsPlaceholderNode(Varargs varargs, MetaAccessProvider metaAccess) { super(StampFactory.exactNonNull(metaAccess.lookupJavaType(varargs.componentType).getArrayClass())); this.varargs = varargs; } @@ -597,7 +593,7 @@ nodeReplacements.put(snippetGraph.getParameter(i), constantNode); } else if (args.info.isVarargsParameter(i)) { Varargs varargs = (Varargs) args.values[i]; - VarargsPlaceholderNode placeholder = snippetCopy.unique(VarargsPlaceholderNode.create(varargs, providers.getMetaAccess())); + VarargsPlaceholderNode placeholder = snippetCopy.unique(new VarargsPlaceholderNode(varargs, providers.getMetaAccess())); nodeReplacements.put(snippetGraph.getParameter(i), placeholder); placeholders[i] = placeholder; } @@ -625,7 +621,7 @@ assert parameterCount < 10000; int idx = (i + 1) * 10000 + j; assert idx >= parameterCount : "collision in parameter numbering"; - ParameterNode local = snippetCopy.unique(ParameterNode.create(idx, stamp)); + ParameterNode local = snippetCopy.unique(new ParameterNode(idx, stamp)); params[j] = local; } parameters[i] = params; @@ -636,7 +632,7 @@ if (usage instanceof LoadIndexedNode) { LoadIndexedNode loadIndexed = (LoadIndexedNode) usage; Debug.dump(snippetCopy, "Before replacing %s", loadIndexed); - LoadSnippetVarargParameterNode loadSnippetParameter = snippetCopy.add(LoadSnippetVarargParameterNode.create(params, loadIndexed.index(), loadIndexed.stamp())); + LoadSnippetVarargParameterNode loadSnippetParameter = snippetCopy.add(new LoadSnippetVarargParameterNode(params, loadIndexed.index(), loadIndexed.stamp())); snippetCopy.replaceFixedWithFixed(loadIndexed, loadSnippetParameter); Debug.dump(snippetCopy, "After replacing %s", loadIndexed); } else if (usage instanceof StoreIndexedNode) { @@ -722,7 +718,7 @@ new FloatingReadPhase(false, true, false).apply(snippetCopy); - MemoryAnchorNode memoryAnchor = snippetCopy.add(MemoryAnchorNode.create()); + MemoryAnchorNode memoryAnchor = snippetCopy.add(new MemoryAnchorNode()); snippetCopy.start().replaceAtUsages(InputType.Memory, memoryAnchor); this.snippet = snippetCopy; @@ -741,12 +737,12 @@ } else if (returnNodes.size() == 1) { this.returnNode = returnNodes.get(0); } else { - MergeNode merge = snippet.add(MergeNode.create()); + MergeNode merge = snippet.add(new MergeNode()); List memMaps = returnNodes.stream().map(n -> n.getMemoryMap()).collect(Collectors.toList()); ValueNode returnValue = InliningUtil.mergeReturns(merge, returnNodes, null); - this.returnNode = snippet.add(ReturnNode.create(returnValue)); + this.returnNode = snippet.add(new ReturnNode(returnValue)); MemoryMapImpl mmap = FloatingReadPhase.mergeMemoryMaps(merge, memMaps, false); - MemoryMapNode memoryMap = snippet.unique(MemoryMapNode.create(mmap.getMap())); + MemoryMapNode memoryMap = snippet.unique(new MemoryMapNode(mmap.getMap())); this.returnNode.setMemoryMap(memoryMap); for (MemoryMapNode mm : memMaps) { if (mm != memoryMap && mm.isAlive()) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -50,18 +50,12 @@ /** Length of both arrays. */ @Input ValueNode length; - public static ArrayEqualsNode create(ValueNode array1, ValueNode array2, ValueNode length) { - return new ArrayEqualsNode(array1, array2, length); - } - - protected ArrayEqualsNode(ValueNode array1, ValueNode array2, ValueNode length) { + public ArrayEqualsNode(ValueNode array1, ValueNode array2, ValueNode length) { super(StampFactory.forKind(Kind.Boolean)); - assert array1.stamp().equals(array2.stamp()); ObjectStamp array1Stamp = (ObjectStamp) array1.stamp(); ResolvedJavaType componentType = array1Stamp.type().getComponentType(); this.kind = componentType.getKind(); - this.array1 = array1; this.array2 = array2; this.length = length; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -43,11 +43,7 @@ protected final boolean compileTimeAssertion; protected final String message; - public static AssertionNode create(boolean compileTimeAssertion, ValueNode value, String message) { - return new AssertionNode(compileTimeAssertion, value, message); - } - - protected AssertionNode(boolean compileTimeAssertion, ValueNode value, String message) { + public AssertionNode(boolean compileTimeAssertion, ValueNode value, String message) { super(StampFactory.forVoid()); this.value = value; this.compileTimeAssertion = compileTimeAssertion; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,11 +33,7 @@ @NodeInfo public class BasicArrayCopyNode extends MacroStateSplitNode implements Virtualizable { - public static BasicArrayCopyNode create(Invoke invoke) { - return new BasicArrayCopyNode(invoke); - } - - protected BasicArrayCopyNode(Invoke invoke) { + public BasicArrayCopyNode(Invoke invoke) { super(invoke); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,11 +37,7 @@ @NodeInfo public class BasicObjectCloneNode extends MacroStateSplitNode implements VirtualizableAllocation, ArrayLengthProvider { - public static BasicObjectCloneNode create(Invoke invoke) { - return new BasicObjectCloneNode(invoke); - } - - protected BasicObjectCloneNode(Invoke invoke) { + public BasicObjectCloneNode(Invoke invoke) { super(invoke); } @@ -117,7 +113,7 @@ ValueNode[] state = new ValueNode[fields.length]; final LoadFieldNode[] loads = new LoadFieldNode[fields.length]; for (int i = 0; i < fields.length; i++) { - state[i] = loads[i] = LoadFieldNode.create(obj, fields[i]); + state[i] = loads[i] = new LoadFieldNode(obj, fields[i]); tool.addNode(loads[i]); } tool.createVirtualObject(newVirtual, state, Collections. emptyList()); @@ -127,7 +123,7 @@ } protected VirtualInstanceNode createVirtualInstanceNode(ResolvedJavaType type, boolean hasIdentity) { - return VirtualInstanceNode.create(type, hasIdentity); + return new VirtualInstanceNode(type, hasIdentity); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @NodeInfo public class BitCountNode extends UnaryNode implements LIRLowerable { - public static BitCountNode create(ValueNode value) { - return new BitCountNode(value); - } - - protected BitCountNode(ValueNode value) { + public BitCountNode(ValueNode value) { super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @NodeInfo public class BitScanForwardNode extends UnaryNode implements LIRLowerable { - public static BitScanForwardNode create(ValueNode value) { - return new BitScanForwardNode(value); - } - - protected BitScanForwardNode(ValueNode value) { + public BitScanForwardNode(ValueNode value) { super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @NodeInfo public class BitScanReverseNode extends UnaryNode implements LIRLowerable { - public static BitScanReverseNode create(ValueNode value) { - return new BitScanReverseNode(value); - } - - protected BitScanReverseNode(ValueNode value) { + public BitScanReverseNode(ValueNode value) { super(StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value); assert value.getKind() == Kind.Int || value.getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -48,11 +48,7 @@ return object; } - public static DeferredPiNode create(ValueNode type, ValueNode object) { - return new DeferredPiNode(type, object); - } - - protected DeferredPiNode(ValueNode type, ValueNode object) { + public DeferredPiNode(ValueNode type, ValueNode object) { super(StampFactory.object()); this.type = type; this.object = object; @@ -63,7 +59,7 @@ if (type.isConstant()) { ResolvedJavaType javaType = tool.getConstantReflection().asJavaType(type.asConstant()); ObjectStamp objectStamp = (ObjectStamp) stamp(); - return PiNode.create(object, javaType, objectStamp.isExactType(), objectStamp.nonNull()); + return new PiNode(object, javaType, objectStamp.isExactType(), objectStamp.nonNull()); } return this; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -44,11 +44,7 @@ protected final LocationIdentity locationIdentity; protected final Kind storeKind; - public static DirectObjectStoreNode create(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, Kind storeKind) { - return new DirectObjectStoreNode(object, displacement, offset, value, locationIdentity, storeKind); - } - - protected DirectObjectStoreNode(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, Kind storeKind) { + public DirectObjectStoreNode(ValueNode object, int displacement, ValueNode offset, ValueNode value, LocationIdentity locationIdentity, Kind storeKind) { super(StampFactory.forVoid()); this.object = object; this.value = value; @@ -68,8 +64,8 @@ @Override public void lower(LoweringTool tool) { - IndexedLocationNode location = IndexedLocationNode.create(locationIdentity, displacement, offset, graph(), 1); - JavaWriteNode write = graph().add(JavaWriteNode.create(storeKind, object, value, location, BarrierType.NONE, storeKind == Kind.Object, false)); + IndexedLocationNode location = graph().unique(new IndexedLocationNode(locationIdentity, displacement, offset, 1)); + JavaWriteNode write = graph().add(new JavaWriteNode(storeKind, object, value, location, BarrierType.NONE, storeKind == Kind.Object, false)); graph().replaceFixedWithFixed(this, write); tool.getLowerer().lower(write, tool); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,11 +41,7 @@ @Input protected ValueNode address; protected final Kind readKind; - public static DirectReadNode create(ValueNode address, Kind readKind) { - return new DirectReadNode(address, readKind); - } - - protected DirectReadNode(ValueNode address, Kind readKind) { + public DirectReadNode(ValueNode address, Kind readKind) { super(StampFactory.forKind(readKind.getStackKind())); this.address = address; this.readKind = readKind; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -42,11 +42,7 @@ @Input protected ValueNode value; protected final Kind kind; - public static DirectStoreNode create(ValueNode address, ValueNode value, Kind kind) { - return new DirectStoreNode(address, value, kind); - } - - protected DirectStoreNode(ValueNode address, ValueNode value, Kind kind) { + public DirectStoreNode(ValueNode address, ValueNode value, Kind kind) { super(StampFactory.forVoid()); this.address = address; this.value = value; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,11 +39,7 @@ @NodeInfo public class ExplodeLoopNode extends FixedWithNextNode { - public static ExplodeLoopNode create() { - return new ExplodeLoopNode(); - } - - protected ExplodeLoopNode() { + public ExplodeLoopNode() { super(StampFactory.forVoid()); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,11 +39,7 @@ @Input NodeInputList parameters; - public static LoadSnippetVarargParameterNode create(ParameterNode[] locals, ValueNode index, Stamp stamp) { - return new LoadSnippetVarargParameterNode(locals, index, stamp); - } - - protected LoadSnippetVarargParameterNode(ParameterNode[] locals, ValueNode index, Stamp stamp) { + public LoadSnippetVarargParameterNode(ParameterNode[] locals, ValueNode index, Stamp stamp) { super(stamp); this.index = index; this.parameters = new NodeInputList<>(this, locals); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -66,11 +66,7 @@ protected final JavaType returnType; protected final InvokeKind invokeKind; - public static MacroNode create(Invoke invoke) { - return new MacroNode(invoke); - } - - protected MacroNode(Invoke invoke) { + public MacroNode(Invoke invoke) { super(StampFactory.forKind(((MethodCallTargetNode) invoke.callTarget()).targetMethod().getSignature().getReturnKind())); MethodCallTargetNode methodCallTarget = (MethodCallTargetNode) invoke.callTarget(); this.arguments = new NodeInputList<>(this, methodCallTarget.arguments()); @@ -188,8 +184,8 @@ } protected InvokeNode createInvoke() { - MethodCallTargetNode callTarget = graph().add(MethodCallTargetNode.create(invokeKind, targetMethod, arguments.toArray(new ValueNode[arguments.size()]), returnType)); - InvokeNode invoke = graph().add(InvokeNode.create(callTarget, bci)); + MethodCallTargetNode callTarget = graph().add(new MethodCallTargetNode(invokeKind, targetMethod, arguments.toArray(new ValueNode[arguments.size()]), returnType)); + InvokeNode invoke = graph().add(new InvokeNode(callTarget, bci)); if (stateAfter() != null) { invoke.setStateAfter(stateAfter().duplicate()); if (getKind() != Kind.Void) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,11 +39,7 @@ @OptionalInput(InputType.State) protected FrameState stateAfter; - public static MacroStateSplitNode create(Invoke invoke) { - return new MacroStateSplitNode(invoke); - } - - protected MacroStateSplitNode(Invoke invoke) { + public MacroStateSplitNode(Invoke invoke) { super(invoke); this.stateAfter = invoke.stateAfter(); } @@ -75,7 +71,7 @@ } assert invoke.stateAfter().bci == BytecodeFrame.AFTER_BCI; // Here we need to fix the bci of the invoke - InvokeNode newInvoke = snippetGraph.add(InvokeNode.create(invoke.callTarget(), getBci())); + InvokeNode newInvoke = snippetGraph.add(new InvokeNode(invoke.callTarget(), getBci())); newInvoke.setStateAfter(invoke.stateAfter()); snippetGraph.replaceFixedWithFixed((InvokeNode) invoke.asNode(), newInvoke); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -49,11 +49,7 @@ return operation; } - public static MathIntrinsicNode create(ValueNode value, Operation op) { - return new MathIntrinsicNode(value, op); - } - - protected MathIntrinsicNode(ValueNode value, Operation op) { + public MathIntrinsicNode(ValueNode value, Operation op) { super(StampFactory.forKind(Kind.Double), value); assert value.stamp() instanceof FloatStamp && PrimitiveStamp.getBits(value.stamp()) == 64; this.operation = op; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,11 +33,7 @@ @NodeInfo(allowedUsageTypes = {InputType.Memory}) public class MemoryAnchorNode extends FixedWithNextNode implements LIRLowerable, MemoryNode, Canonicalizable { - public static MemoryAnchorNode create() { - return new MemoryAnchorNode(); - } - - protected MemoryAnchorNode() { + public MemoryAnchorNode() { super(StampFactory.forVoid()); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -53,11 +53,7 @@ */ protected final boolean incoming; - public static ReadRegisterNode create(Register register, Kind kind, boolean directUse, boolean incoming) { - return new ReadRegisterNode(register, kind, directUse, incoming); - } - - protected ReadRegisterNode(Register register, Kind kind, boolean directUse, boolean incoming) { + public ReadRegisterNode(Register register, Kind kind, boolean directUse, boolean incoming) { super(StampFactory.forKind(kind)); assert register != null; this.register = register; @@ -65,15 +61,7 @@ this.incoming = incoming; } - /** - * Constructor to be used by node intrinsics where the stamp is inferred from the intrinsic - * definition. - */ - public static ReadRegisterNode create(Register register, boolean directUse, boolean incoming) { - return new ReadRegisterNode(register, directUse, incoming); - } - - protected ReadRegisterNode(Register register, boolean directUse, boolean incoming) { + public ReadRegisterNode(Register register, boolean directUse, boolean incoming) { super(StampFactory.forNodeIntrinsic()); assert register != null; this.register = register; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -34,11 +34,7 @@ @NodeInfo public class ReverseBytesNode extends UnaryNode implements LIRLowerable { - public static ReverseBytesNode create(ValueNode value) { - return new ReverseBytesNode(value); - } - - protected ReverseBytesNode(ValueNode value) { + public ReverseBytesNode(ValueNode value) { super(StampFactory.forKind(value.getKind()), value); assert getKind() == Kind.Int || getKind() == Kind.Long; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -45,11 +45,7 @@ */ @Input ValueNode value; - public static WriteRegisterNode create(Register register, ValueNode value) { - return new WriteRegisterNode(register, value); - } - - protected WriteRegisterNode(Register register, ValueNode value) { + public WriteRegisterNode(Register register, ValueNode value) { super(StampFactory.forVoid()); this.register = register; this.value = value; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java Mon Jan 12 21:24:26 2015 +0100 @@ -329,8 +329,8 @@ ValueNode length = GraphUtil.arrayLength(arg); if (length != null && length.isConstant()) { param.usages().snapshotTo(modifiedNodes); - ParameterNode newParam = graphCopy.addWithoutUnique(ParameterNode.create(param.index(), param.stamp())); - param.replaceAndDelete(graphCopy.addWithoutUnique(PiArrayNode.create(newParam, ConstantNode.forInt(length.asJavaConstant().asInt(), graphCopy), param.stamp()))); + ParameterNode newParam = graphCopy.addWithoutUnique(new ParameterNode(param.index(), param.stamp())); + param.replaceAndDelete(graphCopy.addWithoutUnique(new PiArrayNode(newParam, ConstantNode.forInt(length.asJavaConstant().asInt(), graphCopy), param.stamp()))); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java Mon Jan 12 21:24:26 2015 +0100 @@ -319,7 +319,7 @@ boolean removeAllocation = runtimeExceptionClass.isAssignableFrom(declaringClass) || errorClass.isAssignableFrom(declaringClass); boolean isControlFlowException = controlFlowExceptionClass.isAssignableFrom(exceptionType); if (removeAllocation && !isControlFlowException) { - DeoptimizeNode deoptNode = methodCallTargetNode.graph().add(DeoptimizeNode.create(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.UnreachedCode)); + DeoptimizeNode deoptNode = methodCallTargetNode.graph().add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.UnreachedCode)); FixedNode invokeNode = methodCallTargetNode.invoke().asNode(); invokeNode.replaceAtPredecessor(deoptNode); GraphUtil.killCFG(invokeNode); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,11 +37,7 @@ @NodeInfo public class AssumptionNode extends MacroNode implements com.oracle.graal.graph.IterableNodeType, Simplifiable { - public static AssumptionNode create(Invoke invoke) { - return new AssumptionNode(invoke); - } - - protected AssumptionNode(Invoke invoke) { + public AssumptionNode(Invoke invoke) { super(invoke); assert super.arguments.size() == 1; } @@ -84,7 +80,7 @@ graph.replaceFixedWithFloating(this, ConstantNode.forBoolean(false, graph())); } else { tool.deleteBranch(this.next()); - this.replaceAndDelete(graph.add(DeoptimizeNode.create(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.None))); + this.replaceAndDelete(graph.add(new DeoptimizeNode(DeoptimizationAction.InvalidateRecompile, DeoptimizationReason.None))); } } } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,11 +33,7 @@ @NodeInfo public class BailoutNode extends MacroNode implements Canonicalizable { - public static BailoutNode create(Invoke invoke) { - return new BailoutNode(invoke); - } - - protected BailoutNode(Invoke invoke) { + public BailoutNode(Invoke invoke) { super(invoke); assert arguments.size() == 1; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,11 +33,7 @@ @NodeInfo public class IsCompilationConstantNode extends MacroStateSplitNode implements Canonicalizable { - public static IsCompilationConstantNode create(Invoke invoke) { - return new IsCompilationConstantNode(invoke); - } - - protected IsCompilationConstantNode(Invoke invoke) { + public IsCompilationConstantNode(Invoke invoke) { super(invoke); assert arguments.size() == 1; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @NodeInfo public class IntegerAddExactNode extends AddNode implements IntegerExactArithmeticNode { - public static IntegerAddExactNode create(ValueNode x, ValueNode y) { - return new IntegerAddExactNode(x, y); - } - - protected IntegerAddExactNode(ValueNode x, ValueNode y) { + public IntegerAddExactNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } @@ -56,7 +52,7 @@ @Override public ValueNode canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) { if (forX.isConstant() && !forY.isConstant()) { - return IntegerAddExactNode.create(forY, forX); + return new IntegerAddExactNode(forY, forX); } if (forX.isConstant()) { return canonicalXconstant(forX, forY); @@ -88,7 +84,7 @@ @Override public IntegerExactArithmeticSplitNode createSplit(BeginNode next, BeginNode deopt) { - return graph().add(IntegerAddExactSplitNode.create(stamp(), getX(), getY(), next, deopt)); + return graph().add(new IntegerAddExactSplitNode(stamp(), getX(), getY(), next, deopt)); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -31,11 +31,7 @@ @NodeInfo public class IntegerAddExactSplitNode extends IntegerExactArithmeticSplitNode { - public static IntegerAddExactSplitNode create(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { - return new IntegerAddExactSplitNode(stamp, x, y, next, overflowSuccessor); - } - - protected IntegerAddExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { + public IntegerAddExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { super(stamp, x, y, next, overflowSuccessor); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -80,8 +80,8 @@ FixedWithNextNode previous = tool.lastFixedNode(); FixedNode next = previous.next(); previous.setNext(null); - DeoptimizeNode deopt = floatingNode.graph().add(DeoptimizeNode.create(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException)); - BeginNode normalBegin = floatingNode.graph().add(BeginNode.create()); + DeoptimizeNode deopt = floatingNode.graph().add(new DeoptimizeNode(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.ArithmeticException)); + BeginNode normalBegin = floatingNode.graph().add(new BeginNode()); normalBegin.setNext(next); IntegerExactArithmeticSplitNode split = node.createSplit(normalBegin, BeginNode.begin(deopt)); previous.setNext(split); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -38,11 +38,7 @@ @NodeInfo public class IntegerMulExactNode extends MulNode implements IntegerExactArithmeticNode { - public static IntegerMulExactNode create(ValueNode x, ValueNode y) { - return new IntegerMulExactNode(x, y); - } - - protected IntegerMulExactNode(ValueNode x, ValueNode y) { + public IntegerMulExactNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } @@ -50,7 +46,7 @@ @Override public ValueNode canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY) { if (forX.isConstant() && !forY.isConstant()) { - return IntegerMulExactNode.create(forY, forX); + return new IntegerMulExactNode(forY, forX); } if (forX.isConstant()) { return canonicalXconstant(forX, forY); @@ -85,7 +81,7 @@ @Override public IntegerExactArithmeticSplitNode createSplit(BeginNode next, BeginNode deopt) { - return graph().add(IntegerMulExactSplitNode.create(stamp(), getX(), getY(), next, deopt)); + return graph().add(new IntegerMulExactSplitNode(stamp(), getX(), getY(), next, deopt)); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -31,11 +31,7 @@ @NodeInfo public class IntegerMulExactSplitNode extends IntegerExactArithmeticSplitNode { - public static IntegerMulExactSplitNode create(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { - return new IntegerMulExactSplitNode(stamp, x, y, next, overflowSuccessor); - } - - protected IntegerMulExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { + public IntegerMulExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { super(stamp, x, y, next, overflowSuccessor); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,19 +37,11 @@ @NodeInfo(shortName = "*H") public class IntegerMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { - public static IntegerMulHighNode create(ValueNode x, ValueNode y) { - return new IntegerMulHighNode(x, y); - } - - protected IntegerMulHighNode(ValueNode x, ValueNode y) { + public IntegerMulHighNode(ValueNode x, ValueNode y) { this((IntegerStamp) x.stamp().unrestricted(), x, y); } - public static IntegerMulHighNode create(IntegerStamp stamp, ValueNode x, ValueNode y) { - return new IntegerMulHighNode(stamp, x, y); - } - - protected IntegerMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { + public IntegerMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { super(stamp, x, y); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,11 +39,7 @@ @NodeInfo public class IntegerSubExactNode extends SubNode implements IntegerExactArithmeticNode { - public static IntegerSubExactNode create(ValueNode x, ValueNode y) { - return new IntegerSubExactNode(x, y); - } - - protected IntegerSubExactNode(ValueNode x, ValueNode y) { + public IntegerSubExactNode(ValueNode x, ValueNode y) { super(x, y); assert x.stamp().isCompatible(y.stamp()) && x.stamp() instanceof IntegerStamp; } @@ -89,7 +85,7 @@ @Override public IntegerExactArithmeticSplitNode createSplit(BeginNode next, BeginNode deopt) { - return graph().add(IntegerSubExactSplitNode.create(stamp(), getX(), getY(), next, deopt)); + return graph().add(new IntegerSubExactSplitNode(stamp(), getX(), getY(), next, deopt)); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -31,11 +31,7 @@ @NodeInfo public class IntegerSubExactSplitNode extends IntegerExactArithmeticSplitNode { - public static IntegerSubExactSplitNode create(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { - return new IntegerSubExactSplitNode(stamp, x, y, next, overflowSuccessor); - } - - protected IntegerSubExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { + public IntegerSubExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, BeginNode next, BeginNode overflowSuccessor) { super(stamp, x, y, next, overflowSuccessor); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,19 +37,11 @@ @NodeInfo(shortName = "|*H|") public class UnsignedMulHighNode extends BinaryNode implements ArithmeticLIRLowerable { - public static UnsignedMulHighNode create(ValueNode x, ValueNode y) { - return new UnsignedMulHighNode(x, y); - } - - protected UnsignedMulHighNode(ValueNode x, ValueNode y) { + public UnsignedMulHighNode(ValueNode x, ValueNode y) { this((IntegerStamp) x.stamp().unrestricted(), x, y); } - public static UnsignedMulHighNode create(IntegerStamp stamp, ValueNode x, ValueNode y) { - return new UnsignedMulHighNode(stamp, x, y); - } - - protected UnsignedMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { + public UnsignedMulHighNode(IntegerStamp stamp, ValueNode x, ValueNode y) { super(stamp, x, y); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -30,11 +30,7 @@ @NodeInfo public class CompilationConstantNode extends NeverPartOfCompilationNode implements Canonicalizable { - public static CompilationConstantNode create(Invoke invoke) { - return new CompilationConstantNode(invoke); - } - - protected CompilationConstantNode(Invoke invoke) { + public CompilationConstantNode(Invoke invoke) { super(invoke, "The value could not be reduced to a compile time constant."); assert arguments.size() == 1; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -30,11 +30,7 @@ @NodeInfo public class NeverInlineMacroNode extends MacroStateSplitNode implements com.oracle.graal.graph.IterableNodeType { - public static NeverInlineMacroNode create(Invoke invoke) { - return new NeverInlineMacroNode(invoke); - } - - protected NeverInlineMacroNode(Invoke invoke) { + public NeverInlineMacroNode(Invoke invoke) { super(invoke); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,19 +32,11 @@ protected final String message; - public static NeverPartOfCompilationNode create(Invoke invoke) { - return new NeverPartOfCompilationNode(invoke); - } - - protected NeverPartOfCompilationNode(Invoke invoke) { + public NeverPartOfCompilationNode(Invoke invoke) { this(invoke, "This code path should never be part of a compilation."); } - public static NeverPartOfCompilationNode create(Invoke invoke, String message) { - return new NeverPartOfCompilationNode(invoke, message); - } - - protected NeverPartOfCompilationNode(Invoke invoke, String message) { + public NeverPartOfCompilationNode(Invoke invoke, String message) { super(invoke); this.message = message; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -32,11 +32,7 @@ @Input ValueNode object; - public static ForceMaterializeNode create(ValueNode object) { - return new ForceMaterializeNode(object); - } - - protected ForceMaterializeNode(ValueNode object) { + public ForceMaterializeNode(ValueNode object) { super(StampFactory.forVoid()); this.object = object; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -35,11 +35,7 @@ @Input ValueNode frame; - public static MaterializeFrameNode create(ValueNode frame) { - return new MaterializeFrameNode(frame); - } - - protected MaterializeFrameNode(ValueNode frame) { + public MaterializeFrameNode(ValueNode frame) { super(frame.stamp()); this.frame = frame; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -51,21 +51,13 @@ @Input ValueNode descriptor; @Input ValueNode arguments; - public static NewFrameNode create(Stamp stamp, ValueNode descriptor, ValueNode arguments) { - return new NewFrameNode(stamp, descriptor, arguments); - } - - protected NewFrameNode(Stamp stamp, ValueNode descriptor, ValueNode arguments) { + public NewFrameNode(Stamp stamp, ValueNode descriptor, ValueNode arguments) { super(stamp); this.descriptor = descriptor; this.arguments = arguments; } - public static NewFrameNode create(ResolvedJavaType frameType, ValueNode descriptor, ValueNode arguments) { - return new NewFrameNode(frameType, descriptor, arguments); - } - - protected NewFrameNode(ResolvedJavaType frameType, ValueNode descriptor, ValueNode arguments) { + public NewFrameNode(ResolvedJavaType frameType, ValueNode descriptor, ValueNode arguments) { this(StampFactory.exactNonNull(frameType), descriptor, arguments); } @@ -108,11 +100,7 @@ protected boolean allowMaterialization; - public static VirtualOnlyInstanceNode create(ResolvedJavaType type, ResolvedJavaField[] fields) { - return new VirtualOnlyInstanceNode(type, fields); - } - - protected VirtualOnlyInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) { + public VirtualOnlyInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) { super(type, fields, true); } @@ -133,7 +121,7 @@ if (fixed instanceof MaterializeFrameNode || fixed instanceof AbstractEndNode || fixed instanceof ForceMaterializeNode) { // We need to conservatively assume that a materialization of a virtual frame can also // happen at a merge point. - return AllocatedObjectNode.create(virtualNode); + return new AllocatedObjectNode(virtualNode); } String escapeReason; if (fixed instanceof StoreFieldNode) { @@ -166,10 +154,10 @@ ResolvedJavaField primitiveLocalsField = findField(frameFields, "primitiveLocals"); ResolvedJavaField tagsField = findField(frameFields, "tags"); - VirtualObjectNode virtualFrame = VirtualOnlyInstanceNode.create(frameType, frameFields); - VirtualObjectNode virtualFrameObjectArray = VirtualArrayNode.create((ResolvedJavaType) localsField.getType().getComponentType(), frameSize); - VirtualObjectNode virtualFramePrimitiveArray = VirtualArrayNode.create((ResolvedJavaType) primitiveLocalsField.getType().getComponentType(), frameSize); - VirtualObjectNode virtualFrameTagArray = VirtualArrayNode.create((ResolvedJavaType) tagsField.getType().getComponentType(), frameSize); + VirtualObjectNode virtualFrame = new VirtualOnlyInstanceNode(frameType, frameFields); + VirtualObjectNode virtualFrameObjectArray = new VirtualArrayNode((ResolvedJavaType) localsField.getType().getComponentType(), frameSize); + VirtualObjectNode virtualFramePrimitiveArray = new VirtualArrayNode((ResolvedJavaType) primitiveLocalsField.getType().getComponentType(), frameSize); + VirtualObjectNode virtualFrameTagArray = new VirtualArrayNode((ResolvedJavaType) tagsField.getType().getComponentType(), frameSize); ValueNode[] objectArrayEntryState = new ValueNode[frameSize]; ValueNode[] primitiveArrayEntryState = new ValueNode[frameSize]; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadFinalNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -48,11 +48,7 @@ @Input ValueNode location; protected final Kind accessKind; - public static CustomizedUnsafeLoadFinalNode create(ValueNode object, ValueNode offset, ValueNode condition, ValueNode location, Kind accessKind) { - return new CustomizedUnsafeLoadFinalNode(object, offset, condition, location, accessKind); - } - - protected CustomizedUnsafeLoadFinalNode(ValueNode object, ValueNode offset, ValueNode condition, ValueNode location, Kind accessKind) { + public CustomizedUnsafeLoadFinalNode(ValueNode object, ValueNode offset, ValueNode condition, ValueNode location, Kind accessKind) { super(StampFactory.forKind(accessKind.getStackKind())); this.object = object; this.offset = offset; @@ -100,7 +96,7 @@ } else { locationIdentity = ObjectLocationIdentity.create(location.asJavaConstant()); } - UnsafeLoadNode result = graph().add(UnsafeLoadNode.create(object, offset, accessKind, locationIdentity, compare)); + UnsafeLoadNode result = graph().add(new UnsafeLoadNode(object, offset, accessKind, locationIdentity, compare)); graph().replaceFixedWithFixed(this, result); result.lower(tool); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -47,11 +47,7 @@ private static final int CONDITION_ARGUMENT_INDEX = 2; private static final int LOCATION_ARGUMENT_INDEX = 3; - public static CustomizedUnsafeLoadMacroNode create(Invoke invoke) { - return new CustomizedUnsafeLoadMacroNode(invoke); - } - - protected CustomizedUnsafeLoadMacroNode(Invoke invoke) { + public CustomizedUnsafeLoadMacroNode(Invoke invoke) { super(invoke, "The location argument could not be resolved to a constant."); assert arguments.size() == ARGUMENT_COUNT; } @@ -71,7 +67,7 @@ } CompareNode compare = CompareNode.createCompareNode(Condition.EQ, conditionArgument, ConstantNode.forBoolean(true)); Kind returnKind = this.getTargetMethod().getSignature().getReturnKind(); - return UnsafeLoadNode.create(objectArgument, offsetArgument, returnKind, locationIdentity, compare); + return new UnsafeLoadNode(objectArgument, offsetArgument, returnKind, locationIdentity, compare); } return this; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -43,11 +43,7 @@ private static final int VALUE_ARGUMENT_INDEX = 2; private static final int LOCATION_ARGUMENT_INDEX = 3; - public static CustomizedUnsafeStoreMacroNode create(Invoke invoke) { - return new CustomizedUnsafeStoreMacroNode(invoke); - } - - protected CustomizedUnsafeStoreMacroNode(Invoke invoke) { + public CustomizedUnsafeStoreMacroNode(Invoke invoke) { super(invoke, "The location argument could not be resolved to a constant."); assert arguments.size() == ARGUMENT_COUNT; } @@ -66,7 +62,7 @@ locationIdentity = ObjectLocationIdentity.create(locationArgument.asJavaConstant()); } - return UnsafeStoreNode.create(objectArgument, offsetArgument, valueArgument, this.getTargetMethod().getSignature().getParameterKind(VALUE_ARGUMENT_INDEX), locationIdentity, stateAfter()); + return new UnsafeStoreNode(objectArgument, offsetArgument, valueArgument, this.getTargetMethod().getSignature().getParameterKind(VALUE_ARGUMENT_INDEX), locationIdentity, stateAfter()); } return this; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -45,11 +45,7 @@ private static final int NONNULL_ARGUMENT_INDEX = 3; private static final int ARGUMENT_COUNT = 4; - public static UnsafeTypeCastMacroNode create(Invoke invoke) { - return new UnsafeTypeCastMacroNode(invoke); - } - - protected UnsafeTypeCastMacroNode(Invoke invoke) { + public UnsafeTypeCastMacroNode(Invoke invoke) { super(invoke, "The class of the unsafe cast could not be reduced to a compile time constant."); assert arguments.size() == ARGUMENT_COUNT; } @@ -69,8 +65,8 @@ } else { Stamp piStamp = StampFactory.declaredTrusted(lookupJavaType, nonNullArgument.asJavaConstant().asInt() != 0); ConditionAnchorNode valueAnchorNode = graph().add( - ConditionAnchorNode.create(CompareNode.createCompareNode(graph(), Condition.EQ, conditionArgument, ConstantNode.forBoolean(true, graph())))); - PiNode piCast = graph().unique(PiNode.create(objectArgument, piStamp, valueAnchorNode)); + new ConditionAnchorNode(CompareNode.createCompareNode(graph(), Condition.EQ, conditionArgument, ConstantNode.forBoolean(true, graph())))); + PiNode piCast = graph().unique(new PiNode(objectArgument, piStamp, valueAnchorNode)); replaceAtUsages(piCast); graph().replaceFixedWithFixed(this, valueAnchorNode); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java Mon Jan 12 21:24:26 2015 +0100 @@ -39,18 +39,14 @@ return materializedValue; } - public static MaterializedObjectState create(VirtualObjectNode object, ValueNode materializedValue) { - return new MaterializedObjectState(object, materializedValue); - } - - protected MaterializedObjectState(VirtualObjectNode object, ValueNode materializedValue) { + public MaterializedObjectState(VirtualObjectNode object, ValueNode materializedValue) { super(object); this.materializedValue = materializedValue; } @Override public MaterializedObjectState duplicateWithVirtualState() { - return graph().addWithoutUnique(MaterializedObjectState.create(object(), materializedValue)); + return graph().addWithoutUnique(new MaterializedObjectState(object(), materializedValue)); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java Mon Jan 12 21:24:26 2015 +0100 @@ -41,21 +41,13 @@ return values; } - public static VirtualObjectState create(VirtualObjectNode object, ValueNode[] values) { - return new VirtualObjectState(object, values); - } - - protected VirtualObjectState(VirtualObjectNode object, ValueNode[] values) { + public VirtualObjectState(VirtualObjectNode object, ValueNode[] values) { super(object); assert object.entryCount() == values.length; this.values = new NodeInputList<>(this, values); } - public static VirtualObjectState create(VirtualObjectNode object, List values) { - return new VirtualObjectState(object, values); - } - - protected VirtualObjectState(VirtualObjectNode object, List values) { + public VirtualObjectState(VirtualObjectNode object, List values) { super(object); assert object.entryCount() == values.size(); this.values = new NodeInputList<>(this, values); @@ -63,7 +55,7 @@ @Override public VirtualObjectState duplicateWithVirtualState() { - return graph().addWithoutUnique(VirtualObjectState.create(object(), values)); + return graph().addWithoutUnique(new VirtualObjectState(object(), values)); } @Override diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PEReadEliminationClosure.java Mon Jan 12 21:24:26 2015 +0100 @@ -125,7 +125,7 @@ if (initialState.getReadCache().get(entry.getKey()) != entry.getValue()) { ValueNode value = exitState.getReadCache(entry.getKey().object, entry.getKey().identity, this); if (!(value instanceof ProxyNode) || ((ProxyNode) value).proxyPoint() != exitNode) { - ProxyNode proxy = ValueProxyNode.create(value, exitNode); + ProxyNode proxy = new ValueProxyNode(value, exitNode); effects.addFloatingNode(proxy, "readCacheProxy"); entry.setValue(proxy); } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeBlockState.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeBlockState.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeBlockState.java Mon Jan 12 21:24:26 2015 +0100 @@ -89,7 +89,7 @@ if (fixed.predecessor() instanceof CommitAllocationNode) { commit = (CommitAllocationNode) fixed.predecessor(); } else { - commit = graph.add(CommitAllocationNode.create()); + commit = graph.add(new CommitAllocationNode()); graph.addBeforeFixed(fixed, commit); } for (AllocatedObjectNode obj : objects) { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Mon Jan 12 21:24:26 2015 +0100 @@ -188,9 +188,9 @@ } } } - v = VirtualObjectState.create(obj.virtual, fieldState); + v = new VirtualObjectState(obj.virtual, fieldState); } else { - v = MaterializedObjectState.create(obj.virtual, obj.getMaterializedValue()); + v = new MaterializedObjectState(obj.virtual, obj.getMaterializedValue()); } effects.addVirtualMapping(frameState, v); } @@ -237,7 +237,7 @@ ValueNode value = obj.getEntry(i); if (!(value instanceof VirtualObjectNode || value.isConstant())) { if (exitNode.loopBegin().isPhiAtMerge(value) || initialObj == null || !initialObj.isVirtual() || initialObj.getEntry(i) != value) { - ProxyNode proxy = ValueProxyNode.create(value, exitNode); + ProxyNode proxy = new ValueProxyNode(value, exitNode); obj.setEntry(i, proxy); effects.addFloatingNode(proxy, "virtualProxy"); } @@ -247,7 +247,7 @@ if (initialObj == null || initialObj.isVirtual()) { ProxyNode proxy = proxies.get(obj.virtual); if (proxy == null) { - proxy = ValueProxyNode.create(obj.getMaterializedValue(), exitNode); + proxy = new ValueProxyNode(obj.getMaterializedValue(), exitNode); effects.addFloatingNode(proxy, "proxy"); } else { effects.replaceFirstInput(proxy, proxy.value(), obj.getMaterializedValue()); @@ -282,7 +282,7 @@ protected PhiNode getCachedPhi(T virtual, Stamp stamp) { ValuePhiNode result = materializedPhis.get(virtual); if (result == null) { - result = ValuePhiNode.create(stamp, merge); + result = new ValuePhiNode(stamp, merge); materializedPhis.put(virtual, result); } return result; @@ -457,11 +457,11 @@ for (int i = 1; i < objStates.length; i++) { ValueNode[] fields = objStates[i].getEntries(); if (phis[valueIndex] == null && values[valueIndex] != fields[valueIndex]) { - phis[valueIndex] = ValuePhiNode.create(values[valueIndex].stamp().unrestricted(), merge); + phis[valueIndex] = new ValuePhiNode(values[valueIndex].stamp().unrestricted(), merge); } } if (phis[valueIndex] != null && !phis[valueIndex].stamp().isCompatible(values[valueIndex].stamp())) { - phis[valueIndex] = ValuePhiNode.create(values[valueIndex].stamp().unrestricted(), merge); + phis[valueIndex] = new ValuePhiNode(values[valueIndex].stamp().unrestricted(), merge); } if (twoSlotKinds != null && twoSlotKinds[valueIndex] != null) { // skip an entry after a long/double value that occupies two int slots diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/ReadEliminationClosure.java Mon Jan 12 21:24:26 2015 +0100 @@ -90,7 +90,7 @@ ValueNode cachedValue = state.getCacheEntry(identifier); if (cachedValue != null && read.stamp().isCompatible(cachedValue.stamp())) { if (read.getGuard() != null && !(read.getGuard() instanceof FixedNode)) { - effects.addFixedNodeBefore(ValueAnchorNode.create((ValueNode) read.getGuard()), read); + effects.addFixedNodeBefore(new ValueAnchorNode((ValueNode) read.getGuard()), read); } effects.replaceAtUsages(read, cachedValue); addScalarAlias(read, cachedValue); @@ -174,7 +174,7 @@ if (exitNode.graph().hasValueProxies()) { for (Map.Entry, ValueNode> entry : exitState.getReadCache().entrySet()) { if (initialState.getReadCache().get(entry.getKey()) != entry.getValue()) { - ProxyNode proxy = ValueProxyNode.create(exitState.getCacheEntry(entry.getKey()), exitNode); + ProxyNode proxy = new ValueProxyNode(exitState.getCacheEntry(entry.getKey()), exitNode); effects.addFloatingNode(proxy, "readCacheProxy"); entry.setValue(proxy); } @@ -203,7 +203,7 @@ protected PhiNode getCachedPhi(T virtual, Stamp stamp) { ValuePhiNode result = materializedPhis.get(virtual); if (result == null) { - result = ValuePhiNode.create(stamp, merge); + result = new ValuePhiNode(stamp, merge); materializedPhis.put(virtual, result); } return result; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -53,25 +53,11 @@ @Input ValueNode index; @Input ValueNode indexScaling; - public static SnippetLocationNode create(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode identity, ValueNode displacement, ValueNode index, ValueNode indexScaling, - Graph graph) { - return graph.unique(SnippetLocationNode.create(snippetReflection, identity, displacement, index, indexScaling)); - } - - public static SnippetLocationNode create(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement) { - return new SnippetLocationNode(snippetReflection, locationIdentity, displacement); - } - - protected SnippetLocationNode(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement) { + public SnippetLocationNode(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement) { this(snippetReflection, locationIdentity, displacement, null, null); } - public static SnippetLocationNode create(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement, ValueNode index, - ValueNode indexScaling) { - return new SnippetLocationNode(snippetReflection, locationIdentity, displacement, index, indexScaling); - } - - protected SnippetLocationNode(SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement, ValueNode index, ValueNode indexScaling) { + public SnippetLocationNode(@InjectedNodeParameter SnippetReflectionProvider snippetReflection, ValueNode locationIdentity, ValueNode displacement, ValueNode index, ValueNode indexScaling) { super(StampFactory.object()); this.snippetReflection = snippetReflection; this.locationIdentity = locationIdentity; @@ -98,11 +84,11 @@ int constIndexScaling = indexScaling == null ? 0 : indexScaling.asJavaConstant().asInt(); if (index == null || constIndexScaling == 0) { - return ConstantLocationNode.create(constLocation, constDisplacement, graph()); + return graph().unique(new ConstantLocationNode(constLocation, constDisplacement)); } else if (index.isConstant()) { - return ConstantLocationNode.create(constLocation, index.asJavaConstant().asLong() * constIndexScaling + constDisplacement, graph()); + return graph().unique(new ConstantLocationNode(constLocation, index.asJavaConstant().asLong() * constIndexScaling + constDisplacement)); } else { - return IndexedLocationNode.create(constLocation, constDisplacement, index, graph(), constIndexScaling); + return graph().unique(new IndexedLocationNode(constLocation, constDisplacement, index, constIndexScaling)); } } return this; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -42,19 +42,15 @@ public static WordCastNode wordToObject(ValueNode input, Kind wordKind) { assert input.getKind() == wordKind; - return WordCastNode.create(StampFactory.object(), input); + return new WordCastNode(StampFactory.object(), input); } public static WordCastNode objectToWord(ValueNode input, Kind wordKind) { assert input.stamp() instanceof ObjectStamp; - return WordCastNode.create(StampFactory.forKind(wordKind), input); + return new WordCastNode(StampFactory.forKind(wordKind), input); } - public static WordCastNode create(Stamp stamp, ValueNode input) { - return new WordCastNode(stamp, input); - } - - protected WordCastNode(Stamp stamp, ValueNode input) { + public WordCastNode(Stamp stamp, ValueNode input) { super(stamp); this.input = input; } diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java --- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java Mon Jan 12 21:24:26 2015 +0100 @@ -159,9 +159,9 @@ * depends on elementKind. Therefore, just create a new node and replace the old one. */ if (node instanceof LoadIndexedNode) { - graph.replaceFixedWithFixed(node, graph.add(LoadIndexedNode.create(node.array(), node.index(), wordKind))); + graph.replaceFixedWithFixed(node, graph.add(new LoadIndexedNode(node.array(), node.index(), wordKind))); } else if (node instanceof StoreIndexedNode) { - graph.replaceFixedWithFixed(node, graph.add(StoreIndexedNode.create(node.array(), node.index(), wordKind, ((StoreIndexedNode) node).value()))); + graph.replaceFixedWithFixed(node, graph.add(new StoreIndexedNode(node.array(), node.index(), wordKind, ((StoreIndexedNode) node).value()))); } else { throw GraalInternalError.shouldNotReachHere(); } @@ -220,7 +220,7 @@ case NOT: assert arguments.size() == 1; - replace(invoke, graph.unique(XorNode.create(arguments.get(0), ConstantNode.forIntegerKind(wordKind, -1, graph)))); + replace(invoke, graph.unique(new XorNode(arguments.get(0), ConstantNode.forIntegerKind(wordKind, -1, graph)))); break; case READ_POINTER: @@ -289,7 +289,7 @@ case FROM_ARRAY: assert arguments.size() == 2; - replace(invoke, graph.unique(ComputeAddressNode.create(arguments.get(0), arguments.get(1), StampFactory.forKind(wordKind)))); + replace(invoke, graph.unique(new ComputeAddressNode(arguments.get(0), arguments.get(1), StampFactory.forKind(wordKind)))); break; case TO_OBJECT: @@ -323,14 +323,14 @@ if (toKind == Kind.Int) { assert value.getKind() == Kind.Long; - return graph.unique(NarrowNode.create(value, 32)); + return graph.unique(new NarrowNode(value, 32)); } else { assert toKind == Kind.Long; assert value.getKind().getStackKind() == Kind.Int; if (unsigned) { - return graph.unique(ZeroExtendNode.create(value, 64)); + return graph.unique(new ZeroExtendNode(value, 64)); } else { - return graph.unique(SignExtendNode.create(value, 64)); + return graph.unique(new SignExtendNode(value, 64)); } } } @@ -342,8 +342,8 @@ */ private static ValueNode createBinaryNodeInstance(Class nodeClass, ValueNode left, ValueNode right) { try { - Method factory = nodeClass.getDeclaredMethod("create", ValueNode.class, ValueNode.class); - return (ValueNode) factory.invoke(null, left, right); + Constructor cons = nodeClass.getDeclaredConstructor(ValueNode.class, ValueNode.class); + return (ValueNode) cons.newInstance(left, right); } catch (Throwable ex) { throw new GraalInternalError(ex).addContext(nodeClass.getName()); } @@ -360,11 +360,11 @@ CompareNode comparison; if (condition == Condition.EQ || condition == Condition.NE) { - comparison = IntegerEqualsNode.create(a, b); + comparison = new IntegerEqualsNode(a, b); } else if (condition.isUnsigned()) { - comparison = IntegerBelowNode.create(a, b); + comparison = new IntegerBelowNode(a, b); } else { - comparison = IntegerLessThanNode.create(a, b); + comparison = new IntegerLessThanNode(a, b); } ConstantNode trueValue = ConstantNode.forInt(1, graph); @@ -375,7 +375,7 @@ trueValue = falseValue; falseValue = temp; } - ConditionalNode materialize = graph.unique(ConditionalNode.create(graph.unique(comparison), trueValue, falseValue)); + ConditionalNode materialize = graph.unique(new ConditionalNode(graph.unique(comparison), trueValue, falseValue)); return materialize; } @@ -383,11 +383,11 @@ if (locationIdentity.isConstant()) { return makeLocation(graph, offset, snippetReflection.asObject(LocationIdentity.class, locationIdentity.asJavaConstant())); } - return SnippetLocationNode.create(snippetReflection, locationIdentity, ConstantNode.forLong(0, graph), fromSigned(graph, offset), ConstantNode.forInt(1, graph), graph); + return graph.unique(new SnippetLocationNode(snippetReflection, locationIdentity, ConstantNode.forLong(0, graph), fromSigned(graph, offset), ConstantNode.forInt(1, graph))); } protected LocationNode makeLocation(StructuredGraph graph, ValueNode offset, LocationIdentity locationIdentity) { - return IndexedLocationNode.create(locationIdentity, 0, fromSigned(graph, offset), graph, 1); + return graph.unique(new IndexedLocationNode(locationIdentity, 0, fromSigned(graph, offset), 1)); } protected ValueNode readOp(StructuredGraph graph, Kind readKind, ValueNode base, Invoke invoke, LocationNode location, Opcode op) { @@ -399,7 +399,7 @@ } protected ValueNode readOp(StructuredGraph graph, Kind readKind, ValueNode base, Invoke invoke, LocationNode location, BarrierType barrierType, boolean compressible) { - JavaReadNode read = graph.add(JavaReadNode.create(readKind, base, location, barrierType, compressible)); + JavaReadNode read = graph.add(new JavaReadNode(readKind, base, location, barrierType, compressible)); graph.addBeforeFixed(invoke.asNode(), read); /* * The read must not float outside its block otherwise it may float above an explicit zero @@ -414,7 +414,7 @@ final BarrierType barrier = (op == Opcode.WRITE_BARRIERED ? BarrierType.PRECISE : BarrierType.NONE); final boolean compressible = (op == Opcode.WRITE_OBJECT || op == Opcode.WRITE_BARRIERED); final boolean initialize = (op == Opcode.INITIALIZE); - JavaWriteNode write = graph.add(JavaWriteNode.create(writeKind, base, value, location, barrier, compressible, initialize)); + JavaWriteNode write = graph.add(new JavaWriteNode(writeKind, base, value, location, barrier, compressible, initialize)); write.setStateAfter(invoke.stateAfter()); graph.addBeforeFixed(invoke.asNode(), write); return write; diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.nfi/src/com/oracle/nfi/api/NativeFunctionPointer.java --- a/graal/com.oracle.nfi/src/com/oracle/nfi/api/NativeFunctionPointer.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.nfi/src/com/oracle/nfi/api/NativeFunctionPointer.java Mon Jan 12 21:24:26 2015 +0100 @@ -33,7 +33,7 @@ /** * Returns the name of the function. - * + * * @return name of the function */ String getName(); diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/TypeSystem.java --- a/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/TypeSystem.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/TypeSystem.java Mon Jan 12 21:24:26 2015 +0100 @@ -37,7 +37,7 @@ * concrete type is found first when searching the list sequentially for the type of a given generic * value. *

- * + * *

* Each {@link #value()} is represented as a java type. A type can specify two annotations: * {@link TypeCheck} and {@link TypeCast}. The {@link TypeCheck} checks whether a given generic @@ -51,14 +51,14 @@ * accept also {@link Integer} values, implicitly converting them to {@link Double} . This example * points out how we express implicit type conversions. *

- * + * *

* Example: The {@link TypeSystem} contains the types {@link Boolean}, {@link Integer}, and * {@link Double}. The type {@link Object} is always used implicitly as the generic type represent * all values. - * + * *

- *
+ * 
  * {@literal @}TypeSystem(types = {boolean.class, int.class, double.class})
  * public abstract class ExampleTypeSystem {
  * 
@@ -73,8 +73,8 @@
  *     }
  * }
  * 
- * - * + * + * * @see TypeCast * @see TypeCheck */ diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.truffle.api/.checkstyle_checks.xml --- a/graal/com.oracle.truffle.api/.checkstyle_checks.xml Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.truffle.api/.checkstyle_checks.xml Mon Jan 12 21:24:26 2015 +0100 @@ -101,7 +101,6 @@ - diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Mon Jan 12 21:24:26 2015 +0100 @@ -72,7 +72,7 @@ * language specific implementations may want to return true here to indicate that * gathering call site specific profiling information might make sense for this {@link RootNode} * . - * + * * @return true if cloning is allowed else false. */ public boolean isCloningAllowed() { @@ -91,7 +91,7 @@ /** * Executes this function using the specified frame and returns the result value. - * + * * @param frame the frame of the currently executing guest language method * @return the value of the execution */ @@ -114,14 +114,14 @@ * the correct ExecutionContext to be determined for a RootNode (and * so also for a {@link RootCallTarget} and a {@link FrameInstance} obtained from the call * stack) without prior knowledge of the language it has come from. - * + * * Used for instance to determine the language of a RootNode: * *
      * 
      * rootNode.getExecutionContext().getLanguageShortName();
      *  
- * + * * Returns null by default. */ public ExecutionContext getExecutionContext() { @@ -151,7 +151,7 @@ *

* Implementations should ensure that instrumentation is never applied more than once to an AST, * as this is not guaranteed to be error-free. - * + * * @see Probe#registerASTProber(com.oracle.truffle.api.instrument.ASTProber) */ public void applyInstrumentation() { diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ConditionProfile.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ConditionProfile.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ConditionProfile.java Mon Jan 12 21:24:26 2015 +0100 @@ -30,9 +30,9 @@ /** * Abstract utility class to speculate on conditions. Condition profiles are intended to be used as * part of if conditions. - * + * * Example usage: - * + * *

  * private final ConditionProfile zero = ConditionProfile.createBinaryProfile();
  * 
@@ -42,12 +42,12 @@
  * } else {
  *   return value;
  * }
- *
+ * 
  * 
- * + * * All instances of {@code ConditionProfile} (and subclasses) must be held in {@code final} fields * for compiler optimizations to take effect. - * + * * @see #createCountingProfile() * @see #createBinaryProfile() */ @@ -62,7 +62,7 @@ * true and false. This information is reported to the underlying optimization system using * {@link CompilerDirectives#injectBranchProbability(double, boolean)}. Condition profiles are * intended to be used as part of if conditions. - * + * * @see ConditionProfile * @see #createBinaryProfile() */ @@ -73,7 +73,7 @@ /** * Returns a {@link ConditionProfile} that speculates on conditions to be never true or to be * never false. Condition profiles are intended to be used as part of if conditions. - * + * * @see ConditionProfile * @see ConditionProfile#createCountingProfile() */ diff -r 49e5c062e77a -r 55a30b4beb5f graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ValueProfile.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ValueProfile.java Mon Jan 12 21:12:24 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/ValueProfile.java Mon Jan 12 21:24:26 2015 +0100 @@ -26,18 +26,18 @@ /** * Utility class to speculate on certain properties of values. - * + * * Example usage: - * + * *
  * private final ValueProfile classProfile = ValueProfile.createClassProfile();
  * 
  * return classProfile.profile(value);
  * 
- * + * * All instances of {@code ValueProfile} (and subclasses) must be held in {@code final} fields for * compiler optimizations to take effect. - * + * * @see #createPrimitiveProfile() * @see #createIdentityProfile() * @see #createClassProfile()