Weaken JNI asserts on return spill location when return is void

Change-Id: I9aa9457824f1ecd1299966bb361512d233981c4e
diff --git a/src/jni_compiler.cc b/src/jni_compiler.cc
index 3524974..fec11da 100644
--- a/src/jni_compiler.cc
+++ b/src/jni_compiler.cc
@@ -221,9 +221,12 @@
     jni_conv.Next();  // Skip JNIEnv*
     // Save return value
     FrameOffset return_save_location = jni_conv.ReturnValueSaveLocation();
-    CHECK_LT(return_save_location.Uint32Value(), frame_size+out_arg_size);
-    jni_asm->Store(return_save_location, jni_conv.ReturnRegister(),
-                   jni_conv.SizeOfReturnValue());
+    if (jni_conv.SizeOfReturnValue() != 0) {
+      FrameOffset return_save_location = jni_conv.ReturnValueSaveLocation();
+      CHECK_LT(return_save_location.Uint32Value(), frame_size+out_arg_size);
+      jni_asm->Store(return_save_location, jni_conv.ReturnRegister(),
+                     jni_conv.SizeOfReturnValue());
+    }
     // Get SIRT entry for 1st argument
     if (is_static) {
       FrameOffset sirt_offset = jni_conv.CurrentParamSirtEntryOffset();
@@ -251,8 +254,10 @@
     jni_asm->Call(jni_env_register, monitor_exit,
                   jni_conv.InterproceduralScratchRegister());
     // Reload return value
-    jni_asm->Load(jni_conv.ReturnRegister(), return_save_location,
-                  jni_conv.SizeOfReturnValue());
+    if (jni_conv.SizeOfReturnValue() != 0) {
+      jni_asm->Load(jni_conv.ReturnRegister(), return_save_location,
+                    jni_conv.SizeOfReturnValue());
+    }
   }
 
   // 12. Release outgoing argument area
@@ -266,7 +271,8 @@
                  .Equals(jni_conv.ReturnRegister()));  // don't clobber result
   // Location to preserve result on slow path, ensuring its within the frame
   FrameOffset return_save_location = jni_conv.ReturnValueSaveLocation();
-  CHECK_LT(return_save_location.Uint32Value(), frame_size);
+  CHECK(return_save_location.Uint32Value() < frame_size ||
+        jni_conv.SizeOfReturnValue() == 0);
   jni_asm->SuspendPoll(jni_conv.InterproceduralScratchRegister(),
                        jni_conv.ReturnRegister(), return_save_location,
                        jni_conv.SizeOfReturnValue());