diff options
author | Vladimir Marko <vmarko@google.com> | 2014-12-19 19:27:26 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2014-12-19 21:29:04 +0000 |
commit | bfe400bb1a28cde991cdb3e39bc27bae6b04b8c2 (patch) | |
tree | bad7d998663fb37ef400cbf1fc5fe4cb89b32d9a /compiler/dex/quick/gen_invoke.cc | |
parent | fa28ef0191e5f65bdf5932675f49d897bdc480b2 (diff) | |
download | android_art-bfe400bb1a28cde991cdb3e39bc27bae6b04b8c2.tar.gz android_art-bfe400bb1a28cde991cdb3e39bc27bae6b04b8c2.tar.bz2 android_art-bfe400bb1a28cde991cdb3e39bc27bae6b04b8c2.zip |
Fix running out of temps when storing invoke-interface result.
On ARM, after emitting invoke-interface we didn't have any
free temps to use for storing the result, so we would crash
if the result was an unpromoted dalvik register with stack
location too far from SP.
Bug: 18769895
(cherry picked from commit d6bd06c713e8ec69de96510ef57bdf7adb4781ed)
Change-Id: Id88f6f3788eaf6ecbc7bd68880b445423f6e4f94
Diffstat (limited to 'compiler/dex/quick/gen_invoke.cc')
-rwxr-xr-x | compiler/dex/quick/gen_invoke.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/dex/quick/gen_invoke.cc b/compiler/dex/quick/gen_invoke.cc index 9462d3d08f..eb206a68c6 100755 --- a/compiler/dex/quick/gen_invoke.cc +++ b/compiler/dex/quick/gen_invoke.cc @@ -1557,7 +1557,7 @@ void Mir2Lir::GenInvokeNoInline(CallInfo* info) { LIR* call_insn = GenCallInsn(method_info); MarkSafepointPC(call_insn); - ClobberCallerSave(); + FreeCallTemps(); if (info->result.location != kLocInvalid) { // We have a following MOVE_RESULT - do it now. if (info->result.wide) { |