Mercurial > hg > truffle
changeset 18451:8538ef2ce729
FrameMappingToolImpl: type switch for call to transform().
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 17 Nov 2014 19:27:32 +0100 |
parents | 626c267521fe |
children | 94b184d89f11 |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java |
diffstat | 1 files changed, 19 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Mon Nov 17 19:22:06 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java Mon Nov 17 19:27:32 2014 +0100 @@ -25,7 +25,10 @@ import java.util.*; import com.oracle.graal.api.code.*; +import com.oracle.graal.compiler.common.*; +import com.oracle.graal.lir.framemap.DelayedFrameMapBuilder.SimpleVirtualStackSlot; import com.oracle.graal.lir.framemap.DelayedFrameMapBuilder.TrackedVirtualStackSlot; +import com.oracle.graal.lir.framemap.DelayedFrameMapBuilder.VirtualStackSlotRange; public class FrameMappingToolImpl implements FrameMappingTool { @@ -43,8 +46,23 @@ public void mapStackSlots() { for (TrackedVirtualStackSlot virtualSlot : builder.getStackSlots()) { - StackSlot slot = virtualSlot.transform(); + final StackSlot slot; + if (virtualSlot instanceof SimpleVirtualStackSlot) { + slot = mapSimpleVirtualStackSlot((SimpleVirtualStackSlot) virtualSlot); + } else if (virtualSlot instanceof VirtualStackSlotRange) { + slot = mapVirtualStackSlotRange((VirtualStackSlotRange) virtualSlot); + } else { + throw GraalInternalError.shouldNotReachHere("Unknown VirtualStackSlot: " + virtualSlot); + } mapping.put(virtualSlot, slot); } } + + protected StackSlot mapSimpleVirtualStackSlot(SimpleVirtualStackSlot virtualStackSlot) { + return virtualStackSlot.transform(); + } + + protected StackSlot mapVirtualStackSlotRange(VirtualStackSlotRange virtualStackSlot) { + return virtualStackSlot.transform(); + } }