summaryrefslogtreecommitdiff
path: root/runtime/entrypoints/quick/quick_entrypoints.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2021-11-23 11:57:23 +0000
committer Vladimir Marko <vmarko@google.com> 2021-11-23 12:00:45 +0000
commit02e0eb7eef35b03ae9eed60f02c889a6be400de9 (patch)
treeab577696a461f10f1b9c810bbfe87fdba1c1059f /runtime/entrypoints/quick/quick_entrypoints.h
parentbd2394b704c8cf17eba9833272657495f9c146f6 (diff)
Revert "JNI: Rewrite locking for synchronized methods."
This reverts commit c17656bcf477e57d59ff051037c96994fd0ac8f2. Reason for revert: Broke tests. At least the arm64 macro UNLOCK_OBJECT_FAST_PATH uses an incorrect label for one branch to slow path. Bug: 172332525 Bug: 207408813 Change-Id: I6764dcfcba3b3d780fc13a66d6e676a3e3946a0f
Diffstat (limited to 'runtime/entrypoints/quick/quick_entrypoints.h')
-rw-r--r--runtime/entrypoints/quick/quick_entrypoints.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/runtime/entrypoints/quick/quick_entrypoints.h b/runtime/entrypoints/quick/quick_entrypoints.h
index cf5c697b76..377a63ee41 100644
--- a/runtime/entrypoints/quick/quick_entrypoints.h
+++ b/runtime/entrypoints/quick/quick_entrypoints.h
@@ -55,19 +55,35 @@ struct PACKED(4) QuickEntryPoints {
// JNI entrypoints.
// TODO: NO_THREAD_SAFETY_ANALYSIS due to different control paths depending on fast JNI.
extern void JniMethodStart(Thread* self) NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern void JniMethodStartSynchronized(jobject to_lock, Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern void JniMethodEnd(Thread* self)
NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern void JniMethodEndSynchronized(jobject locked, Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern mirror::Object* JniMethodEndWithReference(jobject result, Thread* self)
NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern mirror::Object* JniMethodEndWithReferenceSynchronized(jobject result,
+ jobject locked,
+ Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern mirror::Object* JniDecodeReferenceResult(jobject result, Thread* self)
NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
// JNI entrypoints when monitoring entry/exit.
extern void JniMonitoredMethodStart(Thread* self) NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern void JniMonitoredMethodStartSynchronized(jobject to_lock, Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern void JniMonitoredMethodEnd(Thread* self)
NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern void JniMonitoredMethodEndSynchronized(jobject locked, Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern mirror::Object* JniMonitoredMethodEndWithReference(jobject result, Thread* self)
NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
+extern mirror::Object* JniMonitoredMethodEndWithReferenceSynchronized(jobject result,
+ jobject locked,
+ Thread* self)
+ NO_THREAD_SAFETY_ANALYSIS HOT_ATTR;
extern "C" mirror::String* artStringBuilderAppend(uint32_t format,
@@ -77,8 +93,6 @@ extern "C" mirror::String* artStringBuilderAppend(uint32_t format,
extern "C" void artReadBarrierJni(ArtMethod* method)
REQUIRES_SHARED(Locks::mutator_lock_) HOT_ATTR;
-extern "C" void artUnlockObjectFromJni(mirror::Object* locked, Thread* self)
- REQUIRES_SHARED(Locks::mutator_lock_) HOT_ATTR;
// Read barrier entrypoints.
//