Move JNI compiler tests to use pure JNI.

Implement JNI upcalls for x86.
Fix off by 1 bug in JNI calling convention for x86.
Fix bugs in ARM JNI upcalls.
Straw man JNI invoke nonvirtual implementations.
Match va_start with va_end in JNI internals.

Change-Id: I64d62eca41ac726ae0d007c1f41d2193db5be82e
diff --git a/src/calling_convention_arm.cc b/src/calling_convention_arm.cc
index 0300ad1..743445d 100644
--- a/src/calling_convention_arm.cc
+++ b/src/calling_convention_arm.cc
@@ -31,10 +31,7 @@
 // Managed runtime calling convention
 
 bool ManagedRuntimeCallingConvention::IsCurrentParamInRegister() {
-  if (itr_slots_ < 3) {
-    return true;
-  }
-  return false;  // everything else on the stack
+  return itr_slots_ < 3;
 }
 
 bool ManagedRuntimeCallingConvention::IsCurrentParamOnStack() {
@@ -67,8 +64,7 @@
 
 FrameOffset ManagedRuntimeCallingConvention::CurrentParamStackOffset() {
   CHECK_GE(itr_slots_, 3u);
-  return FrameOffset(displacement_.Int32Value() +
-             ((itr_slots_ - 3) * kPointerSize));
+  return FrameOffset(displacement_.Int32Value() + (itr_slots_ * kPointerSize));
 }
 
 // JNI calling convention