Loading cmds/installd/commands.c +24 −15 Original line number Diff line number Diff line Loading @@ -640,7 +640,7 @@ static int split_count(const char *str) return count; } static int split(char *buf, char **argv) static int split(char *buf, const char **argv) { char *ctx; int count = 0; Loading Loading @@ -732,6 +732,9 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, bool have_dex2oat_isa_variant = property_get(dex2oat_isa_variant_key, dex2oat_isa_variant, NULL) > 0; const char *dex2oat_norelocation = "-Xnorelocate"; bool have_dex2oat_relocation_skip_flag = false; char dex2oat_flags[PROPERTY_VALUE_MAX]; int dex2oat_flags_count = property_get("dalvik.vm.dex2oat-flags", dex2oat_flags, NULL) <= 0 ? 0 : split_count(dex2oat_flags); Loading Loading @@ -804,6 +807,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, if (skip_compilation) { strcpy(dex2oat_compiler_filter_arg, "--compiler-filter=verify-none"); have_dex2oat_compiler_filter_flag = true; have_dex2oat_relocation_skip_flag = true; } else if (vm_safe_mode) { strcpy(dex2oat_compiler_filter_arg, "--compiler-filter=interpret-only"); have_dex2oat_compiler_filter_flag = true; Loading @@ -813,7 +817,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, ALOGV("Running %s in=%s out=%s\n", DEX2OAT_BIN, input_file_name, output_file_name); char* argv[7 // program name, mandatory arguments and the final NULL const char* argv[7 // program name, mandatory arguments and the final NULL + (have_dex2oat_isa_variant ? 1 : 0) + (have_dex2oat_isa_features ? 1 : 0) + (have_profile_file ? 1 : 0) Loading @@ -822,9 +826,10 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, + (have_dex2oat_Xmx_flag ? 2 : 0) + (have_dex2oat_compiler_filter_flag ? 1 : 0) + (have_dex2oat_swap_fd ? 1 : 0) + (have_dex2oat_relocation_skip_flag ? 2 : 0) + dex2oat_flags_count]; int i = 0; argv[i++] = (char*)DEX2OAT_BIN; argv[i++] = DEX2OAT_BIN; argv[i++] = zip_fd_arg; argv[i++] = zip_location_arg; argv[i++] = oat_fd_arg; Loading @@ -843,11 +848,11 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, argv[i++] = top_k_profile_threshold_arg; } if (have_dex2oat_Xms_flag) { argv[i++] = (char*)RUNTIME_ARG; argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_Xms_arg; } if (have_dex2oat_Xmx_flag) { argv[i++] = (char*)RUNTIME_ARG; argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_Xmx_arg; } if (have_dex2oat_compiler_filter_flag) { Loading @@ -859,6 +864,10 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, if (dex2oat_flags_count) { i += split(dex2oat_flags, argv + i); } if (have_dex2oat_relocation_skip_flag) { argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_norelocation; } // Do not add after dex2oat_flags, they should override others for debugging. argv[i] = NULL; Loading Loading
cmds/installd/commands.c +24 −15 Original line number Diff line number Diff line Loading @@ -640,7 +640,7 @@ static int split_count(const char *str) return count; } static int split(char *buf, char **argv) static int split(char *buf, const char **argv) { char *ctx; int count = 0; Loading Loading @@ -732,6 +732,9 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, bool have_dex2oat_isa_variant = property_get(dex2oat_isa_variant_key, dex2oat_isa_variant, NULL) > 0; const char *dex2oat_norelocation = "-Xnorelocate"; bool have_dex2oat_relocation_skip_flag = false; char dex2oat_flags[PROPERTY_VALUE_MAX]; int dex2oat_flags_count = property_get("dalvik.vm.dex2oat-flags", dex2oat_flags, NULL) <= 0 ? 0 : split_count(dex2oat_flags); Loading Loading @@ -804,6 +807,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, if (skip_compilation) { strcpy(dex2oat_compiler_filter_arg, "--compiler-filter=verify-none"); have_dex2oat_compiler_filter_flag = true; have_dex2oat_relocation_skip_flag = true; } else if (vm_safe_mode) { strcpy(dex2oat_compiler_filter_arg, "--compiler-filter=interpret-only"); have_dex2oat_compiler_filter_flag = true; Loading @@ -813,7 +817,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, ALOGV("Running %s in=%s out=%s\n", DEX2OAT_BIN, input_file_name, output_file_name); char* argv[7 // program name, mandatory arguments and the final NULL const char* argv[7 // program name, mandatory arguments and the final NULL + (have_dex2oat_isa_variant ? 1 : 0) + (have_dex2oat_isa_features ? 1 : 0) + (have_profile_file ? 1 : 0) Loading @@ -822,9 +826,10 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, + (have_dex2oat_Xmx_flag ? 2 : 0) + (have_dex2oat_compiler_filter_flag ? 1 : 0) + (have_dex2oat_swap_fd ? 1 : 0) + (have_dex2oat_relocation_skip_flag ? 2 : 0) + dex2oat_flags_count]; int i = 0; argv[i++] = (char*)DEX2OAT_BIN; argv[i++] = DEX2OAT_BIN; argv[i++] = zip_fd_arg; argv[i++] = zip_location_arg; argv[i++] = oat_fd_arg; Loading @@ -843,11 +848,11 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, argv[i++] = top_k_profile_threshold_arg; } if (have_dex2oat_Xms_flag) { argv[i++] = (char*)RUNTIME_ARG; argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_Xms_arg; } if (have_dex2oat_Xmx_flag) { argv[i++] = (char*)RUNTIME_ARG; argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_Xmx_arg; } if (have_dex2oat_compiler_filter_flag) { Loading @@ -859,6 +864,10 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name, if (dex2oat_flags_count) { i += split(dex2oat_flags, argv + i); } if (have_dex2oat_relocation_skip_flag) { argv[i++] = RUNTIME_ARG; argv[i++] = dex2oat_norelocation; } // Do not add after dex2oat_flags, they should override others for debugging. argv[i] = NULL; Loading