Mercurial > hg > graal-compiler
changeset 22363:8fbf5bd5c406
SSIBlockValueMapImpl: use VariableVirtualStackValueMap in BlockData.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Fri, 24 Jul 2015 15:38:17 +0200 |
parents | be38501e40e7 |
children | fd8b493efd48 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/ssi/SSIBlockValueMapImpl.java |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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<Value, Integer> valueIndexMap; private final ArrayList<Value> incoming; private final ArrayList<Value> 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<Value, AbstractBlockBase<?>> valueToDefBlock; private final BlockMap<BlockData> 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;