summaryrefslogtreecommitdiff
path: root/compiler/jni/quick/jni_compiler.cc
diff options
context:
space:
mode:
author Roland Levillain <rpl@google.com> 2017-10-06 09:38:00 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-10-06 09:38:00 +0000
commitaa7273e56fbafc2692c8d20a31b50d2f4bdd2aa1 (patch)
tree31af8697c08958ad9cde4cf4619f075e9d593a45 /compiler/jni/quick/jni_compiler.cc
parent8c5e25b1a00a3b286bc00a9a7da10bb58c7bfe09 (diff)
parent0d127e10de0b06ec22d8e855d1d62773c4ede101 (diff)
Merge "Do not refresh the Marking Register in CriticalNative methods."
Diffstat (limited to 'compiler/jni/quick/jni_compiler.cc')
-rw-r--r--compiler/jni/quick/jni_compiler.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/jni/quick/jni_compiler.cc b/compiler/jni/quick/jni_compiler.cc
index c66a2a62eb..e7a5935980 100644
--- a/compiler/jni/quick/jni_compiler.cc
+++ b/compiler/jni/quick/jni_compiler.cc
@@ -646,7 +646,10 @@ static CompiledMethod* ArtJniCompileMethodInternal(CompilerDriver* driver,
// 16. Remove activation - need to restore callee save registers since the GC may have changed
// them.
DCHECK_EQ(jni_asm->cfi().GetCurrentCFAOffset(), static_cast<int>(frame_size));
- __ RemoveFrame(frame_size, callee_save_regs);
+ // We expect the compiled method to possibly be suspended during its
+ // execution, except in the case of a CriticalNative method.
+ bool may_suspend = !is_critical_native;
+ __ RemoveFrame(frame_size, callee_save_regs, may_suspend);
DCHECK_EQ(jni_asm->cfi().GetCurrentCFAOffset(), static_cast<int>(frame_size));
// 17. Finalize code generation