Use the new refined DexOptNeeded codes.

bug: 30937355
Test: device boots, messages are printed correctly
Change-Id: Ia5274e3659471c2a52244d5838d207d407e79023
This commit is contained in:
Nicolas Geoffray
2016-11-25 09:50:29 +00:00
parent c6c005ef5b
commit 79c9e06320

View File

@@ -219,19 +219,20 @@ class PackageDexOptimizer {
final String dexoptType;
String oatDir = null;
switch (dexoptNeeded) {
boolean isOdexLocation = (dexoptNeeded < 0);
switch (Math.abs(dexoptNeeded)) {
case DexFile.NO_DEXOPT_NEEDED:
continue;
case DexFile.DEX2OAT_NEEDED:
case DexFile.DEX2OAT_FROM_SCRATCH:
case DexFile.DEX2OAT_FOR_BOOT_IMAGE:
case DexFile.DEX2OAT_FOR_FILTER:
case DexFile.DEX2OAT_FOR_RELOCATION:
dexoptType = "dex2oat";
oatDir = createOatDirIfSupported(pkg, dexCodeInstructionSet);
break;
case DexFile.PATCHOAT_NEEDED:
case DexFile.PATCHOAT_FOR_RELOCATION:
dexoptType = "patchoat";
break;
case DexFile.SELF_PATCHOAT_NEEDED:
dexoptType = "self patchoat";
break;
default:
throw new IllegalStateException("Invalid dexopt:" + dexoptNeeded);
}
@@ -383,7 +384,7 @@ class PackageDexOptimizer {
protected int adjustDexoptNeeded(int dexoptNeeded) {
// Ensure compilation, no matter the current state.
// TODO: The return value is wrong when patchoat is needed.
return DexFile.DEX2OAT_NEEDED;
return DexFile.DEX2OAT_FROM_SCRATCH;
}
}
}