diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-04-03 15:25:30 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-04-03 16:34:46 -0700 |
commit | 5f3ded46a1da26f6a51cad16d421ca2fdc0f23ad (patch) | |
tree | e5d44213563093b8435dc1fc025b5114a93ab189 /disassembler/disassembler_arm.cc | |
parent | 0537c5ea92a4fb60a04024cc2b7247f08a3d9096 (diff) |
Restore the args in the invoke trampoline slow paths.
Previously, there were errors caused by not restoring the args for
the slow path in artInvokeInterfaceTrampoline and artInvokeCommon. The
slow path in artInvokeInterfaceTrampoline occurs when you attempt
to do an interface dispatch of a method in another dex file. The slow
path in artInvokeCommon occurs when the method in dex cache is not
already resolved.
Since FindMethodFromCode may resolve a method, it can occasionally
cause thread suspension/GC. If a moving GC occurred at this point it
resulted in this_object being invalid after the trampoline returned
the code pointer. This caused a native crash in one of the money runs
since there was an unbundeled app which did a List.iterator call.
Bug: 12934910
Change-Id: Ib454faad14bef0d7732a6d7f1ca5803472d502a6
Diffstat (limited to 'disassembler/disassembler_arm.cc')
0 files changed, 0 insertions, 0 deletions