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/indirect_reference_table.cc b/src/indirect_reference_table.cc
index b30ce53..ec52cc6 100644
--- a/src/indirect_reference_table.cc
+++ b/src/indirect_reference_table.cc
@@ -16,6 +16,7 @@
 
 #include "indirect_reference_table.h"
 #include "reference_table.h"
+#include "utils.h"
 
 #include <cstdlib>
 
@@ -82,7 +83,8 @@
   size_t topIndex = segmentState.parts.topIndex;
 
   DCHECK(obj != NULL);
-  //DCHECK(dvmIsHeapAddress(obj));
+  // TODO: stronger sanity check on the object (such as in heap)
+  DCHECK(IsAligned(reinterpret_cast<intptr_t>(obj), 8));
   DCHECK(table_ != NULL);
   DCHECK_LE(alloc_entries_, max_entries_);
   DCHECK_GE(segmentState.parts.numHoles, prevState.parts.numHoles);