Mercurial > hg > graal-compiler
changeset 16646:0a9ed7b4f8fd
[SPARC] Fix issues, with looking up information for exception handling, (Return PC is after the delay slot)
author | Stefan Anzinger <stefan.anzinger@gmail.com> |
---|---|
date | Fri, 25 Jul 2014 20:55:56 -0700 |
parents | 8c70d65ec04a |
children | e87d16c605d2 |
files | graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Fri Jul 25 20:54:28 2014 -0700 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java Fri Jul 25 20:55:56 2014 -0700 @@ -160,10 +160,10 @@ } else { new Call(0).emit(masm); } + new Nop().emit(masm); // delay slot int after = masm.position(); crb.recordDirectCall(before, after, callTarget, info); crb.recordExceptionHandlers(after, info); - new Nop().emit(masm); // delay slot masm.ensureUniquePC(); } @@ -171,19 +171,19 @@ int before = masm.position(); new Sethix(0L, dst, true).emit(masm); new Jmp(new SPARCAddress(dst, 0)).emit(masm); + new Nop().emit(masm); // delay slot int after = masm.position(); crb.recordIndirectCall(before, after, target, null); - new Nop().emit(masm); // delay slot masm.ensureUniquePC(); } public static void indirectCall(CompilationResultBuilder crb, SPARCMacroAssembler masm, Register dst, InvokeTarget callTarget, LIRFrameState info) { int before = masm.position(); new Jmpl(dst, 0, o7).emit(masm); + new Nop().emit(masm); // delay slot int after = masm.position(); crb.recordIndirectCall(before, after, callTarget, info); crb.recordExceptionHandlers(after, info); - new Nop().emit(masm); // delay slot masm.ensureUniquePC(); } }