x86 JNI compiler and unit tests.

Change-Id: I4c2e10328961a2e8e27c90777fe2a93737b21143
diff --git a/src/utils.h b/src/utils.h
index cbf0cff..217bd69 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -12,14 +12,12 @@
   return (x & (x - 1)) == 0;
 }
 
-
 template<typename T>
 static inline bool IsAligned(T x, int n) {
   CHECK(IsPowerOfTwo(n));
   return (x & (n - 1)) == 0;
 }
 
-
 template<typename T>
 static inline bool IsAligned(T* x, int n) {
   return IsAligned(reinterpret_cast<uintptr_t>(x), n);
@@ -33,7 +31,6 @@
   return (-limit <= value) && (value < limit);
 }
 
-
 static inline bool IsUint(int N, word value) {
   CHECK_LT(0, N);
   CHECK_LT(N, kBitsPerWord);
@@ -41,7 +38,6 @@
   return (0 <= value) && (value < limit);
 }
 
-
 static inline bool IsAbsoluteUint(int N, word value) {
   CHECK_LT(0, N);
   CHECK_LT(N, kBitsPerWord);
@@ -49,12 +45,18 @@
   return IsUint(N, value);
 }
 
+static inline int32_t Low16Bits(int32_t value) {
+  return static_cast<int32_t>(value & 0xffff);
+}
+
+static inline int32_t High16Bits(int32_t value) {
+  return static_cast<int32_t>(value >> 16);
+}
 
 static inline int32_t Low32Bits(int64_t value) {
   return static_cast<int32_t>(value);
 }
 
-
 static inline int32_t High32Bits(int64_t value) {
   return static_cast<int32_t>(value >> 32);
 }