changeset 22846:ece452d7d500

Re-add support to emit the address of a StackSlot
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 19 Oct 2015 16:34:04 -0700
parents 39cf11c62720
children 9fdb75d6e239
files graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java
diffstat 5 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Mon Oct 19 17:37:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Mon Oct 19 16:34:04 2015 -0700
@@ -310,9 +310,9 @@
     }
 
     @Override
-    public Variable emitAddress(VirtualStackSlot address) {
+    public Variable emitAddress(AllocatableValue stackslot) {
         Variable result = newVariable(LIRKind.value(target().arch.getWordKind()));
-        append(new StackLeaOp(result, address));
+        append(new StackLeaOp(result, stackslot));
         return result;
     }
 
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Mon Oct 19 17:37:24 2015 +0200
+++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java	Mon Oct 19 16:34:04 2015 -0700
@@ -257,9 +257,9 @@
     }
 
     @Override
-    public Variable emitAddress(VirtualStackSlot address) {
+    public Variable emitAddress(AllocatableValue stackslot) {
         Variable result = newVariable(LIRKind.value(target().arch.getWordKind()));
-        append(new StackLoadAddressOp(result, address));
+        append(new StackLoadAddressOp(result, stackslot));
         return result;
     }
 
--- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Mon Oct 19 17:37:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java	Mon Oct 19 16:34:04 2015 -0700
@@ -37,6 +37,7 @@
 import jdk.vm.ci.amd64.AMD64;
 import jdk.vm.ci.amd64.AMD64Kind;
 import jdk.vm.ci.code.Register;
+import jdk.vm.ci.code.StackSlot;
 import jdk.vm.ci.common.JVMCIError;
 import jdk.vm.ci.meta.AllocatableValue;
 import jdk.vm.ci.meta.Constant;
@@ -324,10 +325,11 @@
         @Def({REG}) protected AllocatableValue result;
         @Use({STACK, UNINITIALIZED}) protected AllocatableValue slot;
 
-        public StackLeaOp(AllocatableValue result, VirtualStackSlot slot) {
+        public StackLeaOp(AllocatableValue result, AllocatableValue slot) {
             super(TYPE);
             this.result = result;
             this.slot = slot;
+            assert slot instanceof VirtualStackSlot || slot instanceof StackSlot;
         }
 
         @Override
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Mon Oct 19 17:37:24 2015 +0200
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java	Mon Oct 19 16:34:04 2015 -0700
@@ -442,10 +442,11 @@
         @Def({REG}) protected AllocatableValue result;
         @Use({STACK, UNINITIALIZED}) protected AllocatableValue slot;
 
-        public StackLoadAddressOp(AllocatableValue result, VirtualStackSlot address) {
+        public StackLoadAddressOp(AllocatableValue result, AllocatableValue slot) {
             super(TYPE, SIZE);
             this.result = result;
-            this.slot = address;
+            this.slot = slot;
+            assert slot instanceof VirtualStackSlot || slot instanceof StackSlot;
         }
 
         @Override
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java	Mon Oct 19 17:37:24 2015 +0200
+++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/gen/LIRGeneratorTool.java	Mon Oct 19 16:34:04 2015 -0700
@@ -48,7 +48,6 @@
 import com.oracle.graal.lir.LabelRef;
 import com.oracle.graal.lir.SwitchStrategy;
 import com.oracle.graal.lir.Variable;
-import com.oracle.graal.lir.VirtualStackSlot;
 
 public interface LIRGeneratorTool extends BenchmarkCounterFactory {
 
@@ -169,7 +168,7 @@
      */
     void emitData(AllocatableValue dst, byte[] data);
 
-    Variable emitAddress(VirtualStackSlot slot);
+    Variable emitAddress(AllocatableValue stackslot);
 
     void emitMembar(int barriers);