)]}'
{
  "log": [
    {
      "commit": "755b533082bb84a282f4a76ac3f6364a7c61e6cd",
      "tree": "9ee7565e256fb322d260adbf60eec06b6462aede",
      "parents": [
        "aa027b80a4fb57c97cabf1fc8ae72de6b1490a64"
      ],
      "author": {
        "name": "Rock.Yeh",
        "email": "rock.yeh@mediatek.com",
        "time": "Thu Jan 07 10:54:12 2021 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 07 13:44:17 2021 +0000"
      },
      "message": "Add newStringFromUtf8Bytes native implementation.\n\nPorting a part of StringFactory.newStringFromBytes from libcore to\nnative\nfor UTF-8 character set. It can improve the UX score of Antutu v8 a\nlittle\nbit.\n\nOnly watch UX score. We test 10 times and average the total score.\nBechmark results\n  - before(Java implementation):\n    10 times avg,: 13133.9\n  - after (Native implementation):\n    10 times avg.: 13324.2\n  Diff.: +1.4%\n\nBug: 176514597\nTest: ./test.py --host\nChange-Id: I6b601c09663b21fdacde7f14b0db1ac4f0a94c0f\n"
    },
    {
      "commit": "aa027b80a4fb57c97cabf1fc8ae72de6b1490a64",
      "tree": "dccec2a9f9fb7613c7184a4fb7f915dae2b098f3",
      "parents": [
        "54ed0150a42297a1a5e477d6569619193fcbffd0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 20:34:20 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 07 12:08:38 2021 +0000"
      },
      "message": "Fix Entry in CheckVTableHasNoDuplicates().\n\nThe Entry constructor initialized Entry.name_len in a call\nto another function as part of the Entry.name initialization\nbut given the order of members, the Entry.name_len was later\noverwritten with 0. When the change\n    https://android-review.googlesource.com/1535207\nreplaced strcmp() with memcmp(), relying on Entry.name_len\nbeing properly initialized, the equality comparison was\nbroken. We fix that by initializing Entry.name_len before\nthe Entry.name and also adjust it for non-ASCII characters.\n\nTest: m dump-oat  # No unexpected logs.\nBug: 175869411\nChange-Id: I08f3425b4dac25adddc4f720c110d85533b99d8b\n"
    },
    {
      "commit": "54ed0150a42297a1a5e477d6569619193fcbffd0",
      "tree": "9ba815d49f5222b47f6d81127379c11b8876ba3a",
      "parents": [
        "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:29:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 09:09:26 2021 +0000"
      },
      "message": "Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.\n\nNterp always supported it, but the compiler was missing a check.\n\nTest: test.py\nTest: 600-verifier-fails\nChange-Id: I8675ca6f61c68c4152212c81843da8248781f18a\n"
    },
    {
      "commit": "bd570591eab2d683eb634ac057dbf9f0e1337f8c",
      "tree": "b50ac19257a71cd9efb2ce596764b445a89cae87",
      "parents": [
        "bde70600e1bfa837fa48ea8da350f60b50272aa6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:37:44 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 16:31:10 2021 +0000"
      },
      "message": "Handle missing methods in compiler and nterp.\n\nNterp already supported it, but there was a missing check in the\ncompiler.\n\nTest: test.py\nTest: 552-invoke-non-existent-super\n\nChange-Id: Ife9f3f6782f09bd9780940bcb78160aa11db12d2\n"
    },
    {
      "commit": "782fb716122d37dc4c4d7482afb21f6e68be04b4",
      "tree": "fdbf479b04c73f692051dc8abf6efda3114a87e4",
      "parents": [
        "5bcdd17a43fda7ac27968b13f6969133fae40b37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 12:47:31 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:05:34 2021 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker.\n\nExtend the HashSet\u003c\u003e and HashMap\u003c\u003e API with constructors\nthat allow using a stack-allocated initial buffer to avoid\nthe allocation overhead for small containers.\n\nFix HashMap\u003c\u003e implementation for std::pair\u003c\u003e being used\nas the Key. Make Signature copy-assignable so that we can\nuse it as (part of) a Value in HashMap\u003c\u003e.\n\nMove the definition of ClassLinker::MethodTranslation from\nclass_linker.h to class_linker.cc. Add a default constructor\nused for creating empty entries in HashMap\u003c\u003e.\n\nUse HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker instead of\nstd::unordered_map\u003c\u003e and std::unordered_set\u003c\u003e as it is much\nfaster thanks to avoiding individual nodes that need malloc\nand free and for small containers we also avoid allocations\nthanks to the extended HashSet\u003c\u003e and HashMap\u003c\u003e API.\n\nAlso avoid unnecessary std::vector\u003c\u003e for FillIfTable() and\nreplace linear search with HashSet\u003c\u003e lookup (note that the\n`ContainsElement()` helper has an overload for std::set\u003c\u003e\nbut not for any other associative container).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I48722fb3bb7780bf12fb71c7449494e097e4a368\n"
    },
    {
      "commit": "5bcdd17a43fda7ac27968b13f6969133fae40b37",
      "tree": "85a3bd26695ec872bbf5675f303557d38c8805a2",
      "parents": [
        "cb5f97df7fd3d40a6c92fa46ba98894d5d327efb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:40:14 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 14:35:51 2021 +0000"
      },
      "message": "Remove unused VERIFY_ERROR_NO_FIELD.\n\nTest: test.py\nChange-Id: I72f547c4336e5f60aa762f205323ee8aef023c5f\n"
    },
    {
      "commit": "6e6f1b2ffb243b3e5ae112bba3cd52031deb31ba",
      "tree": "df7254d763ca274ed23b012e47e825a4444d1bfd",
      "parents": [
        "8de1fc3a75dcc900aed271a4f654d912a8838c1d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 15 19:13:19 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 05 21:51:00 2021 +0000"
      },
      "message": "Do not open dex files in CLC if we only need to get dexopt status\n\nThe verifying the class loader context when calling GetDexOptNeeded\nwe only need the dex locations and the checksums. Opening the full\ndex files may lead to in memory extraction which is expensive and\nunnecessary.\n\nAdd a special path in ClassLoaderContext::OpenDexFiles which will\nextract the locations and the checksums from the apk instead of\nactually opening the dex files.\n\nWe re-uses the same logic in OpenDexFiles in order to avoid\nimplementing the opening algorithm twice (which, given all the edge\ncases is not trivial).\n\nBug: 169869944\nTest: test-art-host\nChange-Id: Ic327889677ce697cd60c5c688281515b932a2a76\n"
    },
    {
      "commit": "8de1fc3a75dcc900aed271a4f654d912a8838c1d",
      "tree": "0f66a2f886ac5eb074cfa5f20ddb7729ad383afe",
      "parents": [
        "b677affde680c730aa22fab4d7eeb9fabb38d3c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 17 16:47:26 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 05 21:35:44 2021 +0000"
      },
      "message": "Switch to sigset64_t.\n\nOtherwise art::SignalSet doesn\u0027t work for RT signals on LP32.\n\nBug: https://issuetracker.google.com/172588429\nTest: treehugger\nChange-Id: I6f2a773b9b1beaf29a6f7df3d17d449b68fb5f5e\n"
    },
    {
      "commit": "b677affde680c730aa22fab4d7eeb9fabb38d3c0",
      "tree": "92b8a23ee7a5f05c81d34f555dd13d196101aee7",
      "parents": [
        "ef28d24d7625943cc2b53e10bbece86a305b3ffd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:07:10 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 13:06:18 2021 +0000"
      },
      "message": "Support VERIFY_ERROR_CLASS_CHANGE in nterp and compiler.\n\nThey were always supported.\n\nTest: test.py\nChange-Id: I2ef6ee279ad14740e1a59adc486ef078ad511d83\n"
    },
    {
      "commit": "1332a5702eab9facc2b67ea524e0b41a055524e4",
      "tree": "df8aec08d459990611c95765874cd2ac963c15cc",
      "parents": [
        "eeaf8bd989a5bbe2ffdacff5a0a3a4acece7e824"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Dec 23 15:36:23 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Dec 24 01:59:56 2020 +0000"
      },
      "message": "Add a workaround for null klass during marking phase\n\nThere is a race condition due to which sometimes we read a null class\npointer from an object during marking phase in AddLiveBytesAndScanRef().\nThis CL adds a workaround (until the root cause is identified). The\nworkaround is to wait a small amount of time and read the class\npointer again, which seems to work.\n\nTest: art/test/testrunner/testrunner.py\nBug: 173676071\nBug: 173771057\nChange-Id: I96004341c54593e9e6c5b4fa4a2ec6713acd0af7\n"
    },
    {
      "commit": "cea158fa671917938562c69c143ac5a8b2a29fc7",
      "tree": "4972a46da5fb371823ff2dcd76fc575aebe21a60",
      "parents": [
        "b6639157466750e34cc9d782b28d04f2ce0ddc60"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 11:07:05 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 12:52:52 2020 +0000"
      },
      "message": "Fix logging image spaces.\n\nFix an error introduced by\n    https://android-review.googlesource.com/833352 .\n\nTest: m\nBug: 176155658\nChange-Id: Ibb48674165ffb4a9a465865d6728661c1fb5340d\n"
    },
    {
      "commit": "b6639157466750e34cc9d782b28d04f2ce0ddc60",
      "tree": "8019aa25c131bb7a0e20ab86f9486114adfe7a4d",
      "parents": [
        "ce2e0957f065002293ef152da28b6fa941c6baa3"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Sat Dec 12 23:09:14 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Dec 22 18:12:57 2020 -0800"
      },
      "message": "Add more logging to region-space for OOME\n\nAdd available regions for allocation to the log message in region space.\n\nBug: 154100060\nTest: test/testrunner/testrunner.py 004-ThreadStress\nChange-Id: Ic6f645357d8d866050e6bb25bd858a2adcc9e27b\n"
    },
    {
      "commit": "ce2e0957f065002293ef152da28b6fa941c6baa3",
      "tree": "d8c28f4e46c4140b073331ea69b8b14e87590f15",
      "parents": [
        "fff1d8f9f3881d223f3d068f974da14f3d80de88"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 11:24:36 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 13:29:17 2020 +0000"
      },
      "message": "Revert \"[metrics] Add file output support\"\n\nThis reverts commit 51a9283984b05511bd98f9bcbd1f2f18900239cc.\n\nReason for revert: The new test is broken on device.\n\nBug: 175025360\nBug: 170149255\nChange-Id: I94d33f9e3d2203a0323fd5dc34f5a6f3e6147367\n"
    },
    {
      "commit": "fff1d8f9f3881d223f3d068f974da14f3d80de88",
      "tree": "6aed4bd680f0fac601660af750895f8fac3d7e3d",
      "parents": [
        "51a9283984b05511bd98f9bcbd1f2f18900239cc"
      ],
      "author": {
        "name": "liulvping",
        "email": "liulvping@xiaomi.com",
        "time": "Mon Dec 21 09:43:37 2020 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 13:27:22 2020 +0000"
      },
      "message": "Fix incorrect image pointer size for unstarted runtime\n\nIn unstarted runtime, we should use image pointer\nsize from current runtime, not kRuntimePointerSize\nfor invoke method. Because in host dex2oat, the\nkRuntimePointerSize is always k64, and then invoke\nmethod could get a null ArtMethod object in compiling\nboot image for arch 32, such cause a native crash issue.\n\nBug: 176012754\nTest: m test-art-host-gtest-unstarted_runtime_test\n\nSigned-off-by: liulvping \u003cliulvping@xiaomi.com\u003e\nChange-Id: I8ff4cf013cbe94114c38edfdf30ff509a047a761\n"
    },
    {
      "commit": "51a9283984b05511bd98f9bcbd1f2f18900239cc",
      "tree": "09b25eb574b2c93f4e940bfab423b58acdf340bd",
      "parents": [
        "20cadbf2a204a029b595cd44f9298f6570b5c812"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Dec 07 15:07:00 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 21 18:09:31 2020 +0000"
      },
      "message": "[metrics] Add file output support\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360, 170149255\nChange-Id: I83a4f959cbb96847dc71188035c050a73b915064\n"
    },
    {
      "commit": "50bbbf1ae5ee1c22d8f31e5f5dc14eab0258303e",
      "tree": "566cfc9e69d9e543cf652b00d36db214dfb2efe8",
      "parents": [
        "4bf753dc70407589e0f0b5bccb0a88c276488058"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 14:07:46 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 16 14:06:19 2020 +0000"
      },
      "message": "arm/nterp: Refactor {i,s}{get,put} operations.\n\nMove the fast-path code to instruction handlers and use\n`add_helper` for slow paths. Do a few small improvements for\ncode reuse and instruction scheduling.\n\nRemove unnecessary `dmb ish` instructions. We do not need\nthe barrier before a volatile load and the arm32 Optimizing\ncode generator does not emit such barrier either. And the\niget-wide opcode also had an odd barrier after setting vregs.\n\nAlso move the code for check-cast, instance-of and\nnew-instance to instruction handlers with no changes\nother than indentation.\n\nAlso update some labels and a comment in arm64 nterp to\nalign with the arm changes.\n\nTest: testrunner.py --target --32 --interpreter --optimizing\nBug: 112676029\nChange-Id: I4133b3d362e1c9610558cba76f067d8923234c62\n"
    },
    {
      "commit": "4bf753dc70407589e0f0b5bccb0a88c276488058",
      "tree": "feb79aa95a7d4c258536f397a68d3f798921b1fa",
      "parents": [
        "232efef0c8ecb532fabad83bee916101b716d75c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 14 20:33:53 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 15 14:19:59 2020 +0000"
      },
      "message": "Add two flags to customize JIT zygote.\n\n1) -Xuseprofiledjit to do compilation of system server (and potentially\napps) at startup with a profile\n2) -Xjitzygotepthreadpriority to set the zygote JIT thread priority.\n\nBug: 119800099\nTest: m\nChange-Id: I131c5a8bae0f4b15c33c3e24e07465b7858f7fe2\n"
    },
    {
      "commit": "5ff2393e1fb6e61fc74f20c66f80f4b8656987d1",
      "tree": "e94b8cfc92379678b4f2e6446aa6d28a6408222f",
      "parents": [
        "99459f3bdd8d569ec7054920cbc32e6915d1e125"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 11 18:26:14 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 14 19:00:35 2020 +0000"
      },
      "message": "Remove stripped-apk related logic from CLC\n\nStripped-apks are no longer supported by the runtime and\nthe current logic prevents bug fixes and code evolution.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: I30d5825e4f6453981ca9165bebafe67557c28b93\n"
    },
    {
      "commit": "5e82b184ef51672df491374f81cd6a69b40a133c",
      "tree": "5c859773d931d5e1525a58ae1a91fe0bb879b322",
      "parents": [
        "73366109eec37b75f77f24e6e52832047508b34f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 08 08:57:36 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 14 13:41:03 2020 +0000"
      },
      "message": "Make it a verification error to misuse FastNative and CriticalNative.\n\nBug: 175016705\nTest: 004-JniTest\nChange-Id: I10a1d6d29ebab105a2dd55ed796742c13c221ae2\nMerged-In: I10a1d6d29ebab105a2dd55ed796742c13c221ae2\n(cherry picked from commit 80f8973cb13feff2336345719066e0a65eb48ca7)\n"
    },
    {
      "commit": "73366109eec37b75f77f24e6e52832047508b34f",
      "tree": "b4467d6220aa9aa06bbbca2440d3cefa57ecd5a7",
      "parents": [
        "cf097a7dba6eb0f9c788e7284efd46640b100e1f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun Dec 13 01:28:33 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 13 14:33:59 2020 +0000"
      },
      "message": "Revert \"[metrics] Add background reporting thread\"\n\nThis reverts commit 77f7eb9d05b6d05531556882d99ed63688c6e3b0.\n\nReason for revert: We\u0027re seeing consistent 2233-metrics-background-thread failures on target.\n\nChange-Id: Ie394dbe90289b1472ac4c8876d01ece347541852\n"
    },
    {
      "commit": "77f7eb9d05b6d05531556882d99ed63688c6e3b0",
      "tree": "76754e225ffd358eda851b51d7ca541843d6040b",
      "parents": [
        "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 14:54:23 2020 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Dec 10 12:34:45 2020 -0800"
      },
      "message": "[metrics] Add background reporting thread\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nTest: test/run-test --host test/2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nChange-Id: I4d6ae7701dd2fe36bc761ef6170ddd6860a3c0e6\n"
    },
    {
      "commit": "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97",
      "tree": "80db436fe3cc84f052edd0bf4ace6435cc8d625d",
      "parents": [
        "955f40f336c201a93832081d2070d66a15521fa4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 16:59:18 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 16:30:07 2020 +0000"
      },
      "message": "Disable VMRuntime_preloadDexCaches\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nTest: device boots\nChange-Id: I32bff875f3784e8bc0c7350be9b02c59216d234b\n"
    },
    {
      "commit": "955f40f336c201a93832081d2070d66a15521fa4",
      "tree": "1f7e09f798cab0930e3cf39ffdb6ea389fa2ae33",
      "parents": [
        "10bb9c5cff67f7fa205187edfb513022423542d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 03 14:53:29 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 14:46:51 2020 +0000"
      },
      "message": "arm64/nterp: Refactor {i,s}{get,put} operations.\n\nMove the fast-path code to instruction handlers and use\n`add_helper` for slow paths. Do a few small improvements\nfor code reuse and instruction scheduling.\n\nAlso move the code for check-cast, instance-of and\nnew-instance to instruction handlers with no changes\nother than indentation.\n\nTest: testrunner.py --target --64 --interpreter\nTest: testrunner.py --target --64 --interpreter --gcstress\nBug: 112676029\nChange-Id: Ife358adb39153d6dbb595ee8072ebcafe364fad4\n"
    },
    {
      "commit": "4462b11094614d0d536eac22b71e1c33030f2418",
      "tree": "b79fcd75cdd536116819f1c6881cb04af493ef38",
      "parents": [
        "2610dfeeafc061049452f5cbb778646ce43e8a9a"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Dec 08 15:54:52 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Dec 10 00:04:53 2020 +0000"
      },
      "message": "Add logging if klass pointer found to be null.\n\nIt is unclear why klass pointer is observed to be nullptr some times\nduring marking phase of full-heap collection. It is possible that some\nrace condition is leading to this. To confirm, this CL adds a sleep and\nthen crashes.\n\nTest: test/testrunner/testrunner.py\nBug: 173676071\nChange-Id: I48dbdd38bf8261b7661ec3299678101c9c31c79e\n"
    },
    {
      "commit": "e9fb15381802428696dfaf848ea2187a0956fa7d",
      "tree": "48039d02d4f2c41c78b73355581e2716913b55c1",
      "parents": [
        "21f9a37d36da5a004e79250037a4b60e8d1e5563"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 07 16:34:41 2020 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 09 16:25:15 2020 +0000"
      },
      "message": "Guard profile_cache_ with profile lock\n\nPrevent possible race conditions with SIGUSR1.\n\nBug: 174924436\nTest: test.py\n\nChange-Id: I799b9815ed31ed755104e69337b35e09ecad9b83\n"
    },
    {
      "commit": "21f9a37d36da5a004e79250037a4b60e8d1e5563",
      "tree": "bef1d186c5275016016cb3dcefbe0b06d0806dd0",
      "parents": [
        "ce36b5f924283240a27fbaa520269b43e13ffd69"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Mon Dec 07 20:07:15 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Wed Dec 09 16:08:08 2020 +0000"
      },
      "message": "Make CompatFramework::ReportChange thread safe\n\nGuard accesses to reported_compat_changes_ with\nreported_compat_changes_lock_. Guarding disabled_compat_changes_ should\nnot be necessary, as it\u0027s initialized synchronously early after zygote\nfork, never to be changed afterwards.\n\nBug: 174843201\nTest: manual\nChange-Id: I73b5dadf0576c2bc163602f566486172c35dd78d\n"
    },
    {
      "commit": "1f947b4dd13fe560a371fb5610ac619ef0546306",
      "tree": "8f65535f2e6a5bcd571c2974c9bccb9107b0eab4",
      "parents": [
        "17491ac89fffc79452c4a88b39a9b74f342508d3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 16:08:04 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 09 11:50:42 2020 +0000"
      },
      "message": "Exclude zygote methods from FreeAllMethodHeaders DCHECK\n\nZygote method set can change concurrently.\n\nBug: 175006160\nTest: run jit-zygote configuration with the check enabled.\nChange-Id: I973ab9303ade65ad7cad706b99e895b9c673ffb4\n"
    },
    {
      "commit": "17491ac89fffc79452c4a88b39a9b74f342508d3",
      "tree": "07f6feb62355a281591e62aad6480e68ee2eb326",
      "parents": [
        "45aa2affa521190d5b619b6a9e3b3d20b719c076"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 12:02:29 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 09:29:24 2020 +0000"
      },
      "message": "JNI: Faster jobject decoding by avoiding checks.\n\nAvoid costly runtime checks in Thread::DecodeJObject() and\nIndirectReferenceTable::Get() that it calls and replace them\nwith DCHECK()s and checks in CheckJNI. This improves the\nperformance of JNI interface in release mode for processes\nthat do not use CheckJNI (default for non-debuggable apps).\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\n(medians from 3 runs)       before after\ntimeGetBytesAscii EMPTY     477.70 408.18\ntimeGetBytesIso88591 EMPTY  473.00 412.15\ntimeGetBytesUtf8 EMPTY      468.96 402.78\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: blueline-userdebug boots.\nBug: 172332525\nChange-Id: Ibea788bb54879d1fca0608c30fde008063aaafcc\n"
    },
    {
      "commit": "45aa2affa521190d5b619b6a9e3b3d20b719c076",
      "tree": "7388a33945dd069cf3f12c05c4cebfc46b8b1b49",
      "parents": [
        "33787687f52798fd5b584edb4c88717d134c367a"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Dec 08 15:06:36 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Dec 09 02:05:31 2020 +0000"
      },
      "message": "Make active_concurrent_copying_collector_ atomic\n\nTest: art/testrunner/testrunner.py\nBug: 139525088\nChange-Id: I1d350d841005e558e34476a3ea143e1fdb257a69\n"
    },
    {
      "commit": "33787687f52798fd5b584edb4c88717d134c367a",
      "tree": "d55000cc678080980e6f4dd99d4acbe032119408",
      "parents": [
        "858cfd81c4fddbc950f9be2e3599b15aabaa501a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jul 26 14:27:18 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 08 23:29:58 2020 +0000"
      },
      "message": "SDK-stub controlled dex2oat verification\n\nAllow dex2oat to further limit the resolved (boot classpath) symbols\nduring verification according to an additional list of public SDK files.\n\nThe additional SDKs can be specified as regular classpath (a list\nof dex files) and has the effect of limiting what can be resolved from\nthe boot classpath. The extra checks are performed by comparing the\nsymbol descriptors and do not replace common verification access-checks\nflow.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: Idc13722f34b591d7f858ebeb94bd6f568102b458\n"
    },
    {
      "commit": "858cfd81c4fddbc950f9be2e3599b15aabaa501a",
      "tree": "ec99cb338f91bdb5d7b6b2aafe14691634608786",
      "parents": [
        "5f1c452b6e4eab1d16ae3d37c895975285150c9d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 23 19:21:09 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 08 23:29:58 2020 +0000"
      },
      "message": "Move dex2oat invocation to common header\n\ndex2oat_test is becoming overly complex with a huge number of tests.\nIn order to reduce the complexity in preparation for new tests,\nmove the common dex2oat invocation to the shared header.\n\nTest: gtest\nBug: 112285035\nChange-Id: I741ef3e78f7eb4302d786feb53b5fd90b63dcf94\n"
    },
    {
      "commit": "3a284f8a75881d28b4df4e47177658c93953ea3b",
      "tree": "d190fbdd8c5dfee0231d55fb4a98cc2ca12945a0",
      "parents": [
        "a1cc540761ba475fc49704b0cc14d9de1987238e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 07 18:49:34 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 07 21:56:45 2020 +0000"
      },
      "message": "Do not strip art libraries on host (as before)\n\nThe build system also supports the strip property on host now.\n(it never stripped on host before regardless of the property)\nAdjust the build config to preserve previous semantics.\n\nBug: 174979406\nBug: 175034953\nTest: test.py -r -b --host -t 137 --ndebug\nChange-Id: I6aa4163aaae00538c61bb99c96c849ccdd9308d1\n"
    },
    {
      "commit": "a1cc540761ba475fc49704b0cc14d9de1987238e",
      "tree": "287e3e4ee6c29700399d650363b9ae5fa1035d7a",
      "parents": [
        "15489fb20f8863052daef5e9e16190ef1cbe6735"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Dec 04 23:37:11 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 07 20:28:34 2020 +0000"
      },
      "message": "Revert^2 \"Add MessageQueue for cross-thread communication\"\n\nThis reverts commit c7edde06dc2cfb90114898e8de82e0e1287c2885.\n\nReason for revert: fixing bugs.\n\nThere were two issues. The first was a logic error in\nMessageQueueTest::ReceiveInOrder.  The test would allow any message to\nbe replaced by a timeout message, but then the sequence would be out of\nsync. The change now explicitly advances the message pointer, which\nmeans the timeout message does not effectively replace an expected\nmessage.\n\nThe seccond issue was one where MessageQueue may try to call\nConditionVariable::TimedWait with a negative timeout if the deadline had\nalready passed, which fails with an EINVAL error during the call to\nfutex. The code in MessageQueue::ReceiveMessage now checks for negative\ntimeouts before calling TimedWait.\n\nTest: m test-art-host-gtest-art_runtime_tests\nBug: 174652565\nChange-Id: I107af849e2a01727719f7662a7685d989b42d176\n"
    },
    {
      "commit": "df38537c2fe4d57730e9e4a359f05ebe1e7dddab",
      "tree": "1df8ac5ae6e1a82afa47114af9b5d5515b26e02d",
      "parents": [
        "c7edde06dc2cfb90114898e8de82e0e1287c2885"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 01 10:39:20 2020 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 05 00:31:56 2020 +0000"
      },
      "message": "Add dex_instruction_list.h to libart_mterp.armng genrule tools\n\ndex_instruction_list.h is read by gen_mterp.py by searching relative\nto the script, add it to tool_files so it gets a dependency and\nso it gets copied if tools are sandboxed.\n\nBug: 124313442\nTest: m checkbuild\nChange-Id: Ie4b01b6572a9fd345e80cd40aff4be9db46d0207\n"
    },
    {
      "commit": "c7edde06dc2cfb90114898e8de82e0e1287c2885",
      "tree": "1f207ed4fb46dc71c7546b2a5222d2527119d14c",
      "parents": [
        "a3148d24c257b110a71114725d7d0d33c60bbc66"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Dec 04 18:51:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 23:31:43 2020 +0000"
      },
      "message": "Revert \"Add MessageQueue for cross-thread communication\"\n\nThis reverts commit de60ef3f91af06a3b8ef24f4bab5c547dc65e10d.\n\nReason for revert: bot failures - http://b/174652565\n\nChange-Id: I23dc6d275ce04a8cd78c92728a8d33f66979e481\n"
    },
    {
      "commit": "a3148d24c257b110a71114725d7d0d33c60bbc66",
      "tree": "d4b699b3b7f2602abf2ba366b1789f73fd541baa",
      "parents": [
        "e4f2215df60f0408d37ec796ececaa32b860d37a"
      ],
      "author": {
        "name": "Jeffrey Huang",
        "email": "jeffreyhuang@google.com",
        "time": "Fri Dec 04 11:42:55 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 22:17:03 2020 +0000"
      },
      "message": "Migrate comment to new proto_logging directory\n\nBug: 167962588\nTest: TH\nChange-Id: I38998075d8ff09385eb3e77fe26364a85258b3bc\n"
    },
    {
      "commit": "e4f2215df60f0408d37ec796ececaa32b860d37a",
      "tree": "44aa9093d846a27a1681e60ebcc5d07f7b1a41c3",
      "parents": [
        "86d6cd53385eae365f16f45e1a5947cc6595eb63"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 15:23:33 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 22:14:15 2020 +0000"
      },
      "message": "[metrics] Move metrics code to runtime\n\nThe background reporting thread is going to need tighter ties to the\nRuntime object, so it makes sense to bring the rest of the metrics code\nunder runtime. Since these are mostly runtime metrics, this is a more\nlogical place for them anyway.\n\nTest: m test-art-host-gtest-art_runtime_tests\nBug: 170149255\nChange-Id: Ib425041c41a5283237af8dd9978582e605a89a31\n"
    },
    {
      "commit": "86d6cd53385eae365f16f45e1a5947cc6595eb63",
      "tree": "ce94ee1f5d574b2891163f9b9695c97142efd00d",
      "parents": [
        "af17e5f33380ad39d83c31d97a29f3c836150fa1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 02 18:13:10 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 04 14:31:35 2020 +0000"
      },
      "message": "Remove DexCache arrays from image.\n\nRemove the hashtable storage from the image and allocate it at\nruntime instead (but keep the DexCache object in the image).\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nThe next step will be to make DexCache variable-size so it can\nadapt to both of the extremes (taking minimal amount of memory\nfor compiled code and avoiding cache evictions in interpreter).\n\nTest: test.py --host\nChange-Id: I9f89e8f19829b812cf85dea1a964259ed8b87f4d\n"
    },
    {
      "commit": "af17e5f33380ad39d83c31d97a29f3c836150fa1",
      "tree": "c58dab78ef0863e7d8838a608411043282391ea4",
      "parents": [
        "ecd94cf3dfe6dd657f9e4412200c5a00d8f945a6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 09:55:27 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 13:42:08 2020 +0000"
      },
      "message": "[jitzygote] Handle native methods when remapping boot image.\n\nChild processes might call RegisterNative on boot classpath methods\n(like system server), and we need to preserve the pointer provided there\nbefore remapping the boot image methods.\n\nTest: jitzygote build, local runs for go/art-jitzygote-perf works\n\nBug: 173677667\nChange-Id: Ic513eb4f86f2538e00e16e92d8c41a98b7cd3574\n"
    },
    {
      "commit": "e8cdb0bb53e42316e8c7379d41a647ca672c4bee",
      "tree": "673a1de6475b31d219f92d6ca9abc1e605ee4eae",
      "parents": [
        "73556f3fcb65a9adc81ddfce076b8e658161ea4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 13:43:46 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 17:08:07 2020 +0000"
      },
      "message": "[arm nterp] Fix stack offset when calling range String.\u003cinit\u003e.\n\nThere was a off-by-one error in the stack offset.\n\nBug: 174634082\nTest: 723-string-init-range\nChange-Id: Ibf982642b9b46fa4a44422f5ee5b7af2c3b07204\n"
    },
    {
      "commit": "59d4b53e70bc1e0589ce05428c945b4585e28d0f",
      "tree": "f7ca666fa879e98e89956053911c5d206b09787d",
      "parents": [
        "de60ef3f91af06a3b8ef24f4bab5c547dc65e10d"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Oct 21 17:49:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 01 09:19:19 2020 -0800"
      },
      "message": "[metrics] Add -Xwrite-metrics-to-log option\n\nThis CL adds a -Xwrite-metrics-to-log command line option, which causes\nART to write metrics to logcat at shutdown. At the moment, this is\nmostly useful for tests, but this change also lays some of the\nfoundation for more flexible metrics reporting.\n\nTest: test/run-test --host 2232-write-metrics-to-log\nBug: 170149255\nChange-Id: Ie4db70b9be83b2dc82e62798aa9977120a6e4ac5\n"
    },
    {
      "commit": "de60ef3f91af06a3b8ef24f4bab5c547dc65e10d",
      "tree": "b38a5e073fc45c314deafd3301b233af4e0915f5",
      "parents": [
        "df105da771446bf686de567b36d9d982dc641ad5"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Nov 19 15:51:10 2020 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 01 17:06:45 2020 +0000"
      },
      "message": "Add MessageQueue for cross-thread communication\n\nThis adds a message queue that allows for sending messages of several\ndifferent types between threads. This can simplify communication with\nthreads that need to do periodic background work driven by certain\nevents (including timeouts). One example will be the metrics reporting\nbackground thread.\n\nSee the MessageQueue class comments for examples of use.\n\nTest: m test-art-host-gtest-art_runtime_tests\nChange-Id: I831c79a4115c6b9540c2ef1801f2fa894ab96dc9\n"
    },
    {
      "commit": "3d350a8ab8ca1fbc3e9fd3cab903fa777dfb329b",
      "tree": "d1ec9fe70b68423b28e69e3370c96c970fb39a0f",
      "parents": [
        "2ecdbc45535f7594dc1684a06b47624aaeff8502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 14:14:27 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 15:04:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle CAS intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                26.452 0.031\nCompareAndSetStaticFieldString             31.672 0.037\nCompareAndSetFieldInt                      29.569 0.033\nCompareAndSetFieldString                   34.095 0.042\nWeakCompareAndSetStaticFieldInt            26.470 0.031\nWeakCompareAndSetStaticFieldString         31.604 0.038\nWeakCompareAndSetFieldInt                  29.619 0.033\nWeakCompareAndSetFieldString               34.058 0.040\nWeakCompareAndSetPlainStaticFieldInt       26.508 0.026\nWeakCompareAndSetPlainStaticFieldString    31.675 0.031\nWeakCompareAndSetPlainFieldInt             29.635 0.028\nWeakCompareAndSetPlainFieldString          34.116 0.034\nWeakCompareAndSetAcquireStaticFieldInt     26.512 0.030\nWeakCompareAndSetAcquireStaticFieldString  31.661 0.035\nWeakCompareAndSetAcquireFieldInt           29.661 0.032\nWeakCompareAndSetAcquireFieldString        34.120 0.038\nWeakCompareAndSetReleaseStaticFieldInt     26.566 0.027\nWeakCompareAndSetReleaseStaticFieldString  31.659 0.034\nWeakCompareAndSetReleaseFieldInt           29.676 0.029\nWeakCompareAndSetReleaseFieldString        34.204 0.037\nCompareAndExchangeStaticFieldInt           25.550 0.031\nCompareAndExchangeStaticFieldString        31.219 0.039\nCompareAndExchangeFieldInt                 28.923 0.032\nCompareAndExchangeFieldString              33.622 0.040\nCompareAndExchangeAcquireStaticFieldInt    25.559 0.029\nCompareAndExchangeAcquireStaticFieldString 31.177 0.037\nCompareAndExchangeAcquireFieldInt          28.807 0.031\nCompareAndExchangeAcquireFieldString       33.524 0.038\nCompareAndExchangeReleaseStaticFieldInt    25.481 0.027\nCompareAndExchangeReleaseStaticFieldString 31.132 0.036\nCompareAndExchangeReleaseFieldInt          28.825 0.029\nCompareAndExchangeReleaseFieldString       33.511 0.038\n\nOddly, this rewrite makes the Unsafe CAS benchmarks regress\na bit on this configuration. However, experiments show that\nadding useless CLZ+LSR operating on a temporary register\n(corresponding to the old code\u0027s result calculation) would\nrestore the performance to the old level. We prefer not to\nadd these useless instructions as the situation is likely\nto be reversed on different CPU cores.\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nTest: run-gtests.sh\nBug: 71781600\nChange-Id: I591009d7494533cdf60a47be2f8826144e059ff5\n"
    },
    {
      "commit": "01ee0f9e9b7852a51d362718080648a0847edaf7",
      "tree": "288955c7f5830d5e1895f1a17207dd32dc1932cd",
      "parents": [
        "74f1b07cb49c2b4dc49b6414b14ae8547a5191e6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 08:55:54 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 12:13:57 2020 +0000"
      },
      "message": "nterp: only do string.\u003cinit\u003e check on invokedirect.\n\nTest: test.py\nChange-Id: Ifbfdbfd5cbff6ccdeee10ce869e7d6cc54d7f295\n"
    },
    {
      "commit": "dd406c3da681ad716a23890e8a95a82fef26e5b2",
      "tree": "509a0e90cf7a9a301a30eb09dfd42275040a395f",
      "parents": [
        "d6bd107ed83502eb0bbaf66911ab036ecf74612d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Nov 22 22:53:18 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 10:00:07 2020 +0000"
      },
      "message": "Add an arm32 port of nterp.\n\nCurrently using arm32, will try thumb once this CL lands to compare\nperformance.\n\nTest: test.py, run-libcore-tests, device boots\nBug: 112676029\n\nChange-Id: I6535e2982a3ceed83eba6664fc8ba8609974bc08\n"
    },
    {
      "commit": "3eb493f8108c4a818919a60a76840e338c41da63",
      "tree": "05ef8c03565d508c27107cdc1c790a75d65fc90a",
      "parents": [
        "29ce8439617b7434938a84c7b39cfe0a25212c1e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 27 12:31:06 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 27 12:31:06 2020 +0000"
      },
      "message": "Do a null check on the OatQuickMethodHeader.\n\nEven if we found a method at the bottom of the stack, we may be\nexecuting something unrelated to it. That\u0027s when GetOatQuickMethodHeader\nwill return null. So do a null check and return if we did not find any\ncompiled code.\n\nTest: build\nBug: 173753901\nChange-Id: I05595d601e0523b1254581c306b157b273828c53\n"
    },
    {
      "commit": "f7fcb98ab4740db9d9d8ed7652b89928a2e56f60",
      "tree": "5a76fa96e391474345314eac31a6b5e95ec4e10b",
      "parents": [
        "23c926d12f8333d2ca59d6b321064cb9d831f0ad"
      ],
      "author": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Tue Nov 24 16:44:12 2020 +0000"
      },
      "committer": {
        "name": "Pedro Loureiro",
        "email": "pedroql@google.com",
        "time": "Wed Nov 25 20:19:58 2020 +0000"
      },
      "message": "Check if app has ALLOW_TEST_API_ACCESS change id\n\nAllow apps with the change id ALLOW_TEST_API_ACCESS enabled to\naccess methods annotated with @TestAPi\n\nTest: m test-art-host-gtest-art_runtime_tests\nFixes: 166236554\n\nChange-Id: I78776443dd0b76d8cba24ddfbfb83c3b50b346ab\n"
    },
    {
      "commit": "6af553d1f411926acdb96d6fa85fb126b761eada",
      "tree": "1d1e8c39f732d7a44d29ac2d7bc9eb74846b8378",
      "parents": [
        "9705c5dc5a1c8f6df6887bc97232e2dcac1fc499"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 17 13:07:31 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 13:16:02 2020 +0000"
      },
      "message": "Fix another typo in nterp.\n\nTest: test.py\nChange-Id: Ib58880b1e462e9c47a7b55663f39fd29894d2c7c\n"
    },
    {
      "commit": "037d282cd1fc201601ac52dcfe0f1a4d97ca3790",
      "tree": "da6a1d61357cd09c4131501031de691491bcdb2a",
      "parents": [
        "6e71c66b35f6a96908e3d371316cba15dcb75d1f"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Thu Nov 19 00:20:04 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Nov 23 19:02:00 2020 +0000"
      },
      "message": "Add compat framework logging to ART\n\nLog first call for every change id in ART to logcat.\n\nTest: manual\nBug: 153061480\n\nChange-Id: I37ff5b88572478ae6c24b0b7dec2020da03b2172\n"
    },
    {
      "commit": "a5c1a82dc072fe29ff4d71a1abc88d713752323f",
      "tree": "dbdb5ccd0c9d23f5b609381bca1fbceb901f7889",
      "parents": [
        "dc75b3f0d2f7363ad7a7f9356bc931486e17e4f5"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Nov 10 14:58:06 2020 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 18 14:55:25 2020 +0000"
      },
      "message": "Implement Reference.refersTo()\n\nAvoid Reference.get(), so that we\n\na) Don\u0027t block for the GC when weak ref access is disabled.\nb) Don\u0027t preserve a referent just because we compared to it.\n\nStrengthen ConcurrentCopying::Copy memory ordering guarantees to make\nthis possible. In the process, weaken the existing fence to a\nconstructor fence, which should sometimes be slightly cheaper than\na release fence, which will be implemented as a full fence on ARM.\n\nWhile looking at forwarding reference memory ordering, removed a\nlong identified unnecessary seq_cst memory access in\nIsNullOrMarkedHeapReference.\n\nTest: boot AOSP, atest ReferenceTest in libcore\nBug: 172573708\nChange-Id: Ie716df684be94006353a54226f85ea93a7254b6c\n"
    },
    {
      "commit": "dc75b3f0d2f7363ad7a7f9356bc931486e17e4f5",
      "tree": "2f11c32969faec050d3c1aaca3dfb1bc183adea4",
      "parents": [
        "7b55065f9fd05e9610871e1598972fc8fd45e9ea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 18 09:06:25 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 18 12:01:30 2020 +0000"
      },
      "message": "Fix braino when adjusting alignment.\n\nIssue spotted by Greg Kaiser.\n\nTest: ./art/test/testrunner/run_build_test_target.py -j80 art-heap-poisoning\nBug: 112676029\nChange-Id: I3cbe772c5806b11132a282c1db2ccd198b5bbace\n"
    },
    {
      "commit": "7b55065f9fd05e9610871e1598972fc8fd45e9ea",
      "tree": "bb6fa5ec5f10a406b418b5bfcb04f892db9a3aff",
      "parents": [
        "c2d5c707a2cfeaaafcf8f5d7e5193dd2d5c59592"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Nov 17 10:12:52 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 18 01:57:51 2020 +0000"
      },
      "message": "Add dex_instruction_list.h to mterp genrule tools\n\ndex_instruction_list.h is read by gen_mterp.py by searching relative\nto the script, add it to tool_files so it gets a dependency and\nso it gets copied if tools are sandboxed.\n\nBug: 124313442\nTest: m checkbuild\nChange-Id: I85f9e154007c185cd5bef1162137986898efb629\n"
    },
    {
      "commit": "07b62e3d0808cc0890717a3a589c1f7b1ac51e5c",
      "tree": "d15c79302f3498278e9d22c6319e8e02a3087973",
      "parents": [
        "a07de551da5147f3635c665a31f262cf65647118"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 07 15:54:08 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 16 17:35:42 2020 +0000"
      },
      "message": "Change vdex format to easily access verification data per class.\n\nSee changes in vdex_file.h to see the changes in format.\nAlongside, remove the redefined_classes_ set, which is not needed now\nthat we record verification data per class.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: I7cc1e9ba465303f105cddec4ce86c4efaaed7e7b\n"
    },
    {
      "commit": "4483d2a4ed7e6c018e304c234484940ec0476039",
      "tree": "fffe451ea356b6961c4734b743e5b7d2c2585565",
      "parents": [
        "52e1b92ca37d7bc850339ea3fb769501ae4f3fa8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 16 09:42:20 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 16 13:29:36 2020 +0000"
      },
      "message": "Fix typo in nterp.\n\nTypo was benign as the logic between the non-range and range variants\nare the same.\n\nTest: test.py\nBug: 112676029\nChange-Id: I67388ea207de7938e5f0a232886475e8b90a54cd\n"
    },
    {
      "commit": "cc5629c1480b3be6189391b335d17911c9ddb6ad",
      "tree": "8fe09ed193c0514e614ea6e3b3bc2a17f453d5ca",
      "parents": [
        "2316b3a0779f3721a78681f5c70ed6624ecaebef"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 30 16:12:01 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 21:55:00 2020 +0000"
      },
      "message": "Clarify allocation entry point semantics\n\nTest: Treehugger\nBug: 171993478\nChange-Id: I03a95b7028ef98a5438011ce53b43de44f23bec8\n"
    },
    {
      "commit": "aeb7f9f8fe718219cfb04e0da5df62683250477d",
      "tree": "4507c5ba17ca166302a5c10b25f12080fc635125",
      "parents": [
        "b6837f0350ff66c13582b0e94178dd5ca283ff0a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 11 13:39:18 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 13 14:15:59 2020 +0000"
      },
      "message": "Few cleanups in nterp.\n\n- No need to manually save the ArtMethod, it\u0027s already saved in\nSPILL_ALL_ARGUMENTS\n- Remove unused parameter to SET_VREG_OBJECT\n- Fix comment on common_errArrayIndex\n\nTest: test.py\nBug: 112676029\nChange-Id: I012a2ccac96c175be6107e762c620b7d5eba8f1c\n"
    },
    {
      "commit": "670ff8854cf075617e0abee77b2259903757d86e",
      "tree": "70378b9ef1c6da3025dccd71467b06548eae725c",
      "parents": [
        "e0e1f56d5af0fe0d5de1e39174790898c377f8e6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 18:00:39 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 11 18:26:27 2020 +0000"
      },
      "message": "JIT: Only toggle write permissions in single view.\n\nDual view is here to protect inadvertent / malicious writes already.\n\nTest: test.py\nChange-Id: I26d0d16355dac955ce8ef2856db33241b3f353ff\n"
    },
    {
      "commit": "fc4f698dca5997b0356de4d90d57e459b66eef15",
      "tree": "509c8c97ec6b0c839a195a7d9ce0ad6f5a15ec1d",
      "parents": [
        "1bff99f706a1b1a4c1799e0f037d9f59f303587a"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Nov 09 16:00:38 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Nov 10 17:57:41 2020 +0000"
      },
      "message": "Print CC collector object addresses on failing assertion\n\nTest: art/test/testrunner/testrunner.py\nBug: 139525088\nChange-Id: I499ab2de7caba5baacec3049ca954fbb2859edf0\n"
    },
    {
      "commit": "8f2eb25ca40136a36a5d7002c8ca5a05723e334e",
      "tree": "51778c592bdd3eb65d3fde8c21997eec30bd1e23",
      "parents": [
        "8411c5ddb824bae1d3202a3bc2e42c77d351e916"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:39:54 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 06 15:26:27 2020 +0000"
      },
      "message": "Remove NeedsDexCache logic from the compiler.\n\nThe compiled code and runtime stubs don\u0027t need to have direct access to\nthe dex cache anymore.\n\nTest: test.py\nChange-Id: Id3aab9b10445ba2599e1a9ffd8e36506a745bfec\n"
    },
    {
      "commit": "8411c5ddb824bae1d3202a3bc2e42c77d351e916",
      "tree": "dfac3f21998c8b7dad2971db355420dc58b057fc",
      "parents": [
        "e7f659f029e2625585fc7aac42e8688ca28fe5b2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 08:30:22 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:31:34 2020 +0000"
      },
      "message": "Record all type assignability checks in the verifier.\n\nWe used to only record at boot classpath boundaries. But due to making vdex\nverification per class at runtime, we now need to record all checks.\n\nThis means when before we would look at the superclass chain of an app\u0027s\nclass to find the one in the boot claspath, we now will encode the class directly.\n\nTest: test.py\nBug: 112676029\nChange-Id: I58a18ed13c2d3fdc41a37f56624cc4b24f58bf80\n"
    },
    {
      "commit": "1960c42c5df95f3011c020b07328d03716532037",
      "tree": "839c5085cc89586081bb20dc873fb549daf2bea0",
      "parents": [
        "85b125f4ac9c687e3bd217f9c6eab999be104c17"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 08:45:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 09:18:57 2020 +0000"
      },
      "message": "Change vdex format to store per-class assignable types.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6cd784381efb13a2c669ab77fe2c2b3e5da838f9\n"
    },
    {
      "commit": "85b125f4ac9c687e3bd217f9c6eab999be104c17",
      "tree": "0a9f00d89a2b22665da7b3d71de6543d1f16659b",
      "parents": [
        "01b65526c1dce94abb8ed98d473ddcd2b8fcd692"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 30 15:45:52 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 04 22:41:32 2020 +0000"
      },
      "message": "Trace integer value for profilebootclasspath\n\nInstead of tracing this in the profile, trace it directly after fork.\nThis makes it easier to know what to look for in case the trace ends\nbefore the profile saver ran.\n\nBug: 171432467\nTest: manual\nChange-Id: Iee3dece8b756b027195c38bdd8c031960eca09c4\n"
    },
    {
      "commit": "01b65526c1dce94abb8ed98d473ddcd2b8fcd692",
      "tree": "edc3f88f666415ffb459bad64a585fa576dc65ab",
      "parents": [
        "908759b00ba0d84445636cc7cfcaf830b45e7b73"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 15:43:54 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 04 18:06:08 2020 +0000"
      },
      "message": "Implement Reference.getReferent() intrinsic.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: I4762f7c1cf3d61de2215ec8f1d14be80289c2372\n"
    },
    {
      "commit": "4f99524cff963c91a66f30f22c19dae28db01740",
      "tree": "a70968889297449049f80b11198189a5c435aa44",
      "parents": [
        "de91ca90389e4b41ed27b320a6c43ff56a6d75ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:29:30 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 02 16:21:53 2020 +0000"
      },
      "message": "Add unresolved types in verifier deps.\n\nWe need to record all assignability checks that the verifier does, so we\nreproduce them at runtime.\n\nWe ignore those assignability checks for now when validating a vdex file\nas the class that uses the unresolved types will be marked as soft fail.\n\nTest: test.py\nBug: 112676029\nChange-Id: I21697e976ce56d3905576407b6326863915cc271\n"
    },
    {
      "commit": "036b0708c12a33469db4a5adde9ded152b5eb700",
      "tree": "59fd4ce1126da0bec264431c1056f93eceb07c38",
      "parents": [
        "8b2f7e67096c5a12f950f5ffe8f5ed4704299c57"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 10:36:06 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 28 09:43:42 2020 +0000"
      },
      "message": "Rename String.concat() implementation function.\n\nRename String::AllocFromStrings() to String::DoConcat() and\nrename arguments to h_this and h_arg.\n\nThis addresses a comment from\n    https://android-review.googlesource.com/1473728 .\n\nTest: testrunner.py --host --optimizing -t 021-string2\nBug: 169674485\nChange-Id: I830541b64b51c0170aa5455cbad7cc86f4349f13\n"
    },
    {
      "commit": "762954836e5c15e85f0348dafcf50281b0149255",
      "tree": "24cfc7a8b812e24307b79e4e8b37569569a318dc",
      "parents": [
        "f579b063b848d04e42aa64774949bf0deb5aab0f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 26 12:28:37 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 09:31:21 2020 +0000"
      },
      "message": "Revert^2 \"Improve mirror::String implementation.\"\n\nThis reverts commit 15efe16175115f29e7c99bfc2703c30a82e3f702.\n\nFixed copy-paste error in AllocFromStrings, added tests\nfor String.concat() to 021-strings2 as regression test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 169674485\nBug: 171273669\nChange-Id: I4b298020b7b31de84898243ad73db40a8ad7d69e\n"
    },
    {
      "commit": "f579b063b848d04e42aa64774949bf0deb5aab0f",
      "tree": "7a3ac429f990d7592336c0e73f13bbd65a433b16",
      "parents": [
        "61c71ef48e7fb0557af5702a9021bd2854f84e28"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Oct 24 22:54:39 2020 +0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 27 00:29:57 2020 +0000"
      },
      "message": "Unified sampling PGO for art\n\nUse a combined sampling PGO profile for ART libraries.\n\nTest: build\nBug: 79161490\nChange-Id: I2eeb1ac07971e37ee23848ebfb718b4651b9ac75\n"
    },
    {
      "commit": "61c71ef48e7fb0557af5702a9021bd2854f84e28",
      "tree": "e25fdadab83a68735c29c341b22433b1a58c5594",
      "parents": [
        "1485d4affe0eb881c488d7b95eb3a556a22034a4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 22:37:36 2020 +0000"
      },
      "message": "[metrics] Dump ArtMetrics on SIGQUIT\n\nART now writes a current snapshot of its internal metrics in response to\na SIGQUIT.\n\nExample output:\n```\n*** ART internal metrics ***\n\nClassVerificationTotalTime: count \u003d 863833\nJitMethodCompileTime: range \u003d 0...1000000, buckets: 244,5,1,0,1,0,0,0,0,1,0,0,0,0,0\n\n*** Done dumping ART internal metrics ***\n```\n\nThis includes a new StreamBackend, which is used to write ART metrics to\nan output stream in a human readable format.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Iaf8bcee5a4993e70ac4e36940591a734fe1a6697\n"
    },
    {
      "commit": "645083c294177f1906a040c380d691060b858167",
      "tree": "fb989eceeb559dde62be6a561af84abbdf3db892",
      "parents": [
        "31376818547504490f450aff52d50839f7a0b539"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 26 11:44:29 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 26 14:33:32 2020 +0000"
      },
      "message": "Revert^2 \"Improve libcore_util_CharsetUtils performance.\"\n\nThis reverts commit 31f5dd40886a696c7925feb53c4aa7cc9adf07c3.\n\nReason for revert: The original CL was erroneously reverted\ntogether with the CL that was actually broken.\n\nChange-Id: Ifed4868b3a90d56b943b15887bb257d8872a475d\nTest: run-libcore-tests.sh --mode\u003dhost\nBug: 170281727\n"
    },
    {
      "commit": "15efe16175115f29e7c99bfc2703c30a82e3f702",
      "tree": "b778314fadcc266535e32582718e403f175097c2",
      "parents": [
        "31f5dd40886a696c7925feb53c4aa7cc9adf07c3"
      ],
      "author": {
        "name": "chapin",
        "email": "chapin@google.com",
        "time": "Fri Oct 23 19:20:31 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 23 21:54:58 2020 +0000"
      },
      "message": "Revert \"Improve mirror::String implementation.\"\n\nRevert submission 1449216\n\nReason for revert: Bug: 171537201\nReverted Changes:\nI03d2420b2:Improve libcore_util_CharsetUtils performance.\nI3dc453ce9:Improve mirror::String implementation.\n\nChange-Id: I5b1df73894c040017a7a64708c9904431c6cfe93\n"
    },
    {
      "commit": "31f5dd40886a696c7925feb53c4aa7cc9adf07c3",
      "tree": "94d2d6faafa4b080971926b75ef082d8f4bf8e26",
      "parents": [
        "e3a6485fb0e94f434a3f72eb694a105578c1260f"
      ],
      "author": {
        "name": "chapin",
        "email": "chapin@google.com",
        "time": "Fri Oct 23 19:20:31 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 23 21:54:58 2020 +0000"
      },
      "message": "Revert \"Improve libcore_util_CharsetUtils performance.\"\n\nRevert submission 1449216\n\nReason for revert: Bug: 171537201\nReverted Changes:\nI03d2420b2:Improve libcore_util_CharsetUtils performance.\nI3dc453ce9:Improve mirror::String implementation.\n\nChange-Id: I1df18b4421f3b37b84a5e54c908662538fc13f79\n"
    },
    {
      "commit": "3e9abfc9779399815a7dc8d492466a1234b7fdcd",
      "tree": "fd1017f153d3759488914c4d372f543125722ad1",
      "parents": [
        "35b132e3377029a356cfbc9e4682e3ebceb83edf"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 09 22:17:51 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 23 10:03:13 2020 +0000"
      },
      "message": "Rename ART release APEX to com.android.art.\n\nTest: Build \u0026 boot on AOSP master\nTest: `m` on AOSP master, flipping\n  PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD between true and false, and\n  check out/target/product/bonito/symbols/apex/com.android.art.\nTest: art/build/apex/runtests.sh\nTest: art/tools/buildbot-build.sh {--host,--target}\nTest: art/tools/run-gtests.sh\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --64 --optimizing\nTest: m build-art-target-golem\nBug: 169639321\nChange-Id: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\nMerged-In: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\n"
    },
    {
      "commit": "35b132e3377029a356cfbc9e4682e3ebceb83edf",
      "tree": "caf4b4a469079f1ef3fae1736aba094ba09a5441",
      "parents": [
        "096bef8285e1a4d2a2b89cb5a5f59c63ee2e7b65"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 22 08:44:08 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 22 21:01:13 2020 +0000"
      },
      "message": "Add trace to SampleClassesAndExecutedMethods\n\nAlso log when boot class path profiling is enabled.\n\nTest: manual\nBug: 171432467\nChange-Id: I4086638067de79cab3c77c9a0186a43c6cd585f6\n"
    },
    {
      "commit": "096bef8285e1a4d2a2b89cb5a5f59c63ee2e7b65",
      "tree": "1e67eca126f08985f3d43c97b2f5df94a8e1e846",
      "parents": [
        "66474c2878e0c91fbcffba8271bc20a3cf760642"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 22 17:40:25 2020 +0000"
      },
      "message": "[metrics] Refactor reporting\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Ic02dd94f55fb782e1ffb59789bf95e7f53f1f8e8\n"
    },
    {
      "commit": "938a0670d551d81d5f0710d0d565167b42227337",
      "tree": "dde8d8711384a1caf464c86f2c5944cbfdff61f8",
      "parents": [
        "5b041c05d6b73b73c43a425dc4ff3b784722c4a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 16:03:42 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:38:43 2020 +0100"
      },
      "message": "Remove the checkcast quickening optimization.\n\nQuickening is now disabled, and the optimization uses VerifierDeps\npost-verification, which we plan on not supporting for future verifier\nimprovements.\n\nTest: test.py\nBug: 112676029\nChange-Id: Ie9004b27c93e1189e6c1142494e79cd84b05400c\n"
    },
    {
      "commit": "5b041c05d6b73b73c43a425dc4ff3b784722c4a2",
      "tree": "0425b87cf343b8a45182c053d7e300623b64d419",
      "parents": [
        "8bea400eec977e433ad3453c5a21f74955afbc2a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 15:17:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 13:23:28 2020 +0000"
      },
      "message": "Remove unassignable_types from vdex.\n\nThese were used in case a class went from \"verified-at-runtime\" to\n\"verified\". With go/nterp, we\u0027re re not going to handle this situation\nand we should only record what types the verifier expects to be\nassignable.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6ffa61cef3aa767dfccadbdfdd5432e72e143ca3\n"
    },
    {
      "commit": "9fde2db3d4cfc6d7d1520454abc2aa4622a073ea",
      "tree": "24b984d2761b8b42df31e25949ce8d2d6f33bdc6",
      "parents": [
        "f50975ab491fa962e6e5ec4405fdb31591d51d96"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Oct 15 16:03:29 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Oct 20 15:08:20 2020 +0000"
      },
      "message": "Update host tests to point to a dedicated boot image directory.\n\nOn device the boot image files are in the APEX, but on host they\u0027re\ncreated by the global code in dexpreopt_config.go and installed by make\nin the same location irrespective of the ART APEX in use (release or\ndebug). That location is now moved to\n$(ANDROID_HOST_OUT)/apex/art_boot_images to avoid conflict with the\nAPEX paths (because the release APEX is moving from\ncom.android.art.release to com.android.art).\n\nTest: art/test/testrunner/run_build_test_target.py art-test\nTest: art/build/apex/runtests.sh\nTest: art/tools/buildbot-build.sh {--host,--target}\nTest: art/tools/run-gtests.sh\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --64 --optimizing\nTest: m build-art-target-golem\nBug: 169639321\nChange-Id: I932a15539e170d3c6c78515b22dd4b91ce1c57b4\n"
    },
    {
      "commit": "f50975ab491fa962e6e5ec4405fdb31591d51d96",
      "tree": "eb055d2d3128fd5c3f2950bb11e3996780e25b80",
      "parents": [
        "bd11057e44ab16a03c7c64d8ef46d0f6ca8d0c92"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 13:34:55 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 12:43:06 2020 +0000"
      },
      "message": "Reland \"Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\"\n\nThis reverts commit 7e9fc9d6d1622192f118bab771784eedfb66c60e.\n\nBug: 170086509\n\nBug: 170588354\nBug: 170589481\nBug: 170589988.\n\nReason for revert: TODO\n\nChange-Id: Ia1de625e90e4279b1cf0a584e5f0fbc8caa94efd\n"
    },
    {
      "commit": "b3dfff75d903688e5046745120d16af790ef7be4",
      "tree": "f4ba12950f2537dc58d24af1c846a60265d65850",
      "parents": [
        "0bba8aa289da53f1cbd7c96a2ee60b3ca3a84d8b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 08:51:40 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 16:04:07 2020 +0000"
      },
      "message": "Improve libcore_util_CharsetUtils performance.\n\nUse ScopedFastNativeObjectAccess for @FastNative methods.\nAvoid expensive JNI calls by using mirror::ByteArray.\nFor compressed strings, just copy the ASCII data.\nFor uncompressed strings, pre-calculate the UTF-8 length\nto avoid unnecessary reallocations. Also access 16-bit\ncharacters directly instead of using String::CharAt() to\navoid unnecessary string compression checks that clang++\nis unable to optimize away.\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\n(medians from 3 runs)        before   after\ntimeGetBytesAscii EMPTY      1599.86   519.36\ntimeGetBytesAscii L_16       1849.31   535.59\ntimeGetBytesAscii L_64       2582.72   646.07\ntimeGetBytesAscii L_256      5566.70  1132.11\ntimeGetBytesAscii L_512      9585.88  1649.34\ntimeGetBytesAscii A_16       1840.06   540.05\ntimeGetBytesAscii A_64       2550.41   614.85\ntimeGetBytesAscii A_256      5382.15   919.59\ntimeGetBytesAscii A_512      9181.93  1226.82\ntimeGetBytesIso88591 EMPTY   1589.57   515.62\ntimeGetBytesIso88591 L_16    1835.09   535.58\ntimeGetBytesIso88591 L_64    2588.90   650.84\ntimeGetBytesIso88591 L_256   5585.69  1118.37\ntimeGetBytesIso88591 L_512   9635.12  1625.92\ntimeGetBytesIso88591 A_16    1827.21   529.83\ntimeGetBytesIso88591 A_64    2548.83   603.32\ntimeGetBytesIso88591 A_256   5356.75   916.76\ntimeGetBytesIso88591 A_512   9172.74  1224.04\ntimeGetBytesUtf8 EMPTY       1599.00   510.61\ntimeGetBytesUtf8 L_16        1876.05   632.55\ntimeGetBytesUtf8 L_64        2781.85  1054.06\ntimeGetBytesUtf8 L_256      12136.15  3708.94\ntimeGetBytesUtf8 L_512      21357.30  7811.28\ntimeGetBytesUtf8 A_16        1888.64   531.15\ntimeGetBytesUtf8 A_64        2785.70   598.75\ntimeGetBytesUtf8 A_256       6300.25   906.34\ntimeGetBytesUtf8 A_512      11074.56  1231.62\n\nTest: run-libcore-tests.sh --mode\u003dhost\nBug: 170281727\nChange-Id: I03d2420b2e1eefc1fa5232deddba593aebd51941\n"
    },
    {
      "commit": "0bba8aa289da53f1cbd7c96a2ee60b3ca3a84d8b",
      "tree": "661a50c5a5abc787c948eed3c1efde7dd2c1b6d3",
      "parents": [
        "8f1bded1e51074e82e50f330dc74685ca3da2033"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 05 12:34:05 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 16:04:07 2020 +0000"
      },
      "message": "Improve mirror::String implementation.\n\nExplicitly use string compression to optimize uses of\nString::CharAt() in string.cc similarly to\n    https://android-review.googlesource.com/1446657 .\nMove string content initialization to pre-fence visitor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 169674485\nChange-Id: I3dc453ce995d09f996610a1eba5060bacbe0d498\n"
    },
    {
      "commit": "b3ab635ecf561954336cc7b09d6f66a401d1d0fe",
      "tree": "4677f3db808f9a92374f12797a5027abecb4d43b",
      "parents": [
        "6ebe40fce5927e3f40ec1d375590648d48d458f0"
      ],
      "author": {
        "name": "Daniel Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Thu Oct 15 17:31:01 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 16 10:50:19 2020 +0000"
      },
      "message": "Revert \"Disable x86 FromCpuFeatures test\"\n\nThis reverts commit 0713ca0525579365ae927ac800797a7473d9267f.\n\nReason for revert: bug with simd extension not being detected on some CPUs is fixed in cpu_features (see https://android-review.googlesource.com/c/platform/external/cpu_features/+/1460885)\n\nBug: 169921883\nChange-Id: Ibce2c5ca923ec34f8b2350bae85fbe383952be25\n"
    },
    {
      "commit": "6ebe40fce5927e3f40ec1d375590648d48d458f0",
      "tree": "677e3c908d87a92becbf23ecfbad6779852c2947",
      "parents": [
        "801f6a7b003659251bf2386febb0030f04697750"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 14 16:37:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 08:30:15 2020 +0000"
      },
      "message": "Remove field/method/class resolution metadata in vdex.\n\nThey can now be handled at runtime with access checks.\n\nBug: 112676029\nTest: test.py\nChange-Id: I08c838334fb0dc94e58fa24463f49633ef7989fc\n"
    },
    {
      "commit": "4b9f86bd04a905e6ee6eaf5363b0967315136096",
      "tree": "f3c15cd3ccefcc684541bb4bac0c889bff35420a",
      "parents": [
        "30864176620fbfc58f93ea58bfbacdd28f75b2c8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 13 16:37:19 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 14 04:39:31 2020 +0000"
      },
      "message": "Cyclic-includes should be avoided\n\nA file including itself is generally not considered a good idea and\ncan confuse tools such as IWYU.\n\nChange-Id: I71b07fa1503588917ab62ea383833dacd53bf8f2\nTest: Treehugger\n"
    },
    {
      "commit": "1a8d83b69dd6097e0d467a9ed0afb09c4025738d",
      "tree": "ca925fd30efd35f42d33c65c01ec4c0b31698e4c",
      "parents": [
        "5c5ed3025f1a7cda51abe87319c42f5b002bf189"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 12 15:43:23 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 13 14:36:22 2020 +0000"
      },
      "message": "Check existing_it in UpdateClass\n\nCheck that the iterator is valid instead of blindly dereferencing it.\n\nBug: 160074700\nTest: manual\nChange-Id: I444b3335f52251a24f47261b42296667bd668444\n"
    },
    {
      "commit": "4bb09001683e00a9d0d34f685f2ec60004c0c1ef",
      "tree": "283e8c3c77c34a13b020275b031148cd46f1de9b",
      "parents": [
        "ae7168e19f886ed43ed200f9b0e769613df485f9"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 30 11:42:34 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 18:12:00 2020 +0000"
      },
      "message": "[metrics] Implement JitMethodCompileTime histogram\n\nJitMethodCompileTime keeps track of how long methods take to compile in\nJIT mode.\n\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: Ic0e5f365d9e7eb7bc0ebcf49d23972adcd6dfb36\n"
    },
    {
      "commit": "ae7168e19f886ed43ed200f9b0e769613df485f9",
      "tree": "0c7169d33b71d643957e1acdaffc0ff61d4526fb",
      "parents": [
        "5e8e5161e5f5a1e944f5bc6fd2ef893e0a33551b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Oct 09 15:13:29 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 15:42:21 2020 +0000"
      },
      "message": "Remove unused image space order argument\n\nBug: 160683548\nTest: Treehugger\nChange-Id: I249d2891b645fa103106ee946f014b9ce362cbda\n"
    },
    {
      "commit": "6732b8057061ee753a9ff7cc6d79c2edd0a33168",
      "tree": "f807889b8ec8bca772ce05b212a99f596c6ff160",
      "parents": [
        "bfe8fc80767511676eae739e0924377dfc6c6089"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Oct 09 14:21:27 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 12 09:11:34 2020 +0000"
      },
      "message": "Remove the ability to generate an image in image_space.cc\n\nIn mainline, on-device signing will create image space upon APEX update.\n\nBug: 160683548\nTest: m test-art-host-gtest \u0026\u0026 art/test.py --host -r\nChange-Id: I6498336512040c922a545d6362acec3326220f77\n"
    },
    {
      "commit": "7e9fc9d6d1622192f118bab771784eedfb66c60e",
      "tree": "98c89934b8907d62ff5e97eda11f20d3d4e97b2d",
      "parents": [
        "384dae4c7e51c34e1fd047c6f58dde63e08ab6a3"
      ],
      "author": {
        "name": "Ming-Shin Lu",
        "email": "lumark@google.com",
        "time": "Mon Oct 12 03:36:52 2020 +0000"
      },
      "committer": {
        "name": "Ming-Shin Lu",
        "email": "lumark@google.com",
        "time": "Mon Oct 12 07:15:39 2020 +0000"
      },
      "message": "Revert \"Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\"\n\nThis reverts commit 4f0e8daf7ed79c0712c0fd927c8ad2c903c15773.\n\nReason for revert: Droidcop-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId\u003dI69100006175866595\u0026testResultId\u003dTR93113908724113263, bug 170588354, bug 170589481, bug 170589988.\n\nChange-Id: If8f4396aa0db024ed5817a4fed61c13caf32f785\n"
    },
    {
      "commit": "384dae4c7e51c34e1fd047c6f58dde63e08ab6a3",
      "tree": "03303fdae65bbdfe5cab7fe9b2b8a650e7ceb144",
      "parents": [
        "4d23e51e67a419291598af3cb308aadaed1afd62"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 10:24:15 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 11 14:41:19 2020 +0000"
      },
      "message": "Support access checks in mterp.\n\nThis is to start not treating access checks failure as soft failures.\n\nTest: test.py\nBug: 112676029\nChange-Id: I9cde52e5a2f6e00450616403ce6d9aa822a8380e\n"
    },
    {
      "commit": "eeff8fc4586b4dd2dd62ba1c1e0d361dd448a88b",
      "tree": "0f23c8d1a5d8592eaf1cd9a7b903732154744212",
      "parents": [
        "fd061070700817add2c15149e4098bab4eb8ccdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 15:29:14 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 13:16:11 2020 +0000"
      },
      "message": "Support access checks in nterp.\n\nBug: 112676029\nTest: test.py\nChange-Id: I0b1dcec7984d6ee91e08a86471e32ea05560ce49\n"
    },
    {
      "commit": "fd061070700817add2c15149e4098bab4eb8ccdd",
      "tree": "af2e90ad8cf7850be8a690a4c9b6b1292e0231ba",
      "parents": [
        "2e299f4d0eb8e2fd432c98b83f3f3c6ddd09c0f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 01 13:51:56 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 10:23:21 2020 +0000"
      },
      "message": "Remove unused code from dalvik.system.VMDebug.\n\nTest: m\nBug: 165361458\nChange-Id: Ic2cc2515a0af79d4541c16c0b3057980ada2a869\n"
    },
    {
      "commit": "2e299f4d0eb8e2fd432c98b83f3f3c6ddd09c0f5",
      "tree": "48104981e48944597421d26fd3180d5384ccc1a0",
      "parents": [
        "4f0e8daf7ed79c0712c0fd927c8ad2c903c15773"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 08 20:27:22 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 09:51:10 2020 +0000"
      },
      "message": "Handle nterp when precompiling with JIT zygote.\n\nTest: test.py\nTest: app startup with JIT zygote\nBug: 169773857\nChange-Id: I3e68e5e0dd276fd7fe11e435be0ce906bdca2a6c\n"
    },
    {
      "commit": "4f0e8daf7ed79c0712c0fd927c8ad2c903c15773",
      "tree": "6838f8b413a444b711bdab8136826be07ab95f39",
      "parents": [
        "a79872b016ea95b6ec530ae1ac35f3c5b0d9997f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 09:34:13 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 08:07:17 2020 +0000"
      },
      "message": "Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\n\nBug: 170086509\nTest: test.py\nChange-Id: I3267ddd51d36c35f23cb05e26dc1a1f062065d7f\n"
    },
    {
      "commit": "a79872b016ea95b6ec530ae1ac35f3c5b0d9997f",
      "tree": "4e2f5c06efcaa3d508931862a504f2d52fa4d70c",
      "parents": [
        "1cd030f76e6ee07888aadca25ba24119fefb31b8"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 01 13:09:53 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 08 16:16:38 2020 -0700"
      },
      "message": "[metrics] Add metrics to Runtime, implement ClassVerificationTotalTime\n\nThis creates the main metrics struct and makes it readily accessible for\nART components that want to start collecting metrics. It also implements\nthe ClassVerificationTime metric.\n\nTest: m test-art-host-gtest-art_runtime_tests\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: I33b5b2dd40127074619750d6730db220e3ed1257\n"
    },
    {
      "commit": "8d34a182fea1b24f7b8361b55e930cb953cf3fb2",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "8ecbc4e844fc3b73e6a5c5151eda914d53297180"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 16 09:46:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 08:32:52 2020 +0000"
      },
      "message": "Change interface conflict stub to take the interface method.\n\nTo avoid doing dex cache lookup, pass the interface method instead. This\ncosts a few hundred KBs on speed compiled APKs (\u003c 0.5% code size), but\nimproves performance when hitting a conflict (as seen on dogfood data).\n\nFor nterp, we currently pass the conflict method instead of the\ninterface method. We need to handle default methods before optimizing\nit.\n\nThis removes our last use of dex cache in compiled code. A follow-up CL\nwill remove the NeedsDexCacheOfDeclaringClass from HInvokeInterface.\n\nTest: test.py\n\nChange-Id: I3cdd4543ad7d904b3e81950af46a48a48af6991a\n"
    },
    {
      "commit": "0713ca0525579365ae927ac800797a7473d9267f",
      "tree": "47bdc9b541db6605af9bc3dbb4db42fed51f7b49",
      "parents": [
        "9c1c042dd6916e040007ad60a44c6e4e410cedc6"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Fri Oct 02 13:46:47 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Oct 05 15:04:11 2020 +0000"
      },
      "message": "Disable x86 FromCpuFeatures test\n\nTest: art_runtime_tests --no_isolate \"--gtest_filter\u003dInstructionSetFeaturesTest.*\"\n\nBug: 169921883\nChange-Id: I6b596c156c110cd8aafe5c82a42c63bf5c8250b1\n"
    },
    {
      "commit": "71f7affff661a9f48afae25e19fcd3b9e82dac33",
      "tree": "0c39fae9b425703b0c05f7fdf70dc4e330bdbbbf",
      "parents": [
        "4904d5d65de32237790e5370bd076a9bccc22aa1"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Tue Sep 15 16:45:49 2020 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Oct 05 11:41:52 2020 +0000"
      },
      "message": "Use prebuilt_visibility property on sdk/module_exports\n\nWhen the ART sdk/module_exports snapshots are unpacked in a prebuilts\ndirectory they need some additional visibility rules to be added to\nensure that the prebuilts are visible to each other. Previously, those\nwere added on a case by case basis to the individual modules. This\nchange replaces them by using the prebuilt_visibility property that\nspecifies additional visibility rules to be added to all prebuilt\nmodules in the snapshots.\n\nCurrently, the additional visibility added to the prebuilts makes them\nvisible to anything in //prebuilts or beneath which is not restrictive\nenough. Specifying the rule in a single place will make that easier to\nrestrict in future.\n\nBug: 155921753\nBug: 168301990\nTest: build sdk/snapshot, install them in prebuilts/module_sdk/art\n      and run m nothing to ensure the visibility rules are valid.\nChange-Id: I751ed6d488038214ac9df35849babe69a3c79a31\n"
    },
    {
      "commit": "4904d5d65de32237790e5370bd076a9bccc22aa1",
      "tree": "f1a6e6126200d40ba10f3411c1c0bb51f826af1b",
      "parents": [
        "463255b4f1fcc8c34856a6b0780cf5ef238941c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 13:52:00 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 05 08:28:08 2020 +0000"
      },
      "message": "Optimize JNI:GetStringRegion() for compressed strings.\n\nLooking at the disassembly, it seems clang++ was unable to\noptimize this properly, probably due to possible aliasing,\ndespite inlining the String::CharAt() and seeing all the\nString::IsCompressed() expressions.\n\nExplicitly use the fact that the string is compressed to\noptimize the function and similar patterns in JNI.\n\nTest: m test-art-host-gtest\nBug: 169674485\nChange-Id: I35dd2540a1e79611a65d2d84f2a557c826120409\n"
    },
    {
      "commit": "8b247625f58ba8a0f616594dc774089678aa57e3",
      "tree": "ff2be8fba185515184eb9aa6190ca50cdd27b2bd",
      "parents": [
        "e177bf1d28c5f8386995b9afd6df55c76fd48257"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue Sep 22 21:48:15 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Fri Oct 02 18:32:14 2020 +0000"
      },
      "message": "Use the new libicu.so provided in the NDK\n\nBug: 160350521\nTest: device boots\nTest: art/build/apex/runtests.sh\nChange-Id: I54ce31df8349b0c2f335a50efa117d11976c1b1d\n"
    },
    {
      "commit": "e177bf1d28c5f8386995b9afd6df55c76fd48257",
      "tree": "c98b0483c2be921a71c4b00b940166b6dbee3a9c",
      "parents": [
        "5cdd368de2b21bb4d5b9e621fce7b8b0e4ac5eec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 11:57:11 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 15:40:34 2020 +0000"
      },
      "message": "Move String::GetUtfLength() to string-inl.h.\n\nAttribute the time spent in this trivial function\nto its users in perf data.\n\nTest: m\nChange-Id: I6340c48e0cf29451e2d8cf854723f94da5650ec6\n"
    }
  ],
  "next": "5cdd368de2b21bb4d5b9e621fce7b8b0e4ac5eec"
}
