)]}'
{
  "commit": "4cb657a5bfc44a0cc8e8419ac7877214c75522f3",
  "tree": "1c93fd4db4de16910c9a72ab40070dcbba2102d3",
  "parents": [
    "810d46329e283f6f6bdd2cf093d35aaf34f372a2"
  ],
  "author": {
    "name": "Jared Duke",
    "email": "jdduke@google.com",
    "time": "Wed Nov 05 22:44:07 2025 +0000"
  },
  "committer": {
    "name": "Treehugger Robot",
    "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
    "time": "Fri Dec 05 12:08:23 2025 -0800"
  },
  "message": "Add support for selective startup dex madvise\n\nImplement a simple heuristic for selectively madvise\u0027ing dex files\nthat have layout optimizations based on startup profiles.\n\nThis does the following:\n * Embeds per-dex startup class/method counts in the compiled odex,\n   based on the reference profile.\n * Implements logic to selectively load dex files that most account\n   for startup behavior. For apps where the dex isn\u0027t optimized for\n   startup, this will effectively fall back to the current greedy logic.\n * Guards the new logic behind a flag.\n\nFollow-up work will explore use of reference profiles as the definitive\nsource of these hints, but that will require broader framework changes\nto ensure such profiles are available at (or immediately following) the\ncurrent madvise hooks.\n\nMore details can be found in go/aperf-art-madvise-startup.\n\nBug: 358590127\nTest: Inspect startup traces for YouTube + Google App\nTest: Inspect verbose:oat logs for app startup\nFlag: com.android.art.rw.flags.madvise_dex_using_profile\nChange-Id: If9322fbf0801caa292d2df4c6fef0bc0aa27e916\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "332df43cf31dc1d443f9d470b9f670e66cfd90e2",
      "old_mode": 33188,
      "old_path": "dex2oat/linker/oat_writer.cc",
      "new_id": "c0d41dbdf83d33d9bf15f3af868f4bc84ef3c967",
      "new_mode": 33188,
      "new_path": "dex2oat/linker/oat_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "9d41f34d2ac3aa144d998b4bbeeea2766951b54e",
      "old_mode": 33188,
      "old_path": "dex2oat/linker/oat_writer.h",
      "new_id": "0338b6387d47eb11f218a224e4505560c735b71b",
      "new_mode": 33188,
      "new_path": "dex2oat/linker/oat_writer.h"
    },
    {
      "type": "modify",
      "old_id": "f63deb39fda0bb891ce8c785d8895d1bcface57c",
      "old_mode": 33188,
      "old_path": "dex2oat/linker/oat_writer_test.cc",
      "new_id": "52262e0390ae001d5026f3f203a5182002ef2f1d",
      "new_mode": 33188,
      "new_path": "dex2oat/linker/oat_writer_test.cc"
    },
    {
      "type": "modify",
      "old_id": "5fc37d107a7218d820a6977ccc1825d184a87855",
      "old_mode": 33188,
      "old_path": "libdexfile/dex/dex_file_layout.h",
      "new_id": "95e11fa9dfc586bf888b36b6dc25fa0b5f801cc0",
      "new_mode": 33188,
      "new_path": "libdexfile/dex/dex_file_layout.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d905f162a80de21ac035439520479e4cfcc43969",
      "new_mode": 33188,
      "new_path": "libdexfile/dex/dex_file_profile.h"
    },
    {
      "type": "modify",
      "old_id": "ce0c9e259e14e650f5ef91a9fbf79809b34cf4f2",
      "old_mode": 33188,
      "old_path": "libprofile/profile/profile_compilation_info.cc",
      "new_id": "7ce7527ef4bded9868f2aef9bfe01e3cb63b56f9",
      "new_mode": 33188,
      "new_path": "libprofile/profile/profile_compilation_info.cc"
    },
    {
      "type": "modify",
      "old_id": "84ac78a2aad394b542e2bc0cf7845f46aa50206a",
      "old_mode": 33188,
      "old_path": "libprofile/profile/profile_compilation_info.h",
      "new_id": "5c8ade39c66ade3bdeaa83ee07b545f01f62869a",
      "new_mode": 33188,
      "new_path": "libprofile/profile/profile_compilation_info.h"
    },
    {
      "type": "modify",
      "old_id": "ca52ee481c237f61a56a4d92cf8a4e95cd9f7706",
      "old_mode": 33188,
      "old_path": "libprofile/profile/profile_compilation_info_test.cc",
      "new_id": "da83d7fec5bf8fe4f47efb4ac80bbb35fb520946",
      "new_mode": 33188,
      "new_path": "libprofile/profile/profile_compilation_info_test.cc"
    },
    {
      "type": "modify",
      "old_id": "c57024ec3d7d87fe524884916d3c43ccab67dac9",
      "old_mode": 33188,
      "old_path": "oatdump/oatdump.cc",
      "new_id": "6b8a9cc29f71ef91ba747ef6b8c2c5b98bfcc49c",
      "new_mode": 33188,
      "new_path": "oatdump/oatdump.cc"
    },
    {
      "type": "modify",
      "old_id": "438dab7612b69b310587ed3b27d0990709d8301f",
      "old_mode": 33188,
      "old_path": "runtime/Android.bp",
      "new_id": "9e540169368ea1c95adec5e3bc2c56d03b2c8e4c",
      "new_mode": 33188,
      "new_path": "runtime/Android.bp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8b1db8af80ddced4bf7091cfdf6888e56d4744d4",
      "new_mode": 33188,
      "new_path": "runtime/oat/madvise_utils.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5dca6756c635cb76c1a726b9abc5d961300b37d7",
      "new_mode": 33188,
      "new_path": "runtime/oat/madvise_utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fa3268938ddfa0ef62ebb2a1423fed578535f9a6",
      "new_mode": 33188,
      "new_path": "runtime/oat/madvise_utils_test.cc"
    },
    {
      "type": "modify",
      "old_id": "be68f66d63c5b15164d50d3e3a3785b843778847",
      "old_mode": 33188,
      "old_path": "runtime/oat/oat.h",
      "new_id": "e468224cce040e2fb385f53133b1cc12cc4b6723",
      "new_mode": 33188,
      "new_path": "runtime/oat/oat.h"
    },
    {
      "type": "modify",
      "old_id": "abdcbfe8e482b0be4361c51e1fc74a3db6d2b484",
      "old_mode": 33188,
      "old_path": "runtime/oat/oat_file.cc",
      "new_id": "42981508b87f52055ee7e8f58669cb1e2b616069",
      "new_mode": 33188,
      "new_path": "runtime/oat/oat_file.cc"
    },
    {
      "type": "modify",
      "old_id": "7ec1635a10145796153d5075385e4b8758210fb5",
      "old_mode": 33188,
      "old_path": "runtime/oat/oat_file.h",
      "new_id": "b24b8ab89518fb61c9e101408bb394d29f0cfaa4",
      "new_mode": 33188,
      "new_path": "runtime/oat/oat_file.h"
    },
    {
      "type": "modify",
      "old_id": "94c85f41dc810cde255f77cde71cdeda1422b043",
      "old_mode": 33188,
      "old_path": "runtime/oat/oat_file_manager.cc",
      "new_id": "5ac1d9b8e5b9c82fcc8bb5be5467c7ecc45f1387",
      "new_mode": 33188,
      "new_path": "runtime/oat/oat_file_manager.cc"
    }
  ]
}
