installd: move background compilation check out of RunDex2oat
This makes it easier to extract RunDex2oat to individual file for unit
test.
Bug: 161470356
Test: atest frameworks/native/cmds/installd/tests
Test: cmd package compile -m speed -f com.android.egg
Change-Id: I6df2b9efeadddee9a3de869a8cd4d4b3d27229d7
diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp
index 5cf5b05..dfdcab8 100644
--- a/cmds/installd/dexopt.cpp
+++ b/cmds/installd/dexopt.cpp
@@ -320,7 +320,8 @@
class RunDex2Oat : public ExecVHelper {
public:
- RunDex2Oat(int zip_fd,
+ RunDex2Oat(const char* dex2oat_bin,
+ int zip_fd,
int oat_fd,
int input_vdex_fd,
int output_vdex_fd,
@@ -333,7 +334,6 @@
bool debuggable,
bool post_bootcomplete,
bool for_restore,
- bool background_job_compile,
int profile_fd,
const char* class_loader_context,
const std::string& class_loader_context_fds,
@@ -429,19 +429,6 @@
std::string dex2oat_large_app_threshold_arg =
MapPropertyToArg("dalvik.vm.dex2oat-very-large", "--very-large-app-threshold=%s");
-
-
- // Decide whether to use dex2oat64.
- bool use_dex2oat64 = false;
- // Check whether the device even supports 64-bit ABIs.
- if (!GetProperty("ro.product.cpu.abilist64", "").empty()) {
- use_dex2oat64 = GetBoolProperty("dalvik.vm.dex2oat64.enabled", false);
- }
- const char* dex2oat_bin = select_execution_binary(
- (use_dex2oat64 ? kDex2oat64Path : kDex2oat32Path),
- (use_dex2oat64 ? kDex2oatDebug64Path : kDex2oatDebug32Path),
- background_job_compile);
-
bool generate_minidebug_info = kEnableMinidebugInfo &&
GetBoolProperty(kMinidebugInfoSystemProperty, kMinidebugInfoSystemPropertyDefault);
@@ -2212,9 +2199,21 @@
/*default_value=*/ "");
bool use_jitzygote_image = jitzygote_flag == "true" || IsBootClassPathProfilingEnable();
+ // Decide whether to use dex2oat64.
+ bool use_dex2oat64 = false;
+ // Check whether the device even supports 64-bit ABIs.
+ if (!GetProperty("ro.product.cpu.abilist64", "").empty()) {
+ use_dex2oat64 = GetBoolProperty("dalvik.vm.dex2oat64.enabled", false);
+ }
+ const char* dex2oat_bin = select_execution_binary(
+ (use_dex2oat64 ? kDex2oat64Path : kDex2oat32Path),
+ (use_dex2oat64 ? kDex2oatDebug64Path : kDex2oatDebug32Path),
+ background_job_compile);
+
LOG(VERBOSE) << "DexInv: --- BEGIN '" << dex_path << "' ---";
- RunDex2Oat runner(input_fd.get(),
+ RunDex2Oat runner(dex2oat_bin,
+ input_fd.get(),
out_oat_fd.get(),
in_vdex_fd.get(),
out_vdex_fd.get(),
@@ -2227,7 +2226,6 @@
debuggable,
boot_complete,
for_restore,
- background_job_compile,
reference_profile_fd.get(),
class_loader_context,
join_fds(context_input_fds),