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());
         }