diff options
| author | 2023-01-19 03:55:19 +0000 | |
|---|---|---|
| committer | 2023-01-19 03:55:19 +0000 | |
| commit | f00a89eea7b73d7f5438ded49f6b0728dd5de732 (patch) | |
| tree | 5106578ce2b06aef6001b79570808c67b9ca293a | |
| parent | e2b82c89a3714223800f17ac3447362cdd6107ed (diff) | |
| parent | a2849296ef2159b3428ca35110e6ec616573ae6b (diff) | |
Merge "Call into ART Service for dexopt dumpsys when it is enabled."
| -rw-r--r-- | services/core/java/com/android/server/pm/ComputerEngine.java | 51 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/DexOptHelper.java | 21 |
2 files changed, 49 insertions, 23 deletions
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index c2f0f5262305..094b18212580 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -2998,35 +2998,40 @@ public class ComputerEngine implements Computer { } ipw.println("Dexopt state:"); ipw.increaseIndent(); - Collection<? extends PackageStateInternal> pkgSettings; - if (setting != null) { - pkgSettings = Collections.singletonList(setting); + if (DexOptHelper.useArtService()) { + DexOptHelper.dumpDexoptState(ipw, packageName); } else { - pkgSettings = mSettings.getPackages().values(); - } - - for (PackageStateInternal pkgSetting : pkgSettings) { - final AndroidPackage pkg = pkgSetting.getPkg(); - if (pkg == null || pkg.isApex()) { - // Skip APEX which is not dex-optimized - continue; + Collection<? extends PackageStateInternal> pkgSettings; + if (setting != null) { + pkgSettings = Collections.singletonList(setting); + } else { + pkgSettings = mSettings.getPackages().values(); } - final String pkgName = pkg.getPackageName(); - ipw.println("[" + pkgName + "]"); - ipw.increaseIndent(); - // TODO(b/251903639): Call into ART Service. - try { - mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting, - mDexManager.getPackageUseInfoOrDefault(pkgName)); - } catch (LegacyDexoptDisabledException e) { - throw new RuntimeException(e); + for (PackageStateInternal pkgSetting : pkgSettings) { + final AndroidPackage pkg = pkgSetting.getPkg(); + if (pkg == null || pkg.isApex()) { + // Skip APEX which is not dex-optimized + continue; + } + final String pkgName = pkg.getPackageName(); + ipw.println("[" + pkgName + "]"); + ipw.increaseIndent(); + + // TODO(b/251903639): Call into ART Service. + try { + mPackageDexOptimizer.dumpDexoptState(ipw, pkg, pkgSetting, + mDexManager.getPackageUseInfoOrDefault(pkgName)); + } catch (LegacyDexoptDisabledException e) { + throw new RuntimeException(e); + } + ipw.decreaseIndent(); } + ipw.println("BgDexopt state:"); + ipw.increaseIndent(); + mBackgroundDexOptService.dump(ipw); ipw.decreaseIndent(); } - ipw.println("BgDexopt state:"); - ipw.increaseIndent(); - mBackgroundDexOptService.dump(ipw); ipw.decreaseIndent(); break; } diff --git a/services/core/java/com/android/server/pm/DexOptHelper.java b/services/core/java/com/android/server/pm/DexOptHelper.java index 4db180d9bb7b..382ae26e59ec 100644 --- a/services/core/java/com/android/server/pm/DexOptHelper.java +++ b/services/core/java/com/android/server/pm/DexOptHelper.java @@ -57,6 +57,7 @@ import android.util.Log; import android.util.Slog; import com.android.internal.logging.MetricsLogger; +import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalManagerRegistry; import com.android.server.art.ArtManagerLocal; import com.android.server.art.DexUseManagerLocal; @@ -844,6 +845,26 @@ public final class DexOptHelper { } /** + * Dumps the dexopt state for the given package, or all packages if it is null. + */ + public static void dumpDexoptState( + @NonNull IndentingPrintWriter ipw, @Nullable String packageName) { + try (PackageManagerLocal.FilteredSnapshot snapshot = + getPackageManagerLocal().withFilteredSnapshot()) { + if (packageName != null) { + try { + DexOptHelper.getArtManagerLocal().dumpPackage(ipw, snapshot, packageName); + } catch (IllegalArgumentException e) { + // Package isn't found, but that should only happen due to race. + ipw.println(e); + } + } else { + DexOptHelper.getArtManagerLocal().dump(ipw, snapshot); + } + } + } + + /** * Returns the module names of the APEXes that contribute to bootclasspath. */ private static List<String> getBcpApexes() { |