Mercurial > hg > truffle
changeset 18433:a0cd3a1e7d7d
FrameMapFactory: create (empty) FrameMap eagerly.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 10 Nov 2014 18:40:52 +0100 |
parents | 6b58802e45b2 |
children | 06624c98ed8b |
files | graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java |
diffstat | 2 files changed, 11 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java Mon Nov 10 18:37:28 2014 +0100 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java Mon Nov 10 18:40:52 2014 +0100 @@ -58,12 +58,12 @@ } @Override - protected void mapStackSlots(FrameMap frameMap, HashMap<VirtualStackSlot, StackSlot> mapping) { + protected void mapStackSlots(HashMap<VirtualStackSlot, StackSlot> mapping) { if (rbpSpillSlot != null) { - StackSlot reservedSlot = rbpSpillSlot.transform(frameMap); + StackSlot reservedSlot = rbpSpillSlot.transform(); assert asStackSlot(reservedSlot).getRawOffset() == -16 : asStackSlot(reservedSlot).getRawOffset(); mapping.put(rbpSpillSlot, reservedSlot); } - super.mapStackSlots(frameMap, mapping); + super.mapStackSlots(mapping); } }
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java Mon Nov 10 18:37:28 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java Mon Nov 10 18:40:52 2014 +0100 @@ -42,14 +42,14 @@ private final RegisterConfig registerConfig; private final CodeCacheProvider codeCache; - private final FrameMapFactory factory; + protected final FrameMap frameMap; private final List<TrackedVirtualStackSlot> stackSlots; private final List<CallingConvention> calls; public DelayedFrameMapBuilder(FrameMapFactory factory, CodeCacheProvider codeCache, RegisterConfig registerConfig) { this.registerConfig = registerConfig == null ? codeCache.getRegisterConfig() : registerConfig; this.codeCache = codeCache; - this.factory = factory; + this.frameMap = factory.newFrameMap(registerConfig); this.stackSlots = new ArrayList<>(); this.calls = new ArrayList<>(); this.mappables = new ArrayList<>(); @@ -86,7 +86,7 @@ super(lirKind); } - public abstract StackSlot transform(FrameMap frameMap); + public abstract StackSlot transform(); } private class SimpleVirtualStackSlot extends TrackedVirtualStackSlot { @@ -98,7 +98,7 @@ } @Override - public StackSlot transform(FrameMap frameMap) { + public StackSlot transform() { int size = frameMap.spillSlotSize(getLIRKind()); frameMap.spillSize = NumUtil.roundUp(frameMap.spillSize + size, size); return frameMap.allocateNewSpillSlot(getLIRKind(), 0); @@ -119,7 +119,7 @@ } @Override - public StackSlot transform(FrameMap frameMap) { + public StackSlot transform() { frameMap.spillSize += (slots * frameMap.getTarget().wordSize); if (!objects.isEmpty()) { @@ -181,10 +181,9 @@ } public FrameMap buildFrameMap(LIRGenerationResult res) { - FrameMap frameMap = factory.newFrameMap(registerConfig); HashMap<VirtualStackSlot, StackSlot> mapping = new HashMap<>(); // fill - mapStackSlots(frameMap, mapping); + mapStackSlots(mapping); for (CallingConvention cc : calls) { frameMap.callsMethod(cc); } @@ -209,9 +208,9 @@ return frameMap; } - protected void mapStackSlots(FrameMap frameMap, HashMap<VirtualStackSlot, StackSlot> mapping) { + protected void mapStackSlots(HashMap<VirtualStackSlot, StackSlot> mapping) { for (TrackedVirtualStackSlot virtualSlot : stackSlots) { - StackSlot slot = virtualSlot.transform(frameMap); + StackSlot slot = virtualSlot.transform(); mapping.put(virtualSlot, slot); } }