changeset 11761:3b25f37d5561

fixed poll-on-return for SPARC
author Doug Simon <doug.simon@oracle.com>
date Tue, 24 Sep 2013 10:32:07 +0200
parents ce0b00597980
children 099748a1a931
files graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java
diffstat 1 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java	Tue Sep 24 08:51:02 2013 +0200
+++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotReturnOp.java	Tue Sep 24 10:32:07 2013 +0200
@@ -26,13 +26,12 @@
 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.*;
 import static com.oracle.graal.phases.GraalOptions.*;
 
-import com.oracle.graal.api.code.*;
 import com.oracle.graal.api.meta.*;
 import com.oracle.graal.asm.sparc.*;
-import com.oracle.graal.graph.*;
 import com.oracle.graal.lir.*;
 import com.oracle.graal.lir.asm.*;
 import com.oracle.graal.lir.sparc.SPARCControlFlow.ReturnOp;
+import com.oracle.graal.sparc.*;
 
 /**
  * Returns from a function.
@@ -50,11 +49,10 @@
 
     @Override
     public void emitCode(TargetMethodAssembler tasm, SPARCMacroAssembler masm) {
-        leaveFrame(tasm);
         if (!isStub && tasm.frameContext != null || !OptEliminateSafepoints.getValue()) {
-            Register scratchForSafepointOnReturn = null;
-            GraalInternalError.unimplemented("need to find a scratch register for the safepoint instruction sequence");
-            SPARCHotSpotSafepointOp.emitCode(tasm, masm, graalRuntime().getConfig(), true, null, scratchForSafepointOnReturn);
+            // Using the same scratch register as LIR_Assembler::return_op
+            // in c1_LIRAssembler_sparc.cpp
+            SPARCHotSpotSafepointOp.emitCode(tasm, masm, graalRuntime().getConfig(), true, null, SPARC.l0);
         }
         ReturnOp.emitCodeHelper(tasm, masm);
     }