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();
     }
 }