Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66439a2a authored by Jiakai Zhang's avatar Jiakai Zhang Committed by Automerger Merge Worker
Browse files

Merge "Fix a logic error in `getDexoptNeeded`." into tm-dev am: e8a08386

parents 493ad917 e8a08386
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -936,12 +936,15 @@ public class PackageDexOptimizer {
            String classLoaderContext, int profileAnalysisResult, boolean downgrade,
            int dexoptFlags, String oatDir) {
        final boolean shouldBePublic = (dexoptFlags & DEXOPT_PUBLIC) != 0;
        // If the artifacts should be public while the current artifacts are not, we should
        // re-compile anyway.
        if (shouldBePublic && isOdexPrivate(packageName, path, isa, oatDir)) {
            // Ensure compilation by pretending a compiler filter change on the apk/odex location
            // (the reason for the '-'. A positive value means the 'oat' location).
            return adjustDexoptNeeded(-DexFile.DEX2OAT_FOR_FILTER);
        final boolean isProfileGuidedFilter = (dexoptFlags & DEXOPT_PROFILE_GUIDED) != 0;
        boolean newProfile = profileAnalysisResult == PROFILE_ANALYSIS_OPTIMIZE;

        if (!newProfile && isProfileGuidedFilter && shouldBePublic
                && isOdexPrivate(packageName, path, isa, oatDir)) {
            // 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;
@@ -959,7 +962,6 @@ public class PackageDexOptimizer {
                    && profileAnalysisResult == PROFILE_ANALYSIS_DONT_OPTIMIZE_EMPTY_PROFILES) {
                actualCompilerFilter = "verify";
            }
            boolean newProfile = profileAnalysisResult == PROFILE_ANALYSIS_OPTIMIZE;
            dexoptNeeded = DexFile.getDexOptNeeded(path, isa, actualCompilerFilter,
                    classLoaderContext, newProfile, downgrade);
        } catch (IOException ioe) {