changeset 18459:632e7c384aea

Replace FrameMappingToolImpl by SimpleStackSlotAllocator.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 17 Nov 2014 20:15:59 +0100
parents ff3f0bf30b2e
children 318751159681
files graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java
diffstat 3 files changed, 57 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java	Mon Nov 17 20:07:24 2014 +0100
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/DelayedFrameMapBuilder.java	Mon Nov 17 20:15:59 2014 +0100
@@ -83,13 +83,12 @@
     }
 
     public FrameMap buildFrameMap(LIRGenerationResult res) {
-        FrameMappingToolImpl tool = new FrameMappingToolImpl(this);
-        tool.mapStackSlots();
+        FrameMappingTool mapper = new SimpleStackSlotAllocator().allocateStackSlots(this);
         for (CallingConvention cc : calls) {
             frameMap.callsMethod(cc);
         }
         // rewrite
-        mappables.forEach(m -> m.map(tool));
+        mappables.forEach(m -> m.map(mapper));
 
         frameMap.finish();
         return frameMap;
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMappingToolImpl.java	Mon Nov 17 20:07:24 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package com.oracle.graal.lir.framemap;
-
-import java.util.*;
-
-import com.oracle.graal.api.code.*;
-import com.oracle.graal.compiler.common.*;
-
-public class FrameMappingToolImpl implements FrameMappingTool {
-
-    private final HashMap<VirtualStackSlot, StackSlot> mapping;
-    private final DelayedFrameMapBuilder builder;
-
-    public FrameMappingToolImpl(DelayedFrameMapBuilder builder) {
-        this.mapping = new HashMap<>();
-        this.builder = builder;
-    }
-
-    public StackSlot getStackSlot(VirtualStackSlot slot) {
-        return mapping.get(slot);
-    }
-
-    void mapStackSlots() {
-        for (VirtualStackSlot virtualSlot : builder.getStackSlots()) {
-            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 builder.frameMap.allocateSpillSlot(virtualStackSlot.getLIRKind());
-    }
-
-    protected StackSlot mapVirtualStackSlotRange(VirtualStackSlotRange virtualStackSlot) {
-        return builder.frameMap.allocateStackSlots(virtualStackSlot.getSlots(), virtualStackSlot.getObjects());
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleStackSlotAllocator.java	Mon Nov 17 20:15:59 2014 +0100
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.graal.lir.framemap;
+
+import java.util.*;
+
+import com.oracle.graal.api.code.*;
+import com.oracle.graal.compiler.common.*;
+
+public class SimpleStackSlotAllocator {
+
+    FrameMappingTool allocateStackSlots(DelayedFrameMapBuilder builder) {
+        HashMap<VirtualStackSlot, StackSlot> mapping = new HashMap<>();
+        for (VirtualStackSlot virtualSlot : builder.getStackSlots()) {
+            final StackSlot slot;
+            if (virtualSlot instanceof SimpleVirtualStackSlot) {
+                slot = mapSimpleVirtualStackSlot(builder, (SimpleVirtualStackSlot) virtualSlot);
+            } else if (virtualSlot instanceof VirtualStackSlotRange) {
+                slot = mapVirtualStackSlotRange(builder, (VirtualStackSlotRange) virtualSlot);
+            } else {
+                throw GraalInternalError.shouldNotReachHere("Unknown VirtualStackSlot: " + virtualSlot);
+            }
+            mapping.put(virtualSlot, slot);
+        }
+        return mapping::get;
+    }
+
+    protected StackSlot mapSimpleVirtualStackSlot(DelayedFrameMapBuilder builder, SimpleVirtualStackSlot virtualStackSlot) {
+        return builder.frameMap.allocateSpillSlot(virtualStackSlot.getLIRKind());
+    }
+
+    protected StackSlot mapVirtualStackSlotRange(DelayedFrameMapBuilder builder, VirtualStackSlotRange virtualStackSlot) {
+        return builder.frameMap.allocateStackSlots(virtualStackSlot.getSlots(), virtualStackSlot.getObjects());
+    }
+}