diff options
author | 2017-10-06 09:38:00 +0000 | |
---|---|---|
committer | 2017-10-06 09:38:00 +0000 | |
commit | aa7273e56fbafc2692c8d20a31b50d2f4bdd2aa1 (patch) | |
tree | 31af8697c08958ad9cde4cf4619f075e9d593a45 /compiler/jni/quick/jni_compiler.cc | |
parent | 8c5e25b1a00a3b286bc00a9a7da10bb58c7bfe09 (diff) | |
parent | 0d127e10de0b06ec22d8e855d1d62773c4ede101 (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.cc | 5 |
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 |