# HG changeset patch # User Josef Eisl # Date 1429538504 -7200 # Node ID 12a5d2c12e2eb01484f3ff2f9e9b931a4b1f89c3 # Parent c927a05097ae409cc04b26235ce6328dda13ec9f PhiResolver: add factory methods. diff -r c927a05097ae -r 12a5d2c12e2e graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java Mon 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); diff -r c927a05097ae -r 12a5d2c12e2e graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/PhiResolver.java --- 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 operandToNodeMap = CollectionsFactory.newMap(); - public PhiResolver(LIRGeneratorTool gen) { + public static PhiResolver create(LIRGeneratorTool gen) { + AbstractBlockBase block = gen.getCurrentBlock(); + assert block != null; + List instructions = gen.getResult().getLIR().getLIRforBlock(block); + + return new PhiResolver(gen, new LIRInsertionBuffer(), instructions, instructions.size()); + } + + public static PhiResolver create(LIRGeneratorTool gen, LIRInsertionBuffer buffer, List instructions, int insertBefore) { + return new PhiResolver(gen, buffer, instructions, insertBefore); + } + + protected PhiResolver(LIRGeneratorTool gen, LIRInsertionBuffer buffer, List instructions, int insertBefore) { this.gen = gen; moveFactory = gen.getSpillMoveFactory(); temp = ILLEGAL; - AbstractBlockBase block = gen.getCurrentBlock(); - assert block != null; - List 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; }