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();
+    }
 }