Allow using the JIT
Instead of the JIT only being available for eng builds [or configurable
via environment variable], allow the JIT to be enabled programatically.
Change-Id: Id3c5ae227ed400e489bb723a56c516dfc12acd89
diff --git a/cmds/installd/commands.cpp b/cmds/installd/commands.cpp
index 906a09b..c5b5e8f 100644
--- a/cmds/installd/commands.cpp
+++ b/cmds/installd/commands.cpp
@@ -695,7 +695,7 @@
static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name,
const char* output_file_name, int swap_fd, const char *pkgname, const char *instruction_set,
- bool vm_safe_mode, bool debuggable, bool post_bootcomplete)
+ bool vm_safe_mode, bool debuggable, bool post_bootcomplete, bool use_jit)
{
static const unsigned int MAX_INSTRUCTION_SET_LEN = 7;
@@ -769,7 +769,6 @@
(strcmp(vold_decrypt, "trigger_restart_min_framework") == 0 ||
(strcmp(vold_decrypt, "1") == 0)));
- bool use_jit = check_boolean_property("debug.usejit");
bool generate_debug_info = check_boolean_property("debug.generate-debug-info");
static const char* DEX2OAT_BIN = "/system/bin/dex2oat";
@@ -823,6 +822,8 @@
}
}
+ // use the JIT if either it's specified as a dexopt flag or if the property is set
+ use_jit = use_jit || check_boolean_property("debug.usejit");
if (have_dex2oat_Xms_flag) {
sprintf(dex2oat_Xms_arg, "-Xms%s", dex2oat_Xms_flag);
}
@@ -1057,6 +1058,7 @@
bool vm_safe_mode = (dexopt_flags & DEXOPT_SAFEMODE) != 0;
bool debuggable = (dexopt_flags & DEXOPT_DEBUGGABLE) != 0;
bool boot_complete = (dexopt_flags & DEXOPT_BOOTCOMPLETE) != 0;
+ bool use_jit = (dexopt_flags & DEXOPT_USEJIT) != 0;
if ((dexopt_flags & DEXOPT_MASK) != 0) {
LOG_FATAL("dexopt flags contains unknown fields\n");
@@ -1200,7 +1202,7 @@
input_file_name++;
}
run_dex2oat(input_fd, out_fd, input_file_name, out_path, swap_fd, pkgname,
- instruction_set, vm_safe_mode, debuggable, boot_complete);
+ instruction_set, vm_safe_mode, debuggable, boot_complete, use_jit);
} else {
ALOGE("Invalid dexopt needed: %d\n", dexopt_needed);
exit(73);