changeset 21191:12a5d2c12e2e

PhiResolver: add factory methods.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 20 Apr 2015 16:01:44 +0200
parents c927a05097ae
children 4c7c22aa4bd7
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/PhiResolver.java
diffstat 2 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon Apr 20 15:44:04 2015 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon Apr 20 16:01:44 2015 +0200
@@ -362,7 +362,7 @@
         if (Options.TraceLIRGeneratorLevel.getValue() >= 1) {
             TTY.println("MOVE TO PHI from " + pred + " to " + merge);
         }
-        PhiResolver resolver = new PhiResolver(gen);
+        PhiResolver resolver = PhiResolver.create(gen);
         for (PhiNode phi : merge.phis()) {
             if (phi instanceof ValuePhiNode) {
                 ValueNode curVal = phi.valueAt(pred);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/PhiResolver.java	Mon Apr 20 15:44:04 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/PhiResolver.java	Mon Apr 20 16:01:44 2015 +0200
@@ -126,18 +126,26 @@
      */
     private final HashMap<Value, PhiResolverNode> operandToNodeMap = CollectionsFactory.newMap();
 
-    public PhiResolver(LIRGeneratorTool gen) {
+    public static PhiResolver create(LIRGeneratorTool gen) {
+        AbstractBlockBase<?> block = gen.getCurrentBlock();
+        assert block != null;
+        List<LIRInstruction> instructions = gen.getResult().getLIR().getLIRforBlock(block);
+
+        return new PhiResolver(gen, new LIRInsertionBuffer(), instructions, instructions.size());
+    }
+
+    public static PhiResolver create(LIRGeneratorTool gen, LIRInsertionBuffer buffer, List<LIRInstruction> instructions, int insertBefore) {
+        return new PhiResolver(gen, buffer, instructions, insertBefore);
+    }
+
+    protected PhiResolver(LIRGeneratorTool gen, LIRInsertionBuffer buffer, List<LIRInstruction> instructions, int insertBefore) {
         this.gen = gen;
         moveFactory = gen.getSpillMoveFactory();
         temp = ILLEGAL;
 
-        AbstractBlockBase<?> block = gen.getCurrentBlock();
-        assert block != null;
-        List<LIRInstruction> instructions = gen.getResult().getLIR().getLIRforBlock(block);
-
-        buffer = new LIRInsertionBuffer();
-        buffer.init(instructions);
-        insertBefore = instructions.size();
+        this.buffer = buffer;
+        this.buffer.init(instructions);
+        this.insertBefore = insertBefore;
 
     }