summaryrefslogtreecommitdiff
path: root/compiler/utils/jni_macro_assembler.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2021-10-15 09:33:09 +0100
committer Vladimir Marko <vmarko@google.com> 2021-10-18 09:20:11 +0000
commitc8c2bb6784d70cdc6e3a75a24fc9d09970a574e4 (patch)
treed9ee85a117d1a4459a52340dc460f001916e099b /compiler/utils/jni_macro_assembler.h
parentbf19869f9a3e49eed27c30cd86344d72fc0366cd (diff)
JNI compiler: Rewrite exception polling.
Make the slow path explicit in the JNI compiler. Fix the CFI data for the exceptional path of synchronized methods. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: run-gtests.sh Test: testrunner.py --target --optimizing Bug: 172332525 Change-Id: If64965eef15c063e36b78dd8bb6cba5af34ab4fa
Diffstat (limited to 'compiler/utils/jni_macro_assembler.h')
-rw-r--r--compiler/utils/jni_macro_assembler.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/utils/jni_macro_assembler.h b/compiler/utils/jni_macro_assembler.h
index a9d9f546e9..5da70c17f1 100644
--- a/compiler/utils/jni_macro_assembler.h
+++ b/compiler/utils/jni_macro_assembler.h
@@ -243,8 +243,10 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
virtual void CallFromThread(ThreadOffset<kPointerSize> offset) = 0;
// Generate code to check if Thread::Current()->exception_ is non-null
- // and branch to a ExceptionSlowPath if it is.
- virtual void ExceptionPoll(size_t stack_adjust) = 0;
+ // and branch to the `label` if it is.
+ virtual void ExceptionPoll(JNIMacroLabel* label) = 0;
+ // Deliver pending exception.
+ virtual void DeliverPendingException() = 0;
// Create a new label that can be used with Jump/Bind calls.
virtual std::unique_ptr<JNIMacroLabel> CreateLabel() = 0;