diff options
| -rw-r--r-- | cmds/installd/commands.cpp | 55 |
1 files changed, 4 insertions, 51 deletions
diff --git a/cmds/installd/commands.cpp b/cmds/installd/commands.cpp index 0acc41998a..1b99582eaf 100644 --- a/cmds/installd/commands.cpp +++ b/cmds/installd/commands.cpp @@ -742,7 +742,7 @@ static bool check_boolean_property(const char* property_name, bool default_value return strcmp(tmp_property_value, "true") == 0; } -static void run_dex2oat(int zip_fd, int oat_fd, int image_fd, const char* input_file_name, +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 *instruction_set, bool vm_safe_mode, bool debuggable, bool post_bootcomplete, bool use_jit) { @@ -822,8 +822,6 @@ static void run_dex2oat(int zip_fd, int oat_fd, int image_fd, const char* input_ char dex2oat_compiler_filter_arg[strlen("--compiler-filter=") + PROPERTY_VALUE_MAX]; bool have_dex2oat_swap_fd = false; char dex2oat_swap_fd[strlen("--swap-fd=") + MAX_INT_LEN]; - bool have_dex2oat_image_fd = false; - char dex2oat_image_fd[strlen("--app-image-fd=") + MAX_INT_LEN]; sprintf(zip_fd_arg, "--zip-fd=%d", zip_fd); sprintf(zip_location_arg, "--zip-location=%s", input_file_name); @@ -836,10 +834,6 @@ static void run_dex2oat(int zip_fd, int oat_fd, int image_fd, const char* input_ have_dex2oat_swap_fd = true; sprintf(dex2oat_swap_fd, "--swap-fd=%d", swap_fd); } - if (image_fd >= 0) { - have_dex2oat_image_fd = true; - sprintf(dex2oat_image_fd, "--app-image-fd=%d", image_fd); - } // 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"); @@ -881,7 +875,6 @@ static void run_dex2oat(int zip_fd, int oat_fd, int image_fd, const char* input_ + (have_dex2oat_compiler_filter_flag ? 1 : 0) + (have_dex2oat_threads_flag ? 1 : 0) + (have_dex2oat_swap_fd ? 1 : 0) - + (have_dex2oat_image_fd ? 1 : 0) + (have_dex2oat_relocation_skip_flag ? 2 : 0) + (generate_debug_info ? 1 : 0) + (debuggable ? 1 : 0) @@ -916,9 +909,6 @@ static void run_dex2oat(int zip_fd, int oat_fd, int image_fd, const char* input_ if (have_dex2oat_swap_fd) { argv[i++] = dex2oat_swap_fd; } - if (have_dex2oat_image_fd) { - argv[i++] = dex2oat_image_fd; - } if (generate_debug_info) { argv[i++] = "--generate-debug-info"; } @@ -1067,10 +1057,9 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins struct stat input_stat; char out_path[PKG_PATH_MAX]; char swap_file_name[PKG_PATH_MAX]; - char image_path[PKG_PATH_MAX]; const char *input_file; char in_odex_path[PKG_PATH_MAX]; - int res, input_fd=-1, out_fd=-1, image_fd=-1, swap_fd=-1; + int res, input_fd=-1, out_fd=-1, swap_fd=-1; bool is_public = (dexopt_flags & DEXOPT_PUBLIC) != 0; bool vm_safe_mode = (dexopt_flags & DEXOPT_SAFEMODE) != 0; bool debuggable = (dexopt_flags & DEXOPT_DEBUGGABLE) != 0; @@ -1173,33 +1162,6 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins } } - // Open the image file if there is room in the file path. - if (strlen(out_path) + strlen(".art") < PKG_PATH_MAX) { - strcpy(image_path, out_path); - // Trim the extension. - int pos = strlen(image_path); - for (; pos >= 0 && image_path[pos] != '.'; --pos) {} - if (pos != 0) { - image_path[pos] = '\0'; // Trim extension - } - strcat(image_path, ".art"); - unlink(image_path); - image_fd = open(image_path, O_RDWR | O_CREAT | O_EXCL, 0600); - if (image_fd < 0) { - // Could not create swap file. Optimistically go on and hope that we can compile - // without it. - ALOGE("installd could not create '%s' for image file during dexopt\n", image_path); - } else if (fchmod(image_fd, - S_IRUSR|S_IWUSR|S_IRGRP | - (is_public ? S_IROTH : 0)) < 0) { - ALOGE("installd cannot chmod '%s' during dexopt\n", image_path); - image_fd = -1; - } else if (fchown(image_fd, AID_SYSTEM, uid) < 0) { - ALOGE("installd cannot chown '%s' during dexopt\n", image_path); - image_fd = -1; - } - } - ALOGV("DexInv: --- BEGIN '%s' ---\n", input_file); pid_t pid; @@ -1240,7 +1202,7 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins } else { input_file_name++; } - run_dex2oat(input_fd, out_fd, image_fd, input_file_name, out_path, swap_fd, + run_dex2oat(input_fd, out_fd, input_file_name, out_path, swap_fd, instruction_set, vm_safe_mode, debuggable, boot_complete, use_jit); } else { ALOGE("Invalid dexopt needed: %d\n", dexopt_needed); @@ -1263,12 +1225,9 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins close(out_fd); close(input_fd); - if (swap_fd >= 0) { + if (swap_fd != -1) { close(swap_fd); } - if (image_fd >= 0) { - close(image_fd); - } return 0; fail: @@ -1279,12 +1238,6 @@ fail: if (input_fd >= 0) { close(input_fd); } - if (swap_fd >= 0) { - close(swap_fd); - } - if (image_fd >= 0) { - close(image_fd); - } return -1; } |