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
diff --git a/test/knownfailures.json b/test/knownfailures.json
index 84758c9..252d13a 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -100,6 +100,14 @@
"description": ["This test sometimes runs out of memory initializing the boot classpath."]
},
{
+ "tests": "164-resolution-trampoline-dex-cache",
+ "variant": "interp-ac | interpreter",
+ "description": ["This test requires AOT mixed with JIT and enables the JIT by the ",
+ "runtime option -Xusejit:true. This conflicts with -Xint passed for ",
+ "interpreter configurations (interp-ac | interpreter). The 'jit' ",
+ "configuration succeeds even though it does not test anything useful."]
+ },
+ {
"tests": ["908-gc-start-finish",
"913-heaps"],
"variant": "gcstress",