Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00b5f9a2 authored by Todd Kennedy's avatar Todd Kennedy Committed by Android Git Automerger
Browse files

am 534a49dc: am 905c1446: Merge "Allow using the JIT"

* commit '534a49dc':
  Allow using the JIT
parents 1307cbb3 534a49dc
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -746,7 +746,7 @@ static bool check_boolean_property(const char* property_name, bool default_value

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;

@@ -820,7 +820,6 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name,
                             (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";
@@ -874,6 +873,8 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name,
        }
    }

    // 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);
    }
@@ -1108,6 +1109,7 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins
    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");
@@ -1251,7 +1253,7 @@ int dexopt(const char *apk_path, uid_t uid, const char *pkgname, const char *ins
                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);
+13 −5
Original line number Diff line number Diff line
@@ -94,11 +94,19 @@
 * IMPORTANT: These values are passed from Java code. Keep them in sync with
 * frameworks/base/services/core/java/com/android/server/pm/Installer.java
 ***************************************************************************/
#define DEXOPT_PUBLIC       (1 << 1)
#define DEXOPT_SAFEMODE     (1 << 2)
#define DEXOPT_DEBUGGABLE   (1 << 3)
#define DEXOPT_BOOTCOMPLETE (1 << 4)
#define DEXOPT_MASK (DEXOPT_PUBLIC | DEXOPT_SAFEMODE | DEXOPT_DEBUGGABLE | DEXOPT_BOOTCOMPLETE)
constexpr int DEXOPT_PUBLIC       = 1 << 1;
constexpr int DEXOPT_SAFEMODE     = 1 << 2;
constexpr int DEXOPT_DEBUGGABLE   = 1 << 3;
constexpr int DEXOPT_BOOTCOMPLETE = 1 << 4;
constexpr int DEXOPT_USEJIT       = 1 << 5;

/* all known values for dexopt flags */
constexpr int DEXOPT_MASK =
    DEXOPT_PUBLIC
    | DEXOPT_SAFEMODE
    | DEXOPT_DEBUGGABLE
    | DEXOPT_BOOTCOMPLETE
    | DEXOPT_USEJIT;

#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))