From 8412cf4daaa437003f4a79a82aa35465c4f0d418 Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Mon, 9 May 2016 17:56:18 +0100 Subject: [PATCH] Revert "Enable profile merging for post-OTA package verification" This reverts commit 5da9dad2dd04586dbd665e6a73bfee1d0ed92a89. Bug: 28612421 Change-Id: Idbbb24241362a70b697ae2d648ea47996f5239c6 --- .../com/android/server/pm/BackgroundDexOptService.java | 9 ++++++++- .../com/android/server/pm/PackageManagerService.java | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index 0a254029a8f4b..ee02a9954a5ad 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -144,11 +144,18 @@ public class BackgroundDexOptService extends JobService { if (DEBUG_DEXOPT) { Log.i(TAG, "Updating package " + pkg); } + // Update package if needed. Note that there can be no race between concurrent // jobs because PackageDexOptimizer.performDexOpt is synchronized. + + // checkProfiles is false to avoid merging profiles during boot which + // might interfere with background compilation (b/28612421). + // Unfortunately this will also means that "pm.dexopt.boot=speed-profile" will + // behave differently than "pm.dexopt.bg-dexopt=speed-profile" but that's a + // trade-off worth doing to save boot time work. pm.performDexOpt(pkg, /* instruction set */ null, - /* checkProfiles */ true, + /* checkProfiles */ false, PackageManagerService.REASON_BOOT, /* force */ false); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 4adfc3fb7d45f..87e3d40f324f2 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7196,9 +7196,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } + // checkProfiles is false to avoid merging profiles during boot which + // might interfere with background compilation (b/28612421). + // Unfortunately this will also means that "pm.dexopt.boot=speed-profile" will + // behave differently than "pm.dexopt.bg-dexopt=speed-profile" but that's a + // trade-off worth doing to save boot time work. int dexOptStatus = performDexOptTraced(pkg.packageName, null /* instructionSet */, - true /* checkProfiles */, + false /* checkProfiles */, getCompilerFilterForReason(causeFirstBoot ? REASON_FIRST_BOOT : REASON_BOOT), false /* force */); switch (dexOptStatus) {