Fix offset math for upcalls on x86

Change-Id: I2744ac11dfbd7001390fff8711c1ce80164f69f2
diff --git a/src/jni_internal_x86.cc b/src/jni_internal_x86.cc
index 361cd70..f9871c4 100644
--- a/src/jni_internal_x86.cc
+++ b/src/jni_internal_x86.cc
@@ -72,17 +72,17 @@
       case 'J':
         // Move both pointers 64 bits.
         dst_offset -= kPointerSize;
+        src_offset -= sizeof(JValue) / 2;
         __ pushl(Address(rArgArray, src_offset));
-        src_offset -= sizeof(JValue);
         dst_offset -= kPointerSize;
+        src_offset -= sizeof(JValue) / 2;
         __ pushl(Address(rArgArray, src_offset));
-        src_offset -= sizeof(JValue);
         break;
       default:
         // Move the source pointer sizeof(JValue) and the destination pointer 32 bits.
         dst_offset -= kPointerSize;
-        __ pushl(Address(rArgArray, src_offset));
         src_offset -= sizeof(JValue);
+        __ pushl(Address(rArgArray, src_offset));
         break;
     }
   }