Merge "Update framework code for the API renaming of ART Service."

This commit is contained in:
Jiakai Zhang
2023-01-13 01:49:28 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 34 deletions

View File

@@ -7576,7 +7576,7 @@
</intent-filter>
</service>
<service android:name="com.android.server.art.BackgroundDexOptJobService"
<service android:name="com.android.server.art.BackgroundDexoptJobService"
android:permission="android.permission.BIND_JOB_SERVICE" >
</service>

View File

@@ -65,8 +65,8 @@ import com.android.server.LocalManagerRegistry;
import com.android.server.art.ArtManagerLocal;
import com.android.server.art.DexUseManagerLocal;
import com.android.server.art.model.ArtFlags;
import com.android.server.art.model.OptimizeParams;
import com.android.server.art.model.OptimizeResult;
import com.android.server.art.model.DexoptParams;
import com.android.server.art.model.DexoptResult;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.Installer.LegacyDexoptDisabledException;
import com.android.server.pm.PackageDexOptimizer.DexOptResult;
@@ -502,7 +502,7 @@ public final class DexOptHelper {
* necessary to fall back to the legacy code paths.
*/
private Optional<Integer> performDexOptWithArtService(DexoptOptions options,
/*@OptimizeFlags*/ int extraFlags) {
/*@DexoptFlags*/ int extraFlags) {
ArtManagerLocal artManager = getArtManagerLocal();
if (artManager == null) {
return Optional.empty();
@@ -522,14 +522,14 @@ public final class DexOptHelper {
return Optional.of(PackageDexOptimizer.DEX_OPT_SKIPPED);
}
OptimizeParams params = options.convertToOptimizeParams(extraFlags);
DexoptParams params = options.convertToDexoptParams(extraFlags);
if (params == null) {
return Optional.empty();
}
OptimizeResult result;
DexoptResult result;
try {
result = artManager.optimizePackage(snapshot, options.getPackageName(), params);
result = artManager.dexoptPackage(snapshot, options.getPackageName(), params);
} catch (UnsupportedOperationException e) {
reportArtManagerFallback(options.getPackageName(), e.toString());
return Optional.empty();
@@ -954,22 +954,21 @@ public final class DexOptHelper {
}
}
private static class OptimizePackageDoneHandler
implements ArtManagerLocal.OptimizePackageDoneCallback {
private static class DexoptDoneHandler implements ArtManagerLocal.DexoptDoneCallback {
@NonNull private final PackageManagerService mPm;
OptimizePackageDoneHandler(@NonNull PackageManagerService pm) { mPm = pm; }
DexoptDoneHandler(@NonNull PackageManagerService pm) { mPm = pm; }
/**
* Called after every package optimization operation done by {@link ArtManagerLocal}.
* Called after every package dexopt operation done by {@link ArtManagerLocal}.
*/
@Override
public void onOptimizePackageDone(@NonNull OptimizeResult result) {
for (OptimizeResult.PackageOptimizeResult pkgRes : result.getPackageOptimizeResults()) {
public void onDexoptDone(@NonNull DexoptResult result) {
for (DexoptResult.PackageDexoptResult pkgRes : result.getPackageDexoptResults()) {
CompilerStats.PackageStats stats =
mPm.getOrCreateCompilerPackageStats(pkgRes.getPackageName());
for (OptimizeResult.DexContainerFileOptimizeResult dexRes :
pkgRes.getDexContainerFileOptimizeResults()) {
for (DexoptResult.DexContainerFileDexoptResult dexRes :
pkgRes.getDexContainerFileDexoptResults()) {
stats.setCompileTime(
dexRes.getDexContainerFile(), dexRes.getDex2oatWallTimeMillis());
}
@@ -994,13 +993,13 @@ public final class DexOptHelper {
ArtManagerLocal artManager = new ArtManagerLocal(systemContext);
// There doesn't appear to be any checks that @NonNull is heeded, so use requireNonNull
// below to ensure we don't store away a null that we'll fail on later.
artManager.addOptimizePackageDoneCallback(false /* onlyIncludeUpdates */,
Runnable::run, new OptimizePackageDoneHandler(Objects.requireNonNull(pm)));
artManager.addDexoptDoneCallback(false /* onlyIncludeUpdates */,
Runnable::run, new DexoptDoneHandler(Objects.requireNonNull(pm)));
LocalManagerRegistry.addManager(ArtManagerLocal.class, artManager);
}
/**
* Returns {@link ArtManagerLocal} if ART Service should be used for package optimization.
* Returns {@link ArtManagerLocal} if ART Service should be used for package dexopt.
*/
private static @Nullable ArtManagerLocal getArtManagerLocal() {
if (!useArtService()) {
@@ -1014,25 +1013,25 @@ public final class DexOptHelper {
}
/**
* Converts an ART Service {@link OptimizeResult} to {@link DexOptResult}.
* Converts an ART Service {@link DexoptResult} to {@link DexOptResult}.
*
* For interfacing {@link ArtManagerLocal} with legacy dex optimization code in PackageManager.
*/
@DexOptResult
private static int convertToDexOptResult(OptimizeResult result) {
/*@OptimizeStatus*/ int status = result.getFinalStatus();
private static int convertToDexOptResult(DexoptResult result) {
/*@DexoptResultStatus*/ int status = result.getFinalStatus();
switch (status) {
case OptimizeResult.OPTIMIZE_SKIPPED:
case DexoptResult.DEXOPT_SKIPPED:
return PackageDexOptimizer.DEX_OPT_SKIPPED;
case OptimizeResult.OPTIMIZE_FAILED:
case DexoptResult.DEXOPT_FAILED:
return PackageDexOptimizer.DEX_OPT_FAILED;
case OptimizeResult.OPTIMIZE_PERFORMED:
case DexoptResult.DEXOPT_PERFORMED:
return PackageDexOptimizer.DEX_OPT_PERFORMED;
case OptimizeResult.OPTIMIZE_CANCELLED:
case DexoptResult.DEXOPT_CANCELLED:
return PackageDexOptimizer.DEX_OPT_CANCELLED;
default:
throw new IllegalArgumentException("OptimizeResult for "
+ result.getPackageOptimizeResults().get(0).getPackageName()
throw new IllegalArgumentException("DexoptResult for "
+ result.getPackageDexoptResults().get(0).getPackageName()
+ " has unsupported status " + status);
}
}

View File

@@ -24,7 +24,7 @@ import android.annotation.Nullable;
import com.android.server.art.ReasonMapping;
import com.android.server.art.model.ArtFlags;
import com.android.server.art.model.OptimizeParams;
import com.android.server.art.model.DexoptParams;
import com.android.server.pm.DexOptHelper;
import com.android.server.pm.PackageManagerService;
@@ -201,22 +201,22 @@ public final class DexoptOptions {
}
/**
* Returns an {@link OptimizeParams} instance corresponding to this object, for use with
* Returns an {@link DexoptParams} instance corresponding to this object, for use with
* {@link com.android.server.art.ArtManagerLocal}.
*
* @param extraFlags extra {@link ArtFlags#OptimizeFlags} to set in the returned
* {@code OptimizeParams} beyond those converted from this object
* @param extraFlags extra {@link ArtFlags#DexoptFlags} to set in the returned
* {@code DexoptParams} beyond those converted from this object
* @return null if the settings cannot be accurately represented, and hence the old
* PackageManager/installd code paths need to be used.
*/
public @Nullable OptimizeParams convertToOptimizeParams(/*@OptimizeFlags*/ int extraFlags) {
public @Nullable DexoptParams convertToDexoptParams(/*@DexoptFlags*/ int extraFlags) {
if (mSplitName != null) {
DexOptHelper.reportArtManagerFallback(
mPackageName, "Request to optimize only split " + mSplitName);
return null;
}
/*@OptimizeFlags*/ int flags = extraFlags;
/*@DexoptFlags*/ int flags = extraFlags;
if ((mFlags & DEXOPT_CHECK_FOR_PROFILES_UPDATES) == 0
&& isProfileGuidedCompilerFilter(mCompilerFilter)) {
// ART Service doesn't support bypassing the profile update check when profiles are
@@ -322,7 +322,7 @@ public final class DexoptOptions {
"Invalid compilation reason " + mCompilationReason);
}
return new OptimizeParams.Builder(reason, flags)
return new DexoptParams.Builder(reason, flags)
.setCompilerFilter(mCompilerFilter)
.setPriorityClass(priority)
.build();