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);
}
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;
}
}
}