# HG changeset patch # User Stefan Anzinger # Date 1406214835 25200 # Node ID 0058b4af625de917bc5646007a4fc14939daac2c # Parent fd631dda48cc5e6d15d4ff21adc578d543a88e2b [SPARC] Patch return address fix (cleanup) diff -r fd631dda48cc -r 0058b4af625d graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java Thu Jul 24 08:13:21 2014 -0700 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotPatchReturnAddressOp.java Thu Jul 24 08:13:55 2014 -0700 @@ -48,20 +48,7 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - // FIXME This is non-trivial. On SPARC we need to flush all register windows first before we - // can patch the return address (see: frame::patch_pc). - // new Flushw().emit(masm); - // int frameSize = crb.frameMap.frameSize(); - // new SPARCAssembler.Ldx(new SPARCAddress(o7, 1), g3).emit(masm); - // new Setx(8 * 15 - 1, g4, false).emit(masm); Register addrRegister = asLongReg(address); - // new SPARCAssembler.Ldx(new SPARCAddress(o7, 1), g3).emit(masm); new Sub(addrRegister, Return.PC_RETURN_OFFSET, i7).emit(masm); -// new Save(sp, -3000, sp).emit(masm); -// new Flushw().emit(masm); - // new Stx(g4, new SPARCAddress(fp, o7.number * crb.target.wordSize)).emit(masm); -// new Restore(g0, g0, g0).emit(masm); -// new Flushw().emit(masm); - // new Ldx(new SPARCAddress(g0, 0x123), g0).emit(masm); } }