# HG changeset patch # User Josef Eisl # Date 1415641252 -3600 # Node ID a0cd3a1e7d7d5a78dbf1db8fe5bc5260f550f57a # Parent 6b58802e45b23dfa77a60480955957e29c8496e3 FrameMapFactory: create (empty) FrameMap eagerly. diff -r 6b58802e45b2 -r a0cd3a1e7d7d graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64FrameMapBuilder.java --- 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 mapping) { + protected void mapStackSlots(HashMap 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); } } diff -r 6b58802e45b2 -r a0cd3a1e7d7d graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java --- 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 stackSlots; private final List 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 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 mapping) { + protected void mapStackSlots(HashMap mapping) { for (TrackedVirtualStackSlot virtualSlot : stackSlots) { - StackSlot slot = virtualSlot.transform(frameMap); + StackSlot slot = virtualSlot.transform(); mapping.put(virtualSlot, slot); } }