)]}'
{
  "log": [
    {
      "commit": "b91dad2b98e8c562aed7c4471615d7c325756c08",
      "tree": "85f1d6092a86116555f785a4f906b5f852aa1fca",
      "parents": [
        "3bc03531d1ae5cbe5b0a7ac34c10d5c51f20f233"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon Aug 16 03:20:07 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 20 12:59:57 2021 +0000"
      },
      "message": "Add unit tests for odrefresh - step 2\n\n- Define MockableExecUtils, which is a wrapper class to make exec_utils\nmockable.\n- Add another constructor to the OnDeviceRefresh class to support\ninjections.\n- Update OdrConfig to support overriding the staging directory.\n- Add a unit test to verify that odrefresh sets compiler filter based on\n\"dalvik.vm.systemservercompilerfilter\".\n\nBug: 196188549\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Ia7b4347bba6873878490a513b8a5ff6642122d71\n"
    },
    {
      "commit": "3ba3edfee2592edeea4a4cf06336577178bf2b12",
      "tree": "e06356064d47310651e5f65f8449d3716aea05c4",
      "parents": [
        "70aa29e2d93ba66e71a8ff88c9210719efae1c31"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Aug 11 08:25:40 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 16 08:38:52 2021 +0000"
      },
      "message": "Add unit tests for odrefresh - step 1\n\n- Define `class OnDeviceRefresh` in the header file and expose some\npublic methods.\n- Changed the ordering of functions. (Function bodies are\nnot changed.)\n- Move static functions to the anonymous namespace, outside of the\nclass.\n- Cleanup \"static\" keywords inside the anonymous namespace.\n- Move the `main` function and related functions about argument parsing\nand usage help to a separate file `odrefresh_main.cc`.\n- Move `Concatenate` and `QuotePath` to separate files\n`odr_common.h`/`odr_common.cc`.\n\nBug: 196188549\nTest: m odrefresh\nTest: m odrefreshd\nTest: atest odsign_e2e_tests\nChange-Id: I0ae1cf34181ae2edf7fd2728ec90b842470d729e\n"
    },
    {
      "commit": "7de49d88a1fded45a20209b5335464dd84c3ea03",
      "tree": "e70608fd9d970418cc74e5fd8bcba55959c1ac63",
      "parents": [
        "668daf892a2b81b1acc09c354d705774daa17958"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 11:09:49 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Aug 11 00:21:46 2021 +0000"
      },
      "message": "Update on-device AOT compilation to cover all cases.\n\nAfter the change, odrefresh can properly determine whether to do\ncompilation when:\n1. There is a mainline update (either a normal one or a samegrade one) that updates the ART module.\n2. There is a mainline update (either a normal one or a samegrade one) that updates a module other than ART.\n3. There is an OTA that updates a boot classpath jar.\n4. There is an OTA that updates a system server jar.\n5. There is no change since the last run.\n\nTest: manual - 1. Install a mainline module without changing its\ncontents.\n    2. Reboot the device.\n    3. See if system_server components are recompiled.\nTest: manual - 1. Do nothing and reboot the device.\n    2. See if nothing is recompiled.\nTest: atest odsign_e2e_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\n\nChange-Id: I43dea5380fcd221d5d4e34753d64d46be4dbc27e\n"
    },
    {
      "commit": "5503a8aef8019e536b9702326eccdc92e7be7644",
      "tree": "377cd41fc2ea30dd2f3eb50e4426808ad1ee626c",
      "parents": [
        "b09a983e8dab0477b2546ed56544d31f575c5d2a"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 08:07:12 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 11:46:45 2021 +0000"
      },
      "message": "odrefresh: Respect \"dalvik.vm.systemservercompilerfilter\".\n\nIf the property is set, we should use whatever specified in the\nproperty, rather than always using \"speed\".\n\nThis is brought up by bdc@. The change that merges into sc-dev is\nalready fixed. We need this fix in AOSP as well.\n\nBug: 195653499\nTest: adb shell setprop dalvik.vm.systemservercompilerfilter verify \u0026\u0026 adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --compiler-filter\u003dverify\" in logcat)\nTest: atest odsign_e2e_tests\n\nChange-Id: Icb57ed5eb6b8976ecf6ac88bf8c278bbe144b450\n"
    },
    {
      "commit": "b09a983e8dab0477b2546ed56544d31f575c5d2a",
      "tree": "7fa0b67a5d8d03aa1205d9cfbc5edc96edda17ec",
      "parents": [
        "855cc35a2212d51de19d1daaefe6577223882fd6"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Mon Aug 09 03:49:33 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Aug 10 05:34:48 2021 +0000"
      },
      "message": "odrefresh: Defaults to using \"speed\" for compiling system_server.\n\nMost device builds use the speed configuration for system_server preopt,\nunless \"dalvik.vm.systemservercompilerfilter\" is set to \"speed-profile\".\nodrefresh should not change this behavior.\n\nBug: 195653499\nTest: adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --compiler-filter\u003dspeed\" in logcat)\nTest: adb shell setprop dalvik.vm.systemservercompilerfilter speed-profile \u0026\u0026 adb shell odrefresh --force-compile\n    (Found \"/apex/com.android.art/bin/dex2oat64\n    --dex-file\u003d/system/framework/services.jar\n    ...\n    --profile-file-fd\u003d...\n    --compiler-filter\u003dspeed-profile\" in logcat)\nTest: atest odsign_e2e_tests\n\nChange-Id: I85feeceef4c1410451765274bd02c634d7d8051f\n"
    },
    {
      "commit": "0e8585342b1b26a0ec33421f9d4ab16cb9851ce4",
      "tree": "dfa2139bf0b1b1efefd05244720cfe8f8305b8a7",
      "parents": [
        "18bea3d9059f9dfe4a339e1b03a5755ec147dbee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Aug 02 21:16:05 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Aug 03 15:06:19 2021 +0100"
      },
      "message": "ART Apex: prefer \"first\" to \"prefer32\" multilib option for tools\n\nThis makes the tools in a 32/64-bit APEX into 64-bit binaries when\npreviously they were 32-bit.\n\nThis change is to support 64-bit only devices. We currently build two\nflavors of the ART APEX: a 32-bit only variant and a combined\n32/64-bit variant. Devices using latter support 64-bit.\n\nThe size impact on the uncompressed APEXes is:\n\n+------------+-----------------+-----------------+-----------------+\n| ISA Family | Old size, bytes | New size, bytes |     Change      |\n+------------+-----------------+-----------------+-----------------+\n|     Arm    |    58,212,352   |   58,339,328    | 126,976 (+0.2%) |\n|    Intel   |    72,073,216   |   72,073,216    |       0 (+0.0%) |\n+------------+-----------------+-----------------+-----------------+\n\nBug: 194800665\nTest: art/build/apex/runtests.sh\nTest: odsign_e2e_tests\nChange-Id: If23ea3bc3f14c948c032bb3726a125dfdd8069f4\n"
    },
    {
      "commit": "ce9b902a161b86eb2d5ef9fe4442305e25828d0a",
      "tree": "3108d6315b779816b076b220870748631235e2ea",
      "parents": [
        "a8f858e4eddeede8c465cc5b9fb40733e4649aed"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 27 16:56:08 2021 +0000"
      },
      "message": "Reland: Support pass BCP art/vdex/oat files by FD\n\nThe original implementation in odrefresh generated inconsistent number\nof files between jars and other files. The code is reworked.\n\nOriginal description:\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nTest: odsign_e2e_tests\nChange-Id: Ie3ae48c7d70a2779cfbd80b307199a0f327c895c\n"
    },
    {
      "commit": "d7a4da1f357e089c5d150559d8d2f2ddb7c4958a",
      "tree": "bde88500eac9eda86031cfe8536241dfc79e12d2",
      "parents": [
        "2cb2527d4136f681b8e79352c546e65431ceb10c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 15:05:49 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 14:16:27 2021 +0000"
      },
      "message": "Revert \"Support pass BCP art/vdex/oat files by FD\"\n\nThis reverts commit b1adfc2a0570f52d74b8a4acdd578efc1790995b.\n\nReason: reports from Realtime Stability Insights (RTSI) infra.\n\nBug: 193720426\nFix: 194481664\nFix: 194475273\nFix: 194478073\nTest: TH\nChange-Id: I421d0b4a613de5ac8fb2830fa27206edb5428374\n"
    },
    {
      "commit": "b1adfc2a0570f52d74b8a4acdd578efc1790995b",
      "tree": "c5058390901f2abbb0e281d8403be2b8db02c337",
      "parents": [
        "71f763399e95676d665e071623bccb714acf88b4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jul 21 10:44:06 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 23 01:47:27 2021 +0000"
      },
      "message": "Support pass BCP art/vdex/oat files by FD\n\nThis is currently used by odrefresh.\n\nMain runtime changes are:\n\n1. When reading the image header, also tries to read from the FD if\n   provided.\n\n2. Initialize the art/vdex/odex FDs in the boot image chunk if provided.\n   This allows them to be opened (in case if the file is not accessible\n   by path) in LoadComponents.\n\n3. OpenBootDexFiles: accept BCP JARs passed as FD, in case if the file\n   is not accessible by path.\n\n4. The new FDs are passed from new runtime args,\n   -Xbootclasspath{art,vdex,oat}fds.\n\nIt is used in odrefresh to pass the previous output of BCP extensions to\nbe used in the next phase, system server compilation.\n\nBug: 193720426\nTest: odrefresh --use-compilation-os\u003d10 --force-compile # exit 80\n      odrefresh --verify # exit 0 (was 79 previosly)\nTest: Verify the checksum of output files are the same, with\n      --use-compilation-os or not, i.e. regardless where the compilation\n      happens\nTest: mma in art/\nChange-Id: I209085f047c42823ff20415804f65a9b32378b40\n"
    },
    {
      "commit": "d61b021fffc641906d1c531a233b62a8f66c184a",
      "tree": "2e81f49ce6986fbc069286d28b48f41b19dce0c6",
      "parents": [
        "9e050ab1a061d9660eb0c1daa01a823ad75b0f05"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jul 08 10:20:26 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 23:37:32 2021 +0000"
      },
      "message": "Trigger on-device AOT compilation for system_server on mainline update.\n\nBefore this change, AOT compilation for system_server are triggered only\non ART mainline update, and only the system_server components in /system are compiled.\n\nAfter this change, AOT compilation for system_server are triggered on\nany mainline update that touches $BOOTCLASSPATH or\n$SYSTEMSERVERCLASSPATH, and the system_server components in mainline\nmodules are also compiled.\n\nTest: manual - 1. Modify a mainline module (such as com.android.wifi).\n    2. Install the modified module on a device and reboot the device.\n    3. See if system_server components are recompiled (while boot\n    classpath components are not).\nTest: atest odsign_e2e_tests\nTest: art/tools/run-gtests.sh -j8 apex/com.android.art/bin/art/x86_64/art_libartbase_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\nChange-Id: Icaba5471e9f62fd035f0a24d662ecfaf2e064cab\n"
    },
    {
      "commit": "20b3c57170206febd53a20287bf6b7d5e620b62d",
      "tree": "b00ce13aa9fd9069dcf922f23901a6e70e9cb539",
      "parents": [
        "2ec38232c632a2c7f3069f02d5c4d7036f14575b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 20:41:48 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 09 14:00:00 2021 +0000"
      },
      "message": "odrefresh: add test for samegrade ART APEX install\n\nAdds a test that a samegrade ART APEX installation triggers\nrecompilation of AOT artifacts.\n\nThe test exposed situation where the first log entry is incorrectly\nlogged as zero which is also fixed here.\n\nBug: 192647837\nTest: atest odsign_e2e_tests\nTest: atest art_odrefresh_tests\nChange-Id: Iefb0fbbca119ed3e47bc17caa2ef8467b241b26c\n"
    },
    {
      "commit": "79f874d287cb314dcf3fb8a78122d4296e91bd42",
      "tree": "7f2c9bd81b107e4acda51dcd7a133153980961de",
      "parents": [
        "4f623272bdf76d0308af4e45a71fb5a728d4f0f1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 07 08:28:31 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 08 14:37:36 2021 +0000"
      },
      "message": "odrefresh: add support for lastUpdateMillis as part of version check\n\nThis is to support samegrade updates for module evaluation.\n\nBug: 192647837\nTest: atest art_standalone_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Ied43ebdcc4b2ec57e337e709970fab948cf5f992\n"
    },
    {
      "commit": "f040914a122be86e280efe5e31af1168f2b7c72e",
      "tree": "8ea3fa76be8f215d36977477015ed7f9f3a2f65c",
      "parents": [
        "b4bd92f27fb143135870d07b459ea52637afcfa5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Mar 22 15:45:03 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 10:52:35 2021 +0000"
      },
      "message": "Uncouple ART gtests from the ART APEX.\n\nIntroduce standalone versions of ART gtests on target, not bundled\nwith the ART APEX.\n\nSo far ART gtests have always been built as debug artifacts (and\nlinked against ART debug libraries). Make some adjustments in some of\nthese tests so that they can also work as non-debug artifacts and be\nused with the Release ART APEX (which contains only non-debug\nartifacts).\n\nNewly added tests:\n* `art_standalone_cmdline_tests`\n* `art_standalone_compiler_tests`\n* `art_standalone_dex2oat_tests`\n* `art_standalone_dexdump_tests`\n* `art_standalone_dexlist_tests`\n* `art_standalone_dexoptanalyzer_tests`\n  * Note: Requires root access to the device.\n* `art_standalone_libartbase_tests`\n* `art_standalone_libartpalette_tests`\n* `art_standalone_libartservice_tests`\n* `art_standalone_libarttools_tests`\n* `art_standalone_libdexfile_support_tests`\n* `art_standalone_libdexfile_tests`\n* `art_standalone_libprofile_tests`\n* `art_standalone_oatdump_tests`\n* `art_standalone_odrefresh_tests`\n* `art_standalone_profman_tests`\n  * Note: Requires root access to the device.\n  * Note: Some tests (2 out of 37) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_runtime_compiler_tests`\n* `art_standalone_runtime_tests`\n  * Note: Some tests (16 out of 686) are failing and have been\n    temporarily disabled.\n  * Note: Some tests (4 out of 686) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_sigchain_tests`\n\nTests not added:\n* `art_standalone_dexanalyze_tests`\n  * Reason: ART binary `dexanalyze` is not part of the Release ART APEX.\n* `art_standalone_dexdiag_tests`\n  * Reason: ART binary `dexdiag` is not part of the Release ART APEX.\n* `art_standalone_dexlayout_tests`\n  * Reason: ART binary `dexlayout` is not part of the Release ART APEX.\n* `art_standalone_imgdiag_tests`\n  * Reason: ART binary `imgdiag` is not part of the Release ART APEX.\n\nTest: atest -a art_standalone_cmdline_tests\nTest: atest -a art_standalone_compiler_tests\nTest: atest -a art_standalone_dex2oat_tests\nTest: atest -a art_standalone_dexdump_tests\nTest: atest -a art_standalone_dexlist_tests\nTest: atest -a art_standalone_dexoptanalyzer_tests\nTest: atest -a art_standalone_libartbase_tests\nTest: atest -a art_standalone_libartpalette_tests\nTest: atest -a art_standalone_libartservice_tests\nTest: atest -a art_standalone_libarttools_tests\nTest: atest -a art_standalone_libdexfile_support_tests\nTest: atest -a art_standalone_libdexfile_tests\nTest: atest -a art_standalone_libprofile_tests\nTest: atest -a art_standalone_oatdump_tests\nTest: atest -a art_standalone_odrefresh_tests\nTest: atest -a art_standalone_profman_tests\nTest: atest -a art_standalone_runtime_compiler_tests\nTest: atest -a art_standalone_runtime_tests\nTest: atest -a art_standalone_sigchain_tests\nTest: atest -a art_standalone_\\*_tests\nTest: m art_chroot \u0026\u0026 atest ArtGtestsTargetChroot\nBug: 162834439\nBug: 162734417\nChange-Id: I8beda9159d48c4ca495698357dc3bd95e3ff84d5\n"
    },
    {
      "commit": "2c9667363ba0f8178a077332a8ec1c74426fdc70",
      "tree": "b3b8f5c32c423e10f1419cd3fd4d35fdd0e4ac94",
      "parents": [
        "ea936c02701dc7ac773f5c2272dafde5e1967ea0"
      ],
      "author": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Fri Jul 02 12:04:15 2021 +0100"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Mon Jul 05 09:41:08 2021 +0100"
      },
      "message": "Don\u0027t delete everything in apexdata/com.android.art.\n\nRather than deleting everything we now specifically delete the\nartifacts directory when validation fails or forcing compilation. This\nallows the pending directory, with CompOS artifacts, to be preserved\nand used as an alternative.\n\nAs a slightly gratuitous bonus, delete the staging directory when\nwe\u0027re done with it, rather than just its contents.\n\nTest: Manual, create pending directory, see it preserved.\nTest: atest --host art_odrefresh_tests\nTest: Presubmits\nBug: 190166662\nChange-Id: Ic6f0cb15eb22b3a235d9df90653c6e6d63ea80bc\n"
    },
    {
      "commit": "156a8618372cda12eaff321c545d9126df225c0d",
      "tree": "c68e18a57ec9496abb2b5146a9b6965f04a36b9c",
      "parents": [
        "ac97f3e110eb57824a2560888406e31cb157bd7b"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 17 12:47:17 2021 -0700"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Jun 22 08:13:48 2021 +0000"
      },
      "message": "odrefresh: don\u0027t stage profile if not exists\n\nThe code staged the file even if the open failed. This causes a null\npointer dereference later in JoinFilesAsFDs (only used in the\nCompilaiton OS case).\n\nBug: 186132447\nTest: odrefresh --use-compilation-os\u003d10 --force-compile\n      # complete successfully with other changes\nChange-Id: I8227d863ea56e2a7071816130f6b354ac80d03ce\n"
    },
    {
      "commit": "71b2cb54099218952385c8c295dbff8be81263ce",
      "tree": "eb63230d86e92b12af34fc2ea3d3290352855bf0",
      "parents": [
        "885929fda9e1247910aa1f68f982d098fb84c843"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 16 20:08:16 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:47:26 2021 +0000"
      },
      "message": "odrefresh: fix instruction set selection.\n\nRefactoring led to the instruction-set argument being dropped in\nodrefresh. This manifested itself as failures in the odsign_e2e_tests\nas the secondary zygote was running in jit-zygote mode.\n\nRe-enables the verifyGeneratedArtifactsLoaded test and enforces a\ndeterministic order for the odsign_e2e_tests.\n\nBug: 191113888\nTest: atest odsign_e2e_tests\nChange-Id: I5308a6cf9ddf16e2991bfaf9c6f27bd7e8ff0aff\n"
    },
    {
      "commit": "885929fda9e1247910aa1f68f982d098fb84c843",
      "tree": "1cee9495c84311c4acc9bfd3e01cb71c1b6f23bf",
      "parents": [
        "869746ef31936f09a93717ee1ef3960f8fb6dd69"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Wed Jun 16 15:11:16 2021 -0700"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:45:28 2021 +0000"
      },
      "message": "odrefresh: Fix mis-placed delimiter when joining FDs\n\nBroken example: [3,4,5] -\u003e \"34,5,\"\n\nBug: 187327262\nTest: Start a VM; odrefresh --use-compilation-os\u003d10 --force-compile\nChange-Id: I32d6289889645f68b4e82fdca1a770713225c357\n"
    },
    {
      "commit": "b3a4e01448a32b2dc53cad8a981ed7c75d12d2cc",
      "tree": "6bf28066ed85e965d1bc141abcdac5c3a5a72a7f",
      "parents": [
        "0be3da60fa382ded4a3f9b714d9da4e22667e15a"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:48:10 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: Support option to run dex2oat in PVM\n\npvm_exec is an executable to run a command remotely, assuming the code\nis also in the VM. Since the input files may not be available in the VM,\npvm_exec internally takes over the FDs and becomes a file server. In the\nremote execution setup, dex2oat receives the same FD numbers, and relies\non \"authfs\", a FUSE client that talkes to the file server, to translate\nthe read/write.\n\nBy wrapping dex2oat with pvm_exec, this change makes it possible run\ndex2oat remotely, though not necessarily securely. For example, a\ncommand is not a secure interface since it allows unlimited numbers of\ncombination of input paramters (or even allow manipulating the\ncompilation, e.g. by adjusting Java property).\n\nWe\u0027ll need to change the interface later. But in the meantime, this\nchange will allow us to iterate more easily.\n\nBug: 187346876\nTest: 1. Start a PVM with ART and CompOS apex mounted\n      2. /apex/com.android.art/bin/odrefresh --use-compos\u003d$CID \\\n         --force-compile\n      # odrefresh returns successfully (though much slower right now)\nChange-Id: I722e5290246e180a89f6d42d9a6bc10c79dc0d1a\n"
    },
    {
      "commit": "0be3da60fa382ded4a3f9b714d9da4e22667e15a",
      "tree": "3e46c14034576a30f3ddfc586bf4a0f8f5758c73",
      "parents": [
        "f667c33fc88356aa80d455430752719aaae57717"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 12:37:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "odrefresh: pass BCP JARs as FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # succeed\nTest: strace  # observed less openat(2) of JARs\n\nChange-Id: I8eec85374bcf3135ec2be3f542bb82dd62fd010d\n"
    },
    {
      "commit": "4ab592315e766876d2ae96f28f05bab9ae46c160",
      "tree": "70434b91f12a6fe7d52581446ce879732ea07900",
      "parents": [
        "b10668cb6a34398eb720f9a6305ff9a51b3ebfd4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 10 12:24:02 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 15:08:21 2021 +0000"
      },
      "message": "Add --dirty-image-objects-fd and --updatable-bcp-packages-fd\n\nAlso, let odrefresh pass the files as FD to dex2oat.\n\nReadCommentedInputFromZip is removed since it\u0027s not used at all.\n\nBug: 187327262\nTest: odrefresh --force-compile\nChange-Id: Ie9247362eebaf46ef473f84effeb6e66830d077e\n"
    },
    {
      "commit": "f761f5887918375b842e4cc62ed9cbe7521c8444",
      "tree": "5cc23ca0310d55ac2f9a1dcd8959351f1376745b",
      "parents": [
        "890f2eb950930b9054bca6a77fd19f0e6c1a9c9b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 09 10:50:57 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 08:00:22 2021 +0000"
      },
      "message": "Revert^2 \"odrefresh: compilation backoff\"\n\nAdds backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nRelands commit 6859ffca5ffd15128459293046590488008221ff. The\nodsign_e2e tests required updating to remove the compilation log whose\npurpose is to backoff compilation attempts in the wild.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: atest odsign_e2e_tests\nChange-Id: Id41ee875cf1ca376f8e2ae05a43d0f6f74a9995f\n"
    },
    {
      "commit": "1e7faf706563593de8e9d47bb5ef366f68dce1a2",
      "tree": "4e65e4a59cc3cf95f82149f0fb417a4beba8e893",
      "parents": [
        "530552ac735c59a3ae44b16f751df265e820dad2"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Thu May 27 13:05:22 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Mon Jun 07 08:01:11 2021 +0000"
      },
      "message": "Use tinyxml2-based generated Apex Info List sources\n\nWe can reduce the size of odrefresh and runtime binaries by switching from\nlibxml2 to libtinyxml2. The dependency comes from the usage of the Apex Info\nList.\n\nSince the xsdc tool has been updated to have a new option, -t/--tinyxml, which\ngenerates the source files that use the libtinyxml2 API, we should use this\nfeature to gain the binary size advantage.\n\nSize of odrefresh when using libxml2: 444752\nSize of odrefresh when using libtinyxml2: 137724\n\nBug: 177209057\nTest: m\nChange-Id: I5c92d44f9ccbe94507a2dd8653814451ed10c645\n"
    },
    {
      "commit": "2835c29a338bbf3c85052cfa157561d0a42043f6",
      "tree": "a0e21b1d1e8b8d37ca8678d935f13feac4415c77",
      "parents": [
        "9faf7c77ac6974e34a644d75ceddd1d5f4268bfb"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 27 15:32:18 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 19:26:31 2021 +0000"
      },
      "message": "Pass classpath loader FDs to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile  # success\nTest: strace  # no more open for such case\nChange-Id: I3e4a892663420f725b83610b21537f9443d35657\n"
    },
    {
      "commit": "ae553e0e1b26d95006aa27df4675104bfb55d49d",
      "tree": "cff192c4ec487a77f6b2564870a9338fd8b0d371",
      "parents": [
        "bdf1737bd17132525bcfdc778663123b61e97fa3"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 12:39:49 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 27 15:47:13 2021 +0000"
      },
      "message": "Revert \"odrefresh: compilation backoff\"\n\nThis reverts commit 6859ffca5ffd15128459293046590488008221ff.\n\nReason for revert: Break presubmits (b/189316064)\nFix: 189316064\nBug: 187494247\n\nChange-Id: I146480c01e401e5e0de8f7e0dcf1dbc9d68850f4\n"
    },
    {
      "commit": "6859ffca5ffd15128459293046590488008221ff",
      "tree": "cb43cbcd94b20208ad704a9b094de170e7f837fc",
      "parents": [
        "d196f661fae8473dedfd4b544c6873144202bc78"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 17 15:09:06 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed May 26 08:42:34 2021 +0000"
      },
      "message": "odrefresh: compilation backoff\n\nAdd backoff logic to limit attempts odrefresh tries to compile. It\nwill always recompile if the APEX is updated or the input JARs change,\nbut if compilation fails for any reason then odrefresh backs off\nexponentially in days.\n\nBug: 187494247\nTest: atest art_odrefresh_tests\nTest: manual\nChange-Id: I11fe5549038680d03df663135ed087161428f392\n"
    },
    {
      "commit": "a9f80fcd2e2aca477eab7c0e9a6fce1f9537633a",
      "tree": "fedda7c1cd0fe5e0629de5606e2d5601b3d7ea05",
      "parents": [
        "3d05e61a420e499bfc9221445237c964e0a8aa63"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 17:28:26 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 21 16:06:45 2021 +0000"
      },
      "message": "odrefresh: pass profile file as fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile # succeeded; saw expected strace\nTest: atest art_odrefresh_tests\n\nChange-Id: Ie30f70ca9740b703d5ff5ac8efb3c14cdf48bce8\n"
    },
    {
      "commit": "1dc77abf87d303a8f4aa35148c57f7ab20832222",
      "tree": "61f4aae7377072ad2a1f24e62043b86a6f49954c",
      "parents": [
        "496b9b43c987a2d769d0c178ee1d88cd92da84d9"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon May 10 17:44:05 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed May 19 14:31:13 2021 +0000"
      },
      "message": "Disable most ART source modules when ART prebuilts are enabled.\n\nAfter libdexfile_external was merged into libdexfile, libdexfile is an\nAPEX stub when prebuilts are enabled, and that cannot be used to build\nlibart and all the other internal modules that depend on it.\n\nThis CL:\n\n- Changes art_defaults to disable native modules when building from\n  prebuilts. Some other modules that depends on them, like the\n  art-script sh_binary, also get disabled.\n- Consolidates the makefile sections that are disabled when building\n  from prebuilts so that only a small bit is still enabled then.\n- Temporarily removes the prebuilt for libctstiagent and activates its\n  source even when prebuilts are used, to work around sdk_version\n  problem (b/187288515).\n- Removes explicit \"enabled: true\" in a couple of places that would\n  override the inherited flag that lets us disable them in builds from\n  prebuilts.\n- Makes some Soong defaults available to libcore.\n\nTest: m checkbuild\nTest: art/build/build-art-module.sh --skip-apex\n      packages/modules/ArtPrebuilt/update-art-module-prebuilts.py \\\n        --local-dist out/dist/ --skip-apex\n      m SOONG_CONFIG_art_module_source_build\u003dfalse droid\n      m SOONG_CONFIG_art_module_source_build\u003dfalse checkbuild\nChange-Id: Ief60b933cd6273fc8b85fe7637b99ba1b78505f6\n"
    },
    {
      "commit": "826e6667c4d543c5c75a4a87d7cceb43f72078d0",
      "tree": "8ae4e9c93339c61fc1c30525a448b5c8ee61f77e",
      "parents": [
        "b3bc892bfae8267c3b82bbbd4263cb368f7a3be3"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 15:40:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Add --dex-fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile\n      (also, no longer seeing openat(2) BCP extension jars via strace)\nTest: atest art_odrefresh_tests\n\nChange-Id: Icac9ed522eae307e8e4391ba9cc59927c57c0d68\n"
    },
    {
      "commit": "8ba64c2143564063ff04fbd519e5695138ab3dd8",
      "tree": "193df95c82534e6675a299417756e5daf0d01745",
      "parents": [
        "0108f0d5c1e820d3a4bb0d90aad989b89e28784a"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon May 10 07:16:09 2021 -0700"
      },
      "message": "odrefresh: Avoid string copy\n\nGetFreeSpace() takes a const std::string\u0026, so we don\u0027t need to\nuse c_str().\n\nTest: TreeHugger\nChange-Id: I8d7fd3841481d7aee2caa59ce775c8fe380aeb3d\n"
    },
    {
      "commit": "816cab342a8db032b660018d4c933032a326b5c8",
      "tree": "dff85eeb5a05c1cca9cc281751489d138175ded0",
      "parents": [
        "263c39eaef07d56a34f853320dae76ab5693c377"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 14:14:42 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: log an error if updatable_bcp_packages file is missing\n\nCompilation of system_server JARs will fail if\nupdatable_bcp_packages file is missing.\n\nBug: 187494247\nTest: manual ART APEX update\nChange-Id: I9e8ead0d42ff889bdcb99042c5c83fd581be4f75\n"
    },
    {
      "commit": "263c39eaef07d56a34f853320dae76ab5693c377",
      "tree": "e33364abe27f58f0b508131844dfc7bfbdb24aeb",
      "parents": [
        "053e1383c721b0a1c4f87b2d391ab392c64caf84"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 07 10:17:14 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 10 08:39:02 2021 +0000"
      },
      "message": "odrefresh: add compilation space checks\n\nBug: 160683548\nTest: manual\nChange-Id: Ic640da41855477bf3b6524e82efb15f384127d9e\n"
    },
    {
      "commit": "17c50188958aded77367ae9c9ad649a90ff26d6c",
      "tree": "b79da16ff288ce22edb133b03cb2c6a841d4c26e",
      "parents": [
        "06b173cd2e6663eda0e3d3af23ad153b26e88877"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 05 08:28:05 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 05 10:40:02 2021 +0000"
      },
      "message": "Revert \"odrefresh: re-enable OdrFsUtilsTest.GetUsedSpace\"\n\nThis reverts commit 59d29bfeda798c9621515f59707af745d431763c.\n\nBug: 186730164\nBug: 187252651\n\nReason for revert: Fails on ART bots\n\nChange-Id: Ib516da77a9e6d16c32405d4e6703bf10d63dc0f6\n"
    },
    {
      "commit": "59d29bfeda798c9621515f59707af745d431763c",
      "tree": "5885c4db89f120fcd5e46586691ee18e548e5cbb",
      "parents": [
        "680d768b1aec1daf7a8faeb01d04e164afdc07bc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 04 16:04:10 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 04 18:54:55 2021 +0000"
      },
      "message": "odrefresh: re-enable OdrFsUtilsTest.GetUsedSpace\n\nUse stat() in test for size in blocks rather than rounding up the\nwritten file size to integral number of 512-byte blocks.\n\nBug: 186730164\nTest: atest art_odrefresh_tests\nTest: atest --host art_odrefresh_tests\nChange-Id: Ic0b3421451f9f8049b30d11ec73761e6871034b8\n"
    },
    {
      "commit": "c86345c61fa4d74471a04a682284ce29354c329b",
      "tree": "9cc3324b08793c679401a838901963f2db46db6f",
      "parents": [
        "2397edd0d3e62fb463bf73e4ed7eacebf7daa02f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 29 12:31:39 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 29 12:31:39 2021 +0100"
      },
      "message": "odrefresh: temporarily disable OdrFsUtilsTest.GetUsedSpace\n\nTest is failing on the LUCI bots.\n\nBug: 186730164\nTest: atest --host art_odrefresh_tests\nChange-Id: Ia19533ca9256053bbcac577d4c16db2048730175\n"
    },
    {
      "commit": "c3a152e7b93fc80b0871edaabaed5227559a52e7",
      "tree": "37e751224fc981b0c61535d47e791c33290eafb2",
      "parents": [
        "e0d677dfda62787788caad0791aa25ad794b7326"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 15:40:52 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 28 17:30:35 2021 +0000"
      },
      "message": "odr_fs_utils_test: drop bogus assertion\n\nThe assertion quite reasonably failed on an angler.\n\nBug: 169925964\nTest: atest art_odrefresh_tests\nChange-Id: I97a9dac27dc92ff8bfa71aff007a4e761209c88a\n"
    },
    {
      "commit": "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce",
      "tree": "34fbac3de4f15a2afcad9f428cca93e2f3bea770",
      "parents": [
        "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Apr 26 06:31:28 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 28 13:00:29 2021 +0000"
      },
      "message": "odrefresh: Avoid a couple string copies\n\nWith the new utility versions of these functions changing their\narguments from \"const char *\" to \"const std::string\u0026\", we want\nto avoid using c_str(), so we don\u0027t end up making an extra\ncopy of the string.\n\nBug: 160683548\nTest: TreeHugger\n\n(cherry picked from commit 648fefa36c37ec40060b975b893ccc57b7f6ef89)\n\nMerged-In: If547052e8292bb4d9b26ceaa27b4e5e5ca627ea3\nChange-Id: Id38387b40b0f7a4f29402fc05e5affab835c7d69\n"
    },
    {
      "commit": "baf563dc6f17075583cc5dbffcf9a27e28d5ed17",
      "tree": "00ab52dc55f84a7cd1867d81262deb043e8c7e11",
      "parents": [
        "957fb15e70533874f1e60da2ef89fdd0f1469a6d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 07:53:54 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: Add support for uploading stats\n\nAdds support for loading odrefresh metrics saved to file and uploading\nthem when system_server starts.\n\nBug: 169925964\nTest: manual module update with instrumentation showing statsd got data\n\n(cherry picked from commit 55ca8ab5216e4c20638f34b44c6bc53866b991ce)\nMerged-In: Iccc6ede1583235d09dbfd42996eb4ba118b700f8\nChange-Id: Iad588f05622864b37d40333d081bd89fbf76051c\n"
    },
    {
      "commit": "957fb15e70533874f1e60da2ef89fdd0f1469a6d",
      "tree": "b288f41d4a075a3ddacbd898b240c07a2eca36f5",
      "parents": [
        "f96c9163a7dc68d750234b66cbada0b2c70c28bf"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 07:52:15 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: add metrics support\n\nAdds metrics to stages of odrefresh.\n\nBug: 169925964\nTest: atest art_odrefresh_tests\nTest: atest --host art_odrefresh_tests\n\n(cherry picked from commit 3d877f082636f26ad57c92e3aae1525faacff51b)\nMerged-In: I768ce5f122b0c1b839f4cdf55aa6dafb68708eb2\nChange-Id: I8355fd38c28e41b04f0ea52384061b686cb1e362\n"
    },
    {
      "commit": "f96c9163a7dc68d750234b66cbada0b2c70c28bf",
      "tree": "d6c8f98643e2280f7c52b534d7e00ca299e3d0eb",
      "parents": [
        "c182a17abb1857b6edaa7fb1fcda00595051775d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 07 10:43:01 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: move file-system utilities into odr_fs_utils.{h,cc}\n\nPreparation for metrics support which will use the same functionality.\n\nAdd tests for odrefresh file-system utilities too.\n\nBug: 160683548\nTest: atest art_odrefresh_tests\n\n(cherry picked from commit dda82d2ed4d073866f3c3da3d88ad178261c62f4)\nMerged-In: I1da2f477f51b1d445bbee3b22a9c1fb268d25e80\nChange-Id: If4b8cfdb9c68167aae07268b29140e1162af2293\n"
    },
    {
      "commit": "4b3f4d33fb9edcc35af39ec283b915cd8fac24f2",
      "tree": "aebed8d1f1b44033b2599dc89730e7eb81bc3f10",
      "parents": [
        "e1d170683b7f61f0c86c45b110889a999725c7a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:17:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 21 08:56:28 2021 +0000"
      },
      "message": "Limit odrefresh progress percent to 90.\n\nThe boot animation will handle the finish to a 100.\n\nTest: boot after an ART update\nChange-Id: I5e7691ebcc506ba971a28b546c934aab818d522f\n"
    },
    {
      "commit": "5db2fd0e535b056ccb11e137f195b311627b48ff",
      "tree": "e998887ca55772dc43a0238dff373758472e646c",
      "parents": [
        "40e53f8c4ce22196b817dddb5aa795d8bc63288a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 15:07:56 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 08:11:18 2021 +0000"
      },
      "message": "odrefresh: update progress bar when compiling.\n\nTest: update ART, visually see progress bar\nBug: 160683548\nChange-Id: Id5edb2655434d3f04fd6952f8ce892e01d2bbbb0\n"
    },
    {
      "commit": "d3e9ff326a511ef48ea85afd2de9c292aa6ea20b",
      "tree": "da924af40549dca5fb679173036049e70ca395e9",
      "parents": [
        "4531afd0d813fdfa2bb115522bc5918477c03dc2"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 16 00:44:25 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Apr 12 16:36:03 2021 +0000"
      },
      "message": "Merge libdexfile_external into libdexfile (reland 2).\n\nTo reduce the number of DSO\u0027s. libdexfile_external only adds a few\nsmall functions on top of libdexfile, and it\u0027s still only those\nfunctions that are available in the APEX stubs.\n\nAlso rename libdexfile_external_static to libdexfile_static, for\nconsistency.\n\nSince libdexfile now has stubs, we need to add test_for properties to\navoid linking against the stubs in tests.\n\nThis relands https://r.android.com/1666119 that got submitted out of\norder from https://r.android.com/1664026 - prerequisite changes now\nsubmitted with https://r.android.com/1671709.\n\nTest: Flash and boot with userdebug and eng to try both release and\n  debug modules.\nTest: art/tools/buildbot-build.sh {--target,--host}\nTest: art/build/apex/runtests.sh\nTest: mmm art\nBug: 143978909\nChange-Id: I6de99052d6d8a9d01d748baabbbcecfe1f4509dc\n"
    },
    {
      "commit": "669756df2f4aea67d00e7b3598b2d91f61537141",
      "tree": "86d7ac86af3ee50c3a1f3163f1a80de396279094",
      "parents": [
        "14d9155cc5ac661961aa6718eaf2bfcc704d3c98"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Apr 09 11:35:11 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Apr 09 11:35:11 2021 +0000"
      },
      "message": "Revert \"Merge libdexfile_external into libdexfile (reland).\"\n\nRevert \"Rename libdexfile_external_static to libdexfile_static (...\"\n\nRevert \"Rename libdexfile_external_static to libdexfile_static (...\"\n\nRevert submission 1666119-libdexfile-noext-2\n\nReason for revert: broken build 7270939 on aosp-master on full-eng\nReverted Changes:\nI582e49ae7:Merge libdexfile_external into libdexfile (reland)...\nIaa6a90f41:Rename libdexfile_external_static to libdexfile_st...\nI4315189b2:libdexfile_external is replaced by libdexfile (rel...\nIa065119c2:Rename libdexfile_external_static to libdexfile_st...\n\nBug: 184929782\nChange-Id: Ie69a73f4f0f745ab988e627c568f4ccb83fd1c71\nTest: forrest build for aosp-master on full-eng\n"
    },
    {
      "commit": "14d9155cc5ac661961aa6718eaf2bfcc704d3c98",
      "tree": "413aa4746ef3a6cbcbdbf8d75387e85be87f6460",
      "parents": [
        "a191bbfd53a0c7df9b5639bfbefeb8b531c833db"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 16 00:44:25 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Apr 09 09:18:30 2021 +0000"
      },
      "message": "Merge libdexfile_external into libdexfile (reland).\n\nTo reduce the number of DSO\u0027s. libdexfile_external only adds a few\nsmall functions on top of libdexfile, and it\u0027s still only those\nfunctions that are available in the APEX stubs.\n\nAlso rename libdexfile_external_static to libdexfile_static, for\nconsistency.\n\nSince libdexfile now has stubs, we need to add test_for properties to\navoid linking against the stubs in tests.\n\nThis relands https://r.android.com/1643424 with leaving out\ndex_file_ext.cc on Windows (cf. build issue b/184239856): mapped_file.h\nbrings in windows.h in Windows builds, which has several defines that\nare incompatible with dex internals (e.g. CONST).\n\nTest: Flash and boot with userdebug and eng to try both release and\n  debug modules.\nTest: art/tools/buildbot-build.sh {--target,--host}\nTest: art/build/apex/runtests.sh\nTest: mmm art\nTest: m TARGET_PRODUCT\u003dfull TARGET_BUILD_VARIANT\u003deng checkbuild\nBug: 143978909\nChange-Id: I582e49ae797744837849db056cef2fbeacc0681e\n"
    },
    {
      "commit": "84ebf3ca3a71cbde2607d30581c8bed7a24277ab",
      "tree": "f3834f2c8b2e4c9b2544426316bef1c87a6c9d74",
      "parents": [
        "fcbbdd4f364969afac7fc5862d0899460fba3e33"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:03:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: ensure dalvik-cache exists for cache-info.xml file\n\nEnsure ART module apexdata/dalvik-cache directory exist before writing\ncache-info.xml.\n\nMinor comment clarifications.\n\nBug: 160683548\nTest: manual, observe updated module only recompiles on initial reboot.\nChange-Id: I51e5f0bc35bc6de5ae3bfb4ce7a6ab5e0dd4fe29\n"
    },
    {
      "commit": "fcbbdd4f364969afac7fc5862d0899460fba3e33",
      "tree": "ac3642c448ccf8998c350fd2be2c8e07d7cbd4e3",
      "parents": [
        "3b2629b90106b027ed5bcb7a9c1bf98be22b5d10"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 22 17:02:05 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 23 11:21:19 2021 +0000"
      },
      "message": "odrefresh: make --compile single pass\n\nEnable single pass use of odrefresh. Using --compile now checks\nartifacts (performing any necessary cleaning) and compiles them.\n\nBug: 160683548\nTest: manual\nChange-Id: I6293a2d0709e11e475bf20e1b7971e7fbf14b779\n"
    },
    {
      "commit": "3407fb2590756bd571020e175e607c8b8c988ede",
      "tree": "dd3059ff51b2a568cd41cc36ff52ada05b359647",
      "parents": [
        "c4b9ae96c20f1c86695c1774ed77cd0acac1c543"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 14:40:51 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 19 13:01:52 2021 +0000"
      },
      "message": "odrefresh: failure handling improvements\n\nAdd ExitCode::kCleanupFailed to report issues when removing files and\ndirectories.\n\nAdd WARN_UNUSED to important methods to ensure their return values are\nchecked.\n\nRemove LOG(FATAL) use in target code paths.\n\nRemove TEMP_FAILURE_RETRY for calls that are not interruptable\naccording to their man page documentation (fchmod, unlink).\n\nBug: 160683548\nTest: manual\nChange-Id: I9681c83d048f4dd7988e9ff7ec1caf25ed02fbec\n"
    },
    {
      "commit": "35363cf978d4d0b452cb8849041ff7dd6a6718bc",
      "tree": "7e478f10afc9cb582687d1f061f329e5a6a29be7",
      "parents": [
        "c9f4a3762b6c59714393aeca3662d96117e3b72f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 18 14:23:13 2021 +0000"
      },
      "message": "odrefresh: clean error message if env var missing\n\nMissing DEX2OATBOOTCLASSPATH and SYSTEMSERVERCLASSPATH environment\nvariables are non-recoverable, but fail with a clear error message.\n\nTest: TH\nChange-Id: I3c493eb75b62030c2b87f6a9a6215e9d0135caab\n"
    },
    {
      "commit": "a2e2eb187e0355314e59608dc204f68571e14069",
      "tree": "ee93a77cfbc5c756177710a9654ca5d47895b8b5",
      "parents": [
        "7c5e5c61e7c319ec88dc037f30b2ab357ec4db9a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 16 18:05:42 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Mar 17 09:26:09 2021 +0000"
      },
      "message": "odrefresh: update flags to dex2oat\n\nUpdates following performance investigation.\n\nAdds: --no-abort-on-soft-verifier-error --force-determinism\nChanges: --image-format\u003dlz4hc to --image-format\u003dlz4\nRemoves: --generate-debug-info\n\nBug: 160683548\nBug: 181943478\nTest: adb install com.android.art.apex \u0026\u0026 adb reboot \u0026\u0026 check artifacts\nChange-Id: I79f171760c25858c629fb07004246a5bd5eb4874\n"
    },
    {
      "commit": "947a8504f0ccce5e8adff2a2c96c33b0aa93c8fc",
      "tree": "ae0042bab1333da6864594e23c6dc41fc5c224a4",
      "parents": [
        "3f64940d7c6ce4d3f06ea5dbe195c244ca7a8fbc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 08 15:40:09 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 12 17:27:34 2021 +0000"
      },
      "message": "odrefresh: check artifacts using cache and filesystem metadata\n\nRenables checking of artifacts when invoked with \"--check\".\n\nReplaces the former \"--check\" code with a lightweight method based on\nartifact cache metadata and filesystem metadata. The worst case checks\ntake 60ms on aosp_blueline-userdebug.\n\nThe old \"--check code\" is now invoked with \"--verify\". This remains\nfor testing purposes and as an option for post-compilation checking.\n\nBug: 160683548\nBug: 181689036\nTest: manual module installs, reboots, deleting artifacts.\n\nChange-Id: I2a75e0fde032a8e3a29d105d8b52e1ede6cb764d\n"
    },
    {
      "commit": "8059bdb5ab41ef0beb18eabf00fee877292d8a33",
      "tree": "ad15674ff4a9bcc1b0e49c32d20b0b664bd0fb29",
      "parents": [
        "eb7882bd913fe3224bb144b943816376753f491b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 05 12:07:14 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 17:44:41 2021 +0000"
      },
      "message": "odrefresh: temporarily disable check\n\nTemporary measure for boot time regression whilst an alternative\napproach is underway.\n\nBug: 160683548\nBug: 181689036\nTest: manual\nChange-Id: I0e7d9df5de056f89e489fe8f075f2e1355f8da36\n"
    },
    {
      "commit": "8f19867228345de08e8c224a3743c3f24926f834",
      "tree": "d4980670134504a92eb0a85649b9bfc09e26a089",
      "parents": [
        "e5276da1c7179e768ef25d2a65702816261cab59"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 27 22:23:18 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 02 12:03:20 2021 +0000"
      },
      "message": "odrefresh: fixes for launching from init\n\nWhen launched from init, the umask() of odrefresh is 0077 which means\nonly the owner can read files and directories created by\nodrefresh. This prevents loading system_server compilation artifacts.\n\nThis change unsets the umask when creating installation directories\nand files. It also ensures they have the expected permissions.\n\nFix: 181397437\nTest: trigger recompilation, observe system_server odexes mapped\nChange-Id: I7086421d4a2281c563dc1fdb3ec74e31da9da978\n"
    },
    {
      "commit": "9150de6901996679c0ea6b34e74c8ddcc718d309",
      "tree": "496386b00b2a1b0b3bfbc36b09cf8083e3922f9b",
      "parents": [
        "8da26145fba859a5aba047f6280568565ffb8bfc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 26 03:22:24 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 02 07:18:14 2021 +0000"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to art\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  adbconnection/Android.bp\n  benchmark/Android.bp\n  build/Android.bp\n  build/Android.cpplint.mk\n  build/Android.gtest.mk\n  build/apex/Android.bp\n  build/boot/Android.bp\n  build/sdk/Android.bp\n  cmdline/Android.bp\n  compiler/Android.bp\n  dalvikvm/Android.bp\n  dex2oat/Android.bp\n  dexdump/Android.bp\n  dexlayout/Android.bp\n  dexlist/Android.bp\n  dexoptanalyzer/Android.bp\n  disassembler/Android.bp\n  dt_fd_forward/export/Android.bp\n  imgdiag/Android.bp\n  libartbase/Android.bp\n  libartpalette/Android.bp\n  libartservice/Android.bp\n  libartservice/tests/Android.bp\n  libarttools/Android.bp\n  libdexfile/Android.bp\n  libelffile/Android.bp\n  libnativebridge/Android.bp\n  libnativebridge/tests/Android.bp\n  libnativeloader/Android.bp\n  libnativeloader/test/Android.bp\n  libnativeloader/test/Android.mk\n  libprofile/Android.bp\n  oatdump/Android.bp\n  odrefresh/Android.bp\n  perfetto_hprof/Android.bp\n  profman/Android.bp\n  runtime/Android.bp\n  simulator/Android.bp\n  test/001-HelloWorld/Android.bp\n  test/001-Main/Android.bp\n  test/002-sleep/Android.bp\n  test/004-InterfaceTest/Android.bp\n  test/004-SignalTest/Android.bp\n  test/004-UnsafeTest/Android.bp\n  test/004-checker-UnsafeTest18/Android.bp\n  test/006-args/Android.bp\n  test/007-count10/Android.bp\n  test/009-instanceof/Android.bp\n  test/010-instance/Android.bp\n  test/011-array-copy/Android.bp\n  test/012-math/Android.bp\n  test/013-math2/Android.bp\n  test/014-math3/Android.bp\n  test/015-switch/Android.bp\n  test/016-intern/Android.bp\n  test/017-float/Android.bp\n  test/018-stack-overflow/Android.bp\n  test/019-wrong-array-type/Android.bp\n  test/020-string/Android.bp\n  test/021-string2/Android.bp\n  test/022-interface/Android.bp\n  test/025-access-controller/Android.bp\n  test/026-access/Android.bp\n  test/027-arithmetic/Android.bp\n  test/028-array-write/Android.bp\n  test/029-assert/Android.bp\n  test/030-bad-finalizer/Android.bp\n  test/033-class-init-deadlock/Android.bp\n  test/034-call-null/Android.bp\n  test/035-enum/Android.bp\n  test/036-finalizer/Android.bp\n  test/037-inherit/Android.bp\n  test/038-inner-null/Android.bp\n  test/039-join-main/Android.bp\n  test/040-miranda/Android.bp\n  test/041-narrowing/Android.bp\n  test/043-privates/Android.bp\n  test/044-proxy/Android.bp\n  test/045-reflect-array/Android.bp\n  test/046-reflect/Android.bp\n  test/047-returns/Android.bp\n  test/048-reflect-v8/Android.bp\n  test/049-show-object/Android.bp\n  test/050-sync-test/Android.bp\n  test/051-thread/Android.bp\n  test/052-verifier-fun/Android.bp\n  test/053-wait-some/Android.bp\n  test/054-uncaught/Android.bp\n  test/055-enum-performance/Android.bp\n  test/058-enum-order/Android.bp\n  test/059-finalizer-throw/Android.bp\n  test/061-out-of-memory/Android.bp\n  test/062-character-encodings/Android.bp\n  test/063-process-manager/Android.bp\n  test/067-preemptive-unpark/Android.bp\n  test/070-nio-buffer/Android.bp\n  test/072-precise-gc/Android.bp\n  test/072-reachability-fence/Android.bp\n  test/074-gc-thrash/Android.bp\n  test/076-boolean-put/Android.bp\n  test/078-polymorphic-virtual/Android.bp\n  test/079-phantom/Android.bp\n  test/080-oom-fragmentation/Android.bp\n  test/080-oom-throw-with-finalizer/Android.bp\n  test/080-oom-throw/Android.bp\n  test/081-hot-exceptions/Android.bp\n  test/082-inline-execute/Android.bp\n  test/083-compiler-regressions/Android.bp\n  test/084-class-init/Android.bp\n  test/086-null-super/Android.bp\n  test/087-gc-after-link/Android.bp\n  test/090-loop-formation/Android.bp\n  test/092-locale/Android.bp\n  test/093-serialization/Android.bp\n  test/094-pattern/Android.bp\n  test/095-switch-MAX_INT/Android.bp\n  test/096-array-copy-concurrent-gc/Android.bp\n  test/098-ddmc/Android.bp\n  test/099-vmdebug/Android.bp\n  test/100-reflect2/Android.bp\n  test/1004-checker-volatile-ref-load/Android.bp\n  test/101-fibonacci/Android.bp\n  test/102-concurrent-gc/Android.bp\n  test/103-string-append/Android.bp\n  test/104-growth-limit/Android.bp\n  test/105-invoke/Android.bp\n  test/106-exceptions2/Android.bp\n  test/107-int-math2/Android.bp\n  test/108-check-cast/Android.bp\n  test/109-suspend-check/Android.bp\n  test/110-field-access/Android.bp\n  test/112-double-math/Android.bp\n  test/114-ParallelGC/Android.bp\n  test/115-native-bridge/Android.bp\n  test/116-nodex2oat/Android.bp\n  test/120-hashcode/Android.bp\n  test/121-simple-suspend-check/Android.bp\n  test/122-npe/Android.bp\n  test/123-compiler-regressions-mt/Android.bp\n  test/123-inline-execute2/Android.bp\n  test/125-gc-and-classloading/Android.bp\n  test/128-reg-spill-on-implicit-nullcheck/Android.bp\n  test/129-ThreadGetId/Android.bp\n  test/132-daemon-locks-shutdown/Android.bp\n  test/133-static-invoke-super/Android.bp\n  test/1336-short-finalizer-timeout/Android.bp\n  test/1337-gc-coverage/Android.bp\n  test/1339-dead-reference-safe/Android.bp\n  test/136-daemon-jni-shutdown/Android.bp\n  test/139-register-natives/Android.bp\n  test/140-dce-regression/Android.bp\n  test/140-field-packing/Android.bp\n  test/143-string-value/Android.bp\n  test/144-static-field-sigquit/Android.bp\n  test/148-multithread-gc-annotations/Android.bp\n  test/149-suspend-all-stress/Android.bp\n  test/150-loadlibrary/Android.bp\n  test/151-OpenFileLimit/Android.bp\n  test/152-dead-large-object/Android.bp\n  test/153-reference-stress/Android.bp\n  test/154-gc-loop/Android.bp\n  test/156-register-dex-file-multi-loader/Android.bp\n  test/158-app-image-class-table/Android.bp\n  test/159-app-image-fields/Android.bp\n  test/163-app-image-methods/Android.bp\n  test/165-lock-owner-proxy/Android.bp\n  test/168-vmstack-annotated/Android.bp\n  test/169-threadgroup-jni/Android.bp\n  test/170-interface-init/Android.bp\n  test/172-app-image-twice/Android.bp\n  test/174-escaping-instance-of-bad-class/Android.bp\n  test/175-alloc-big-bignums/Android.bp\n  test/176-app-image-string/Android.bp\n  test/177-visibly-initialized-deadlock/Android.bp\n  test/178-app-image-native-method/Android.bp\n  test/179-nonvirtual-jni/Android.bp\n  test/1900-track-alloc/Android.bp\n  test/1901-get-bytecodes/Android.bp\n  test/1902-suspend/Android.bp\n  test/1903-suspend-self/Android.bp\n  test/1904-double-suspend/Android.bp\n  test/1905-suspend-native/Android.bp\n  test/1906-suspend-list-me-first/Android.bp\n  test/1907-suspend-list-self-twice/Android.bp\n  test/1908-suspend-native-resume-self/Android.bp\n  test/1909-per-agent-tls/Android.bp\n  test/1910-transform-with-default/Android.bp\n  test/1911-get-local-var-table/Android.bp\n  test/1912-get-set-local-primitive/Android.bp\n  test/1913-get-set-local-objects/Android.bp\n  test/1914-get-local-instance/Android.bp\n  test/1915-get-set-local-current-thread/Android.bp\n  test/1916-get-set-current-frame/Android.bp\n  test/1917-get-stack-frame/Android.bp\n  test/1919-vminit-thread-start-timing/Android.bp\n  test/1920-suspend-native-monitor/Android.bp\n  test/1921-suspend-native-recursive-monitor/Android.bp\n  test/1922-owned-monitors-info/Android.bp\n  test/1923-frame-pop/Android.bp\n  test/1924-frame-pop-toggle/Android.bp\n  test/1925-self-frame-pop/Android.bp\n  test/1926-missed-frame-pop/Android.bp\n  test/1927-exception-event/Android.bp\n  test/1928-exception-event-exception/Android.bp\n  test/1930-monitor-info/Android.bp\n  test/1931-monitor-events/Android.bp\n  test/1932-monitor-events-misc/Android.bp\n  test/1933-monitor-current-contended/Android.bp\n  test/1934-jvmti-signal-thread/Android.bp\n  test/1935-get-set-current-frame-jit/Android.bp\n  test/1936-thread-end-events/Android.bp\n  test/1937-transform-soft-fail/Android.bp\n  test/1938-transform-abstract-single-impl/Android.bp\n  test/1939-proxy-frames/Android.bp\n  test/1941-dispose-stress/Android.bp\n  test/1942-suspend-raw-monitor-exit/Android.bp\n  test/1943-suspend-raw-monitor-wait/Android.bp\n  test/1945-proxy-method-arguments/Android.bp\n  test/1947-breakpoint-redefine-deopt/Android.bp\n  test/1949-short-dex-file/Android.bp\n  test/1951-monitor-enter-no-suspend/Android.bp\n  test/1953-pop-frame/Android.bp\n  test/1954-pop-frame-jit/Android.bp\n  test/1955-pop-frame-jit-called/Android.bp\n  test/1956-pop-frame-jit-calling/Android.bp\n  test/1957-error-ext/Android.bp\n  test/1958-transform-try-jit/Android.bp\n  test/1959-redefine-object-instrument/Android.bp\n  test/1960-checker-bounds-codegen/Android.bp\n  test/1960-obsolete-jit-multithread-native/Android.bp\n  test/1961-checker-loop-vectorizer/Android.bp\n  test/1961-obsolete-jit-multithread/Android.bp\n  test/1962-multi-thread-events/Android.bp\n  test/1963-add-to-dex-classloader-in-memory/Android.bp\n  test/1967-get-set-local-bad-slot/Android.bp\n  test/1968-force-early-return/Android.bp\n  test/1969-force-early-return-void/Android.bp\n  test/1970-force-early-return-long/Android.bp\n  test/1971-multi-force-early-return/Android.bp\n  test/1972-jni-id-swap-indices/Android.bp\n  test/1973-jni-id-swap-pointer/Android.bp\n  test/1974-resize-array/Android.bp\n  test/1975-hello-structural-transformation/Android.bp\n  test/1976-hello-structural-static-methods/Android.bp\n  test/1977-hello-structural-obsolescence/Android.bp\n  test/1978-regular-obsolete-then-structural-obsolescence/Android.bp\n  test/1979-threaded-structural-transformation/Android.bp\n  test/1980-obsolete-object-cleared/Android.bp\n  test/1982-no-virtuals-structural-redefinition/Android.bp\n  test/1984-structural-redefine-field-trace/Android.bp\n  test/1985-structural-redefine-stack-scope/Android.bp\n  test/1986-structural-redefine-multi-thread-stack-scope/Android.bp\n  test/1987-structural-redefine-recursive-stack-scope/Android.bp\n  test/1988-multi-structural-redefine/Android.bp\n  test/1989-transform-bad-monitor/Android.bp\n  test/1990-structural-bad-verify/Android.bp\n  test/1991-hello-structural-retransform/Android.bp\n  test/1992-retransform-no-such-field/Android.bp\n  test/1993-fallback-non-structural/Android.bp\n  test/1994-final-virtual-structural/Android.bp\n  test/1995-final-virtual-structural-multithread/Android.bp\n  test/1996-final-override-virtual-structural/Android.bp\n  test/1997-structural-shadow-method/Android.bp\n  test/1998-structural-shadow-field/Android.bp\n  test/1999-virtual-structural/Android.bp\n  test/2003-double-virtual-structural/Android.bp\n  test/2004-double-virtual-structural-abstract/Android.bp\n  test/2005-pause-all-redefine-multithreaded/Android.bp\n  test/2008-redefine-then-old-reflect-field/Android.bp\n  test/201-built-in-except-detail-messages/Android.bp\n  test/2011-stack-walk-concurrent-instrument/Android.bp\n  test/2019-constantcalculationsinking/Android.bp\n  test/202-thread-oome/Android.bp\n  test/2020-InvokeVirtual-Inlining/Android.bp\n  test/2021-InvokeStatic-Inlining/Android.bp\n  test/2022-Invariantloops/Android.bp\n  test/2023-InvariantLoops_typecast/Android.bp\n  test/2024-InvariantNegativeLoop/Android.bp\n  test/2025-ChangedArrayValue/Android.bp\n  test/2026-DifferentMemoryLSCouples/Android.bp\n  test/2027-TwiceTheSameMemoryCouple/Android.bp\n  test/2028-MultiBackward/Android.bp\n  test/2029-contended-monitors/Android.bp\n  test/203-multi-checkpoint/Android.bp\n  test/2030-long-running-child/Android.bp\n  test/2031-zygote-compiled-frame-deopt/Android.bp\n  test/2033-shutdown-mechanics/Android.bp\n  test/2036-jni-filechannel/Android.bp\n  test/2037-thread-name-inherit/Android.bp\n  test/2231-checker-heap-poisoning/Android.bp\n  test/2232-write-metrics-to-log/Android.bp\n  test/300-package-override/Android.bp\n  test/301-abstract-protected/Android.bp\n  test/302-float-conversion/Android.bp\n  test/304-method-tracing/Android.bp\n  test/305-other-fault-handler/Android.bp\n  test/401-optimizing-compiler/Android.bp\n  test/402-optimizing-control-flow/Android.bp\n  test/403-optimizing-long/Android.bp\n  test/404-optimizing-allocator/Android.bp\n  test/405-optimizing-long-allocator/Android.bp\n  test/406-fields/Android.bp\n  test/407-arrays/Android.bp\n  test/408-move-bug/Android.bp\n  test/409-materialized-condition/Android.bp\n  test/410-floats/Android.bp\n  test/411-checker-hdiv-hrem-const/Android.bp\n  test/411-checker-hdiv-hrem-pow2/Android.bp\n  test/411-checker-instruct-simplifier-hrem/Android.bp\n  test/411-optimizing-arith/Android.bp\n  test/413-regalloc-regression/Android.bp\n  test/414-static-fields/Android.bp\n  test/418-const-string/Android.bp\n  test/419-long-parameter/Android.bp\n  test/420-const-class/Android.bp\n  test/421-exceptions/Android.bp\n  test/421-large-frame/Android.bp\n  test/422-instanceof/Android.bp\n  test/422-type-conversion/Android.bp\n  test/423-invoke-interface/Android.bp\n  test/424-checkcast/Android.bp\n  test/426-monitor/Android.bp\n  test/427-bitwise/Android.bp\n  test/427-bounds/Android.bp\n  test/429-ssa-builder/Android.bp\n  test/430-live-register-slow-path/Android.bp\n  test/433-gvn/Android.bp\n  test/434-shifter-operand/Android.bp\n  test/435-try-finally-without-catch/Android.bp\n  test/436-rem-float/Android.bp\n  test/436-shift-constant/Android.bp\n  test/437-inline/Android.bp\n  test/438-volatile/Android.bp\n  test/439-npe/Android.bp\n  test/439-swap-double/Android.bp\n  test/440-stmp/Android.bp\n  test/441-checker-inliner/Android.bp\n  test/443-not-bool-inline/Android.bp\n  test/444-checker-nce/Android.bp\n  test/445-checker-licm/Android.bp\n  test/446-checker-inliner2/Android.bp\n  test/447-checker-inliner3/Android.bp\n  test/449-checker-bce-rem/Android.bp\n  test/449-checker-bce/Android.bp\n  test/450-checker-types/Android.bp\n  test/451-regression-add-float/Android.bp\n  test/451-spill-splot/Android.bp\n  test/454-get-vreg/Android.bp\n  test/455-checker-gvn/Android.bp\n  test/456-baseline-array-set/Android.bp\n  test/458-long-to-fpu/Android.bp\n  test/461-get-reference-vreg/Android.bp\n  test/464-checker-inline-sharpen-calls/Android.bp\n  test/465-checker-clinit-gvn/Android.bp\n  test/466-get-live-vreg/Android.bp\n  test/469-condition-materialization/Android.bp\n  test/470-huge-method/Android.bp\n  test/471-deopt-environment/Android.bp\n  test/472-type-propagation/Android.bp\n  test/473-checker-inliner-constants/Android.bp\n  test/473-remove-dead-block/Android.bp\n  test/474-checker-boolean-input/Android.bp\n  test/474-fp-sub-neg/Android.bp\n  test/475-simplify-mul-zero/Android.bp\n  test/476-checker-ctor-fence-redun-elim/Android.bp\n  test/476-checker-ctor-memory-barrier/Android.bp\n  test/476-clinit-inline-static-invoke/Android.bp\n  test/477-checker-bound-type/Android.bp\n  test/477-long-2-float-convers-precision/Android.bp\n  test/478-checker-clinit-check-pruning/Android.bp\n  test/478-checker-inline-noreturn/Android.bp\n  test/478-checker-inliner-nested-loop/Android.bp\n  test/479-regression-implicit-null-check/Android.bp\n  test/480-checker-dead-blocks/Android.bp\n  test/481-regression-phi-cond/Android.bp\n  test/482-checker-loop-back-edge-use/Android.bp\n  test/483-dce-block/Android.bp\n  test/485-checker-dce-switch/Android.bp\n  test/486-checker-must-do-null-check/Android.bp\n  test/487-checker-inline-calls/Android.bp\n  test/488-checker-inline-recursive-calls/Android.bp\n  test/489-current-method-regression/Android.bp\n  test/490-checker-inline/Android.bp\n  test/491-current-method/Android.bp\n  test/492-checker-inline-invoke-interface/Android.bp\n  test/493-checker-inline-invoke-interface/Android.bp\n  test/494-checker-instanceof-tests/Android.bp\n  test/495-checker-checkcast-tests/Android.bp\n  test/496-checker-inlining-class-loader/Android.bp\n  test/497-inlining-and-class-loader/Android.bp\n  test/499-bce-phi-array-length/Android.bp\n  test/500-instanceof/Android.bp\n  test/505-simplifier-type-propagation/Android.bp\n  test/507-boolean-test/Android.bp\n  test/507-referrer/Android.bp\n  test/508-checker-disassembly/Android.bp\n  test/508-referrer-method/Android.bp\n  test/513-array-deopt/Android.bp\n  test/514-shifts/Android.bp\n  test/519-bound-load-class/Android.bp\n  test/521-checker-array-set-null/Android.bp\n  test/521-regression-integer-field-set/Android.bp\n  test/524-boolean-simplifier-regression/Android.bp\n  test/525-checker-arrays-fields1/Android.bp\n  test/525-checker-arrays-fields2/Android.bp\n  test/526-checker-caller-callee-regs/Android.bp\n  test/526-long-regalloc/Android.bp\n  test/527-checker-array-access-simd/Android.bp\n  test/527-checker-array-access-split/Android.bp\n  test/528-long-hint/Android.bp\n  test/529-long-split/Android.bp\n  test/530-checker-loops1/Android.bp\n  test/530-checker-loops2/Android.bp\n  test/530-checker-loops3/Android.bp\n  test/530-checker-loops4/Android.bp\n  test/530-checker-loops5/Android.bp\n  test/530-checker-lse-ctor-fences/Android.bp\n  test/530-checker-lse-simd/Android.bp\n  test/530-checker-lse/Android.bp\n  test/530-checker-lse2/Android.bp\n  test/530-instanceof-checkcast/Android.bp\n  test/530-regression-lse/Android.bp\n  test/532-checker-nonnull-arrayset/Android.bp\n  test/534-checker-bce-deoptimization/Android.bp\n  test/535-deopt-and-inlining/Android.bp\n  test/536-checker-intrinsic-optimization/Android.bp\n  test/537-checker-arraycopy/Android.bp\n  test/537-checker-jump-over-jump/Android.bp\n  test/538-checker-embed-constants/Android.bp\n  test/540-checker-rtp-bug/Android.bp\n  test/542-bitfield-rotates/Android.bp\n  test/542-inline-trycatch/Android.bp\n  test/542-unresolved-access-check/Android.bp\n  test/545-tracing-and-jit/Android.bp\n  test/548-checker-inlining-and-dce/Android.bp\n  test/549-checker-types-merge/Android.bp\n  test/550-checker-multiply-accumulate/Android.bp\n  test/550-new-instance-clinit/Android.bp\n  test/551-checker-clinit/Android.bp\n  test/551-checker-shifter-operand/Android.bp\n  test/551-implicit-null-checks/Android.bp\n  test/552-checker-sharpening/Android.bp\n  test/552-checker-x86-avx2-bit-manipulation/Android.bp\n  test/554-checker-rtp-checkcast/Android.bp\n  test/555-UnsafeGetLong-regression/Android.bp\n  test/557-checker-instruct-simplifier-ror/Android.bp\n  test/558-switch/Android.bp\n  test/559-bce-ssa/Android.bp\n  test/559-checker-rtp-ifnotnull/Android.bp\n  test/560-packed-switch/Android.bp\n  test/561-divrem/Android.bp\n  test/561-shared-slowpaths/Android.bp\n  test/562-bce-preheader/Android.bp\n  test/562-checker-no-intermediate/Android.bp\n  test/563-checker-invoke-super/Android.bp\n  test/564-checker-bitcount/Android.bp\n  test/564-checker-inline-loop/Android.bp\n  test/564-checker-negbitwise/Android.bp\n  test/565-checker-condition-liveness/Android.bp\n  test/566-checker-codegen-select/Android.bp\n  test/566-polymorphic-inlining/Android.bp\n  test/567-checker-builder-intrinsics/Android.bp\n  test/568-checker-onebit/Android.bp\n  test/570-checker-select/Android.bp\n  test/572-checker-array-get-regression/Android.bp\n  test/573-checker-checkcast-regression/Android.bp\n  test/576-polymorphic-inlining/Android.bp\n  test/577-checker-fp2int/Android.bp\n  test/578-bce-visit/Android.bp\n  test/578-polymorphic-inlining/Android.bp\n  test/579-inline-infinite/Android.bp\n  test/580-checker-round/Android.bp\n  test/580-crc32/Android.bp\n  test/581-rtp/Android.bp\n  test/582-checker-bce-length/Android.bp\n  test/583-checker-zero/Android.bp\n  test/584-checker-div-bool/Android.bp\n  test/589-super-imt/Android.bp\n  test/590-checker-arr-set-null-regression/Android.bp\n  test/591-checker-regression-dead-loop/Android.bp\n  test/593-checker-long-2-float-regression/Android.bp\n  test/594-checker-array-alias/Android.bp\n  test/594-load-string-regression/Android.bp\n  test/595-profile-saving/Android.bp\n  test/597-deopt-busy-loop/Android.bp\n  test/597-deopt-invoke-stub/Android.bp\n  test/597-deopt-new-string/Android.bp\n  test/602-deoptimizeable/Android.bp\n  test/603-checker-instanceof/Android.bp\n  test/604-hot-static-interface/Android.bp\n  test/605-new-string-from-bytes/Android.bp\n  test/607-daemon-stress/Android.bp\n  test/609-checker-inline-interface/Android.bp\n  test/609-checker-x86-bounds-check/Android.bp\n  test/610-arraycopy/Android.bp\n  test/611-checker-simplify-if/Android.bp\n  test/614-checker-dump-constant-location/Android.bp\n  test/615-checker-arm64-store-zero/Android.bp\n  test/616-cha-abstract/Android.bp\n  test/616-cha-interface/Android.bp\n  test/616-cha-miranda/Android.bp\n  test/616-cha-native/Android.bp\n  test/616-cha-regression-proxy-method/Android.bp\n  test/616-cha/Android.bp\n  test/617-clinit-oome/Android.bp\n  test/618-checker-induction/Android.bp\n  test/619-checker-current-method/Android.bp\n  test/620-checker-bce-intrinsics/Android.bp\n  test/622-checker-bce-regressions/Android.bp\n  test/623-checker-loop-regressions/Android.bp\n  test/625-checker-licm-regressions/Android.bp\n  test/626-set-resolved-string/Android.bp\n  test/627-checker-unroll/Android.bp\n  test/628-vdex/Android.bp\n  test/629-vdex-speed/Android.bp\n  test/631-checker-get-class/Android.bp\n  test/632-checker-char-at-bounds/Android.bp\n  test/635-checker-arm64-volatile-load-cc/Android.bp\n  test/636-arm64-veneer-pool/Android.bp\n  test/637-checker-throw-inline/Android.bp\n  test/638-checker-inline-cache-intrinsic/Android.bp\n  test/639-checker-code-sinking/Android.bp\n  test/640-checker-boolean-simd/Android.bp\n  test/640-checker-integer-valueof/Android.bp\n  test/640-checker-simd/Android.bp\n  test/641-checker-arraycopy/Android.bp\n  test/641-iterations/Android.bp\n  test/642-fp-callees/Android.bp\n  test/643-checker-bogus-ic/Android.bp\n  test/645-checker-abs-simd/Android.bp\n  test/646-checker-arraycopy-large-cst-pos/Android.bp\n  test/646-checker-long-const-to-int/Android.bp\n  test/646-checker-simd-hadd/Android.bp\n  test/647-jni-get-field-id/Android.bp\n  test/650-checker-inline-access-thunks/Android.bp\n  test/652-deopt-intrinsic/Android.bp\n  test/654-checker-periodic/Android.bp\n  test/655-checker-simd-arm-opt/Android.bp\n  test/655-jit-clinit/Android.bp\n  test/656-checker-simd-opt/Android.bp\n  test/656-loop-deopt/Android.bp\n  test/657-branches/Android.bp\n  test/658-fp-read-barrier/Android.bp\n  test/660-checker-sad/Android.bp\n  test/660-checker-simd-sad/Android.bp\n  test/660-clinit/Android.bp\n  test/661-checker-simd-reduc/Android.bp\n  test/661-oat-writer-layout/Android.bp\n  test/662-regression-alias/Android.bp\n  test/664-aget-verifier/Android.bp\n  test/665-checker-simd-zero/Android.bp\n  test/666-dex-cache-itf/Android.bp\n  test/667-checker-simd-alignment/Android.bp\n  test/667-jit-jni-stub/Android.bp\n  test/667-out-of-bounds/Android.bp\n  test/669-checker-break/Android.bp\n  test/671-npe-field-opts/Android.bp\n  test/672-checker-throw-method/Android.bp\n  test/673-checker-throw-vmethod/Android.bp\n  test/674-HelloWorld-Dm/Android.bp\n  test/674-hotness-compiled/Android.bp\n  test/676-proxy-jit-at-first-use/Android.bp\n  test/677-fsi2/Android.bp\n  test/679-locks/Android.bp\n  test/680-checker-deopt-dex-pc-0/Android.bp\n  test/680-sink-regression/Android.bp\n  test/684-checker-simd-dotprod/Android.bp\n  test/684-select-condition/Android.bp\n  test/685-deoptimizeable/Android.bp\n  test/687-deopt/Android.bp\n  test/689-multi-catch/Android.bp\n  test/689-zygote-jit-deopt/Android.bp\n  test/693-vdex-inmem-loader-evict/Android.bp\n  test/694-clinit-jit/Android.bp\n  test/695-simplify-throws/Android.bp\n  test/696-loop/Android.bp\n  test/697-checker-string-append/Android.bp\n  test/698-selects/Android.bp\n  test/700-LoadArgRegs/Android.bp\n  test/703-floating-point-div/Android.bp\n  test/704-multiply-accumulate/Android.bp\n  test/705-register-conflict/Android.bp\n  test/707-checker-invalid-profile/Android.bp\n  test/708-jit-cache-churn/Android.bp\n  test/711-checker-type-conversion/Android.bp\n  test/717-integer-value-of/Android.bp\n  test/718-zipfile-finalizer/Android.bp\n  test/720-thread-priority/Android.bp\n  test/721-osr/Android.bp\n  test/726-array-store/Android.bp\n  test/728-imt-conflict-zygote/Android.bp\n  test/805-TooDeepClassInstanceOf/Android.bp\n  test/806-TooWideClassInstanceOf/Android.bp\n  test/812-recursive-default/Android.bp\n  test/813-fp-args/Android.bp\n  test/814-large-field-offsets/Android.bp\n  test/815-invokeinterface-default/Android.bp\n  test/818-clinit-nterp/Android.bp\n  test/900-hello-plugin/Android.bp\n  test/901-hello-ti-agent/Android.bp\n  test/902-hello-transformation/Android.bp\n  test/903-hello-tagging/Android.bp\n  test/904-object-allocation/Android.bp\n  test/905-object-free/Android.bp\n  test/906-iterate-heap/Android.bp\n  test/907-get-loaded-classes/Android.bp\n  test/908-gc-start-finish/Android.bp\n  test/910-methods/Android.bp\n  test/911-get-stack-trace/Android.bp\n  test/913-heaps/Android.bp\n  test/914-hello-obsolescence/Android.bp\n  test/915-obsolete-2/Android.bp\n  test/916-obsolete-jit/Android.bp\n  test/917-fields-transformation/Android.bp\n  test/918-fields/Android.bp\n  test/919-obsolete-fields/Android.bp\n  test/920-objects/Android.bp\n  test/921-hello-failure/Android.bp\n  test/922-properties/Android.bp\n  test/923-monitors/Android.bp\n  test/924-threads/Android.bp\n  test/925-threadgroups/Android.bp\n  test/926-multi-obsolescence/Android.bp\n  test/927-timers/Android.bp\n  test/928-jni-table/Android.bp\n  test/930-hello-retransform/Android.bp\n  test/931-agent-thread/Android.bp\n  test/932-transform-saves/Android.bp\n  test/933-misc-events/Android.bp\n  test/937-hello-retransform-package/Android.bp\n  test/939-hello-transformation-bcp/Android.bp\n  test/940-recursive-obsolete/Android.bp\n  test/941-recursive-obsolete-jit/Android.bp\n  test/942-private-recursive/Android.bp\n  test/943-private-recursive-jit/Android.bp\n  test/944-transform-classloaders/Android.bp\n  test/945-obsolete-native/Android.bp\n  test/946-obsolete-throw/Android.bp\n  test/947-reflect-method/Android.bp\n  test/949-in-memory-transform/Android.bp\n  test/950-redefine-intrinsic/Android.bp\n  test/951-threaded-obsolete/Android.bp\n  test/963-default-range-smali/Android.bp\n  test/982-ok-no-retransform/Android.bp\n  test/983-source-transform-verify/Android.bp\n  test/984-obsolete-invoke/Android.bp\n  test/985-re-obsolete/Android.bp\n  test/986-native-method-bind/Android.bp\n  test/987-agent-bind/Android.bp\n  test/988-method-trace/Android.bp\n  test/989-method-trace-throw/Android.bp\n  test/990-field-trace/Android.bp\n  test/991-field-trace-2/Android.bp\n  test/992-source-data/Android.bp\n  test/993-breakpoints/Android.bp\n  test/994-breakpoint-line/Android.bp\n  test/995-breakpoints-throw/Android.bp\n  test/996-breakpoint-obsolete/Android.bp\n  test/997-single-step/Android.bp\n  test/Android.bp\n  tools/Android.bp\n  tools/ahat/Android.bp\n  tools/ahat/Android.mk\n  tools/art_verifier/Android.bp\n  tools/cpp-define-generator/Android.bp\n  tools/dexanalyze/Android.bp\n  tools/dexfuzz/Android.bp\n  tools/dmtracedump/Android.bp\n  tools/hiddenapi/Android.bp\n  tools/jfuzz/Android.bp\n  tools/jvmti-agents/breakpoint-logger/Android.bp\n  tools/jvmti-agents/chain-agents/Android.bp\n  tools/jvmti-agents/dump-jvmti-state/Android.bp\n  tools/jvmti-agents/enable-vlog/Android.bp\n  tools/jvmti-agents/field-counts/Android.bp\n  tools/jvmti-agents/field-null-percent/Android.bp\n  tools/jvmti-agents/jit-load/Android.bp\n  tools/jvmti-agents/list-extensions/Android.bp\n  tools/jvmti-agents/simple-force-redefine/Android.bp\n  tools/jvmti-agents/simple-profile/Android.bp\n  tools/jvmti-agents/ti-alloc-sample/Android.bp\n  tools/jvmti-agents/ti-fast/Android.bp\n  tools/jvmti-agents/titrace/Android.bp\n  tools/jvmti-agents/wrapagentproperties/Android.bp\n  tools/signal_dumper/Android.bp\n  tools/tracefast-plugin/Android.bp\n  tools/veridex/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  sigchainlib/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-GPL-2.0\nto:\n  Android.bp\n  Android.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  dt_fd_forward/Android.bp\n  openjdkjvmti/Android.bp\n\nAdded SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  openjdkjvm/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: If775045c12955fa6d72d40ccf2a09beef93d1699\nMerged-in: If775045c12955fa6d72d40ccf2a09beef93d1699\n"
    },
    {
      "commit": "e4b7d434912fabd85703f0a55dc49767cb0dbe9f",
      "tree": "20461f34aa0feb6597de0054c78b4c5f13dfc429",
      "parents": [
        "0eebdcc511364a9ade5290507d446f41cf256fbe"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Feb 25 20:51:43 2021 -0800"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Sat Feb 27 08:45:46 2021 +0000"
      },
      "message": "Do not add quotes around flags argument\n\n* build/soong will adds quotes around the whole flags\n  and preserve the quotes around flags argument.\n  The quotes incorrectly became part of a flag\u0027s value.\n* use -header-filter to include module directory and\n  other owned/interested header directories.\n\nBug: 180862582\nTest: make; make with WITH_TIDY\u003d1\nChange-Id: I31dd4414b387058568132c5db14f34f975cb3697\n"
    },
    {
      "commit": "4c3ade67c470543562a0029e39b576954a807321",
      "tree": "21f56e9c9dae7868ee5d68c18457fd0ea3a271fe",
      "parents": [
        "3a8d7c2de4392ff4c40858803447efe14c3c9fa8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 14:07:10 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 25 08:44:32 2021 +0000"
      },
      "message": "odrefresh: regenerate artifacts after ART APEX update\n\nReplaces compile_bcp.sh to check and compile boot class path\nextensions and system server jars.\n\nEnable ART to load those artifacts when present in the ART APEX data\ndirectory.\n\nBug: 160683548\nTest: art_libartbase_tests\nTest: adb root \u0026\u0026 adb odrefresh {--force-check,--force-compile}\nTest: adb install com.android.art \u0026\u0026 adb reboot \u0026\u0026 adb root \u0026\u0026 \\\n      adb shell odrefresh {--check,--compile} \u0026\u0026 adb reboot \u0026\u0026 \\\n      adb shell cat /proc/\u003czygote\u003e/maps | grep apexdata\nChange-Id: I81bf520d38f9dc0109c91f192bc6e728099049fd\n"
    }
  ]
}
