Use compiler filter "verify" for dexpreopt w/o class loader context.
In cases when class loader context cannot be computed at build time and verify_uses_libraries check is relaxed (RELAX_USES_LIBRARY_CHECK=true) dexpreopt uses a special compiler filter that suppresses AOT-compilation to native code and applies only those optimizations that do not require class loader context. Previously the "extract" filter was used. Now ART supports using "verify" filter in this configuration. Bug: 132357300 Test: lunch cf_x86_64_phone-userdebug && m && launch_cvd \ adb wait-for-device && adb root && adb logcat \ | grep -E 'ClassLoaderContext [a-z ]+ mismatch' # empty grep output, no errors Change-Id: Id4933aa94ea96894278355283383c16d103e98c9
This commit is contained in:
@@ -369,11 +369,11 @@ func dexpreoptCommand(ctx android.PathContext, globalSoong *GlobalSoongConfig, g
|
||||
}
|
||||
if module.EnforceUsesLibraries {
|
||||
// If the verify_uses_libraries check failed (in this case status file contains a
|
||||
// non-empty error message), then use "extract" compiler filter to avoid compiling any
|
||||
// non-empty error message), then use "verify" compiler filter to avoid compiling any
|
||||
// code (it would be rejected on device because of a class loader context mismatch).
|
||||
cmd.Text("--compiler-filter=$(if test -s ").
|
||||
Input(module.EnforceUsesLibrariesStatusFile).
|
||||
Text(" ; then echo extract ; else echo " + compilerFilter + " ; fi)")
|
||||
Text(" ; then echo verify ; else echo " + compilerFilter + " ; fi)")
|
||||
} else {
|
||||
cmd.FlagWithArg("--compiler-filter=", compilerFilter)
|
||||
}
|
||||
|
Reference in New Issue
Block a user