changeset 17118:be9c24f5fa2b

[SPARC] Remove unneccessary nops after calls
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Tue, 16 Sep 2014 17:49:43 -0700
parents d980377abc6f
children 60844c15ab27
files graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java
diffstat 1 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java	Tue Sep 16 17:49:13 2014 -0700
+++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCall.java	Tue Sep 16 17:49:43 2014 -0700
@@ -32,7 +32,6 @@
 import com.oracle.graal.asm.sparc.SPARCAssembler.Call;
 import com.oracle.graal.asm.sparc.SPARCAssembler.Jmpl;
 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Jmp;
-import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Nop;
 import com.oracle.graal.asm.sparc.SPARCMacroAssembler.Sethix;
 import com.oracle.graal.lir.*;
 import com.oracle.graal.lir.asm.*;
@@ -160,30 +159,27 @@
         } else {
             new Call(0).emit(masm);
         }
-        new Nop().emit(masm);  // delay slot
+        masm.ensureUniquePC();
         int after = masm.position();
         crb.recordDirectCall(before, after, callTarget, info);
         crb.recordExceptionHandlers(after, info);
-        masm.ensureUniquePC();
     }
 
     public static void indirectJmp(CompilationResultBuilder crb, SPARCMacroAssembler masm, Register dst, InvokeTarget target) {
         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
+        masm.ensureUniquePC();
         int after = masm.position();
         crb.recordIndirectCall(before, after, target, null);
-        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
+        masm.ensureUniquePC();
         int after = masm.position();
         crb.recordIndirectCall(before, after, callTarget, info);
         crb.recordExceptionHandlers(after, info);
-        masm.ensureUniquePC();
     }
 }