Update framework code for the API renaming of ART Service.
Bug: 265248684 Test: Presubmit Change-Id: I6a89ba088805a2f0723dfb6f1feddb76c199836c
This commit is contained in:
@@ -7578,7 +7578,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>
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user