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_arm.h b/src/assembler_arm.h
index a20a40b..4fb061f 100644
--- a/src/assembler_arm.h
+++ b/src/assembler_arm.h
@@ -424,8 +424,9 @@
// Store bytes from the given register onto the stack
void Store(FrameOffset dest, 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);
void LoadRef(ManagedRegister dest, ManagedRegister base, MemberOffset offs);
@@ -454,20 +455,13 @@
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);
// Emit data (e.g. encoded instruction or immediate) to the
// instruction stream.