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
|