[framework] Compile secondary dex files in isolation
The class loader context adds the overhead of extracting in-memory and possibly extra verification which is being frowned upon when the loading happens on the UI thread. Revert the correct fix of compiling secondary dex files with their loading context until b/64530081 is done. Partial revert of commitf1ff36f0f9. (cherry picked from commit27f9262124) Test: adb shell cmd package compile -m quicken -f --secondary-dex com.google.android.gms Bug: 64530081 Bug: 66984396 Merged-In: Ib2815ce67b224883fe95c28d1424103e56342c6e Change-Id: Ib2815ce67b224883fe95c28d1424103e56342c6e
This commit is contained in:
committed by
Andreas Gampe
parent
e131dac848
commit
8a5a708df1
@@ -366,18 +366,13 @@ public class PackageDexOptimizer {
|
||||
+ " dexoptFlags=" + printDexoptFlags(dexoptFlags)
|
||||
+ " target-filter=" + compilerFilter);
|
||||
|
||||
String classLoaderContext;
|
||||
if (dexUseInfo.isUnknownClassLoaderContext() ||
|
||||
dexUseInfo.isUnsupportedClassLoaderContext() ||
|
||||
dexUseInfo.isVariableClassLoaderContext()) {
|
||||
// If we have an unknown (not yet set), unsupported (custom class loaders), or a
|
||||
// variable class loader chain, compile without a context and mark the oat file with
|
||||
// SKIP_SHARED_LIBRARY_CHECK. Note that his might lead to a incorrect compilation.
|
||||
// TODO(calin): We should just extract in this case.
|
||||
classLoaderContext = SKIP_SHARED_LIBRARY_CHECK;
|
||||
} else {
|
||||
classLoaderContext = dexUseInfo.getClassLoaderContext();
|
||||
}
|
||||
// TODO(calin): b/64530081 b/66984396. Use SKIP_SHARED_LIBRARY_CHECK for the context
|
||||
// (instead of dexUseInfo.getClassLoaderContext()) in order to compile secondary dex files
|
||||
// in isolation (and avoid to extract/verify the main apk if it's in the class path).
|
||||
// Note this trades correctness for performance since the resulting slow down is
|
||||
// unacceptable in some cases until b/64530081 is fixed.
|
||||
String classLoaderContext = SKIP_SHARED_LIBRARY_CHECK;
|
||||
|
||||
try {
|
||||
for (String isa : dexUseInfo.getLoaderIsas()) {
|
||||
// Reuse the same dexopt path as for the primary apks. We don't need all the
|
||||
|
||||
Reference in New Issue
Block a user