diff options
author | Roland Levillain <rpl@google.com> | 2016-07-21 12:11:15 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-07-21 12:11:15 +0000 |
commit | 057361ca33625ed14b33ffd8e641e27916fb2fea (patch) | |
tree | cf13a0b5c0e5504fdcf320ab9a9936d0d489bdf5 /compiler/optimizing/code_generator_arm.cc | |
parent | 65ad9b3516c4f4bc4e7abf5c6e065a675cf024d8 (diff) | |
parent | 4359e61927866c254bc2d701e3ea4c48de10b79c (diff) |
Merge "Move caller-saves saving/restoring to ReadBarrierMarkRegX."
Diffstat (limited to 'compiler/optimizing/code_generator_arm.cc')
-rw-r--r-- | compiler/optimizing/code_generator_arm.cc | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc index 14c7b7f7e9..236ed20fc0 100644 --- a/compiler/optimizing/code_generator_arm.cc +++ b/compiler/optimizing/code_generator_arm.cc @@ -437,11 +437,9 @@ class ReadBarrierMarkSlowPathARM : public SlowPathCode { << instruction_->DebugName(); __ Bind(GetEntryLabel()); - // Save live registers before the runtime call, and in particular - // R0 (if it is live), as it is clobbered by functions - // art_quick_read_barrier_mark_regX. - SaveLiveRegisters(codegen, locations); - + // No need to save live registers; it's taken care of by the + // entrypoint. Also, there is no need to update the stack mask, + // as this runtime call will not trigger a garbage collection. InvokeRuntimeCallingConvention calling_convention; CodeGeneratorARM* arm_codegen = down_cast<CodeGeneratorARM*>(codegen); DCHECK_NE(reg, SP); @@ -469,8 +467,6 @@ class ReadBarrierMarkSlowPathARM : public SlowPathCode { instruction_, instruction_->GetDexPc(), this); - - RestoreLiveRegisters(codegen, locations); __ b(GetExitLabel()); } |