Mercurial > hg > graal-compiler
changeset 22361:e0a8c373f0e8
SSIBlockValueMapImpl: use VariableVirtualStackValueMap.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Fri, 24 Jul 2015 15:24:38 +0200 |
parents | 05612742baa8 |
children | be38501e40e7 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/SSIBlockValueMapImpl.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIConstructionPhase.java |
diffstat | 2 files changed, 7 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/SSIBlockValueMapImpl.java Fri Jul 24 15:24:15 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/SSIBlockValueMapImpl.java Fri Jul 24 15:24:38 2015 +0200 @@ -87,8 +87,8 @@ private final ValueMap<Value, AbstractBlockBase<?>> valueToDefBlock; private final BlockMap<BlockData> blockData; - public SSIBlockValueMapImpl(AbstractControlFlowGraph<?> cfg) { - valueToDefBlock = new GenericValueMap<>(); + public SSIBlockValueMapImpl(AbstractControlFlowGraph<?> cfg, int initialVariableCapacity, int initialStackSlotCapazity) { + valueToDefBlock = new VariableVirtualStackValueMap<>(initialVariableCapacity, initialStackSlotCapazity); blockData = new BlockMap<>(cfg); }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIConstructionPhase.java Fri Jul 24 15:24:15 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIConstructionPhase.java Fri Jul 24 15:24:38 2015 +0200 @@ -30,6 +30,7 @@ import com.oracle.graal.debug.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.LIRInstruction.OperandFlag; +import com.oracle.graal.lir.framemap.*; import com.oracle.graal.lir.gen.*; import com.oracle.graal.lir.phases.*; import com.oracle.graal.lir.ssa.*; @@ -40,17 +41,17 @@ protected <B extends AbstractBlockBase<B>> void run(TargetDescription target, LIRGenerationResult lirGenRes, List<B> codeEmittingOrder, List<B> linearScanOrder, LIRGeneratorTool lirGen) { assert SSAUtil.verifySSAForm(lirGenRes.getLIR()); LIR lir = lirGenRes.getLIR(); - new SSIBuilder(lir).build(lirGen); + new SSIBuilder(lir, lirGenRes.getFrameMapBuilder()).build(lirGen); } - private static class SSIBuilder { + private static final class SSIBuilder { private final SSIBlockValueMapImpl valueMap; private final LIR lir; private final BitSet processed; - private SSIBuilder(LIR lir) { + private SSIBuilder(LIR lir, FrameMapBuilder frameMapBuilder) { this.lir = lir; - valueMap = new SSIBlockValueMapImpl(lir.getControlFlowGraph()); + valueMap = new SSIBlockValueMapImpl(lir.getControlFlowGraph(), lir.nextVariable(), ((FrameMapBuilderTool) frameMapBuilder).getNumberOfStackSlots()); processed = new BitSet(lir.getControlFlowGraph().getBlocks().size()); }