Mercurial > hg > graal-compiler
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; }