Fixes to make jni_compiler_test work on MIPS.

Fixed the jni compiler in numerous ways:
- Added NOP for delay slot of branches/jumps
- Made calling convention match registers pushed by stubs
- Fixes to assembly and added noreorder directive

Change-Id: I32bc55985fbbc58b5b5358149766b8738b3ac955
diff --git a/src/oat/utils/mips/assembler_mips.cc b/src/oat/utils/mips/assembler_mips.cc
index e164241..be1aceb 100644
--- a/src/oat/utils/mips/assembler_mips.cc
+++ b/src/oat/utils/mips/assembler_mips.cc
@@ -349,26 +349,32 @@
 
 void MipsAssembler::Beq(Register rt, Register rs, uint16_t imm16) {
   EmitI(0x4, rs, rt, imm16);
+  Nop();
 }
 
 void MipsAssembler::Bne(Register rt, Register rs, uint16_t imm16) {
   EmitI(0x5, rs, rt, imm16);
+  Nop();
 }
 
 void MipsAssembler::J(uint32_t address) {
   EmitJ(0x2, address);
+  Nop();
 }
 
 void MipsAssembler::Jal(uint32_t address) {
   EmitJ(0x2, address);
+  Nop();
 }
 
 void MipsAssembler::Jr(Register rs) {
   EmitR(0, rs, static_cast<Register>(0), static_cast<Register>(0), 0, 0x08);
+  Nop();
 }
 
 void MipsAssembler::Jalr(Register rs) {
-  EmitR(0, rs, static_cast<Register>(0), static_cast<Register>(0), 0, 0x09);
+  EmitR(0, rs, static_cast<Register>(0), RA, 0, 0x09);
+  Nop();
 }
 
 void MipsAssembler::AddS(FRegister fd, FRegister fs, FRegister ft) {
@@ -445,6 +451,10 @@
         static_cast<Register>(0), 0, 0xD);
 }
 
+void MipsAssembler::Nop() {
+  EmitR(0x0, static_cast<Register>(0), static_cast<Register>(0), static_cast<Register>(0), 0, 0x0);
+}
+
 void MipsAssembler::Move(Register rt, Register rs) {
   EmitI(0x8, rs, rt, 0);
 }
@@ -604,6 +614,9 @@
 
   // Decrease frame to required size.
   DecreaseFrameSize(frame_size);
+
+  // Then jump to the return address.
+  Jr(RA);
 }
 
 void MipsAssembler::IncreaseFrameSize(size_t adjust) {