)]}'
{
  "log": [
    {
      "commit": "de54ddda0d5b2cd3e396eb4e42ef04bb3e667609",
      "tree": "c66fd9615deff45c0e1693e83feb8618ffd21815",
      "parents": [
        "7d398b070dcbe3d79718b04882aa3989717f6dba"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 28 20:02:04 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 28 20:17:28 2021 +0100"
      },
      "message": "Add support for gtest options to `tools/run-gtests.sh`.\n\nHave `tools/run-gtests.sh` accept gtest options after `--` on the\ncommand line, and pass them verbatim to each executed gtest\nbinary.\n\nAlso document the use of gtest options with `tools/run-gtests.sh`\nin `test/README.chroot.md`.\n\nTest: art/tools/run-gtests.sh -- --gtest_list_tests\nTest: art/tools/run-gtests.sh \\\n        /apex/com.android.art/bin/art/arm64/art_cmdline_tests \\\n        -- --gtest_list_tests\nTest: Render `README.chroot.md` as HTML and check the output manually\nBug: 34729697\nChange-Id: If41181666eb52750444b1b40dfab0629f802b7b5\n"
    },
    {
      "commit": "7d398b070dcbe3d79718b04882aa3989717f6dba",
      "tree": "da1d1dccaf23c7c3d84696c427ed63d09cf15b7c",
      "parents": [
        "dc00c3aef3561f97ac0ffda60aee1254c6d5fb74"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 16 19:27:45 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 28 11:21:28 2021 +0000"
      },
      "message": "Add OkHttp tests to the generated ART MTS definition.\n\nAdd `MtsLibcoreOkHttpTestCases` to the generated ART MTS definition.\n\nAdd this test module to the existing ART MTS shard 02.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-02\nBug: 167385698\nChange-Id: I7c0abf96a9e2a5b9bab0add638a3b51f51083dd4\n"
    },
    {
      "commit": "dc00c3aef3561f97ac0ffda60aee1254c6d5fb74",
      "tree": "b676f79954a3347de1447308962e35717d1b1e41",
      "parents": [
        "ce9b902a161b86eb2d5ef9fe4442305e25828d0a"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Jul 26 18:16:30 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Jul 27 20:27:48 2021 +0000"
      },
      "message": "Retry more carefully\n\nWhen we notice that notifications ran too quickly, start over from\nthe beginning. Just retrying the notiofications was ineffective,\npresumably because we already triggered a GC. but it somehow\ncompleted before we looked for blocking behavior.\n\nTest: Treehugger, some manual testing with code changes.\nBug: 190148586\nChange-Id: Ic4689165c5f37535b6ba0e05f03584cdc1d04c40\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": "a8f858e4eddeede8c465cc5b9fb40733e4649aed",
      "tree": "871974880c9348440ee5a10c3776df5579f45688",
      "parents": [
        "4aebd580c9c9de348b8fefed6353b86621cceb53"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 27 05:41:31 2021 +0000"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Tue Jul 27 07:34:20 2021 +0000"
      },
      "message": "Verify that artifacts can still be loaded after a reboot.\n\nBefore this change, odsign_e2e_tests only verified that artifacts are loaded right after being generated. This change increases the test coverage.\n\nTest: atest odsign_e2e_tests\nBug: 194754733\nChange-Id: Icf7e630bbe31eddf2b442bb84bdff8d06943d1fc\n"
    },
    {
      "commit": "4aebd580c9c9de348b8fefed6353b86621cceb53",
      "tree": "47f07ff4173534c92ff9673d6d423c4df13bbe6e",
      "parents": [
        "d7a4da1f357e089c5d150559d8d2f2ddb7c4958a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 15:27:31 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 16:09:23 2021 +0000"
      },
      "message": "Add some null checks in case of OOME.\n\nTest: test.py\nBug: 194471075\nChange-Id: Ib02845636af4d3944a96f001e5ad728a94832285\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": "2cb2527d4136f681b8e79352c546e65431ceb10c",
      "tree": "2e6429eff103ac8006f564238e381f4ec6e0a841",
      "parents": [
        "f7e4c3d58d3ce7f38e4591acb9928513928c39c4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:24:29 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 13:32:32 2021 +0000"
      },
      "message": "verifier: Remove support for precise constants and RegisterTrackingMode.\n\nThese features were used when we were creating GC maps and\ndeoptimization information with the quick compiler. Quick compiler has\nbeen removed, so we can remove these features.\n\nTest: test.py\nChange-Id: I633a7ada761b280b90e2d7c53cd5fbf2ae1d701d\n"
    },
    {
      "commit": "f7e4c3d58d3ce7f38e4591acb9928513928c39c4",
      "tree": "8e37537c183681b641fb099501330fbd958f8f1d",
      "parents": [
        "310b4e26593f6c1b89659d00275b55fa1a3c07b7"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Jul 23 00:17:36 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 23 12:03:59 2021 +0000"
      },
      "message": "Set MODULE_BUILD_FROM_SOURCE to disable module prebuilts when building linux_bionic targets.\n\nThey can otherwise cause duplicate install rules in Soong in\n--skip-make mode.\n\nCherry-picked from http://ag/15361752.\n\nTest: env DIST_DIR\u003dout/linux_bionic ./art/tools/dist_linux_bionic.sh \\\n        -j40 com.android.art.host com.android.support.apexer\nBug: 194171329\nChange-Id: I91d31e258ddad255344fbde111ed8b1ac1423921\nMerged-In: I91d31e258ddad255344fbde111ed8b1ac1423921\n"
    },
    {
      "commit": "310b4e26593f6c1b89659d00275b55fa1a3c07b7",
      "tree": "d4527871a5f6a86f6ecee96177f21c63397e67ba",
      "parents": [
        "a0dd228837fbbacb3d29445bdf027649567f94fb"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 21 16:02:06 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 11:56:43 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndBitwise{And,Or,Xor} for fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  GetAndBitwiseOrStaticFieldInt          2.346    0.012\n  GetAndBitwiseOrFieldInt                2.615    0.010\n  GetAndBitwiseOrAcquireStaticFieldInt   2.340    0.008\n  GetAndBitwiseOrAcquireFieldInt         2.616    0.008\n  GetAndBitwiseOrReleaseStaticFieldInt   2.349    0.008\n  GetAndBitwiseOrReleaseFieldInt         2.614    0.008\n  GetAndBitwiseXorStaticFieldInt         2.336    0.010\n  GetAndBitwiseXorFieldInt               2.611    0.010\n  GetAndBitwiseXorAcquireStaticFieldInt  2.332    0.008\n  GetAndBitwiseXorAcquireFieldInt        2.613    0.008\n  GetAndBitwiseXorReleaseStaticFieldInt  2.335    0.008\n  GetAndBitwiseXorReleaseFieldInt        2.617    0.008\n  GetAndBitwiseAndStaticFieldInt         2.341    0.010\n  GetAndBitwiseAndFieldInt               2.619    0.010\n  GetAndBitwiseAndAcquireStaticFieldInt  2.345    0.008\n  GetAndBitwiseAndAcquireFieldInt        2.610    0.009\n  GetAndBitwiseAndReleaseStaticFieldInt  2.343    0.008\n  GetAndBitwiseAndReleaseFieldInt        2.616    0.008\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ied3ae34aaad24e1b2cd8237fed4ac64aa9ae10ae\n"
    },
    {
      "commit": "a0dd228837fbbacb3d29445bdf027649567f94fb",
      "tree": "f7f8c1c4fce0a752b27734c21b80ce38391fac36",
      "parents": [
        "017aae426873d57e260d5ae52fd5ce2ed2bddb1c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 22 21:09:46 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 23 11:40:07 2021 +0000"
      },
      "message": "odsign_e2e_tests: do not assume time monotonicity across reboots\n\nBug: 194365586\nTest: atest --iterations 10 com.android.tests.odsign.OnDeviceSigningHostTest\nChange-Id: I824da7fb9bfc0c455c852f99d2564e89728170ea\n"
    },
    {
      "commit": "017aae426873d57e260d5ae52fd5ce2ed2bddb1c",
      "tree": "6129e7bc94b4a63231e6e99ccb57a2b583f1cc3f",
      "parents": [
        "b1adfc2a0570f52d74b8a4acdd578efc1790995b"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 17:56:01 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 10:06:13 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndAdd for fields.\n\nThe implementation is based on XADD instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndAddStaticFieldInt             2.338    0.012\n  GetAndAddFieldInt                   2.614    0.012\n  GetAndAddStaticFieldFloat           2.338    0.010\n  GetAndAddFieldFloat                 2.612    0.010\n  GetAndAddAcquireStaticFieldInt      2.337    0.007\n  GetAndAddAcquireFieldInt            2.617    0.007\n  GetAndAddAcquireStaticFieldFloat    2.337    0.010\n  GetAndAddAcquireFieldFloat          2.610    0.010\n  GetAndAddReleaseStaticFieldInt      2.336    0.007\n  GetAndAddReleaseFieldInt            2.615    0.007\n  GetAndAddReleaseStaticFieldFloat    2.334    0.010\n  GetAndAddReleaseFieldFloat          2.613    0.010\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: If41fd01b7e444a7157478999640f45d64bbf17f1\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": "71f763399e95676d665e071623bccb714acf88b4",
      "tree": "442dbbe8745d5269cf5ed13307700ba41d0c8866",
      "parents": [
        "c9acd230431acf786b5597cbbc2da57e88eb0435"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 20 11:57:48 2021 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jul 23 00:07:00 2021 +0000"
      },
      "message": "Use config.BuildOS instead of android.BuildOs\n\nandroid.BuildOs is being replaced with config.BuildOS so that it\ncan vary based on the product configuration.\n\nBug: 190084016\nTest: m checkbuild\nChange-Id: Ic660bd9a34faf323a1458bb88f07b1bc8db7d460\n"
    },
    {
      "commit": "c9acd230431acf786b5597cbbc2da57e88eb0435",
      "tree": "383869b7275bbd2b16b7481f507c6ce1e6bc679d",
      "parents": [
        "09bfdf1700feeedf85c4a53502d3c14b4d3f41fd"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jul 21 17:51:32 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 22 21:15:14 2021 +0000"
      },
      "message": "Delete almost correct CHECK\n\nThe bytes_allocated + freed_bytes \u003e\u003d bytes_allocated_before_gc\nCHECK could fail if we expand space use as a result of copying,\nand perhaps for other reasons. Delete it, and have the later code\ndeal with the fact that it may not hold.\n\nTest: Build and boot AOSP.\nBug: 194263989\nChange-Id: I9188a7cd13661c16b1b69a90d1f03d60548db217\n"
    },
    {
      "commit": "09bfdf1700feeedf85c4a53502d3c14b4d3f41fd",
      "tree": "bf6c232234d4c41697a78868e51b7dc07eabb011",
      "parents": [
        "1b621225a8869f930d530e4855157a444971aca1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 19 12:17:20 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 22 14:09:53 2021 +0000"
      },
      "message": "Rewrite UTF-8 encoding.\n\nCreate a templated implementation to serve all the UTF-8\nrelated encodings. Use it for `CharsetUtils.toUtf8Bytes()`\nand the JNI `GetStringUTFChars()`. Do not use it yet for\nthe internal `ConvertUtf16ToModifiedUtf8()` which shall be\nswitched to actual Modified UTF-8 in a separate change.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: atest CtsLibcoreTestCases:libcore.java.lang.StringTest\nBug: 192935764\nChange-Id: Id3ec3a0bc2638becdf4181d9c2b6794c91a75314\n"
    },
    {
      "commit": "1b621225a8869f930d530e4855157a444971aca1",
      "tree": "9885c16405db986e26419e4d0e001ab0c5fd48b1",
      "parents": [
        "fc42ce1a2b013059b7868ffc69d35fade6c5b743"
      ],
      "author": {
        "name": "Stelios Ioannou",
        "email": "stelios.ioannou@linaro.org",
        "time": "Thu Jun 17 14:15:45 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 22 13:07:21 2021 +0000"
      },
      "message": "ART: Implements a test option of forced generation of .cfg\n\nThis patch introduces the option to dump .cfg for any type of test. If\nthe \"--dump-cfg \u003cpath/graph.cfg\u003e option\" is present, then it generates\na .cfg following the same logic used for the \"checker\" tests but\nforcing it for any type of test. This option works for both host and\ntarget.\n\nBefore the artifacts are wiped, the generated .cfg file is copied to\nthe specified host path.\n\nNote that it will only dump a .cfg if the compiler type is set to\n\"optimizing\". Otherwise, it will throw a warning.\n\nTest: ./art/test/run-test  --host --simulate-arm64  --optimizing \\\n--dump-cfg \u003cpath\u003e/graph.cfg  \u003ctest\u003e\n\nChange-Id: I034b13b401bd1dee8d871297da8d09e807a35fd1\n"
    },
    {
      "commit": "fc42ce1a2b013059b7868ffc69d35fade6c5b743",
      "tree": "c82efa8fa290af716eb02e1389379c724ed04ab5",
      "parents": [
        "a6f8a6a7a1e4e639b393261fc46abe046cd59b63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 15:51:35 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 22 09:45:56 2021 +0000"
      },
      "message": "Fix `GetDataTypeFromShorty()` for inlined VarHandle intrinsics.\n\nTest: testrunner.py --host --optimizing --jit\nBug: 188889082\nChange-Id: Ide335dc408f5bd2c9256d4cac5ba66d2d390f69b\n"
    },
    {
      "commit": "a6f8a6a7a1e4e639b393261fc46abe046cd59b63",
      "tree": "910fbc17a780b894cb116aee0200369941469183",
      "parents": [
        "244f22bf574f8c1656e668e77e4636f442d1a214"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 12:29:04 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 22 09:35:51 2021 +0000"
      },
      "message": "Initialize intrinsics for UnstartedRuntimeTest.\n\nThis is needed for implementing Java Atomic* classes\nwith `VarHandle` as two of the unstarted runtime tests\nshall then exercise code paths with invoke-polymorphic\nwhere we need to know the intrinsic for dispatch.\n\nTest: m test-art-host-gtest\nBug: 188889082\nChange-Id: Idf01066af68edb2db0be8954a4440d53e95ecbc8\n"
    },
    {
      "commit": "244f22bf574f8c1656e668e77e4636f442d1a214",
      "tree": "0fe0cc017fc2ae948d412d5533596544cbea7914",
      "parents": [
        "4a889b7f1e58368f0ffd795eaa24f2f493ccab8d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 16:56:30 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 21 17:12:20 2021 +0000"
      },
      "message": "x86_64: Add LockXadd* helper function and tests for it.\n\nA separate function is need for 16-bit variant `lock xaddw` because the\nLOCK prefix should go after the operand size override prefix to match\nthe order of prefixes emitted by the reference implementation.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for LOCK XADD\nChange-Id: I29946c75c76966cb9c6425b2a22eae3664ce3c00\n"
    },
    {
      "commit": "4a889b7f1e58368f0ffd795eaa24f2f493ccab8d",
      "tree": "6449e59690e4219f3b3c1beba3631ecb586a584d",
      "parents": [
        "5d446a37192427b4d24ca9add5d8e2409f665c4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:20:54 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:21:35 2021 +0000"
      },
      "message": "Revert \"Compile time null checks for VarHandle intrinsics.\"\n\nThis reverts commit b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29.\n\nReason for revert: Breaks ART baseline compiler.\n\nBug: 191765508\nChange-Id: Ida63660e0149c4847f015950f95282e61add7204\n"
    },
    {
      "commit": "5d446a37192427b4d24ca9add5d8e2409f665c4d",
      "tree": "6cf0445966ba613542db4d5fb2ed02faa05bedb5",
      "parents": [
        "b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 15:51:48 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 21 15:23:52 2021 +0000"
      },
      "message": "x86_64: Add XADD instruction and tests for it.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for XADD\nChange-Id: Idaa5f40dab106e7f48bfd8adeee629bcdaa8e33a\n"
    },
    {
      "commit": "b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29",
      "tree": "f65ecb447173e067fd5bd9437c19380b0d72bf04",
      "parents": [
        "c4597765f2d7496e428c0b0dc1b26ffb71c61093"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 20 15:02:33 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 21 12:57:37 2021 +0000"
      },
      "message": "Compile time null checks for VarHandle intrinsics.\n\nCreate a `VarHandleOptimizations` helper class holding the\noptimization flags for VarHandle intrinsics.\n\nAdd a flag to avoid emitting the intrinsic implementation\nand move shared checks previously duplicated in intrinsic\ncodegens helpers `HasVarHandleIntrinsicImplementation()` to\nthe instruction simplifier. Individual intrinsic codegens\nperform additional checks as needed.\n\nAdd the first optimization flag to avoid null check on the\nholder object if it cannot be null. And do not emit the\nintrinsic implementation if the holder object is null.\n\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --target --optimizing\nBug: 191765508\nChange-Id: I53b1b57c327f02a9913f22885c1ce663cd9c3d44\n"
    },
    {
      "commit": "c4597765f2d7496e428c0b0dc1b26ffb71c61093",
      "tree": "698f1308c89b6aa3fa6c47ea9645e43d36d37946",
      "parents": [
        "e501434b98c740969607e400678a43a8f3c79942"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 14:08:26 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 20 18:46:04 2021 +0000"
      },
      "message": "Unhide VarHandle methods\n\nWith compiler intrinsics support for a significant fraction of the\nAPI, these can be unhidden.\n\nBug: 65872996\nBug: 191980162\nTest: m\nChange-Id: I30abc13f89c969ceae6f68c49280c7bca0d33f81\n"
    },
    {
      "commit": "e501434b98c740969607e400678a43a8f3c79942",
      "tree": "05c85246b6e125f49cdb97a46119adfaf6a0a339",
      "parents": [
        "81c76d8dac3f4c4d50cad21a0b94a155908bc7d1"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jul 19 18:21:53 2021 +0000"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jul 20 16:39:15 2021 +0000"
      },
      "message": "dt_fd_forward: fix uses of uninit values\n\n`NetworkToHost(x)` where `x` is uninitialized (or isn\u0027t fully written\nwith bytes) angers our static analyzer, and may be easy to accidentally\nuse going forward. If we rephrase `HandleResult` to instead take a\ncallable type that produces a T, we can sidestep all of this.\n\nCaught by the static analyzer:\n\u003e art/dt_fd_forward/dt_fd_forward.cc:554:30: warning: 1st function call\nargument is an uninitialized value [clang-analyzer-core.CallAndMessage]\n\u003e art/dt_fd_forward/dt_fd_forward.cc:563:30: warning: 1st function call\nargument is an uninitialized value [clang-analyzer-core.CallAndMessage]\n\u003e art/dt_fd_forward/dt_fd_forward.cc:572:30: warning: 1st function call\nargument is an uninitialized value [clang-analyzer-core.CallAndMessage]\n\nBug: None\nTest: TreeHugger, `WITH_TIDY\u003d1 CLANG_ANALYZER_CHECKS\u003d1 mma`\n\nChange-Id: Id759bd36085bdd34399b64b08363b4682746fdfa\n"
    },
    {
      "commit": "81c76d8dac3f4c4d50cad21a0b94a155908bc7d1",
      "tree": "93196a264a2e52031ccf419adfe54acf57db36e3",
      "parents": [
        "edc005e396947fb4fa681c4a0be7beba66354239"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 16 10:48:15 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 20 08:46:12 2021 +0000"
      },
      "message": "Add BouncyCastle tests to the generated ART MTS definition.\n\nAdd `CtsLibcoreWycheproofBCTestCases` to the generated ART MTS\ndefinition.\n\nAdd this test module to the existing ART MTS shard 02.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-02\nBug: 167385698\nChange-Id: Icf2a43b3bf1a765d420eeebf7433b90eb4424a55\n"
    },
    {
      "commit": "edc005e396947fb4fa681c4a0be7beba66354239",
      "tree": "861321ca5332baea1ea2d1c974a90496bd48ad7d",
      "parents": [
        "91d364965955265776848b190b066c53e2dd5f6e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 10:22:28 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 19 14:49:10 2021 +0000"
      },
      "message": "Rewrite JNI NewStringUTF().\n\nFor historical reasons, NewStringUTF() accepts 4-byte UTF-8\nsequences which are not valid Modified UTF-8. This can be\nconsidered an extension of the JNI specification.\n\nRewrite the function to deal with the decoding explicitly,\nso that we can later avoid dealing with the 4-byte sequences\nin internal ART routines intended for Modified UTF-8.\nNote that the DexFileVerifier rejects them in dex files.\n\nChange the decoding to accept improperly encoded ASCII\ncharacters as two-byte or three-byte sequences.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 192935764\nChange-Id: I3f91da990110e419c78138ce997123277bf3aaba\n"
    },
    {
      "commit": "91d364965955265776848b190b066c53e2dd5f6e",
      "tree": "1b1b2b7e5323f7f3176149d1cc4f9ed4ac591416",
      "parents": [
        "4b0ceb655f86d6be90be574349bdc55d24e5560c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 19 11:59:42 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 19 14:48:55 2021 +0000"
      },
      "message": "Fix trailing surrogate validation.\n\nThe macro `U16_IS_SURROGATE_LEAD()` assumes that the input\nis a surrogate without checking that assumption. Use the\n`U16_IS_TRAIL()` macro instead to correctly validate the\ntrailing surrogate in `CharsetUtils.toUtf8Bytes()`.\n\nTest: atest CtsLibcoreTestCases:libcore.java.lang.StringTest\nBug: 193891113\nChange-Id: Ib70d5a5b42c885ede3bf0e3bc087383c979f1f60\n"
    },
    {
      "commit": "4b0ceb655f86d6be90be574349bdc55d24e5560c",
      "tree": "062f296ec594a4bf075aaac19c07cfc9cb2fd86e",
      "parents": [
        "8f21748bf127012947ed48c40948df3f2d9c85ef"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 13 12:16:02 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 16 17:53:20 2021 +0100"
      },
      "message": "x86_64: Implement VarHandle.getAndSet for fields.\n\nThe implementation is based on XCHG instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndSetStaticFieldInt             2.449    0.018\n  GetAndSetStaticFieldString          2.818    0.014\n  GetAndSetFieldInt                   2.728    0.012\n  GetAndSetFieldString                3.002    0.014\n  GetAndSetAcquireStaticFieldInt      2.438    0.007\n  GetAndSetAcquireStaticFieldString   2.811    0.010\n  GetAndSetAcquireFieldInt            2.726    0.007\n  GetAndSetAcquireFieldString         2.998    0.010\n  GetAndSetReleaseStaticFieldInt      2.436    0.007\n  GetAndSetReleaseStaticFieldString   2.813    0.010\n  GetAndSetReleaseFieldInt            2.730    0.007\n  GetAndSetReleaseFieldString         2.997    0.010\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I77bdf6d4b940d90b0efe499cab335e5a0fa5ca4a\n"
    },
    {
      "commit": "8f21748bf127012947ed48c40948df3f2d9c85ef",
      "tree": "70d287634fd0b3a2d43ad8de7738c9703eb0a2a6",
      "parents": [
        "ce5c830aede3313ceb22f7b2ca6c30e5b8432972"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 17:16:36 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 09:44:43 2021 +0000"
      },
      "message": "Mark move constructors/assignements as `noexcept`.\n\nAnd unmark `HashSet` copy constructor and copy assignment.\n\nTest: m\nChange-Id: Ia419f3036b2880815be446395e81c7e543388bd9\n"
    },
    {
      "commit": "ce5c830aede3313ceb22f7b2ca6c30e5b8432972",
      "tree": "7df230657a64a02c309fae9c7736c3a732f0a474",
      "parents": [
        "cd43700e88be779b62ddd0e2de0a2f62270ec44c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 12 18:13:30 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 16 08:57:56 2021 +0000"
      },
      "message": "Update source ART APEX version number from 1 to 319999900.\n\nBump the version number of the ART APEX built from sources (used, in\nparticular, for development and testing), so that it has a higher\nversion number that the (Android S) pre-built ART APEX (currently\n31071600) and can be installed on devices running an image with such a\npre-built ART APEX.\n\n(cherry picked from commit 646b2de92037f6d97e24560465d82079f3a3f411)\n\nTest: banchan com.android.art x86_64\n      m SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue\n      # Check built ART APEX version number.\n      aapt dump badging $OUT/system/apex/com.android.art.apex\n      acloud create --local-instance --branch aosp-master \\\n        --build-id 7552277 --build-target aosp_cf_x86_64_phone-userdebug\n      # Check prebuilt ART APEX version on AVD.\n      adb shell dumpsys package | grep -A4 com.android.art\n      adb install $OUT/system/apex/com.android.art.apex\n      adb reboot\n      # Check updated ART APEX version on AVD.\n      adb shell dumpsys package | grep -A4 com.android.art\nBug: 193059742\nChange-Id: I1e3147b79c8017692a3de6f2a4cfce42f39c3425\nMerged-In: I1e3147b79c8017692a3de6f2a4cfce42f39c3425\n"
    },
    {
      "commit": "cd43700e88be779b62ddd0e2de0a2f62270ec44c",
      "tree": "eef0bed185f94ea52f67e1855b2ca745e9175e9f",
      "parents": [
        "1e271ce1d48c64136a1e2f6102c78d51635ac435"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 12 16:53:57 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 16 08:17:37 2021 +0000"
      },
      "message": "Use .debug_frame version 4\n\nSome tools struggle with the augmentation.  The android clang now\nproduces version 4 by default, so we need to support it anyway.\n\nBug: 192012848\nTest: art/test.py -b --host -t 137\nChange-Id: Ia14bfbaaac9e654e97f5d4169792e0bb07ea413e\n"
    },
    {
      "commit": "1e271ce1d48c64136a1e2f6102c78d51635ac435",
      "tree": "0d9ad35b372b157dd2d1cebe00b2d6c1457067cc",
      "parents": [
        "2269f7eef5ac7821d4461b7f452313239aa100eb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 12 15:14:13 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 16 08:17:37 2021 +0000"
      },
      "message": "Revert \"libelffile: move to DWARF3 when writing .debug_frame.\"\n\nThis reverts commit 546243375d7e129aa02ca7ea9663ed7c40b4880e.\n\nReason for revert: DWARF-64 is supposed to be used for libraries\nover 4GB in size.  It is unrelated to pointer sizes and linked bug.\n(the spec explicitly says that it should not be used in our case)\n\nBug: 192012848\nChange-Id: Iaf4679b6d4cb27d049277ef7bdc6606771390a6b\n"
    },
    {
      "commit": "2269f7eef5ac7821d4461b7f452313239aa100eb",
      "tree": "d94ba376dcad7a4d2bef8ba08a8843146b538d35",
      "parents": [
        "b572832561669794edc8577ffbbf2ef19374e8bb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 12 15:17:14 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 16 08:17:37 2021 +0000"
      },
      "message": "Revert \"Fix style issue reported by cpplint.\"\n\nThis reverts commit 6f244fa1658e216512cf6ef15a6301defaf0f5b0.\n\nReason for revert: Reverting the CL the caused the issue.\n\nChange-Id: I7a206dfb20e7b34174b9b2e121ef5f1f3e9985c6\n"
    },
    {
      "commit": "b572832561669794edc8577ffbbf2ef19374e8bb",
      "tree": "ad2af8b17a0dff5f1c3f322ebe431fbd397537ed",
      "parents": [
        "66934efcabd2b75fd84b3cc0a8665f4ecc136727"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri May 21 09:45:35 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 15 18:24:50 2021 +0000"
      },
      "message": "Deprecate support of extracting BCP from boot image\n\nBug: 188905361\nTest: m\nChange-Id: I2820eb0d60ba6eedee3c67800f884512a638bacb\n"
    },
    {
      "commit": "66934efcabd2b75fd84b3cc0a8665f4ecc136727",
      "tree": "b55d836b7df49dcc73126cbcded7a0e64451ba39",
      "parents": [
        "cf74ae7eae39affc8886b4bce5294aceebb908c3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 14:56:23 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:26:13 2021 +0000"
      },
      "message": "Clean up ClassLinker::VerifyClass.\n\nAnd drop kAccWasVerificationAttempted. It\u0027s not needed and duplicates\nlogic already present in the compiler and the class status.\n\nThis CL also enables nterp running methods with soft failures.\n\nTest: test.py\nBug: 28313047\nChange-Id: I853a6f00b9e0c38091d86fcd77167c92ff5b383c\n"
    },
    {
      "commit": "cf74ae7eae39affc8886b4bce5294aceebb908c3",
      "tree": "5a7ca403a555069f3f373c38fe45d78b53e243c6",
      "parents": [
        "dcb148a48a6bc69aba71cf3e2b8ab915ab3bf6d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 10:37:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:09:19 2021 +0000"
      },
      "message": "Small cleanups after latest verifier change.\n\nDuring AOT, the inliner can also look at whether the class needs to be\nverified at runtime. We know the class doesn\u0027t hard fail otherwise its\nstatus would be ErrorResolved.\n\nAlso un-negate IsUnverified -\u003e IsVerified.\nAlso make isVerifiedNeedsAccessCheck only return true if the class has\nthat exact state.\n\nTest: test.py and golem numbers\nBug: 28313047\nChange-Id: I2ee0024a380225e1aa120b69069a5a34d3f81113\n"
    },
    {
      "commit": "dcb148a48a6bc69aba71cf3e2b8ab915ab3bf6d5",
      "tree": "6fb49285680464b01d93b881526d27f7d4e86733",
      "parents": [
        "d61b021fffc641906d1c531a233b62a8f66c184a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 15 09:22:14 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 15 09:22:14 2021 +0100"
      },
      "message": "odsign_e2e_tests: Drop Java 11-ism\n\nUse Optional.isPresent() instead of Optional.isEmpty().\n\nBug: 193753166\nTest: m\nChange-Id: Ife11afa2310f9d78645354587e47ec98d21f07c5\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": "9e050ab1a061d9660eb0c1daa01a823ad75b0f05",
      "tree": "714f2ba3b11406310416e85357f45450634846b2",
      "parents": [
        "4f990714b13e0b4446305a5411648a1a9ae42a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 14:59:25 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 17:13:08 2021 +0000"
      },
      "message": "Remove the need of VerifiedMethod in the compiler.\n\nThe compiler only needs to know if a method is compilable or not. So\njust record a set of uncompilable methods (in some cases, we cannot have\nan ArtMethod, but the method can still be compiled).\n\nTest: test.py\nBug: 28313047\nChange-Id: Ic4235bc8160ec91daa5ebf6504741089b43e99cb\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "7744b69abf073101b09b9043f0f0eb109768fcfe",
      "tree": "6598234dc0a9b2327729705cf61f836e3e777d58",
      "parents": [
        "eacf044aae6d7d515ac988dceedaadbf53916b60"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 06 16:19:32 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 13:17:09 2021 +0000"
      },
      "message": "Remove dual verification in RedefineClasses.\n\nAlso clean up the ClassVerifier interface with now just one method and\nthe removal of VerifierCallbacks.\n\nTest: test.py\nBug: 28313047\nChange-Id: I1a87dd1757cfdeec0d482f82dacd7cac43545964\n"
    },
    {
      "commit": "eacf044aae6d7d515ac988dceedaadbf53916b60",
      "tree": "f5a7e43f61b56c458bb2cc5243794552bc5c910b",
      "parents": [
        "cd8286f6e69aeeb1abb69b7807effee2f1539508"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 08 11:33:10 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 14 12:10:25 2021 +0000"
      },
      "message": "Add service-art to sdk\n\nOverrides the defaults setting of sdk_version: \"module_current\" for the\npublic and sdk_version: \"system_server_current\" for the system_server\nstub libraries as that is not available in master-art.\n\nBug: 193044041\nTest: DIST_DIR\u003d$PWD/dist TARGET_BUILD_VARIANT\u003duserdebug art/build/build-art-module.sh --skip-apex\n      packages/modules/ArtPrebuilt/update-art-module-prebuilts.py --local-dist\u003ddist --skip-cls --skip-apex\n      - check that service-art is added\nChange-Id: I078956714fd333b29d5f12384e1fd313044a92e4\n"
    },
    {
      "commit": "cd8286f6e69aeeb1abb69b7807effee2f1539508",
      "tree": "35a79e6834359dd8cd50eaa6bd170f8edbd8e8ff",
      "parents": [
        "0910d891d729ca984baa31d4e3ed51da8b0cad7d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:40:16 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 14 10:04:35 2021 +0000"
      },
      "message": "x86_64: Implement missing variants of XCHG. Add tests for them.\n\nAlso, clean up the handling of a special case when at least one of the\noperands for XCHG is RAX/EAX/AX. Add a helper function that deduplicates\nthe code for different operand sizes.\n\nThis patch also extends `EmitOptionalByteRegNormalizingRex32` function\nto handle the case when an instruction has both operands in byte\nregisters, and so it needs REX prefix if either of them is in a special\nregister (an example of such instruction is `xchg bpl, al`: if only the\nsource register is checked, no REX would be emitted). Previously\n`EmitOptionalByteRegNormalizingRex32` handled only the case when the\nsource register is special (an example of such instruction is\n`movzxb rax, bpl`).\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: I20c5e9375bbd15d799e5748b127d154ddcc0fc11\n"
    },
    {
      "commit": "0910d891d729ca984baa31d4e3ed51da8b0cad7d",
      "tree": "4abfda8e0f1757272ec5c87dfbda9488f4f0cda1",
      "parents": [
        "47349d2d27b9ee57896e03841032a3057fc9d838"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jul 12 15:52:18 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 13 16:37:31 2021 +0000"
      },
      "message": "Remove libc_headers from cc_object\n\ncc_object modules get default libraries like libc now and no longer\nneed to explicitly include libc_headers.\n\nBug: 153662223\nTest: m asm_defines.s\nChange-Id: Ide10877f7511f10bdfce1b55a9f631f2a44be5c3\n"
    },
    {
      "commit": "47349d2d27b9ee57896e03841032a3057fc9d838",
      "tree": "ca2f9a616d6668f797a933778bc3bcdfd14907d9",
      "parents": [
        "85430bb410c432ac40d950cfa494b0f9cc4f33ac"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Wed Jun 16 13:45:49 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Tue Jul 13 14:30:10 2021 +0000"
      },
      "message": "Adding unstarted JNI implementation needed by VarHandle\n\nThe creation of a FieldVarHandle depends on Field.getArtField() and\nField.getNameInternal() which are native methods. As\nAtomicInteger (and other java.util.concurrent.atomic classes) are\ngoing to use VarHandle, these methods need to be available in\nunstarted non-transaction runtime.\n\nThis change adds these methods to unstarted runtime.\n\nTest: m\nBug: 188889082\nChange-Id: I7d9a05aef1bbad05594b9bb326a741cf1485b744\n"
    },
    {
      "commit": "85430bb410c432ac40d950cfa494b0f9cc4f33ac",
      "tree": "805e4caea78a718c8c6e43f5fcbcee76b04023f6",
      "parents": [
        "e4f983c808b0b7d2d9c39f34f67971bba1354b08"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 13 12:02:50 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 13 12:42:07 2021 +0000"
      },
      "message": "Fix libcore_gcstress_failures.txt syntax\n\nTest: ./art/tools/run-libcore-tests.py --mode\u003dhost --gcstress\nChange-Id: Ia6026efd9b62e04452ea7afacc89b6bb4098209d\n"
    },
    {
      "commit": "e4f983c808b0b7d2d9c39f34f67971bba1354b08",
      "tree": "80dd518ac4e7ea00670f2ebdb70efbe8b1f577cd",
      "parents": [
        "5f2f289b64f163e491b9b53364ce04874f82b4e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 12 15:53:27 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 13 12:14:13 2021 +0000"
      },
      "message": "Remove mterp.\n\nTest: test.py\nChange-Id: Id800bcf86965ab19cf1e79ecbfa8996a6a6c335e\n"
    },
    {
      "commit": "5f2f289b64f163e491b9b53364ce04874f82b4e3",
      "tree": "52018e22d0dd047c360036c8f02a9b6fb41eaa4e",
      "parents": [
        "a5c529fd866309856a1eaff009f781ffe266b499"
      ],
      "author": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Mon Jul 12 15:59:38 2021 +0100"
      },
      "committer": {
        "name": "Nikita Ioffe",
        "email": "ioffe@google.com",
        "time": "Mon Jul 12 18:41:47 2021 +0000"
      },
      "message": "Fallback to version code in case lastUpdateMillis field is not populated\n\nTest: presubmit\nBug: 193374411\nChange-Id: I2006a1926c64cf01e12d82c90197b20f5cff9406\n"
    },
    {
      "commit": "a5c529fd866309856a1eaff009f781ffe266b499",
      "tree": "1a79af82e61b26de98a6d03fbb81e2fc5db12a93",
      "parents": [
        "b50ceebb814f28a6ade94974d3e8614c8585760e"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 15:34:43 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:25:08 2021 +0000"
      },
      "message": "x86_64: Allow test to skip register pairs. Fix XCHG and enable tests.\n\nPreviously tests were disabled for `xchgl reg, reg` variant with all\nregister pairs, although the problematic case is only `xchg eax, eax`.\n\nThis commit allows one to pass an exception list to a testing function\nand skip the problematic register pairs instead of disabling the whole\ntest. The patch adds exception lists to all testing functions that run\nover register pairs, although XCHG only needs it for `Repeatrr`.\n\nEnabling the test revealed a few small errors in the XCHG implementation\n(namely, source and destination registers were swapped, which does not\naffect the result). This commit fixes the implementation so that the\ntests pass.\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: Iaa759861330bcfb30db1a8219b805cc479cc3280\n"
    },
    {
      "commit": "b50ceebb814f28a6ade94974d3e8614c8585760e",
      "tree": "8297534745f75989ddf6b6c124ccc623a8eee71f",
      "parents": [
        "38837d44f47a14ccd07e9de3c26d3e40b9768d0d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 14:20:16 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:24:37 2021 +0000"
      },
      "message": "x86: Add missing variants for XCHG and tests for this instruction.\n\nAdd XCHG variants when both operands are registers. Handle the special\ncase when at least one of the register operands is EAX/AX. Add tests for\nthe new variants and for other variants that previously weren\u0027t tested.\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: I1e80d1b86f3d2e804b90c2a181e4eabded30d8ae\n"
    },
    {
      "commit": "38837d44f47a14ccd07e9de3c26d3e40b9768d0d",
      "tree": "430776fe80da3df1e39318259a3ab1c355a9ace6",
      "parents": [
        "dc8fa4d6fc4250bec986a1f4610b22454279fd31"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Sat Jul 10 12:29:34 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jul 12 12:04:18 2021 +0000"
      },
      "message": "Remove libraries containing conscrypt and i18n stubs from sdk\n\nThe core.current.stubs, core.module_lib.stubs,\nlegacy.core.platform.api.stubs and stable.core.platform.api.stubs\nlibraries include stubs from conscrypt and i18n. The stubs should not\nbe part of the ART sdk snapshot and instead should be provided by their\nown sdk snapshots.\n\nThe libraries and their associated java_system_modules will be defined\nin build/soong/java/core-libraries/Android.bp so that they will always\nbe present and do not need prebuilts.\n\nThis change removes those libraries and their associated\njava_system_modules from the sdk snapshot. So, they are no either\ndirectly exported or included as a private member for use by their\nassociated java_system_modules.\n\nIt also exports the core-lambda-stubs-for-system-modules and\ncore-generated-annotation-stubs libraries, which were previously\nincluded in the sdk as private members, for use by the\njava_system_modules definitions in build/soong.\n\nBug: 193311122\nTest: m droid\nChange-Id: I18ffe3f1470a1226a1ff43aea0446a2558cdceda\n"
    },
    {
      "commit": "dc8fa4d6fc4250bec986a1f4610b22454279fd31",
      "tree": "85102af8cce9cdebd670521f1f80602d78db3124",
      "parents": [
        "1b9d442dc906d0158300c5178683f417fa59b026"
      ],
      "author": {
        "name": "Artem Kotsiuba",
        "email": "artem.kotsiuba@linaro.org",
        "time": "Tue Jun 22 16:26:30 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 12 08:53:58 2021 +0000"
      },
      "message": "ART: Fix Android.cpplint.mk to use scan art/ directory\n\nCurrently Android.cpplint.mk doesn\u0027t set LOCAL_PATH variable but assumes\nthat it is initialized properly (see comments before initializing\nART_CPPLINT_SRC variable). Change https://r.android.com/1711019  moved\none of the includes in art/Android.mk file up, before include\nAndroid.cpplint.mk which modified this variable, so currently\n\u0027m cpplint-art\u0027 call only scans source files in tools/veridex folder\n\nTest: m cpplint-art and m cpplint-art-all\nChange-Id: Ic948e029a4365fc49b8ffeb1e67b47ac0dbee182\n"
    },
    {
      "commit": "1b9d442dc906d0158300c5178683f417fa59b026",
      "tree": "dd52852cd7a16af7f5480c5f6c9213079a319dc8",
      "parents": [
        "52eebc756c96fbf71ad77b6d30bdff8a67723569"
      ],
      "author": {
        "name": "Chuck Liao",
        "email": "chuckliao@google.com",
        "time": "Mon Jul 12 01:25:23 2021 +0000"
      },
      "committer": {
        "name": "Chuck Liao",
        "email": "chuckliao@google.com",
        "time": "Mon Jul 12 02:58:46 2021 +0000"
      },
      "message": "Revert \"Do not create 4-byte sequences in `ConvertUtf16ToModifiedUtf8()`\"\n\nThis reverts commit e0a4f373dc4a738a2f26965a67d31239cbbd4f6a.\n\nReason for revert: DroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId\u003dI44000009917256156\u0026testResultId\u003dTR23027520914949881, bug b/193363191\n\nBug: 193363191\nChange-Id: I2e7fe6de3f63864b58729d2c76e9ab5c95aa7983\n"
    },
    {
      "commit": "52eebc756c96fbf71ad77b6d30bdff8a67723569",
      "tree": "2c5c55137e6e672918a273d8f40503921bafe477",
      "parents": [
        "e0a4f373dc4a738a2f26965a67d31239cbbd4f6a"
      ],
      "author": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Fri Jun 18 00:14:50 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jul 10 09:23:33 2021 +0000"
      },
      "message": "Add a aggregation count section to profile.\n\nThis section is used on server side.\nThe format is defined on server and it is:\n\n***************\nuint16 profile_aggregation_count\nuint16 aggregation_count_for_each_dex_file_size\naggregation_count_for_each_dex_file[]\n\nThe format of aggregation_count_for_each_dex_file is:\n  uint16 profile_index\n  uint16 class_aggregation_count_size\n  uint16 class_aggregation_count[]\n  uint16 method_aggregation_count_size\n  uint16 method_aggregation_count[]\n***************\n\nThe aggregation count for classes/methods are in the ascending order of their indices.\n\nBug: 188071742\nTest: m\nChange-Id: I683b296699e2a80a8c6dc167c84b4d592a0f26fc\n"
    },
    {
      "commit": "e0a4f373dc4a738a2f26965a67d31239cbbd4f6a",
      "tree": "b097c82983074f167ef1a14ab529750fcc842b9f",
      "parents": [
        "d920b7b01f92676eec2aa504ef6cf13c3f3283fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 08 11:22:53 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 09 23:17:15 2021 +0000"
      },
      "message": "Do not create 4-byte sequences in `ConvertUtf16ToModifiedUtf8()`\n\nThis encoding was different from the encoding in dex files\nand this caused wrong `Class::IsInSamePackage()` result\nfor proxy classes if the packages name contained at least\none character outside the BMP plane.\n\nThis essentially reverts commit\n    e16dad1d6388b0305f13e2171308a77f42e7c682\nbut keeps all tests, only updating expectations.\n\nAlso rename `CountUtf8Bytes()` to `CountModifiedUtf8Bytes()`\nto make the format explicit in the function name.\n\nTest: New test 181-proxy-non-bmp\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 192935764\nBug: 193141629\nChange-Id: I8e6e8b08174c7a6d3ff84b0e1e929056b3947785\n"
    },
    {
      "commit": "d920b7b01f92676eec2aa504ef6cf13c3f3283fc",
      "tree": "a9ada320cad271e64d2a1700d56f06bc3df2a0b9",
      "parents": [
        "20b3c57170206febd53a20287bf6b7d5e620b62d"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Thu Jul 08 10:49:46 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Fri Jul 09 17:51:57 2021 +0000"
      },
      "message": "Disable the artd process\n\nThis CL removes the artd process from the core class thus preventing it\nfrom being started at boot.\n\nBug: 192042812\nTest: Boot and check for process\nChange-Id: I3431c6ef8719a1e20c734ab28bf87e5902f7345f\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": "2ec38232c632a2c7f3069f02d5c4d7036f14575b",
      "tree": "2500a6189a53a6bccb1b475d7e8a45ce4acd01ec",
      "parents": [
        "81909865f1d82314b72d09d1ad1f4545efd809e7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 02 16:36:29 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 09 11:55:11 2021 +0000"
      },
      "message": "Clean up verifier interface.\n\nRemove verifier_callbacks and ArtMethod as argument. The verifier can\noperate without them.\n\nThis allows removing the bogus DexCache::SetResolvedType in ti_redefine.\n\nAlso turn runtime throw failures into VerifyError, for cleaner interface\nwith users of the verifier.\n\nTest: test.py\nBug: 28313047\nChange-Id: I9ba1300f198aaf482ed43061465daea789ea732b\n"
    },
    {
      "commit": "81909865f1d82314b72d09d1ad1f4545efd809e7",
      "tree": "520a04a91aa1a93b437894d691523fd17305a81a",
      "parents": [
        "1c61f7eaa824733d132e86e7bbb7617749273f1a"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 07 19:11:47 2021 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Fri Jul 09 08:35:29 2021 +0000"
      },
      "message": "Add odrefresh_headers to sdk\n\nBug: 193044041\nTest: DIST_DIR\u003d$PWD/dist TARGET_BUILD_VARIANT\u003duserdebug art/build/build-art-module.sh --skip-apex\n      packages/modules/ArtPrebuilt/update-art-module-prebuilts.py --local-dist\u003ddist --skip-cls --skip-apex\n      - check that odrefresh is added\nChange-Id: I55ffcf4c9e1c617e62e4a4052c5eecd68255f991\n"
    },
    {
      "commit": "1c61f7eaa824733d132e86e7bbb7617749273f1a",
      "tree": "f911b23ca0eb50846e2f2aef908efd908caa2624",
      "parents": [
        "ef10f42bf21cddff00972c8b47aaf79528cbe3b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 08 15:54:01 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 09 08:07:45 2021 +0000"
      },
      "message": "Improve abort message in `SwapSpace::NewFileChunk()`.\n\nUse `PLOG` to print the `errno` information. Replace the\n\"Aborting...\" with a more descriptive message, repeating a\n`LOG(ERROR)` which is usually often lost in crash reports.\n\nTest: m\nBug: 193120528\nChange-Id: Id3b4ca0f40d8c13de95825aeb0d83964435be91e\n"
    },
    {
      "commit": "ef10f42bf21cddff00972c8b47aaf79528cbe3b5",
      "tree": "c025d3479b515beebb4adca35efae47d3db47bce",
      "parents": [
        "a4d27de25484b526205b446b8157122dc117b332"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 08 14:34:11 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 09 07:50:47 2021 +0000"
      },
      "message": "Use lastUpdateMillis of an apex for ART versioning.\n\nTest: m\nBug: 192647837\nChange-Id: Ide7e5a1dbfe85c679313bb6c8e6788137b138f42\n"
    },
    {
      "commit": "a4d27de25484b526205b446b8157122dc117b332",
      "tree": "b36dd5f8a9332fd0f16d2e0fd2d12345964803d0",
      "parents": [
        "8782f17c8adcf729a535dc4f9c221b9602b71017"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 08 11:33:57 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 08 17:56:40 2021 +0000"
      },
      "message": "Provide additional target variant of okhttp-norepackage prebuilt\n\nThe okhttp-norepackage already provides host prebuilts but the\ngrpc-grpc-java library needs target variants too.\n\nBug: 193044041\nTest: DIST_DIR\u003d$PWD/dist TARGET_BUILD_VARIANT\u003duserdebug art/build/build-art-module.sh --skip-apex\n      packages/modules/ArtPrebuilt/update-art-module-prebuilts.py --local-dist\u003ddist --skip-cls --skip-apex\n      - check that odrefresh is added\nChange-Id: Id1060fb088d5a0cc0aba2ca161f8f34af463f013\n"
    },
    {
      "commit": "8782f17c8adcf729a535dc4f9c221b9602b71017",
      "tree": "3d4022fd1fb06912aa49cf2c09be178be823bedf",
      "parents": [
        "6a2e6893290eac83f59dac4ec5bc10abf985ae10"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 14:12:37 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 16:56:35 2021 +0000"
      },
      "message": "Add standalone ART gtests to the generated ART MTS definition.\n\nAdd these test modules to the existing ART MTS shard 00.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-00\nBug: 167385698\nChange-Id: Ie7d291e1c68705a1693b15f019fadeeb502410a9\n"
    },
    {
      "commit": "6a2e6893290eac83f59dac4ec5bc10abf985ae10",
      "tree": "ee7f59774da19363bb867df9c0e9dc4f35f01fa2",
      "parents": [
        "592bceac0c030794175ae41d9c7e2ca092739d2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 14:21:07 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 16:56:35 2021 +0000"
      },
      "message": "Add support for standalone ART gtests to MTS.\n\nThis change:\n- adds standalone ART gtests to test suite `mts-art`;\n- adds `MainlineTestModuleController` support to standalone ART\n  gtests. This in order to have these tests run in a Mainline context\n  only when the ART Module (either `com.google.android.art` or\n  `com.android.art`) is installed on the test device.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-00\nBug: 167385698\nChange-Id: I97d9c00b7c10debff8c63e4ae75f90da02be271c\n"
    },
    {
      "commit": "592bceac0c030794175ae41d9c7e2ca092739d2e",
      "tree": "166baa3864417e773d7800489d063284ab32b9ab",
      "parents": [
        "79f874d287cb314dcf3fb8a78122d4296e91bd42"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 02 22:20:52 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 08 15:22:22 2021 +0000"
      },
      "message": "Add JNI globals tracing\n\nAdd separate tracing for global and weak global JNI references.\n\nWe only add an entry for every Nth addition or removal of a reference.\nCurrently N \u003d 17 to minimize danger of getting in sync with some\napplication code pattern.\n\nBug: 189738006\nBug: 192318532\nTest: Build boot and look at trace in S build.\nChange-Id: I2f223c2a07932f97f89ff87d57f4379c1396ef9e\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": "4f623272bdf76d0308af4e45a71fb5a728d4f0f1",
      "tree": "7403e7709f968dd6396fabe821c4eba88e5f87dd",
      "parents": [
        "1de4428db83a426fd7d0615dc9cdd204de41f6e3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 07 16:32:26 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 13:33:01 2021 +0000"
      },
      "message": "Fix another style issue reported by cpplint.\n\nTest: m cpplint-art-all\nChange-Id: I18cd3cbc47e8df4cfa319dde756edc1539cb8720\n"
    },
    {
      "commit": "1de4428db83a426fd7d0615dc9cdd204de41f6e3",
      "tree": "66e6141371e6a4e93f1eae26d3bac82b3a3e0085",
      "parents": [
        "515b0cf805c4ef9168516de814dabe087a037a69"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 05 11:44:39 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 10:03:23 2021 +0100"
      },
      "message": "Add standalone ART gtests to `TEST_MAPPING` group `mainline-presubmit`.\n\nOutput of `art/test/utils/regen-test-files`:\n\n  $ art/test/utils/regen-test-files\n  Generated Blueprint files for 626 ART run-tests out of 930 (67%).\n  Generated TEST_MAPPING entries for 376 ART run-tests out of 930 (40%):\n    376 ART run-tests (100%) in `mainline-presubmit` test group.\n     19 ART gtests (100%) in `mainline-presubmit` test group.\n    376 ART run-tests (100%) in `presubmit` test group.\n     19 ART gtests (100%) in `presubmit` test group.\n      0 ART run-tests (0%) in `postsubmit` test group.\n\nTest: Rely on TreeHugger presubmits\nBug: 178703264\nBug: 152379281\nChange-Id: I84da85e33c7ac1e44361bbb0b3bfa399ceab9b2f\n"
    },
    {
      "commit": "515b0cf805c4ef9168516de814dabe087a037a69",
      "tree": "41bc5dd107adb47a87eec95ab83f8c0be89ddf0b",
      "parents": [
        "3362cf159a0766f4a45691f7be568a88d0e60a8a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 05 19:21:15 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 08:37:21 2021 +0000"
      },
      "message": "Add more Libcore tests to the generated ART MTS definition.\n\nAdd `CtsLibcoreApiEvolutionTestCases`, `CtsLibcoreFileIOTestCases`,\nand `CtsLibcoreLegacy22TestCases` to the generated ART MTS definition.\n\nAdd these test modules to the existing ART MTS shard 02.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-02\nBug: 167385698\nChange-Id: Icf0e1ff4dae52d95e9ba687010029ae40a6a43a4\n"
    },
    {
      "commit": "3362cf159a0766f4a45691f7be568a88d0e60a8a",
      "tree": "057babf8cdf3f091dae131244c7e31b3f2cee38a",
      "parents": [
        "e431d134fb54cc7231ad3ab200e46a3dc06c66f2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 07 16:29:27 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 08:34:13 2021 +0000"
      },
      "message": "Tighten ART\u0027s OWNERS file.\n\nNo longer use a wildcard in OWNERS; instead, explicitly list all\nART members.\n\nTest: build/make/tools/checkowners.py -c art/OWNERS\nBug: 193029862\nChange-Id: I928ab19e413c35611e9f9c97948c21af5f7b44e2\n"
    },
    {
      "commit": "e431d134fb54cc7231ad3ab200e46a3dc06c66f2",
      "tree": "e88c92e42ad5a2a66b4ccda2e58c145055f6b731",
      "parents": [
        "b6e679292e526f48a2a7c389b37f920419243c27"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 06 08:16:34 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 08 07:32:31 2021 +0000"
      },
      "message": "Add a \"vdex\" reason for compilation reason.\n\nWhen the oat file is out of date, we run directly from the vdex.\n\nTest: test.py\nBug: 192408935\nChange-Id: I7474532d7f12a32d2c26a5a0fb8b73671793d3f3\n"
    },
    {
      "commit": "b6e679292e526f48a2a7c389b37f920419243c27",
      "tree": "90e1a4cf98ea510571fe45c38493b81e77f7d056",
      "parents": [
        "7209da0a46dd96ae5b9d73124ef09b4b0fe9ac25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 15:53:07 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 16:10:07 2021 +0000"
      },
      "message": "Move Transaction logs to arena allocator.\n\nAnd change some containers to reduce memory usage.\n\nAlso update `SafeMap` with some C++17 functions, namely all\n`erase()` and `extract()` overloads and `insert()` overloads\ntaking a \"node\". The `extract()` and `insert()` overloads\nare convenient to avoid allocation/dealocation when updating\nthe key of an entry.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I791d00598ac288b1f31c92daa63b5b3dcf6b41fa\n"
    },
    {
      "commit": "7209da0a46dd96ae5b9d73124ef09b4b0fe9ac25",
      "tree": "7a3227751b4eb8b8eef10eecf58c63d046bbbe62",
      "parents": [
        "6f244fa1658e216512cf6ef15a6301defaf0f5b0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 28 17:50:38 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 15:31:36 2021 +0000"
      },
      "message": "Support field VarHandle objects in boot image.\n\nTest: Build with WIP changes to implement AtomicInteger with\n      VarHandle. Build succeeds.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 191765508\nChange-Id: I084ab7b3cd082570a090f3470fdfb792b80f4505\n"
    },
    {
      "commit": "6f244fa1658e216512cf6ef15a6301defaf0f5b0",
      "tree": "ca44dcc6381cb69853e5bd57df9148b3fcaafe30",
      "parents": [
        "6cd7ab38ec76943d1b9cdc2191f1260188511b2b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 19:01:09 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 07 15:08:59 2021 +0000"
      },
      "message": "Fix style issue reported by cpplint.\n\nTest: m cpplint-art-all\nChange-Id: I884f334d7de2e84ea86d233d6dcaebf212f69f37\n"
    },
    {
      "commit": "6cd7ab38ec76943d1b9cdc2191f1260188511b2b",
      "tree": "7aea757a61ab1ac917d09151f08a6fc440cfa358",
      "parents": [
        "b17c908047a2df675ecb4bd0aa2b21114376bbae"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 09:35:50 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 11:39:34 2021 +0000"
      },
      "message": "Only set nterp entrypoint after a class is verified.\n\nIf a method needs lock counting, we need to use the switch interpreter.\n\nTest: test.py\nTest: 825-unbalanced-lock\nChange-Id: I50629d20305e01ce2efe75606b00641052378234\n"
    },
    {
      "commit": "b17c908047a2df675ecb4bd0aa2b21114376bbae",
      "tree": "f457b402b2c4455ab0843017dd64335640bf01b1",
      "parents": [
        "8fddc7519d756d4de6c2c1a4b14af5584e9fecba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 08:27:45 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 09:32:51 2021 +0000"
      },
      "message": "Set compilation reason in vdex-only OatFile.\n\nTest: test.py\nBug: 192408935\nChange-Id: Ib87ea546876bfb4c6bf87b60f5a4f8aa306bd186\n"
    },
    {
      "commit": "8fddc7519d756d4de6c2c1a4b14af5584e9fecba",
      "tree": "b832d2032e9a337ed31804e895426206de971854",
      "parents": [
        "85d6bf94dc0d3a9c648dc6d614a293c4e416b247"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 06 14:16:40 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 08:11:47 2021 +0000"
      },
      "message": "Handle potential OOME after ResolveNameString.\n\nTest: test.py\nBug: 192658894\nChange-Id: I10110c00326fd6f6da383cda0287542a2f1b61c6\n"
    },
    {
      "commit": "85d6bf94dc0d3a9c648dc6d614a293c4e416b247",
      "tree": "4405a93ef24c21e942a5c4eb95773fa3af257da2",
      "parents": [
        "24c080f628e7df51460332374f4ebcae2762d155"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 10:29:19 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 08:02:41 2021 +0000"
      },
      "message": "Test for static field VarHandle and class unloading.\n\nTest: Additional test in 710-varhandle-creation\nTest: testrunner.py --host --optimizing -t 710-varhandle-creation\nBug: 191980149\nChange-Id: I95b7d8c435fcf5286a57bba3d4877dfac65b5771\n"
    },
    {
      "commit": "24c080f628e7df51460332374f4ebcae2762d155",
      "tree": "cbb0231518ce4afc94310b13edb1b87e5f14600b",
      "parents": [
        "4dc6589f392d46800a3b64625245bdfe4bbbfc2f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 14:04:30 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 08:01:57 2021 +0000"
      },
      "message": "Remove locking from `Transaction`.\n\nMulti-threaded execution of transaction has never been fully\nsupported, so remove the unnecessary locking as it is pure\noverhead. (And implementing it would require a lot of effort\non transactions interfering with each other.)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Ibdbc335738d34ea1398f50f0cc763f3b3f5838b9\n"
    },
    {
      "commit": "4dc6589f392d46800a3b64625245bdfe4bbbfc2f",
      "tree": "b159262fd300a650ab89277667641ebe7e13d357",
      "parents": [
        "e0386f10d4591afa9823658099e4f2ac7a693255"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 05 17:43:35 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 07:13:01 2021 +0000"
      },
      "message": "Don\u0027t wrap VerifyError into NoClassDefFoundError.\n\nFollow RI behavior by returning the VerifyError. NoClassDefFoundError\nonly wraps initializer errors.\n\nAlso rename the field in ClassExt from verifyError to\nerroneousStateError for better clarity.\n\nAnd remove now unused feature of storing a class in the verifyError\nfield.\n\nTest: test.py\nTest: 824-verification-rethrow\nBug: 28313047\nChange-Id: I19383f7b74f22a62ab1e0b8a13bea75a14c7b33f\n"
    },
    {
      "commit": "e0386f10d4591afa9823658099e4f2ac7a693255",
      "tree": "433907529c66ad9ff68227b13c7e7c6ab4506c68",
      "parents": [
        "dd411969bb486c36081926d61dbcc0bfbc8066a5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 05 11:35:10 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 17:06:58 2021 +0000"
      },
      "message": "Add standalone ART gtests to `TEST_MAPPING` group `presubmit`.\n\nOutput of `art/test/utils/regen-test-files`:\n\n  $ art/test/utils/regen-test-files\n  Generated Blueprint files for 626 ART run-tests out of 930 (67%).\n  Generated TEST_MAPPING entries for 376 ART run-tests out of 930 (40%):\n    376 ART run-tests (100%) in `mainline-presubmit` test group.\n    376 ART run-tests (100%) in `presubmit` test group.\n     19 ART gtests (100%) in `presubmit` test group.\n      0 ART run-tests (0%) in `postsubmit` test group.\n\nTest: atest --test-mapping art:presubmit\nTest: Rely on TreeHugger presubmits\nBug: 152379281\nChange-Id: Ibfcf212a4bc3094ca74f8f3c0f98469810c6ea19\n"
    },
    {
      "commit": "dd411969bb486c36081926d61dbcc0bfbc8066a5",
      "tree": "aa0601299b351d41c349e64ed468cb2c9b95e6f4",
      "parents": [
        "f040914a122be86e280efe5e31af1168f2b7c72e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jun 25 08:55:22 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 13:58:08 2021 +0000"
      },
      "message": "VarHandle: add StaticFieldVarHandle class\n\nAdd StaticFieldVarHandle class to keep a live reference to the\ndeclaring class for the target field of VarHandle\u0027s targeting static\nfields.\n\nBug: 191980149\nTest: art/test.py --host -r -g\nChange-Id: I3a1cada6591d146b8f9fc9066105e3b617290185\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": "b4bd92f27fb143135870d07b459ea52637afcfa5",
      "tree": "521f811ea786e178f685316b035fe6cb0ced0605",
      "parents": [
        "53a6334ac751aceb65d4994b81f4af815f749295"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 05 12:18:26 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 08:21:13 2021 +0000"
      },
      "message": "Faster hashing in `ClassLinker::LinkVirtualMethods()`.\n\nMeasurement shows that `ComputeModifiedUtf8Hash()` is faster\nwhen iterating over `std::string_view` than `const char*`.\nHowever, getting the length of the string with `strlen()`\nwould outweigh the benefits, so we shall only use the new\n`ComputeModifiedUtf8Hash(std::string_view)` overload when\nwe can avoid (or usually avoid) the `strlen()` call.\n\nIn `ClassLinker::LinkVirtualMethods()`, method names come\nfrom the dex file and we can avoid the `strlen()` call as\nlong as they are ASCII which is usually the case (at least\nfor boot class path methods; proguarded apps sometimes use\nnon-ASCII method names), so use `std::string_view` there.\nAlso simplify the code a bit, avoiding the UTF16 length\ncomparison. This has some trade-offs as we delay the length\ncomparison until we know the length in chars (and compare\nthat length instead) but we also replace `strcmp()` with a\nfaster `memcmp()`.\n\nThe changes to the Modified UTF-8 hashing API also prepare\nfor future work such as calculating array class descriptor\nhash without a string allocation for the full descriptor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I6d45f738903000c55d401b776906dac83fca1a19\n"
    },
    {
      "commit": "53a6334ac751aceb65d4994b81f4af815f749295",
      "tree": "5d9f9c8fc1ca9e982972599d1bdf0969e1ebd2f0",
      "parents": [
        "2c9667363ba0f8178a077332a8ec1c74426fdc70"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 10 14:30:00 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 08:15:17 2021 +0000"
      },
      "message": "Improve comments in ReadBarrierOption.\n\nTest: m\nBug: 119486698\nChange-Id: I6afa42b03ac02b596b782a24fee2769d9138deee\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": "ea936c02701dc7ac773f5c2272dafde5e1967ea0",
      "tree": "2327327eff2fa2844fb71af8d9ee8a0f48dc7a74",
      "parents": [
        "8d5d58554519ffc673760ba932a77e113f68c5fe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 25 17:10:49 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 05 07:33:20 2021 +0000"
      },
      "message": "dex2oat: Faster retrieval of profile data.\n\nAvoid the slow `ProfileCompilationInfo::GetMethodHotness()`.\nCache profile index to avoid repeating the `DexFileData`\nsearch and use new specialized functions that retrieve only\nthe required information instead of full `MethodHotness`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Iaf8486a5e5b12f114c8abb9cfdedf6fc4ed62e20\n"
    },
    {
      "commit": "8d5d58554519ffc673760ba932a77e113f68c5fe",
      "tree": "39b5519ce4ba35bf0d15fd7e799811ec9a5e1d76",
      "parents": [
        "c94ab92f6e61b9ea9d90bdb3d72c4d4e2aab9db5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 30 17:58:18 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 18:27:22 2021 +0000"
      },
      "message": "Disable run-test `art-run-test-2040-huge-native-alloc`.\n\nThis test is currently failing when run with the `ArtRunTest` TradeFed\ntest runner.\n\nOutput of `art/test/utils/regen-test-files`:\n\n  Generated Blueprint files for 626 ART run-tests out of 930 (67%).\n  Generated TEST_MAPPING entries for 376 ART run-tests out of 930 (40%):\n    376 tests (100%) in `mainline-presubmit` test group.\n    376 tests (100%) in `presubmit` test group.\n    0 tests (0%) in `postsubmit` test group.\n\n(No change to generated ART test files.)\n\nTest: atest --test-mapping art:presubmit\nChange-Id: I2facdab526a263ddefa4b316c31c89ea2a019f55\n"
    },
    {
      "commit": "c94ab92f6e61b9ea9d90bdb3d72c4d4e2aab9db5",
      "tree": "b3159ecd96135c7a58999ae1bbcf4c625ee774fb",
      "parents": [
        "bf097b7f6354e7e1e8c0a7b97fb728744136e271"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 01 18:50:43 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 17:30:34 2021 +0000"
      },
      "message": "Add `liblog` as a dependency of `dex2oat` Soong modules.\n\nThis is in order to reduce differences in ART between AOSP and the\ninternal tree.\n\n(partly cherry picked from commit bdd9d71101edf4fd8220c18e28a7dccf8a72afda)\n\nTest: mmma art\nChange-Id: Ie00f630d1bbc6c196616b1f781b1eda4ae64b39f\nMerged-In: Ifeacba4cccf048e437b1906cf1592b8c2608cce4\n"
    },
    {
      "commit": "bf097b7f6354e7e1e8c0a7b97fb728744136e271",
      "tree": "da074baae153743c07ab7066befe853e37ee8afc",
      "parents": [
        "a9967a2ecee9043d92b97b21def3a9a4bdd803c2"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Thu Jul 01 21:42:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 02 22:17:10 2021 +0000"
      },
      "message": "ART clean up metrics reporter\n\nTest: TH\nChange-Id: Iaf177c301a6bc9dedde14aca2900d4c2376cde6a\n"
    },
    {
      "commit": "a9967a2ecee9043d92b97b21def3a9a4bdd803c2",
      "tree": "a42404426f94f397de86d2b4f44882fcc362adea",
      "parents": [
        "cd133d85874d94cd05b5ba11389c851550e6d8f4"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Wed Jun 30 21:43:13 2021 +0100"
      },
      "committer": {
        "name": "Anton Hansson",
        "email": "hansson@google.com",
        "time": "Fri Jul 02 17:16:38 2021 +0000"
      },
      "message": "Replace ART\u0027s core-platform-api stub with module-lib stubs\n\nThe stub should be identical now, and thus replacing it\nshould cause no behavior change.\n\nIt will help later remove the @CorePlatformApi usage in the\njava sources.\n\nBug: 192645954\nBug: 192446466\nTest: m droid\nChange-Id: I22538a0f65669885852a2cf1994c6d3a5561e52f\n"
    },
    {
      "commit": "cd133d85874d94cd05b5ba11389c851550e6d8f4",
      "tree": "514f7f1fa4bfaa9038e5c98a299543ccbb4bfdd6",
      "parents": [
        "971068dcaf5955634679dbfaf7b562ed52aff772"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 25 16:10:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 02 15:27:21 2021 +0000"
      },
      "message": "Verifier cleanups.\n\n- For apps \u003c\u003d S, keep the behavior of not analyzing an unreachable\n  handler. If \u003e\u003d T, we analyze it to simplify handling in the compiler.\n- Remove VERIFY_ERROR_SKIP_COMPILER and fold uncompilable methods into\n  checking HasInstructionThatWillThrow.\n\nTest: test.py\nBug: 28313047\nChange-Id: I20b65cf50def2a4a95617a03142575b8591ae0ec\n"
    },
    {
      "commit": "971068dcaf5955634679dbfaf7b562ed52aff772",
      "tree": "3e76f60e7136f53ca0d19a23914721515e8b2725",
      "parents": [
        "3d12876bd9782831ad5c907f1f9dc94d10867f3d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 30 21:17:53 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 02 10:19:42 2021 +0000"
      },
      "message": "runtime: add -Xdeny-art-apex-data-files\n\nThis option prevents the runtime from loading AOT artifacts installed\nin /data/misc/apexdata/com.android.art.\n\nBug: 192049377\nTest: manually adding option and running odsign_e2e_tests\nTest: adding option and looking at proc/maps for system_server and zygote\n\nChange-Id: I56c7ce55b64de72faf39a06238089fe4b6b84b88\n"
    },
    {
      "commit": "3d12876bd9782831ad5c907f1f9dc94d10867f3d",
      "tree": "cd2f65f171ff5ff83bd447513abf171696359262",
      "parents": [
        "1792c6ff1c9838dfbe948be124dc1a8501fc6636"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 01 09:01:51 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 02 01:40:06 2021 +0000"
      },
      "message": "Add special control flags for system server reporting\n\nSystem server is important enough to have its own config.\n\nTest: gtest\nBug: 170149255\nChange-Id: I33741751717ef3474f3a89e8fda8ad19b9e952ed\n"
    },
    {
      "commit": "1792c6ff1c9838dfbe948be124dc1a8501fc6636",
      "tree": "f8df705069592bc5037f6f580fcafe0df07f6d91",
      "parents": [
        "4f388e3f26925f84d0a623a5a0e3c909fd09bd98"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jun 24 17:35:50 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 01 20:17:33 2021 +0000"
      },
      "message": "Add -XX:ForceJavaZygoteForkLoop flag\n\nSetting this to true effectively disables the zygote native fork\nloop, either for testing/measurement purposes, or as a fallback.\n\nBug: 192020504\nTest: Check logcat with and without the flag.\nChange-Id: I83c401d21ae2797442011d9ac6f23c78990920bd\n"
    },
    {
      "commit": "4f388e3f26925f84d0a623a5a0e3c909fd09bd98",
      "tree": "5002223ee4d6b410d7e961ee50447d0a5538f14d",
      "parents": [
        "a934b1166e03f940f49b08acb7d777f7e24b584d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 12:39:14 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 01 10:19:16 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.compareAnd{Set,Exchange} for fields.\n\nReuse `GenCAS` function and extend it to support `compareAndExchange`\noperation in addition to `compareAndSet`. For convenience, split it into\nthree functions for integral types, floating-point types and references,\nas these cases are handled differently and require different number of\ntemporary registers.\n\nAlso, rename CreateIntIntIntIntIntToInt to CreateUnsafeCASLocations and\nuse RAX for output to take advantage of the CMPXCHG side-effect.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                                  before  after\n  ----------------------------------------------------------\n  CompareAndSetStaticFieldInt                2.843   0.00910\n  CompareAndSetStaticFieldString             3.256   0.01017\n  CompareAndSetFieldInt                      3.161   0.00910\n  CompareAndSetFieldString                   3.486   0.01017\n  WeakCompareAndSetStaticFieldInt            2.820   0.00895\n  WeakCompareAndSetStaticFieldString         3.222   0.01016\n  WeakCompareAndSetFieldInt                  3.144   0.00910\n  WeakCompareAndSetFieldString               3.454   0.01018\n  WeakCompareAndSetPlainStaticFieldInt       2.819   0.00896\n  WeakCompareAndSetPlainStaticFieldString    3.227   0.01016\n  WeakCompareAndSetPlainFieldInt             3.150   0.00909\n  WeakCompareAndSetPlainFieldString          3.456   0.01019\n  WeakCompareAndSetAcquireStaticFieldInt     2.822   0.00896\n  WeakCompareAndSetAcquireStaticFieldString  3.226   0.01016\n  WeakCompareAndSetAcquireFieldInt           3.148   0.00910\n  WeakCompareAndSetAcquireFieldString        3.455   0.01020\n  WeakCompareAndSetReleaseStaticFieldInt     2.820   0.00895\n  WeakCompareAndSetReleaseStaticFieldString  3.223   0.01015\n  WeakCompareAndSetReleaseFieldInt           3.143   0.00910\n  WeakCompareAndSetReleaseFieldString        3.458   0.01013\n  CompareAndExchangeStaticFieldInt           2.765   0.00895\n  CompareAndExchangeStaticFieldString        3.183   0.01012\n  CompareAndExchangeFieldInt                 3.076   0.00907\n  CompareAndExchangeFieldString              3.443   0.01015\n  CompareAndExchangeAcquireStaticFieldInt    2.774   0.00895\n  CompareAndExchangeAcquireStaticFieldString 3.177   0.01012\n  CompareAndExchangeAcquireFieldInt          3.092   0.00907\n  CompareAndExchangeAcquireFieldString       3.453   0.01015\n  CompareAndExchangeReleaseStaticFieldInt    2.796   0.00895\n  CompareAndExchangeReleaseStaticFieldString 3.193   0.01014\n  CompareAndExchangeReleaseFieldInt          3.105   0.00909\n  CompareAndExchangeReleaseFieldString       3.451   0.01015\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I816f9c6a3786efe921fe445536f9ea3ddae801d5\n"
    },
    {
      "commit": "a934b1166e03f940f49b08acb7d777f7e24b584d",
      "tree": "aeb390e4a6abfc0c27f99ac7c81cee541c51e09d",
      "parents": [
        "bbdb1ed109532f42949f84194e7717453f2f37f6"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue Jun 29 22:03:29 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 01 09:43:39 2021 +0000"
      },
      "message": "Export the system modules for module APIs stub\n\nBug: 183097033\nTest: m droid\nChange-Id: I9145fc31842fe852bfee092f1b56ba1a5c53e624\n"
    },
    {
      "commit": "bbdb1ed109532f42949f84194e7717453f2f37f6",
      "tree": "1fcdcf4cff743c209e1f9b732ea4a5b59d4f6939",
      "parents": [
        "9b996ce378e58f4699145721a1708732d5399a95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 29 14:12:05 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 01 09:42:30 2021 +0000"
      },
      "message": "Cache boot classpath checksums at runtime init.\n\nTo speed up oat file checksums check.\n\nTest: test.py\nBug: 191828947\nChange-Id: I2fe97a5626220470ec3edf457a3a24e7d50ce6d7\n"
    },
    {
      "commit": "9b996ce378e58f4699145721a1708732d5399a95",
      "tree": "be1392dd6a0c029c92f1de195b74961d83da112e",
      "parents": [
        "c2753e6beec483b5b14161b6bbc8e0a86aef9397"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 29 16:05:38 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 01 01:52:04 2021 +0000"
      },
      "message": "Replace JIT total time histogram with total time counter\n\nWe don\u0027t report histograms, so let\u0027s get the total time as a\nproxy to measure JIT activity.\n\nTest: gtest\nBug: 170149255\nChange-Id: I76911f5e7f93f00dc9f133e7f89a1045b31dedc7\n"
    }
  ],
  "next": "c2753e6beec483b5b14161b6bbc8e0a86aef9397"
}
