History log of /art/test/164-resolution-trampoline-dex-cache/src-ex/MostDerived.java
Revision Date Author Comments
753d11df93b3b1e83daecd6d7be9bdba124b3cb8 15-Sep-2017 Vladimir Marko <vmarko@google.com> Do not fill DexCache methods in resolution trampoline.

Storing the methods in DexCache was done for performance
reasons back when compiled code used the DexCache for method
calls. HInvokeStaticOrDirect does not use the DexCache since
replacing the kDexCachePcRelative with kBssEntry in
https://android-review.googlesource.com/399312 ,
so we do not need to populate the DexCache for performance
reasons.

The storing of the ArtMethod* for invoke-super was also
erroneous as it may have stored a method in a slot that
references a class not present in the associated ClassTable.
This led to crashes when subsequently trying to resolve the
method and check for ICCE from JIT.

Therefore we remove the code that stores the method, both
for the crashing invoke-super case and the obsolete
invoke-static case (introduced due to bug 19175856).

Test: 164-resolution-trampoline-dex-cache
Test: m test-art-host-gtest
Test: testrunner.py --host
Bug: 64759619
Merged-In: Ieee68d3c6a731e61bc8115085c1e027af199fc59

(cherry picked from commit aa0912c4e91759441ce717f4f2089078e0e2a3d1)

Change-Id: I6b7cd86b7930f566895d1aa9557eaa8585e419e1
aa0912c4e91759441ce717f4f2089078e0e2a3d1 15-Sep-2017 Vladimir Marko <vmarko@google.com> Do not fill DexCache methods in resolution trampoline.

Storing the methods in DexCache was done for performance
reasons back when compiled code used the DexCache for method
calls. HInvokeStaticOrDirect does not use the DexCache since
replacing the kDexCachePcRelative with kBssEntry in
https://android-review.googlesource.com/399312 ,
so we do not need to populate the DexCache for performance
reasons.

The storing of the ArtMethod* for invoke-super was also
erroneous as it may have stored a method in a slot that
references a class not present in the associated ClassTable.
This led to crashes when subsequently trying to resolve the
method and check for ICCE from JIT.

Therefore we remove the code that stores the method, both
for the crashing invoke-super case and the obsolete
invoke-static case (introduced due to bug 19175856).

Test: 164-resolution-trampoline-dex-cache
Test: m test-art-host-gtest
Test: testrunner.py --host
Bug: 64759619
Change-Id: Ieee68d3c6a731e61bc8115085c1e027af199fc59