diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc
index c1d4661..21f824d 100644
--- a/src/compiler/codegen/GenCommon.cc
+++ b/src/compiler/codegen/GenCommon.cc
@@ -1321,6 +1321,10 @@
     }
   }
   /* rARG0 is ref, rARG2 is class. If ref==null, use directly as bool result */
+  RegLocation rlResult = oatGetReturn(cUnit, false);
+#if defined(TARGET_MIPS)
+  opRegCopy(cUnit, rlResult.lowReg, r_ZERO);    // store false result for if branch is taken
+#endif
   LIR* branch1 = opCmpImmBranch(cUnit, kCondEq, rARG0, 0, NULL);
   /* load object->klass_ */
   DCHECK_EQ(Object::ClassOffset().Int32Value(), 0);
@@ -1339,7 +1343,7 @@
   oatFreeTemp(cUnit, rTgt);
 #else
   /* Uses branchovers */
-  loadConstant(cUnit, rARG0, 1);     // assume true
+  loadConstant(cUnit, rlResult.lowReg, 1);     // assume true
   LIR* branchover = opCmpBranch(cUnit, kCondEq, rARG1, rARG2, NULL);
 #if !defined(TARGET_X86)
   int rTgt = loadHelper(cUnit,
@@ -1356,7 +1360,6 @@
   oatClobberCalleeSave(cUnit);
   /* branch targets here */
   LIR* target = newLIR0(cUnit, kPseudoTargetLabel);
-  RegLocation rlResult = oatGetReturn(cUnit, false);
   storeValue(cUnit, rlDest, rlResult);
   branch1->target = target;
 #if !defined(TARGET_ARM)
@@ -1884,9 +1887,10 @@
     storeValue(cUnit, rlDest, rlResult);
   } else {
 #if defined(TARGET_MIPS)
+    rlSrc1 = loadValue(cUnit, rlSrc1, kCoreReg);
     rlSrc2 = loadValue(cUnit, rlSrc2, kCoreReg);
     if (checkZero) {
-        genNullCheck(cUnit, rlSrc2.sRegLow, rlSrc2.lowReg, 0);
+        genImmedCheck(cUnit, kCondEq, rlSrc2.lowReg, 0, kThrowDivZero);
     }
     newLIR4(cUnit, kMipsDiv, r_HI, r_LO, rlSrc1.lowReg, rlSrc2.lowReg);
     rlResult = oatEvalLoc(cUnit, rlDest, kCoreReg, true);
@@ -1918,8 +1922,8 @@
       rlResult = oatGetReturn(cUnit, false);
     else
       rlResult = oatGetReturnAlt(cUnit);
-    storeValue(cUnit, rlDest, rlResult);
 #endif
+    storeValue(cUnit, rlDest, rlResult);
   }
   return false;
 }
diff --git a/src/heap.cc b/src/heap.cc
index 84030ba..c6f2395 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -517,8 +517,7 @@
 
 #if VERIFY_OBJECT_ENABLED
 void Heap::VerifyObject(const Object* obj) {
-  if (obj == NULL || this == NULL || !verify_objects_ || Runtime::Current()->IsShuttingDown() ||
-      Thread::Current() == NULL ||
+  if (obj == NULL || this == NULL || !verify_objects_ || Thread::Current() == NULL ||
       Runtime::Current()->GetThreadList()->GetLockOwner() == Thread::Current()->GetTid()) {
     return;
   }
diff --git a/src/oat/runtime/mips/runtime_support_mips.S b/src/oat/runtime/mips/runtime_support_mips.S
index cbf895a..574ebcc 100644
--- a/src/oat/runtime/mips/runtime_support_mips.S
+++ b/src/oat/runtime/mips/runtime_support_mips.S
@@ -53,30 +53,30 @@
      * Macro that sets up the callee save frame to conform with
      * Runtime::CreateCalleeSaveMethod(kRefsOnly). Restoration assumes non-moving GC.
      * Does not include rSUSPEND or rSELF
-     * callee-save: $s2-$s8 + $ra, 8 total + 4 words
+     * callee-save: $s2-$s8 + $ra, 8 total + 4 words + extra args
      */
 .macro SETUP_REF_ONLY_CALLEE_SAVE_FRAME
-    addiu  $sp, $sp, -48
-    sw     $ra, 44($sp)
-    sw     $s8, 40($sp)
-    sw     $s7, 36($sp)
-    sw     $s6, 32($sp)
-    sw     $s5, 28($sp)
-    sw     $s4, 24($sp)
-    sw     $s3, 20($sp)
-    sw     $s2, 16($sp)
-    # 4 open words for args $a0-$a3, bottom will hold Method*
+    addiu  $sp, $sp, -64
+    sw     $ra, 60($sp)
+    sw     $s8, 56($sp)
+    sw     $s7, 52($sp)
+    sw     $s6, 48($sp)
+    sw     $s5, 44($sp)
+    sw     $s4, 40($sp)
+    sw     $s3, 36($sp)
+    sw     $s2, 32($sp)
+    # 4 word for alignment and extra args, 4 open words for args $a0-$a3, bottom will hold Method*
 .endm
 
 .macro RESTORE_REF_ONLY_CALLEE_SAVE_FRAME
-    lw     $ra, 44($sp)
-    addiu  $sp, $sp, 48
+    lw     $ra, 60($sp)
+    addiu  $sp, $sp, 64
 .endm
 
 .macro RESTORE_REF_ONLY_CALLEE_SAVE_FRAME_AND_RETURN
-    lw     $ra, 44($sp)
+    lw     $ra, 60($sp)
     jr     $ra
-    addiu  $sp, $sp, 48
+    addiu  $sp, $sp, 64
 .endm
 
     /*
@@ -531,7 +531,7 @@
 art_get32_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a1, 48($sp)                  # pass referrer's Method*
+    lw     $a1, 64($sp)                  # pass referrer's Method*
     move   $a2, rSELF                    # pass Thread::Current
     jal    artGet32StaticFromCode        # (uint32_t field_idx, const Method* referrer, Thread*, $sp)
     move   $a3, $sp                      # pass $sp
@@ -546,7 +546,7 @@
 art_get64_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a1, 48($sp)                  # pass referrer's Method*
+    lw     $a1, 64($sp)                  # pass referrer's Method*
     move   $a2, rSELF                    # pass Thread::Current
     jal    artGet64StaticFromCode        # (uint32_t field_idx, const Method* referrer, Thread*, $sp)
     move   $a3, $sp                      # pass $sp
@@ -561,7 +561,7 @@
 art_get_obj_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a1, 48($sp)                  # pass referrer's Method*
+    lw     $a1, 64($sp)                  # pass referrer's Method*
     move   $a2, rSELF                    # pass Thread::Current
     jal    artGetObjStaticFromCode       # (uint32_t field_idx, const Method* referrer, Thread*, $sp)
     move   $a3, $sp                      # pass $sp
@@ -576,13 +576,10 @@
 art_get32_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a2, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a2, 64($sp)                  # pass referrer's Method*
     move   $a3, rSELF                    # pass Thread::Current
     jal    artGet32InstanceFromCode      # (field_idx, Object*, referrer, Thread*, $sp)
-    sw     $t0, 16($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 16($sp)                  # pass $sp
     RETURN_IF_NO_EXCEPTION
 
     .global art_get64_instance_from_code
@@ -594,13 +591,10 @@
 art_get64_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a2, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a2, 64($sp)                  # pass referrer's Method*
     move   $a3, rSELF                    # pass Thread::Current
     jal    artGet64InstanceFromCode      # (field_idx, Object*, referrer, Thread*, $sp)
-    sw     $t0, 16($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 16($sp)                  # pass $sp
     RETURN_IF_NO_EXCEPTION
 
     .global art_get_obj_instance_from_code
@@ -612,13 +606,10 @@
 art_get_obj_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a2, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a2, 64($sp)                  # pass referrer's Method*
     move   $a3, rSELF                    # pass Thread::Current
     jal    artGetObjInstanceFromCode     # (field_idx, Object*, referrer, Thread*, $sp)
-    sw     $t0, 16($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 16($sp)                  # pass $sp
     RETURN_IF_NO_EXCEPTION
 
     .global art_set32_static_from_code
@@ -630,13 +621,10 @@
 art_set32_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a2, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a2, 64($sp)                  # pass referrer's Method*
     move   $a3, rSELF                    # pass Thread::Current
     jal    artSet32StaticFromCode        # (field_idx, new_val, referrer, Thread*, $sp)
-    sw     $t0, 16($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 16($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_set64_static_from_code
@@ -648,13 +636,10 @@
 art_set64_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a1, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a1, 64($sp)                  # pass referrer's Method*
     sw     rSELF, 16($sp)                # pass Thread::Current
     jal    artSet64StaticFromCode        # (field_idx, referrer, new_val, Thread*, $sp)
-    sw     $t0, 20($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 20($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_set_obj_static_from_code
@@ -666,13 +651,10 @@
 art_set_obj_static_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a2, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a2, 64($sp)                  # pass referrer's Method*
     move   $a3, rSELF                    # pass Thread::Current
     jal    artSetObjStaticFromCode       # (field_idx, new_val, referrer, Thread*, $sp)
-    sw     $t0, 16($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 16($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_set32_instance_from_code
@@ -684,13 +666,10 @@
 art_set32_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a3, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a3, 64($sp)                  # pass referrer's Method*
     sw     rSELF, 16($sp)                # pass Thread::Current
     jal    artSet32InstanceFromCode      # (field_idx, Object*, new_val, referrer, Thread*, $sp)
-    sw     $t0, 20($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 20($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_set64_instance_from_code
@@ -702,12 +681,9 @@
 art_set64_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
     sw     rSELF, 16($sp)                # pass Thread::Current
     jal    artSet64InstanceFromCode      # (field_idx, Object*, new_val, Thread*, $sp)
-    sw     $t0, 20($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 20($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_set_obj_instance_from_code
@@ -719,13 +695,10 @@
 art_set_obj_instance_from_code:
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME     # save callee saves in case of GC
-    lw     $a3, 48($sp)                  # pass referrer's Method*
-    move   $t0, $sp                      # save $sp
-    addiu  $sp, $sp, -16                 # make space for extra args
+    lw     $a3, 64($sp)                  # pass referrer's Method*
     sw     rSELF, 16($sp)                # pass Thread::Current
     jal    artSetObjInstanceFromCode     # (field_idx, Object*, new_val, referrer, Thread*, $sp)
-    sw     $t0, 20($sp)                  # pass $sp
-    addiu  $sp, $sp, 16                  # release out args
+    sw     $sp, 20($sp)                  # pass $sp
     RETURN_IF_ZERO
 
     .global art_resolve_string_from_code
@@ -785,12 +758,9 @@
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME  # save callee saves in case of GC
     move    $a3, rSELF                # pass Thread::Current
-    move    $t0, $sp                  # save $sp
-    addiu   $sp, $sp, -16             # make space for extra args
     # artAllocArrayFromCode(uint32_t type_idx, Method* method, int32_t component_count, Thread*, $sp)
     jal     artAllocArrayFromCode
-    sw      $t0, 16($sp)              # pass $sp
-    addiu   $sp, $sp, 16              # release out args
+    sw      $sp, 16($sp)              # pass $sp
     RETURN_IF_NONZERO
 
     .global art_alloc_array_from_code_with_access_check
@@ -804,12 +774,9 @@
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME  # save callee saves in case of GC
     move    $a3, rSELF                # pass Thread::Current
-    move    $t0, $sp                  # save $sp
-    addiu   $sp, $sp, -16             # make space for extra args
     # artAllocArrayFromCodeWithAccessCheck(type_idx, method, component_count, Thread*, $sp)
     jal     artAllocArrayFromCodeWithAccessCheck
-    sw      $t0, 16($sp)              # pass $sp
-    addiu   $sp, $sp, 16              # release out args
+    sw      $sp, 16($sp)              # pass $sp
     RETURN_IF_NONZERO
 
     .global art_check_and_alloc_array_from_code
@@ -822,12 +789,9 @@
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME  # save callee saves in case of GC
     move    $a3, rSELF                # pass Thread::Current
-    move    $t0, $sp                  # save $sp
-    addiu   $sp, $sp, -16             # make space for extra args
     # artCheckAndAllocArrayFromCode(uint32_t type_idx, Method* method, int32_t count, Thread* , $sp)
     jal     artCheckAndAllocArrayFromCode
-    sw      $t0, 16($sp)              # pass $sp
-    addiu   $sp, $sp, 16              # release out args
+    sw      $sp, 16($sp)              # pass $sp
     RETURN_IF_NONZERO
 
     .global art_check_and_alloc_array_from_code_with_access_check
@@ -840,12 +804,9 @@
     .cpload $25
     SETUP_REF_ONLY_CALLEE_SAVE_FRAME  # save callee saves in case of GC
     move    $a3, rSELF                # pass Thread::Current
-    move    $t0, $sp                  # save $sp
-    addiu   $sp, $sp, -16             # make space for extra args
     # artCheckAndAllocArrayFromCodeWithAccessCheck(type_idx, method, count, Thread* , $sp)
     jal     artCheckAndAllocArrayFromCodeWithAccessCheck
-    sw      $t0, 16($sp)              # pass $sp
-    addiu   $sp, $sp, 16              # release out args
+    sw      $sp, 16($sp)              # pass $sp
     RETURN_IF_NONZERO
 
     .global art_test_suspend
diff --git a/src/oat/runtime/mips/stub_mips.cc b/src/oat/runtime/mips/stub_mips.cc
index 9fd65c8..9c940a1 100644
--- a/src/oat/runtime/mips/stub_mips.cc
+++ b/src/oat/runtime/mips/stub_mips.cc
@@ -126,15 +126,17 @@
   UniquePtr<MipsAssembler> assembler(static_cast<MipsAssembler*>(Assembler::Create(kMips)));
 #if !defined(ART_USE_LLVM_COMPILER)
   // Save callee saves and ready frame for exception delivery
-  __ AddConstant(SP, SP, -48);
-  __ StoreToOffset(kStoreWord, RA, SP, 44);
-  __ StoreToOffset(kStoreWord, FP, SP, 40);
-  __ StoreToOffset(kStoreWord, S7, SP, 36);
-  __ StoreToOffset(kStoreWord, S6, SP, 32);
-  __ StoreToOffset(kStoreWord, S5, SP, 28);
-  __ StoreToOffset(kStoreWord, S4, SP, 24);
-  __ StoreToOffset(kStoreWord, S3, SP, 20);
-  __ StoreToOffset(kStoreWord, S2, SP, 16);
+  __ AddConstant(SP, SP, -64);
+  __ StoreToOffset(kStoreWord, RA, SP, 60);
+  __ StoreToOffset(kStoreWord, FP, SP, 56);
+  __ StoreToOffset(kStoreWord, S7, SP, 52);
+  __ StoreToOffset(kStoreWord, S6, SP, 48);
+  __ StoreToOffset(kStoreWord, S5, SP, 44);
+  __ StoreToOffset(kStoreWord, S4, SP, 40);
+  __ StoreToOffset(kStoreWord, S3, SP, 36);
+  __ StoreToOffset(kStoreWord, S2, SP, 32);
+  __ StoreToOffset(kStoreWord, S1, SP, 28);
+  __ StoreToOffset(kStoreWord, S0, SP, 24);
 
   // A0 is the Method* already
   __ Move(A1, S1);  // Pass Thread::Current() in A1
diff --git a/src/runtime.cc b/src/runtime.cc
index 4b7338b..3a5c41c 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -1105,7 +1105,7 @@
     uint32_t core_spills = ref_spills | (type == kRefsAndArgs ? arg_spills : 0) |
                            (type == kSaveAll ? all_spills : 0) | (1 << art::mips::RA);
     size_t frame_size = RoundUp((__builtin_popcount(core_spills) /* gprs */ +
-                                 (type == kRefsAndArgs ? 0 : 3) /* always reserve arg space */ +
+                                 (type == kRefsAndArgs ? 0 : 5) /* reserve arg space */ +
                                  1 /* Method* */) * kPointerSize, kStackAlignment);
     method->SetFrameSizeInBytes(frame_size);
     method->SetCoreSpillMask(core_spills);
diff --git a/src/thread.cc b/src/thread.cc
index 6daeadf..cea919f 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -2013,9 +2013,9 @@
 
 void Thread::VerifyStack() {
   UniquePtr<Context> context(Context::Create());
-  RootCallbackVisitor visitorToCallback(visitor, arg);
+  RootCallbackVisitor visitorToCallback(VerifyObject, Runtime::Current()->GetHeap());
   ReferenceMapVisitor<RootCallbackVisitor> mapper(GetManagedStack(), GetTraceStack(), context.get(),
-                                                  VerifyObject, Runtime::Current()->GetHeap());
+                                                  visitorToCallback);
   mapper.WalkStack();
 }
 #endif
