# HG changeset patch # User Josef Eisl # Date 1437745097 -7200 # Node ID 8fbf5bd5c4067bcedb3bc596ec413725b36d83e3 # Parent be38501e40e7cbacdff4d5a7f5a25ddf5b69f0d8 SSIBlockValueMapImpl: use VariableVirtualStackValueMap in BlockData. diff -r be38501e40e7 -r 8fbf5bd5c406 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java Fri Jul 24 15:26:17 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java Fri Jul 24 15:38:17 2015 +0200 @@ -40,15 +40,15 @@ public final class SSIBlockValueMapImpl implements BlockValueMap { - private final class BlockData { + private static final class BlockData { /** Mapping from value to index into {@link #incoming} */ private final ValueMap valueIndexMap; private final ArrayList incoming; private final ArrayList outgoing; - private BlockData() { - valueIndexMap = new GenericValueMap<>(); + private BlockData(int initialVariableCapacity, int initialStackSlotCapacity) { + valueIndexMap = new VariableVirtualStackValueMap<>(initialVariableCapacity, initialStackSlotCapacity); incoming = new ArrayList<>(); outgoing = new ArrayList<>(); } @@ -66,6 +66,7 @@ } public int addIncoming(Value operand) { + assert isVariable(operand) || isVirtualStackSlot(operand) : "Not a variable or vstack: " + operand; int index = incoming.size(); incoming.add(Value.ILLEGAL); valueIndexMap.put(operand, index); @@ -87,9 +88,13 @@ /** Mapping from value to definition block. */ private final ValueMap> valueToDefBlock; private final BlockMap blockData; + private final int initialVariableCapacity; + private final int initialStackSlotCapacity; - public SSIBlockValueMapImpl(AbstractControlFlowGraph cfg, int initialVariableCapacity, int initialStackSlotCapazity) { - valueToDefBlock = new VariableVirtualStackValueMap<>(initialVariableCapacity, initialStackSlotCapazity); + public SSIBlockValueMapImpl(AbstractControlFlowGraph cfg, int initialVariableCapacity, int initialStackSlotCapacity) { + this.initialVariableCapacity = initialVariableCapacity; + this.initialStackSlotCapacity = initialStackSlotCapacity; + valueToDefBlock = new VariableVirtualStackValueMap<>(initialVariableCapacity, initialStackSlotCapacity); blockData = new BlockMap<>(cfg); } @@ -143,7 +148,7 @@ private BlockData getOrInit(AbstractBlockBase block) { BlockData data = blockData.get(block); if (data == null) { - data = new BlockData(); + data = new BlockData(initialVariableCapacity, initialStackSlotCapacity); blockData.put(block, data); } return data;