summaryrefslogtreecommitdiff
path: root/test/ProfileTestMultiDex
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2017-07-25 15:27:15 +0100
committerMathieu Chartier <mathieuc@google.com>2017-07-31 10:37:00 -0700
commit14052ade083c9f40852ebb27534e832aa58b3ddc (patch)
tree608eaae5e37538be931b6e8e9e280a0d9f813ccf /test/ProfileTestMultiDex
parentbf8561d5395cd3f157747c02f2d9eafbee286b2e (diff)
Fix race in artInvokeInterfaceTrampoline().
When artInvokeInterfaceTrampoline() didn't get a resolved interface method, it was calling FindMethodFromCode<>() where the interface method was resolved and then a virtual method for it was looked up. It then tried to retrieve the interface method from the DexCache where it would usualy be found as it was just stored there by the method resolution. However, another thread could have just evicted that entry. Instead of adding another call to LookupResolvedMethod(), use the fact that artInvokeInterfaceTrampoline() already explicitly inlines all the FindMethodFromCode<>() except for the interface method resolution, so we can simply do the resolution and then take the existing path for the rest of the work. Test: m test-art-host-gtest Test: testrunner.py --host Bug: 30627598 (cherry picked from commit 302f69cf7172d057c3ad9a8d4125a38e9dab8a71) Change-Id: Ibdf254ae26cc3191d41a5021ae832288bf847ef4
Diffstat (limited to 'test/ProfileTestMultiDex')
0 files changed, 0 insertions, 0 deletions