Merge "Fix a logic error in getDexoptNeeded." into tm-dev

This commit is contained in:
Jiakai Zhang
2022-06-23 14:24:00 +00:00
committed by Android (Google) Code Review

View File

@@ -936,12 +936,15 @@ public class PackageDexOptimizer {
String classLoaderContext, int profileAnalysisResult, boolean downgrade, String classLoaderContext, int profileAnalysisResult, boolean downgrade,
int dexoptFlags, String oatDir) { int dexoptFlags, String oatDir) {
final boolean shouldBePublic = (dexoptFlags & DEXOPT_PUBLIC) != 0; final boolean shouldBePublic = (dexoptFlags & DEXOPT_PUBLIC) != 0;
// If the artifacts should be public while the current artifacts are not, we should final boolean isProfileGuidedFilter = (dexoptFlags & DEXOPT_PROFILE_GUIDED) != 0;
// re-compile anyway. boolean newProfile = profileAnalysisResult == PROFILE_ANALYSIS_OPTIMIZE;
if (shouldBePublic && isOdexPrivate(packageName, path, isa, oatDir)) {
// Ensure compilation by pretending a compiler filter change on the apk/odex location if (!newProfile && isProfileGuidedFilter && shouldBePublic
// (the reason for the '-'. A positive value means the 'oat' location). && isOdexPrivate(packageName, path, isa, oatDir)) {
return adjustDexoptNeeded(-DexFile.DEX2OAT_FOR_FILTER); // The profile that will be used is a cloud profile, while the profile used previously
// is a user profile. Typically, this happens after an app starts being used by other
// apps.
newProfile = true;
} }
int dexoptNeeded; int dexoptNeeded;
@@ -959,7 +962,6 @@ public class PackageDexOptimizer {
&& profileAnalysisResult == PROFILE_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES) { && profileAnalysisResult == PROFILE_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES) {
actualCompilerFilter = "verify"; actualCompilerFilter = "verify";
} }
boolean newProfile = profileAnalysisResult == PROFILE_ANALYSIS_OPTIMIZE;
dexoptNeeded = DexFile.getDexOptNeeded(path, isa, actualCompilerFilter, dexoptNeeded = DexFile.getDexOptNeeded(path, isa, actualCompilerFilter,
classLoaderContext, newProfile, downgrade); classLoaderContext, newProfile, downgrade);
} catch (IOException ioe) { } catch (IOException ioe) {