Merge changes from topic "explicit_shared_compile_reason_cherrypick"
* changes: Add an explicit reason for the compilation of shared apks Fix spelling mistake in dumpsys output
This commit is contained in:
@@ -437,7 +437,7 @@ public class PackageDexOptimizer {
|
||||
}
|
||||
|
||||
if (useInfo.isUsedByOtherApps(path)) {
|
||||
pw.println("used be other apps: " + useInfo.getLoadingPackages(path));
|
||||
pw.println("used by other apps: " + useInfo.getLoadingPackages(path));
|
||||
}
|
||||
|
||||
Map<String, PackageDexUsage.DexUseInfo> dexUseInfoMap = useInfo.getDexUseInfoMap();
|
||||
@@ -453,7 +453,7 @@ public class PackageDexOptimizer {
|
||||
// TODO(calin): get the status of the oat file (needs installd call)
|
||||
pw.println("class loader context: " + dexUseInfo.getClassLoaderContext());
|
||||
if (dexUseInfo.isUsedByOtherApps()) {
|
||||
pw.println("used be other apps: " + dexUseInfo.getLoadingPackages());
|
||||
pw.println("used by other apps: " + dexUseInfo.getLoadingPackages());
|
||||
}
|
||||
pw.decreaseIndent();
|
||||
}
|
||||
@@ -477,8 +477,9 @@ public class PackageDexOptimizer {
|
||||
}
|
||||
|
||||
if (isProfileGuidedCompilerFilter(targetCompilerFilter) && isUsedByOtherApps) {
|
||||
// If the dex files is used by other apps, we cannot use profile-guided compilation.
|
||||
return getNonProfileGuidedCompilerFilter(targetCompilerFilter);
|
||||
// If the dex files is used by other apps, apply the shared filter.
|
||||
return PackageManagerServiceCompilerMapping.getCompilerFilterForReason(
|
||||
PackageManagerService.REASON_SHARED);
|
||||
}
|
||||
|
||||
return targetCompilerFilter;
|
||||
|
||||
@@ -562,8 +562,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
public static final int REASON_BACKGROUND_DEXOPT = 3;
|
||||
public static final int REASON_AB_OTA = 4;
|
||||
public static final int REASON_INACTIVE_PACKAGE_DOWNGRADE = 5;
|
||||
public static final int REASON_SHARED = 6;
|
||||
|
||||
public static final int REASON_LAST = REASON_INACTIVE_PACKAGE_DOWNGRADE;
|
||||
public static final int REASON_LAST = REASON_SHARED;
|
||||
|
||||
/** All dangerous permission names in the same order as the events in MetricsEvent */
|
||||
private static final List<String> ALL_DANGEROUS_PERMISSIONS = Arrays.asList(
|
||||
|
||||
@@ -26,14 +26,19 @@ import dalvik.system.DexFile;
|
||||
public class PackageManagerServiceCompilerMapping {
|
||||
// Names for compilation reasons.
|
||||
static final String REASON_STRINGS[] = {
|
||||
"first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive"
|
||||
"first-boot", "boot", "install", "bg-dexopt", "ab-ota", "inactive", "shared"
|
||||
};
|
||||
|
||||
static final int REASON_SHARED_INDEX = 6;
|
||||
|
||||
// Static block to ensure the strings array is of the right length.
|
||||
static {
|
||||
if (PackageManagerService.REASON_LAST + 1 != REASON_STRINGS.length) {
|
||||
throw new IllegalStateException("REASON_STRINGS not correct");
|
||||
}
|
||||
if (!"shared".equals(REASON_STRINGS[REASON_SHARED_INDEX])) {
|
||||
throw new IllegalStateException("REASON_STRINGS not correct because of shared index");
|
||||
}
|
||||
}
|
||||
|
||||
private static String getSystemPropertyName(int reason) {
|
||||
@@ -61,11 +66,18 @@ public class PackageManagerServiceCompilerMapping {
|
||||
!DexFile.isValidCompilerFilter(sysPropValue)) {
|
||||
throw new IllegalStateException("Value \"" + sysPropValue +"\" not valid "
|
||||
+ "(reason " + REASON_STRINGS[reason] + ")");
|
||||
} else if (!isFilterAllowedForReason(reason, sysPropValue)) {
|
||||
throw new IllegalStateException("Value \"" + sysPropValue +"\" not allowed "
|
||||
+ "(reason " + REASON_STRINGS[reason] + ")");
|
||||
}
|
||||
|
||||
return sysPropValue;
|
||||
}
|
||||
|
||||
private static boolean isFilterAllowedForReason(int reason, String filter) {
|
||||
return reason != REASON_SHARED_INDEX || !DexFile.isProfileGuidedCompilerFilter(filter);
|
||||
}
|
||||
|
||||
// Check that the properties are set and valid.
|
||||
// Note: this is done in a separate method so this class can be statically initialized.
|
||||
static void checkProperties() {
|
||||
|
||||
Reference in New Issue
Block a user