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

Commit 86f78998 authored by Mathieu Chartier's avatar Mathieu Chartier Committed by android-build-merger
Browse files

Merge "Add new dexopt flag to control CompactDex generation" am: 64d9442a am: d81c8715

am: 71626f7c

Change-Id: I149b64d544f0fc177136751026229d236f75f8ac
parents 1611a8b3 71626f7c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, int input_vdex_fd, int output_vd
        const char* instruction_set, const char* compiler_filter,
        bool debuggable, bool post_bootcomplete, bool background_job_compile, int profile_fd,
        const char* class_loader_context, int target_sdk_version, bool enable_hidden_api_checks,
        int dex_metadata_fd, const char* compilation_reason) {
        bool generate_compact_dex, int dex_metadata_fd, const char* compilation_reason) {
    static const unsigned int MAX_INSTRUCTION_SET_LEN = 7;

    if (strlen(instruction_set) >= MAX_INSTRUCTION_SET_LEN) {
@@ -438,9 +438,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, int input_vdex_fd, int output_vd

    // Disable cdex if update input vdex is true since this combination of options is not
    // supported.
    // Disable cdex for non-background compiles since we don't want to regress app install until
    // there are enough benefits to justify the tradeoff.
    const bool disable_cdex = !background_job_compile || (input_vdex_fd == output_vdex_fd);
    const bool disable_cdex = !generate_compact_dex || (input_vdex_fd == output_vdex_fd);

    const char* argv[9  // program name, mandatory arguments and the final NULL
                     + (have_dex2oat_isa_variant ? 1 : 0)
@@ -1960,6 +1958,7 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins
    bool is_secondary_dex = (dexopt_flags & DEXOPT_SECONDARY_DEX) != 0;
    bool background_job_compile = (dexopt_flags & DEXOPT_IDLE_BACKGROUND_JOB) != 0;
    bool enable_hidden_api_checks = (dexopt_flags & DEXOPT_ENABLE_HIDDEN_API_CHECKS) != 0;
    bool generate_compact_dex = (dexopt_flags & DEXOPT_GENERATE_COMPACT_DEX) != 0;

    // Check if we're dealing with a secondary dex file and if we need to compile it.
    std::string oat_dir_str;
@@ -2073,6 +2072,7 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins
                    class_loader_context,
                    target_sdk_version,
                    enable_hidden_api_checks,
                    generate_compact_dex,
                    dex_metadata_fd.get(),
                    compilation_reason);
    } else {
+3 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ constexpr int DEXOPT_STORAGE_DE = 1 << 8;
// controls whether extra debugging flags can be used (taking more compile time.)
constexpr int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9;
constexpr int DEXOPT_ENABLE_HIDDEN_API_CHECKS = 1 << 10;
constexpr int DEXOPT_GENERATE_COMPACT_DEX = 1 << 11;

/* all known values for dexopt flags */
constexpr int DEXOPT_MASK =
@@ -65,7 +66,8 @@ constexpr int DEXOPT_MASK =
    | DEXOPT_STORAGE_CE
    | DEXOPT_STORAGE_DE
    | DEXOPT_IDLE_BACKGROUND_JOB
    | DEXOPT_ENABLE_HIDDEN_API_CHECKS;
    | DEXOPT_ENABLE_HIDDEN_API_CHECKS
    | DEXOPT_GENERATE_COMPACT_DEX;

// NOTE: keep in sync with StorageManager
constexpr int FLAG_STORAGE_DE = 1 << 0;
+2 −1
Original line number Diff line number Diff line
@@ -81,8 +81,9 @@ static_assert(DEXOPT_STORAGE_CE == 1 << 7, "DEXOPT_STORAGE_CE unexpected.");
static_assert(DEXOPT_STORAGE_DE     == 1 << 8, "DEXOPT_STORAGE_DE unexpected.");
static_assert(DEXOPT_ENABLE_HIDDEN_API_CHECKS == 1 << 10,
        "DEXOPT_ENABLE_HIDDEN_API_CHECKS unexpected");
static_assert(DEXOPT_GENERATE_COMPACT_DEX == 1 << 11, "DEXOPT_GENERATE_COMPACT_DEX unexpected");

static_assert(DEXOPT_MASK           == (0x5fe | DEXOPT_IDLE_BACKGROUND_JOB),
static_assert(DEXOPT_MASK           == (0xdfe | DEXOPT_IDLE_BACKGROUND_JOB),
              "DEXOPT_MASK unexpected.");