summaryrefslogtreecommitdiff
path: root/compiler/utils/assembler_thumb_test.cc
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/assembler_thumb_test.cc
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/assembler_thumb_test.cc')
-rw-r--r--compiler/utils/assembler_thumb_test.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/utils/assembler_thumb_test.cc b/compiler/utils/assembler_thumb_test.cc
index 96f4a6cf27..83b7eebe55 100644
--- a/compiler/utils/assembler_thumb_test.cc
+++ b/compiler/utils/assembler_thumb_test.cc
@@ -177,7 +177,8 @@ TEST_F(ArmVIXLAssemblerTest, VixlJniHelpers) {
__ CreateJObject(method_register, FrameOffset(1025), scratch_register, true);
__ CreateJObject(scratch_register, FrameOffset(1025), scratch_register, true);
- __ ExceptionPoll(0);
+ std::unique_ptr<JNIMacroLabel> exception_slow_path = __ CreateLabel();
+ __ ExceptionPoll(exception_slow_path.get());
// Push the target out of range of branch emitted by ExceptionPoll.
for (int i = 0; i < 64; i++) {
@@ -188,6 +189,9 @@ TEST_F(ArmVIXLAssemblerTest, VixlJniHelpers) {
__ DecreaseFrameSize(32);
__ RemoveFrame(frame_size, callee_save_regs, /* may_suspend= */ true);
+ __ Bind(exception_slow_path.get());
+ __ DeliverPendingException();
+
EmitAndCheck("VixlJniHelpers", VixlJniHelpersResults);
}