Support for synchronized native methods.

This change adds support for synchronized native methods by using
calls to MonitorEnter and MonitorExit on the JNIEnv*. There is
some tidying of the assembler and a straw man JNIEnv implementation.
The JNIEnv implementation just warns when MonitorEnter/Exit are called
and doesn't adhere to the correct JNIEnv layout.

Change-Id: I90ed6ec8f85f5b01b929f16e0dbdecadd0b01359
diff --git a/src/assembler_x86.h b/src/assembler_x86.h
index 981141a..85cc50b 100644
--- a/src/assembler_x86.h
+++ b/src/assembler_x86.h
@@ -419,6 +419,7 @@
   // Store bytes from the given register onto the stack
   void Store(FrameOffset offs, ManagedRegister src, size_t size);
   void StoreRef(FrameOffset dest, ManagedRegister src);
+  void StoreRawPtr(FrameOffset dest, ManagedRegister src);
 
   void CopyRef(FrameOffset dest, FrameOffset src, ManagedRegister scratch);
 
@@ -455,19 +456,12 @@
   void CreateStackHandle(FrameOffset out_off, FrameOffset handle_offset,
                          ManagedRegister scratch, bool null_allowed);
 
-  void LoadReferenceFromStackHandle(ManagedRegister dst, ManagedRegister src,
-                                    FrameOffset shb_offset);
+  void LoadReferenceFromStackHandle(ManagedRegister dst, ManagedRegister src);
 
   void ValidateRef(ManagedRegister src, bool could_be_null);
   void ValidateRef(FrameOffset src, bool could_be_null);
 
-  void Call(ManagedRegister base, MemberOffset offset, ManagedRegister scratch);
-
-  // Emit code that will lock the reference in the given frame location
-  void LockReferenceOnStack(FrameOffset fr_offs);
-
-  // Emit code that will unlock the reference in the given frame location
-  void UnLockReferenceOnStack(FrameOffset fr_offs);
+  void Call(ManagedRegister base, Offset offset, ManagedRegister scratch);
 
   void AddImmediate(Register reg, const Immediate& imm);