)]}'
{
  "log": [
    {
      "commit": "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d",
      "tree": "46bafbf1bc58b492d60b338362a2bd89653108b9",
      "parents": [
        "47d89dde45b24ee09eb96cc676d7939959fb04cf"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 22 16:08:48 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jan 24 13:44:23 2021 +0000"
      },
      "message": "Remove unused flag is_zygote flag from ImageSpace.\n\nBug: 169925964\nTest: cd art \u0026\u0026 mma\nChange-Id: I5f69a6d3fb3fe2fec5b32b0ae91c00ccbcabedf0\n"
    },
    {
      "commit": "fa81f71b27bb1290848e7ce1fe31b4241110031d",
      "tree": "2425a8dc6a186739340f7093a5a170beb630a379",
      "parents": [
        "7eb5a95d96175ab6bfca3e9b19673443651ac997"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 13 12:27:21 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 15 18:11:29 2021 +0000"
      },
      "message": "Remove the ability to load the boot image from dalvik cache\n\nGeneration of boot image in dalvik cache is not supported since\n6732b8057061ee753a9ff7cc6d79c2edd0a33168 (https://r.android.com/1454861).\n\nBug: 160683548\nBug: 177313562\nTest: atest ArtGtestsTargetInstallApex\nTest: m test-art-host-gtest\nChange-Id: I5034b873535767d8694bc6c4fe05d90cf8b51588\n"
    },
    {
      "commit": "72d3195772de83f74d940d461c75ffccd4b30272",
      "tree": "65bcb5ad8b30cc2e7c0c8b69165bca359982e000",
      "parents": [
        "dc281e776c0395b54200c62626f90417f092a2bf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jan 08 18:06:24 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 11 10:50:35 2021 +0000"
      },
      "message": "Fix error message logging in `art::gc::space::ImageSpace::LoadBootImage`.\n\nTest: m com.android.art\nChange-Id: Icbc926abdd1cdccde92d8e2c7cb595e55b6a06ee\n"
    },
    {
      "commit": "771708f3f0a15c1ae50617b4141c5f5dd47bf94f",
      "tree": "b068c02f9becd373095259f4146bf2ff0f344514",
      "parents": [
        "c3c4417c5362b301dc8602d47c860379919a2145"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 06 15:45:16 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 08 12:58:04 2021 +0000"
      },
      "message": "Avoid growing boot class path for --single-image compiled images\n\nCalculation of the number of components in Runtime::Init did not\naccount for images compiled with --single-image where the number of\nimages does not equal the number of components.\n\nBug: 160683548\nTest: Treehugger\nChange-Id: I1db7a4bbbc8bb2f48d54f5048bd1b8407d19cf02\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": "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": "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": "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": "4717175e40a19e79af904dfb7b7dd13f046debd7",
      "tree": "426f040eacf5a8305f8bb8d504bd509824d984c8",
      "parents": [
        "1faacf59b9f74e9d2de4e0331ef0cdfcf132225d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 31 15:03:20 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 07:29:59 2020 +0000"
      },
      "message": "Move code item to the data pointer and remove code_item_offset.\n\nThis saves 4 bytes on 32bit and 8 bytes on 64bit on ArtMethod.\n\nAlso update nterp to directly fetch the code item from the data pointer.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: Ic01f43c7ccf2cbce1ec517478e81362232d36371\n"
    },
    {
      "commit": "2d4552035130474bdad7f7f30ffe50bc5f9d5d85",
      "tree": "d82bad85eababe43271fa9a98694891ad3c6da2b",
      "parents": [
        "4db5ea400d1a641c830542f056ab14578fdabebd"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 16:22:10 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 28 18:16:00 2020 +0000"
      },
      "message": "A few more inclusive language updates\n\nBased on:\n  https://source.android.com/setup/contribute/respectful-code\n\n#inclusivefixit\n\nBug: 161336379\nBug: 161896447\nTest: art/test.py --host --64\nChange-Id: Ieb9af8f5abde2d2e75a2d490e4d3d5c621859a7c\n"
    },
    {
      "commit": "346fd964a826cfb5626582452b7519c04aee2f8a",
      "tree": "49fb6cf2ab865391ba4027389b0049474df38c7b",
      "parents": [
        "d3ee902ed06b635eedebc796543a67299eb6cd05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 27 16:51:00 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 28 11:13:37 2020 +0000"
      },
      "message": "More inclusive language in the runtime\n\nTest: m\nBug: 161896447\nBug: 161850439\nBug: 161336379\nChange-Id: Iabc29fa43b4b5a403699d6bca95e9a2cb8945d77\n"
    },
    {
      "commit": "3c98d6989b3556bd81f67d69190561a16dfc22b8",
      "tree": "df0af80b708bbae14b093ae763d4773329e23062",
      "parents": [
        "6395908ae441946b5241906dff5aec2099444179"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jul 27 16:25:54 2020 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 28 10:49:20 2020 +0000"
      },
      "message": "Inclusive language fixes in ART\u0027s garbage collector.\n\nUpdate language to comply with Android’s inclusive language guidance.\nSee https://source.android.com/setup/contribute/respectful-code for\nreference.\n\n#inclusivefixit\n\nTest: Build ART and run ART tests\nBug: 161336379\nBug: 161896447\nChange-Id: Ib4aef98db2a9fd1031a076af0eab3fcb4cf6afef\n"
    },
    {
      "commit": "ce0d0079e89e0238a334fdadba09c43940e3adcb",
      "tree": "0213e15afbccc9fecd29c5fed28947180820c762",
      "parents": [
        "fb2967e927e03e153a2e3d700d208f743a47d43e"
      ],
      "author": {
        "name": "Pin-Chuan Liu",
        "email": "flash.liu@mediatek.com",
        "time": "Fri May 29 11:57:36 2020 +0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Jun 12 20:04:31 2020 +0000"
      },
      "message": "separate madvise calling from critical section\n\nmadvise at large space could spend more time,\nand let critical section takes longer\n\nseparate it out to speed up.\n\nBug: 158620760\nBug: 158861776\nTest: art/test.py --host\nChange-Id: I6adfb0e1f962c2fbf6ee559c56755285761b4220\n"
    },
    {
      "commit": "9974e3cdc1564edc3143b90d7bb2a416f1f887e7",
      "tree": "4f9746e6b237b2a17cc1e2543a141817d4946c19",
      "parents": [
        "2d19902c3d140c7b9b1d7ae905bd1023a4e649a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 10 16:27:06 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 11 10:06:12 2020 +0000"
      },
      "message": "Clean up generated operator\u003c\u003c(os, enum).\n\nPass enums by value instead of const reference.\n\nDo not generate operator\u003c\u003c sources for headers that have no\nenums or no declarations of operator\u003c\u003c. Do not define the\noperator\u003c\u003c for flag enums; these were unused anyway.\n\nAdd generated operator\u003c\u003c for some enums in nodes.h . Change\nthe operator\u003c\u003c for ComparisonBias so that the graph\nvisualizer can use it but do not use the generated\noperator\u003c\u003c yet as that would require changing checker tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifd4c455c2fa921a9668c966a13068d43b9c6e173\n"
    },
    {
      "commit": "1eb8f3215f54f6fdd14c64281387a1a9c5209dc0",
      "tree": "ec598b879b072957e1cd2e66f018bfc3dbb1b851",
      "parents": [
        "f78ea222e4b831feec4b0a6b00861a6f36d8e583",
        "883c1346b87537ed93f7d4fd88bbbb041c14d320"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 15 22:42:28 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 15 22:42:28 2020 +0000"
      },
      "message": "Revert^2 \"Remove test_per_src from ART tests.\" am: 883c1346b8\n\nChange-Id: I981e30295803d91ad09c73aa276399ed9bbaba70\n"
    },
    {
      "commit": "883c1346b87537ed93f7d4fd88bbbb041c14d320",
      "tree": "efb8205d15d677d3e3fdf90f0ae09c4a2eba9a4f",
      "parents": [
        "612809740453427ce4c9211062794dde3823ab6d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 11 23:30:29 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 15 18:06:16 2020 +0100"
      },
      "message": "Revert^2 \"Remove test_per_src from ART tests.\"\n\nSecond attempt at this, which fixes the asan failures.\n\nRemove test_per_src since it is not supported by atest.\nReplace it with gtest_isolate which is transparent to atest,\nand which still allows us to run tests in parallel.\n\nThe size of test binaries halves (from 1GB to 0.5GB).\nTest run-time on host is unchanged.\nTest run-time on target is 4x faster (tested on walleye).\n\nAdded a gtest_main.cc with the gtest isolated main function,\nand ART-specific initialization.\n\nBug: 147819342\n\nTest: m test-art-host-gtest\nTest: art/tools/run-gtests.sh\nTest: art/test/testrunner/run_build_test_target.py art-gtest-asan\nChange-Id: I515c911bb7d44285495802fc66cd732fc8e6d8df\n"
    },
    {
      "commit": "61e03026a6248e237e1d39776e5a03b51add4c45",
      "tree": "4b8329fdb8aa0d1aa0057820b05d0ef6ed062692",
      "parents": [
        "76ed7871efbf58fc74542a94717a1248f2d341d3",
        "58520dfba31d6eeef75f5babff15e09aa28e5db8"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed May 13 19:47:27 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 19:47:27 2020 +0000"
      },
      "message": "Revert \"Use MADV_FREE to reclaim pages of freed regions\" am: 58520dfba3\n\nChange-Id: I19941af064c3c63ac1320686caaa84b4c589d57c\n"
    },
    {
      "commit": "58520dfba31d6eeef75f5babff15e09aa28e5db8",
      "tree": "eb09e871c318fa9a01923e9afd31f70bdbb5e468",
      "parents": [
        "bc89ed42d6128c27819e5403f6ceca5c18892e23"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed May 13 17:08:43 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 13 19:34:11 2020 +0000"
      },
      "message": "Revert \"Use MADV_FREE to reclaim pages of freed regions\"\n\nThis reverts commit 315f1b21a51a67e5d9c9ec3a04f1887931061e10.\n\nReason for revert: Regression in PSS (b/155678984). Also MPTS test report a low hit ratio (20%), which doesn\u0027t justify the change, at least in the current format. A workaround will be to bring back marking pages back and only madv_free first few regions which are expected to be allocated soon. The rest of the regions should probably be reclaimed with MADV_DONTNEED. Also, for a GC happening when the app is in background should probably reclaim all regions with MADV_DONTNEED.\n\nTest: art/test/testrunner/testrunner.py\nBug: 155678984\nBug: 74447417\nBug: 140130889\nChange-Id: I3c4bc4648a3b12062957a51ee716742eb9944747\n"
    },
    {
      "commit": "863e22af2fdf74ee88b529d2e77ca535c3dbe453",
      "tree": "525c0df18926ed4c246dfb200d188714f0187462",
      "parents": [
        "009934bcf76dd4550306cd286528b84298864200",
        "5868adaefe72cc8bcdcd8325c40f712375a506d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:15:59 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 13 08:15:59 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h . am: 5868adaefe\n\nChange-Id: I115f87949b5f0662f2dec587e0edafcb36da3ab2\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "c8fd17506cfcf470b14afd794149e462d3767cda",
      "tree": "a6ebc3acfc8ce849366157888ef4473bcd6502ac",
      "parents": [
        "ef0d76a61d965b02738716d5b63f042b94cfd839",
        "2750a9884d7579f301c7ff65a6daaf8520af7902"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon May 11 16:40:25 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon May 11 16:40:25 2020 +0000"
      },
      "message": "Report time spent doing madvise in GC performance dump am: 2750a9884d\n\nChange-Id: Ib4c65bbb1665be04cdbbd0bc9676cf2346540deb\n"
    },
    {
      "commit": "2750a9884d7579f301c7ff65a6daaf8520af7902",
      "tree": "61d1a265feb729fa285344694bee8d91fb437fb4",
      "parents": [
        "62dd4e83ba8cdf519168de32c5eff138efdda134"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu May 07 17:23:33 2020 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon May 11 16:28:31 2020 +0000"
      },
      "message": "Report time spent doing madvise in GC performance dump\n\nReport amount of time spent in madvise for reclaiming pages at the end\nof GC cycles.\n\nTest: mpts\nBug: 140130889\nChange-Id: I1d05ac8c8d5ddfe03cc15b9847c8fdd1673dd24c\n"
    },
    {
      "commit": "23fec240155b680ed86d8bb58c8c1e76441c8a5f",
      "tree": "8660e84bc54cd9ac5b248d20d5fa17679bd8a05b",
      "parents": [
        "f7b75d7c3912c916e39a526c6a2b57f67b507a99",
        "fc5e2ef08c78bcf4a60c5097ff3a7fa80e358522"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 08 07:44:28 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 08 07:44:28 2020 +0000"
      },
      "message": "Revert \"Remove test_per_src from ART tests.\" am: fc5e2ef08c\n\nChange-Id: Id26d4c949cc0b99da1ce995a435ddf5b845830fa\n"
    },
    {
      "commit": "fc5e2ef08c78bcf4a60c5097ff3a7fa80e358522",
      "tree": "4c1d538f5faf72617e9088b8f99a368b999b32dd",
      "parents": [
        "685c84775f7dfe23197b080e4730435fd80e6d27"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 08 00:08:42 2020 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 08 07:25:07 2020 +0000"
      },
      "message": "Revert \"Remove test_per_src from ART tests.\"\n\nThis reverts commit 8103e479d8f8447584582b2b70752029f7087776.\n\nReason for revert: asan run fails in multiple ways\n\nTest: ran ./art/test/testrunner/run_build_test_target.py art-gtest-asan\nChange-Id: Ib9f2887436a664b64c6410f56a25ae2dd0e0aab4\n"
    },
    {
      "commit": "e420b75f962b4636e3d1dea9c47e93b61e2508c2",
      "tree": "1bc201ff916fcc67531687c8b2b4825b01c66948",
      "parents": [
        "97fb36c9870c4122bba3eea7b05351a90a1953c9",
        "8103e479d8f8447584582b2b70752029f7087776"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 07 16:15:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu May 07 16:15:05 2020 +0000"
      },
      "message": "Remove test_per_src from ART tests. am: 8103e479d8\n\nChange-Id: Ie100d1e3b8e2830809f934536b4d56c20add927b\n"
    },
    {
      "commit": "8103e479d8f8447584582b2b70752029f7087776",
      "tree": "53b2be70d195b785fc1d79b6151e42925b4981fe",
      "parents": [
        "6a8f8c52da06de506b75fa524a56a30794849261"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 28 21:36:49 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 07 14:45:38 2020 +0100"
      },
      "message": "Remove test_per_src from ART tests.\n\nRemove test_per_src since it is not supported by atest.\nReplace it with gtest_isolate which is transparent to atest,\nand which still allows us to run tests in parallel.\n\nThe size of test binaries halves (from 1GB to 0.5GB).\nTest run-time on host is unchanged.\nTest run-time on target is 4x faster (tested on walleye).\n\nBug: 147819342\nTest: m test-art-host-gtest\nTest: art/tools/run-gtests.sh\nChange-Id: Id295af00d08b24baa2e421b0f3313df0b2e56fe9\n"
    },
    {
      "commit": "d18dcbb1bee6a26ed53f412475d64d2686ca972f",
      "tree": "837316270c48a8ac018eba6c26f2dc6e6a4b91b5",
      "parents": [
        "ddf96f573084f8fc00f5f01f101e06dbb8d6230b",
        "d20e51dcd0fc4b2b229c5b6a5e9b500ae042bc61"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Thu May 07 09:51:23 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu May 07 09:51:23 2020 +0000"
      },
      "message": "\"Move ICU from ART APEX to i18n APEX\" Attempt 2 am: d20e51dcd0\n\nChange-Id: I6f664d2006a4125bac0a616724004b313e3afa1b\n"
    },
    {
      "commit": "d20e51dcd0fc4b2b229c5b6a5e9b500ae042bc61",
      "tree": "2ef7925b2e89c77cee31144a25932a198cd4b65e",
      "parents": [
        "a6653d304faa3bbd981507570a4ac1107760c6a7"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue May 05 16:01:19 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Thu May 07 09:34:47 2020 +0000"
      },
      "message": "\"Move ICU from ART APEX to i18n APEX\" Attempt 2\n\nThe change was previously submitted in https://r.android.com/1283897\n\n\"Calling @IntraCoreApi from core-icu4j should not cause Core platform API violation\"\nhttps://r.android.com/1299494\n\nBug: 138994281\nTest: m checkbuild on aosp_x86-userdebug\nTest: device boots\nChange-Id: Idb3e2450fca5d8300aef353fc1e4e99e24f04372\n"
    },
    {
      "commit": "43b9b3b73c115a945dbdfc9f195d2e1ad7c43172",
      "tree": "5a52fd101734d8f907a6766cd5c471bbc7d4c6bc",
      "parents": [
        "612b2c4c511cb464e8eb5c03ed9c5bee85b33152",
        "4a48775376a4c0b180a7d32ad2cdf00bd0dca140"
      ],
      "author": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 12:00:59 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 05 12:00:59 2020 +0000"
      },
      "message": "Revert \"Move ICU from ART APEX to i18n APEX\" am: 4a48775376\n\nChange-Id: Ia7ab1f739109e1331d0e62b845e736dbfdbedb51\n"
    },
    {
      "commit": "4a48775376a4c0b180a7d32ad2cdf00bd0dca140",
      "tree": "ef0bbb1281f6d4785e60f26cb420646c83eb6f6d",
      "parents": [
        "b5146a3b70b9bf15532d25d3b876354938976bc9"
      ],
      "author": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 11:11:30 2020 +0000"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 11:11:30 2020 +0000"
      },
      "message": "Revert \"Move ICU from ART APEX to i18n APEX\"\n\nRevert \"Move v8 and libpac into i18n APEX\"\n\nRevert \"Move core-icu4j into I18n APEX\"\n\nRevert \"Move ICU from ART APEX into i18n APEX\"\n\nRevert \"Move core-icu4j into i18n APEX\"\n\nRevert \"Move libpac into i18n APEX\"\n\nRevert \"Add shared library into i18n APEX and add the required s...\"\n\nRevert \"Make com_android_i18n namespace visible\"\n\nRevert submission 1299494-i18nApex\n\nReason for revert: Breaking aosp_x86-eng on aosp-master\nReverted Changes:\nI30fc3735b:Move ICU from ART APEX to i18n APEX\nIcb7e98b5c:Calling @IntraCoreApi from core-icu4j should not c...\nIc7de63fe3:Move core-icu4j into I18n APEX\nI65b97bdba:Make com_android_i18n namespace visible\nIa4c83bc15:Move v8 and libpac into i18n APEX\nI10e6d4948:Move core-icu4j into i18n APEX\nI8d989cad7:Move ICU from ART APEX into i18n APEX\nI72216ca12:Move ICU into i18n APEX\nIef9dace85:Add shared library into i18n APEX and add the requ...\nI7d97a10ba:Move libpac into i18n APEX\nI90fff9c55:Move ICU from ART APEX into i18n APEX\n\nChange-Id: I516a8d290e3a3cc2b45d71ba5400364b0478a57a\n"
    },
    {
      "commit": "899840ee8ae54312b2ea5434d7dd65dbf01884db",
      "tree": "369594c414c6ce8e98084ad464e01aecaa4e23c8",
      "parents": [
        "145ec7013675fcdbe984883be6033a460dc1f1e0",
        "8419b82fa8d46362eb1369ec1876ee2d3c4bc29d"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue May 05 09:03:58 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue May 05 09:03:58 2020 +0000"
      },
      "message": "Move ICU from ART APEX to i18n APEX am: 8419b82fa8\n\nChange-Id: Ifaf81867eb07fddeb43c407f7c671adfba749149\n"
    },
    {
      "commit": "8419b82fa8d46362eb1369ec1876ee2d3c4bc29d",
      "tree": "dca0a5f4cd30c2882e404532eb06691a19624306",
      "parents": [
        "b6f4c79b06bb97651a7be1ac828d18ed18356603"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Mon Apr 06 20:42:07 2020 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue May 05 08:52:20 2020 +0000"
      },
      "message": "Move ICU from ART APEX to i18n APEX\n\nIt involves a change of boot class path to use core-icu4j\nfrom i18n APEX.\n\nBug: 138994281\nTest: device boots\nTest: m build-art-target-tests\nTest: CtsJniTestCases\nTest: atest libnativeloader_test\nTest: ./art/test/testrunner/run_build_test_target.py -j80 art-test\nTest: art/build/apex/runtests.sh\nChange-Id: I30fc3735be760cba48856cd102852d2a6c796374\n"
    },
    {
      "commit": "acafa9f4b18ec194812c9275b5c924876a148117",
      "tree": "658354fce0c7165005f8fa6aebfab8cc353bb70e",
      "parents": [
        "f623a4ec38f1a631b2dceb1599922c7e5c73c096",
        "315f1b21a51a67e5d9c9ec3a04f1887931061e10"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri May 01 18:35:29 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 01 18:35:29 2020 +0000"
      },
      "message": "Use MADV_FREE to reclaim pages of freed regions am: 315f1b21a5\n\nChange-Id: Ibc3eff2cc93a41a4fa9f6793c9c34745ea4d96a6\n"
    },
    {
      "commit": "315f1b21a51a67e5d9c9ec3a04f1887931061e10",
      "tree": "4d736d750c5839395aac65a48bd3935a9831cdbc",
      "parents": [
        "0f5b2bf1aee7e08ce3b0dbf91ee528eb846d372f"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Feb 12 18:10:32 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri May 01 18:22:13 2020 +0000"
      },
      "message": "Use MADV_FREE to reclaim pages of freed regions\n\nIn order to release memory consumed by freed regions back to kernel we\nuse madvise(MADV_DONTNEED) syscall, which synchronously takes away all\nthe pages of the given memory range. As a side-effect, this also\nprovides us clean (zeroed-out) pages the next time region is used by\nan application thread as a TLAB. The downside is overhead of\nMADV_DONTNEED (it has to manipulate all the corresponding page-table\nentries). Furthermore, the application thread gets page fault each\ntime it moves from one page to the next while consuming the TLAB.\n\nMADV_FREE is another madvise option that also advises kernel to take\naway the pages, but only when there is memory pressure. It is a much\nmore light-weight operation than MADV_DONTNEED. Also, the application\nthread doesn\u0027t get the page fault overhead, if the page is not already\nreclaimed. However, a page which is not reclaimed by the kernel will\nhave stale data on it.\n\nThis change uses MADV_FREE for region-space\u0027s reclamation and ensures\nthat pages about to be used for new allocations are properly cleared.\n\nBug: 74447417\nBug: 140130889\nTest: Golem, mpts/greenday tests\nChange-Id: I1e4a75abed51844d5062685bf77871f609af5a65\n"
    },
    {
      "commit": "683e674616ebde405fe897b84cf8052c51c8f498",
      "tree": "bcab3546c5a93ec589daefc89106921f6203c03e",
      "parents": [
        "ea6be19b59babd2d3ad5d44366e7b0d9025ea559",
        "0bd96507183158538a64bfdc38228cbdea6a1c0f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 03 20:03:43 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 03 20:03:43 2020 +0000"
      },
      "message": "Fix string deduplication for multi-image extensions. am: f4ba904ec0 am: 0bd9650718\n\nChange-Id: I2f6a9ef345301216b2e77ddf5183ff3939bc29ab\n"
    },
    {
      "commit": "f4ba904ec0ec5e6cefa79c4f598dc0a29b7d4143",
      "tree": "c3a19c1279c73d5d057bb09774b2465f32dc1d6f",
      "parents": [
        "cb62cd8665e8dd432cdc3b5adc8cdf6f36289d44"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 03 09:40:25 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 03 19:21:02 2020 +0000"
      },
      "message": "Fix string deduplication for multi-image extensions.\n\nTest: WITH_TIDY\u003d1 m\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 153104371\nBug: 152037801\nChange-Id: Ib91e7a13047d7da78deb855a6713a1a5d9044463\n"
    },
    {
      "commit": "1afc1f52fa7b5c90fe8b44ce0e32ed46fb11143f",
      "tree": "9e63fb938698d150e0ccf2087ff8ae66b241d568",
      "parents": [
        "e30f24631850837773493154e426ff0c4d55a374",
        "2e5b73b634a60bf617ce0e49cf059fe69199efcb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 31 13:45:04 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 31 13:45:04 2020 +0000"
      },
      "message": "Deduplicate interned image strings. am: fdd4684836 am: 2e5b73b634\n\nChange-Id: I6a8f1ddae8bf8847a0bc1032e3afbaa08ae1fd93\n"
    },
    {
      "commit": "fdd46848364b5fdb7360cb3256bd9482d7ca3c28",
      "tree": "d3e47c9723155f6376e3782cc47658a295c1da1c",
      "parents": [
        "4ac8d96c332b014b72c2480aa1c83762e818daef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 25 14:57:17 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 31 13:16:12 2020 +0000"
      },
      "message": "Deduplicate interned image strings.\n\nAlso fix a bug in relocation; even for -Xnorelocate we need\nto relocate second and later extension if it\u0027s not compiled\nagainst all previous boot image components.\n\nAlso clean up InternTable includes.\n\nTest: New tests in image_space_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 152037801\nChange-Id: Ie6ae70721f4ffb48950bd248ffa123dee460bcd7\n"
    },
    {
      "commit": "e11d0f8be0d5e78c6c23dccf6e02da93c916c5b0",
      "tree": "9e3e54bb36442ad375942fe86d71f833796f65b8",
      "parents": [
        "e849d70c4016f0b61d7a28ee41d78a92390f015b",
        "1b536ca76e1c2af297f38ece2f8b1e3e1859c9df"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 19 00:56:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 19 00:56:13 2020 +0000"
      },
      "message": "[art] Remove boot complete marker am: 1b536ca76e\n\nChange-Id: I27f8a8cfba2542058e7463eca93543cd32e2b066\n"
    },
    {
      "commit": "1b536ca76e1c2af297f38ece2f8b1e3e1859c9df",
      "tree": "f1bbef3a55ece18930fe4ad4cf99c2ba305f0a9c",
      "parents": [
        "d1cda88b4cfd35c8c392bc162eaee75486d46f18"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 28 16:25:51 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 18 23:13:00 2020 +0000"
      },
      "message": "[art] Remove boot complete marker\n\nART doesn\u0027t load the boot image from /data anymore and the marker is\nuseless.\n\nTest: device boots\nBug: 143899228\n\n(cherry picked from commit e6f21c4597de7c4060ef5ad30d07ce9ef16d01ad)\n\nMerged-In: I3b60d24c87a8f88cf8fc4a032ebfbf55db74a944\nChange-Id: I999ef31b2edf6d9e4e7a03662ed7431e778c19b0\n"
    },
    {
      "commit": "ab4d2222a206f48a27178c52f0ee31c30170823f",
      "tree": "e6ea43aae99ce58fe6d1e4c03c32a5aa3db93dbf",
      "parents": [
        "735ab4ef26c250510f21fc2070e08d4ae7867916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 03 16:27:38 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 04 09:38:06 2020 +0000"
      },
      "message": "Fix boot image size check.\n\nTest: aosp_taimen-userdebug boots when built with\n      export DEXPREOPT_USE_ART_IMAGE\u003dtrue\n      and logcat shows no messages about failing to open\n      the app image services.art .\nBug: 150668267\nChange-Id: I800ef2e09e3a61fe4c8418ba4d66f54dd605495e\n"
    },
    {
      "commit": "4cbb51a0c057249a500ca7fe3947401978f165d2",
      "tree": "af626569243ce560c45fe5c653ca61fae0cd6a0b",
      "parents": [
        "5d24c3d43152b36181fbf9819bfbe5589572f16b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 11:25:54 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 18:21:11 2020 +0000"
      },
      "message": "Fix ART code around JIT zygote.\n\n- The right image location for it now ends with a profile\n- Add profile locations to image spaces, so the JIT knows what to\n  compile\n- Remove now deprecated ApexImage related code.\n\nBug:119800099\nTest: boots, methods from framework gets compiled by zygote\nChange-Id: Ie31b62d0a25f1b50e266c1537c43307d7b29e138\n"
    },
    {
      "commit": "f6afcc9bd7f9b82df5e93d96d89c4c8da898e6f0",
      "tree": "e1f1e826dd510fb05c175f456e0b17671517bed2",
      "parents": [
        "8adb3258b902306d7ba2933e20f7435aa384d85e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 05 10:10:03 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 06 10:32:22 2020 +0000"
      },
      "message": "Update boot image extension compilation args.\n\nAnd in dex2oat check for boot image location with profile\nspecification. For app compilation, trim such boot image\nlocation to the leading components without profile spec.\nFor boot image extension, such location is currently an\nerror because it expects all dependencies to be satisfied\nfrom boot images; this may be relaxed in future.\n\nTest: aosp_taimen-userdebug boots.\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:/nonx/boot-framework.art!/system/etc/boot-image.prof\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\n      # Check /proc/\u003czygote64-pid\u003e/maps, see\n      #   \u003clarge\u003e rw-p ... [anon:dalvik-/nonx/boot-framework.art]\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.vdex (deleted)\n      #   \u003csmall\u003e r--p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      #   \u003csmall\u003e rw-p ... /memfd:/nonx/arm64/boot-framework.oat (deleted)\n      # (No r.xp as we did not compile anything.)\nBug: 119800099\nChange-Id: Ie338a54d45967c790d08cbd1e53ecbcd2b217081\n"
    },
    {
      "commit": "89b85ebb4a0daf390701f1b395d1cd01239a75a1",
      "tree": "86d2a4dd300945e463040ceab48cffc20c6c57f7",
      "parents": [
        "198cf41c904b1368a3f745ce4bc57dfe2080b14d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 04 15:51:44 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 05 15:41:12 2020 +0000"
      },
      "message": "dex2oat: default to speed-profile if we have a profile.\n\nAnd move the check for /system/etc/boot-image.prof from\nAndroidRuntime.cpp to the deprecated GenerateImage() in\nart/runtime/gc/space/image_space.cc . If it\u0027s not found,\njust report the error and compile with the \"speed\" filter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 119800099\nBug: 148928928\nChange-Id: I536ed7e6d7ebaa562cba3448a37c5d873bc0a682\n"
    },
    {
      "commit": "f9dfd77182296cd9161784bc0b9babf4f22a90c7",
      "tree": "8abbce5a0fc5cf7b46979cb6d47a19a6106d0297",
      "parents": [
        "c70b84e7680663c3a41a119570ecd5f708ce4d76"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 30 13:56:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 16:40:25 2020 +0000"
      },
      "message": "Update VMRuntime.isBootClassPathOnDisk()...\n\n... for the new boot image location specification.\nIn particular, use only the first component and, if there is\nno path, use path from the first boot class path component.\n\nTest: aosp_taimen-userdebug boots\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:/system/framework/boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nBug: 119868597\nChange-Id: Ifae2a005b7c6b8625d744eca2df763e3f6f5d0fb\n"
    },
    {
      "commit": "c0e0e5e6334f7804c41e3a0436536161754dbb1c",
      "tree": "e84506016937e10438916fde9a91708a7d9ed093",
      "parents": [
        "e4207a7bf5b008df97b76b6df7a9930524c4c1cb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 23 17:43:05 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 31 09:28:51 2020 +0000"
      },
      "message": "Compile boot image extensions in memory.\n\nAllow boot image location components for extensions to\nspecify a profile. If such extension is not found on disk,\nor the on-disk version fails validation (presumably because\nit\u0027s out of date), compile the extension in memory, passing\nmemfd file descriptors as output arguments to dex2oat.\n\nAlso fix GetPrimaryImageLocation() to check for the \u0027/\u0027 in\nthe first component instead of the full boot image location.\n\nTest: Additional tests in dex2oat_image_test\nTest: m test-art-host-gtest\nBug: 119800099\nChange-Id: I4d3c178defe311bf51153d4beb386eba208d75a5\n"
    },
    {
      "commit": "4f9d62b549ef755c5b77d09b1da2a8403f58b376",
      "tree": "c3af4e8008e8214016b88bb9127157c912fa23e8",
      "parents": [
        "b885d8b631ad0a72ade32cb6b07a2ddd062a664b"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Jan 06 15:06:04 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Jan 15 19:50:46 2020 +0000"
      },
      "message": "Utilize partially used TLABs\n\nCurrently, once a mutator tries to allocate an object bigger than the\nTLAB size, it attempts to acquire another TLAB. The previous TLAB is not\nutilized again. This leads to blocking GCs when mutators get created and\nkilled very frequently, as could happen in the case of Zygote.\n\nIn this change, we maintain a separate list of partially used TLABs\nwhich can be reused whenever any mutator attempts to allocate a new TLAB\nfrom region space.\n\nTest: forrest hermatic test\nBug: 146706834\nChange-Id: I8076663628e49fc10e33f30de937833f6812fdca\n"
    },
    {
      "commit": "c4bf6679e14a54fde5bc7a994f0f1d4e4564fa23",
      "tree": "84b91c9be72c197d1692d5daa091cd8842833fe6",
      "parents": [
        "4681f2034034435d47eb0b5ef03bde69a1e4dde6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 13 13:07:16 2020 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 13 13:14:00 2020 -0800"
      },
      "message": "Use ResetTlab instead of setting to null\n\nAdded a function ResetTlab to reset the TLAB to empty. This is\nin case the empty TLAB doesn\u0027t have null values.\n\nBug: 139805154\nTest: make\nChange-Id: Ife2225fc534999e53f2ecad41fc29e46c90a8817\n"
    },
    {
      "commit": "d0036ac18efcd7774775d521ae11178933041b95",
      "tree": "175db5c419006e3c146d92ef278100233dd2a827",
      "parents": [
        "69944683c33a316c9ed325ed686d9f81ad3665dc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 11:47:12 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 11 10:03:05 2019 +0000"
      },
      "message": "Single-image boot image extensions.\n\nAllow boot image extensions to be compiled into a single\nart/oat/vdex triplet for any number of input dex files.\nSupport argument --image-fd so that this can be done with\nfile descriptors. This is intended for creating a boot\nimage extension in memory when starting zygote.\n\nRemove the possibility to specify multiple oat or image\nfiles. It was unused and untested.\n\nTest: New test in dex2oat_image_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I78e5410642a5df14c0891d87f27eefcb02156764\n"
    },
    {
      "commit": "0fce03f02c6aa57eca9dbe83a7f107d548892f1d",
      "tree": "a331bca640565c154faaa2960732a45b31d6c089",
      "parents": [
        "542e393976e4875e11b6e291191fbb77941bb524"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 08:55:13 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 21:18:59 2019 +0000"
      },
      "message": "Add scoped trace to VisitDexCacheArrays\n\nDiagnose how expensive dex cache relocation is.\n\nBug: 116052292\nTest: manual\n\nChange-Id: I032b72de0db61932bc6e6c4da2a910ce9b2d1939\n"
    },
    {
      "commit": "dd09f7114ccdbe4cefd76c37f2db8b899a991923",
      "tree": "64075014f0a0bee915ff34f4b22284abc61c222c",
      "parents": [
        "9561faf10d2e23f322da03743a30843296971fd0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 06 12:37:10 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Dec 06 16:55:36 2019 +0000"
      },
      "message": "Fix oatdump for boot image extensions.\n\nFix the ParseCheckBootImage() to check the first component\nof a multi-component boot image parameter.\n\nFix oatdump to fail nicely instead of aborting when it\nfails to load any image.\n\nFix error message for boot image component count mismatch.\n\nTest: m dump-oat (fails; check error message and exit)\nTest: Manually run one of the `m dump-oat` commands with\n      fixed --image argument (adding the primary image).\nChange-Id: I4e143e3415b1239f6afee5fa18899a1724519155\n"
    },
    {
      "commit": "b7bf843b04046f2758998c019e947611d0208217",
      "tree": "0a6033402ebde2859267c865dc4e14cde9170835",
      "parents": [
        "726e2dd6db60968b36c1d03feab236edc8fa806b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 03 13:18:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 06 10:57:08 2019 +0000"
      },
      "message": "Use provided dex filenames in oat file.\n\nRemove OatFile::RemoveRelativeEncodedDexFileLocation() and\nuse the provided `dex_filenames\u0027 (see below) if not empty,\nwithout checking for prefix match or host/target build type.\n\nAlso add extra primary/multi-dex location checking when\nopening an oat file. Since some tests were already creating\noat files from multiple dex files, rewrite the interface to\nbetter support that option, replacing the old argument\n`abs_dex_location` with `dex_filenames` that can provide\npaths to multiple dex files.\n\nTest: m test-art-host\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I36a9abca72872c41e4c10fdacbeadf551ca740dc\n"
    },
    {
      "commit": "f585c1e4f8b011b7399668800da53ec726fbeb40",
      "tree": "bd7a532ba4fdca8bc037a1b5faaef491a37f98e1",
      "parents": [
        "f92f6f12f3be976afb8f2ac8e8bbeaef72ef8b33"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Nov 25 10:41:23 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 27 02:32:51 2019 +0000"
      },
      "message": "Protect/Unprotect regions (region space) only in debug build\n\nDuring performance analysis it was observed that the\nallocation-intensive workloads get negatively impacted by the region\nprotect/unprotect. Therefore, we enable this only on debug builds.\n\nSome of the most affected benchmarks on Golem are as follows:\n\nBenchmark                           | armv8 | armv7 |  x64  |  x32\n------------------------------------------------------------------\nBinaryTrees                         |   8%  |   8%  |  13%  |  12%\nMicroAllocThreeFinalThrice          |  13%  |   8%  |  27%  |  30%\nMicroAllocThreeFinalTwice           |  13%  |   9%  |  32%  |  30%\nMicroAllocThreeFinal                |  13%  |   8%  |  33%  |  30%\nMicroAllocTwoFinal                  |  11%  |   9%  |  32%  |  31%\nMicroAllocOneFinal                  |  11%  |   9%  |  33%  |  31%\nMicroAllocBaseline                  |  12%  |   9%  |  33%  |  34%\nKotlinMicroTree                     | -0.4% |  0.7% |   8%  |   9%\nKotlinMicroMap                      |   6%  |   3%  | 0.7%  |   1%\nKotlinImgProc-CheckerboardMultiply  |   5%  |  0.5% |   0%  |-0.5%\nSplay                               |   5%  |   4%  |   2%  |   3%\nMicroLazyInitSingleThreadedSlow     |   8%  |  -2%  |  17%  |   7%\nMicroLazyInitImmutableSlow          |   5%  |  -2%  |  24%  |   8%\n\nTest: golem benchmarking\nBug:140130889\nChange-Id: I6be646bcc069d59625112c1b9ab91bbbc5f9f627\n"
    },
    {
      "commit": "0ac78cf94fac523ab9bea0a42edac8eb8c09a05d",
      "tree": "5aa7e192fc054f2837de61e660446ef33c317197",
      "parents": [
        "80f1c2850a6cc501c42ff1cfa306ec725e2bf61f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 25 15:46:19 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 25 17:53:48 2019 +0000"
      },
      "message": "Fix vtable relocation for boot image extension.\n\nCheck relocated reference against destination address\nrange rather than source address range.\n\nTest: No crashes seen when framework is compiled as\n      a boot image extension (cherry-pick WIP CLs).\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nChange-Id: Ica5d898c80db7817a511d64046f3a84830cb2a45\n"
    },
    {
      "commit": "a8f39186b26f66671c5e960e7f7a3b7ce231eab1",
      "tree": "231b20d3394af6305d89ecdefea34d755d622ee0",
      "parents": [
        "e61f16af3976ca8c0ab82cd3f21e5dff66225520"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 10:08:58 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 21 13:35:02 2019 +0000"
      },
      "message": "Clean up some image tests.\n\nMake ImageSpaceLoadingTest\u003cfalse,.,.\u003e use a custom image\nlocation based on ScratchFile to avoid accidentally finding\na pre-compiled boot image in default location.\n\nAdd -Xnoimage-dex2oat to Dex2oatImageTest to avoid useless\ndex2oat invocations that just slow down the test. Suppress\nerror messages from image loading that is supposed to fail.\nCompile only 3 dex files in TestModesAndFilters to make the\ntest faster (29s-\u003e20s on host).\n\nTest: m test-art-host-gtest\nChange-Id: Ia92e85f056027003d2fb50aa871c9fae7a5fdc01\n"
    },
    {
      "commit": "d830263af8b612b9c00fb4ceb50f1815df9a039d",
      "tree": "16cbd33fd597144bd418ecf423bc03913e9b5bd0",
      "parents": [
        "52f8e5c2d3f9a475f6877b716642cf2af41dd4d7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 14 13:16:16 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 14 17:09:18 2019 +0000"
      },
      "message": "Fix image checksum verification.\n\nMove over the separator \u0027:\u0027 for checking subsequent dex file\nchecksums. The bug, introduced in\n    https://android-review.googlesource.com/1091189 ,\ncaused rejection of oat files if the boot class path had\nmore than one module that was not part of the boot image.\n\nTest: Add a new test to image_space_test.\nTest: Manual fake OTA with extra logging for checksum mismatch.\nBug: 119800099\nBug: 144146443\nChange-Id: I9eb8328348b30ee4769468924f9e6ac65b70d4cb\n"
    },
    {
      "commit": "92eec3a90282edf30ca1535d58a4b52294ba7e76",
      "tree": "27b05f588a5286f5b08b33f7a57b20544841f5ef",
      "parents": [
        "4f7c0cc6b272f9998074d0cde36b24bdd7b06bf9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 05 10:59:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 08 14:46:52 2019 +0000"
      },
      "message": "Add boot image checksums to image header.\n\nThis adds an early validity check, so that we do not need to\nload an image extension and oat file before we can discard\nthem as out-of-date based on the checksums from oat header.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interp-ac\nBug: 119800099\nChange-Id: I951e8429f8dde73f3fc41c36dffe5a657a0db62b\n"
    },
    {
      "commit": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\n"
    },
    {
      "commit": "2191069047034ad891ea15f60a217246edc38d53",
      "tree": "5fcdb37aa8d1e052979631adac01fe74794748b3",
      "parents": [
        "add69acb7db965bd8d817a185e962e5474f690d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:27:03 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 14:04:57 2019 +0000"
      },
      "message": "Revert^4 \"Boot image extension.\"\n\nThis reverts commit f5c5eb30fc71e0c305d678bd3c1c995a5c36d508.\n\nRemoved wrong check for no dex files. Dex files can also be\nspecified with zip-location and file descriptors. Added a\nregression test to dex2oat_test.\n\nFixed the image checksums validation to use the appropriate\npart of BCP rather then full BCP. This fixes errorneous\nrejection of oat files compiled against partial BCP.\n\nChanged dex2oat_image_test to use ART_BASE_ADDRESS to try\nand avoid failures when reserving space for loading the\ncompiled images.\n\nTest: Additional tests in dex2oat_{,image_}_test\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I062cbecd0020f5c24353eb75643ea5905cb6f4fd\n"
    },
    {
      "commit": "f5c5eb30fc71e0c305d678bd3c1c995a5c36d508",
      "tree": "2f08c5562d3b35b7f0139f772b6324a9689d01ea",
      "parents": [
        "acdb9a350fede0776e1f4d6d04dc3246249345e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 12:25:10 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 13:25:07 2019 +0000"
      },
      "message": "Revert^3 \"Boot image extension.\"\n\nThis reverts commit 02820f424714e711bbd4cb4b04a109416eb0c8b8.\nAlso reverts commit beb66b38dcce937d7eee9ef2d07b6402c720f8ee\nthat contained a follow-up fix.\n\nReason for revert: b/144001974\n\nBug: 119800099\nBug: 143492855\nBug: 144001974\nChange-Id: I4da5330c3efa9f0c3508e85344c031d3b360ca0a\n"
    },
    {
      "commit": "beb66b38dcce937d7eee9ef2d07b6402c720f8ee",
      "tree": "4bdf0034b5fbd4aa6bb07c73f8c38f9eac03669e",
      "parents": [
        "a48f0bbb2939fa743904f7553a060b12846f100e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 14:59:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 05 09:42:18 2019 +0000"
      },
      "message": "Fix boot image extension relocation.\n\nStore boot image begin and size to the extension header as\nit is needed for relocation; this requires rewriting the\nImageHeader::IsAppImage(). Also mark the class roots as\nvisited to satisfy a DCHECK() for extension relocation.\n\nAnd re-enable loading boot image extensions for tests.\n\nTest: Add relocation tests to dex2oat_image_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: testrunner.py --target --64 --optimizing --relocate\nBug: 119800099\nChange-Id: Ie7e883beaa927ca4dc91f0ae660c8de74f7d4ddb\n"
    },
    {
      "commit": "02820f424714e711bbd4cb4b04a109416eb0c8b8",
      "tree": "ca7554d4dd148a3832b46c19fd9bd706d83ed4a4",
      "parents": [
        "962a110efb2c6a2b0161f919bfd5921e3dee7168"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 10:31:27 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 04 15:33:02 2019 +0000"
      },
      "message": "Revert^2 \"Boot image extension.\"\n\nThis reverts commit 9f459c4ef60d771fc4eb8da1f709f479ca23a6ab.\n\nFixed the extension test to be more hermetic. Added a clean\nspec to work around broken dependencies; obsolete images may\nhave been a reason for boot time regressions.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nBug: 143492855\nChange-Id: I37e714d53e66f94f791e6d1e9f4d78bf7bcb2116\n"
    },
    {
      "commit": "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab",
      "tree": "5c998b1bd23d0a348ec77a4fcd760e7e9cac00f7",
      "parents": [
        "9e709debacab08be8adbac366e0555ca302a3bed"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:23:06 2019 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 01 18:29:26 2019 +0000"
      },
      "message": "Revert \"Boot image extension.\"\n\nThis reverts commit 4f6ebe89af462ff05d97433deb2bca3f3b011fc2.\n\nReason for revert: b/143492855\n\nBug: 119800099\nBug: 143492855\nChange-Id: I27da7e790f61f836701f8f39c98d14b507af8b9e\n"
    },
    {
      "commit": "4f6ebe89af462ff05d97433deb2bca3f3b011fc2",
      "tree": "856ef32276112b78fb51bd95dfd545217b86cb33",
      "parents": [
        "3155aa4e6167c5f346aa5e90da43ee0e9d04d2ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 19 15:23:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 01 12:48:46 2019 +0000"
      },
      "message": "Boot image extension.\n\nAllow the boot image to be split into the primary boot image\nand any number of optional boot image extensions.\n\nTest: New extension test in dex2oat_image_test.\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 119800099\nChange-Id: If5a2fa1c0facccbfaf0a1f0cb015ea9233f1f4c6\n"
    },
    {
      "commit": "436c6f5fae95aae332361060778599d0ef24a167",
      "tree": "eb81e98fc92a58a31efb6754f0f73d67720b7e24",
      "parents": [
        "0c63f76d90ed5b5dc4bc420fc51ffc383f8d87d9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 25 14:50:14 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 30 13:59:29 2019 +0000"
      },
      "message": "Oat file checksums for boot image extensions.\n\nModify the oat checksums check for boot image extensions.\nThere may be more extensions loaded at runtime than when the\noat file was compiled, so we need to check the checksum type\nfrom the checksums string to determine whether to use an\nimage checksum or dex file checksum. Different checksums\ncan be valid for the same boot class path.\n\nThe creation of boot image extensions and other aspects\nof loading them shall be implemented in separate CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I43d1f9464678784e902ad72f4a89cf38b4786122\n"
    },
    {
      "commit": "1b13d28d5d19e7a71f5e428ba0b460fb3aa59018",
      "tree": "db1b23f64f51d208578c8e2d7f579732b864c33f",
      "parents": [
        "f1ddc20f37fe12e36792770414b66948b601ff1f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 15:10:55 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 23 15:35:25 2019 +0000"
      },
      "message": "Improve diagnostic messages for reading image header.\n\nDifferentiate between missing file, read error and invalid\nimage header. This should help distinguish incremental build\nerrors due to missing dependencies (invalid image header due\nto image version change) from other infrastructure problems.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 143205070\nChange-Id: I529705c8049f75793aab373976e6fa5e0f980bab\n"
    },
    {
      "commit": "9ac8e4327bd732e4b3b9b8dc6a29560013338d21",
      "tree": "b56840a0c7b0874f73e5db7259861c04f87df796",
      "parents": [
        "29e740fe64a8caeb04e0d686b4d1e290ba5ad1e6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Aug 13 13:16:13 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 22 20:00:55 2019 +0000"
      },
      "message": "JIT mini-debug-info: Allocate entries in the JIT data space.\n\nTest: test.py -b --host --jit\nTest: device boots\nBug: 119800099\nChange-Id: I7efa1e6e6660239cbd6438b829e08dd9cd079343\n"
    },
    {
      "commit": "ea5b4297d7748bb87a6f1133103df834ea16f227",
      "tree": "779cbded6a35f9af09a263293b254f5004785b71",
      "parents": [
        "7ab5c0068017af31b417643f887930bd91715bce"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Aug 08 16:27:21 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Aug 14 16:56:16 2019 +0000"
      },
      "message": "Include evacuated bytes in heap size trace\n\nSince ConcurrentCopying collector creates copies of objects that are in\nthe evac from-space, we need to report this during GC cycle using\nTraceHeapSize().\n\nTest: Flash device, run and analyse perfetto trace.\nBug: 139020078\nChange-Id: Iff0da1de4c77da199c1c3b44ea488883e7fa4261\n"
    },
    {
      "commit": "e80ecf31e0d58a90d6b2a1d65ec090c03abc86dc",
      "tree": "25eb1f6319f3194c79dfcec77753628e424cc476",
      "parents": [
        "d4d6fb50b5e1552c114529854e29c3af5c4eb9c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 15:20:58 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 05 16:12:41 2019 +0000"
      },
      "message": "Rewrite the .data.bimg.rel.ro check in OatFile::Setup().\n\nIn preparation for loading boot image extensions before\nRuntime::Current()-\u003eGetClassLinker() has been initialized,\nchange the check to not rely on Runtime::Current() at all.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ica37c294a19e36e615186a0331d4d18c40c7fe2e\n"
    },
    {
      "commit": "7c502740ba2b3b8560b8d02af276b010392de5bb",
      "tree": "693d1abb0d04f197a11ecddb8ccbc39ce942a1dc",
      "parents": [
        "c14ec8facf0ea51e7531fa0acbed3410468b0356"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 01 12:47:18 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 01 20:21:52 2019 +0000"
      },
      "message": "Fix Heap::UnBindBitmaps for spaces without bitmaps\n\nSpaces that don\u0027t have a bitmap can\u0027t have their bitmaps unbound.\n\nTest: test/testrunner/run_build_test_target.py -j50 art-debug-gc\nBug: 116052292\nChange-Id: Icbd9fab5bdec5fbc7f23bd02d45d600201387d6d\n"
    },
    {
      "commit": "6f382013399fc8ba8b2717e4d24d91978d2bc0f7",
      "tree": "53b6bca63d5a1c34b2a60e5d8ef39f7cb22d4fe9",
      "parents": [
        "2b9c8c94fc92c6f2c7c1703efc1793d17ffde297"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 30 09:47:35 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 01 16:17:17 2019 +0000"
      },
      "message": "Refactor space bitmap to be a value object\n\nRemove the need for pointer indirections at many places, reduce the\namount of code.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I4b1040d29f9ba99ea23c51f70a06af2ffbe496d4\n"
    },
    {
      "commit": "52c468a765f0427dfb5a6627e8087e7b8acc3b8b",
      "tree": "305790c70dbdf13a8fbafe7cdf1f0ba664860ad8",
      "parents": [
        "c0b30c9cd2553f58035853919a9820b0b54db783"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Jul 18 18:16:04 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Jul 29 17:52:24 2019 +0000"
      },
      "message": "Refactor mark-bit set logic in PreZygoteFork()\n\nTest: art/test/testrunner/testrunner.py --target\nBug: 37254935\nChange-Id: I3cb592e793fee47509590c66697c06a8e3bd6fab\n"
    },
    {
      "commit": "c0b30c9cd2553f58035853919a9820b0b54db783",
      "tree": "7aa919f061ae4f30f55bc908cd234c3876dd6942",
      "parents": [
        "672c08092a7d95bb504bceb712812f72524d90da"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 23 14:58:25 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 29 12:37:41 2019 +0000"
      },
      "message": "Implement boot image extension relocation.\n\nThe creation of boot image extensions and other aspects\nof loading them shall be implemented in separate CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I1630d6cc44550bc0db72cb5c4a8e08573cf3b92c\n"
    },
    {
      "commit": "8787cf87606f2a0c45b44578c7a9a254b7c6dfc9",
      "tree": "859e0066ab40650b2212240c7e38418b1418d39e",
      "parents": [
        "db26569b5e21ef16f4a90e4f6ad0904341e7ecf8"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Jul 11 12:50:31 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jul 16 17:52:58 2019 +0000"
      },
      "message": "Set Mark-bit for large Zygote objects\n\nWe set the mark-bit of Zygote objects before forking to ensure that the\nobjects are not dirtied due to GC trying to modify the GC related bits\nin the objects\u0027 header. The same was mistakenly not being done for\nlarge-space objects corresponding to Zygote.\n\nTest: art/test/testrunner/testrunner.py --target --64\nBug: 37254935\nChange-Id: I173d6090a6ec0fd7e511e1d684341ecf0968e97f\n"
    },
    {
      "commit": "1aff1efe67be9238792704c6758028d12239e337",
      "tree": "aad969e51d79b2cff50170c01d933b783260218b",
      "parents": [
        "c1b34d49a0790db878685258dc46c0bfd37e4f37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 15:12:50 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 03 08:24:36 2019 +0000"
      },
      "message": "Clean up retrieving boot image address range.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I8f36ae59399e4fa97576bbb8d71e29f9f40c0c91\n"
    },
    {
      "commit": "41a2189cf3370683923ff227e8bf5969267657c4",
      "tree": "e8a05b6ca5038ef948d2a3cf0c966e89e7329ab9",
      "parents": [
        "8c306efb3f80a7ff5fbc30707f28bd74eaa985a3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 30 17:35:08 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 03 09:17:13 2019 -0700"
      },
      "message": "Go to native for image decompression thread pool wait\n\nWe should not be holding the mutator lock since that will maybe\ncause DCHECK failures.\n\nBug: 131318971\nTest: test-art-host\n\n(cherry picked from commit f1890fd47361788e859a533e447d4d393be651b7)\n\nMerged-In: I14064b06adb9ec0e83af6afb70320f184fd2aed0\nChange-Id: Id3e34ec9bd9082aaea8367b65cd90e6bd499b6c0\n"
    },
    {
      "commit": "17e5ba9850afd5ba5b62634426641efbd24d5076",
      "tree": "bdb2f1405d2e3a7dd83d7596db03f5ca862f314f",
      "parents": [
        "23628c2133d21b72c9d82a49cff2527ae041ddc2"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon May 13 18:45:09 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri May 17 17:53:33 2019 +0000"
      },
      "message": "Optimize RegionSpace::ClearFromSpace()\n\nWe perform madvise() and mprotect() syscalls in\nRegionSpace::ClearFromSpace() for every region that we reclaim. This was\nbeing done while holding region_lock_. This has the potential to stall\nthe TLAB allocation requests.\nIn this CL, we pull out system calls out of the critical section of\nregion_lock_.\n\nBug: 132463704\nTest: art/test/testrunner/testrunner.py --host --debug\n\n(cherry picked from commit baa99adfc7154a9d8b12736752e44e199a5fbbf0)\n\nMerged-In: Ie9e96c95a7ee78a9b18c1bfc26ed04acbe99c32b\nChange-Id: Ie9e96c95a7ee78a9b18c1bfc26ed04acbe99c32b\n"
    },
    {
      "commit": "23628c2133d21b72c9d82a49cff2527ae041ddc2",
      "tree": "759bc21cffa3a42e45d0465da3ef0ed15fdd3d29",
      "parents": [
        "9942687cdc862d792a6935db0c95bab106a120ed"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 13 12:38:54 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu May 16 12:57:21 2019 -0700"
      },
      "message": "Bytes_moved accounting fix and accounting cleanup\n\nBytes_moved should be incremented by the correct number of bytes needed\nfor the space the object is allocated in, not the number of bytes it\nwould take in region space.\n\nVarious minor cleanups for code that I found hard to read while\nattempting to track this down.\n\nRemove a CHECK that held only because of the incorrect accounting.\nIt now results in TreeHugger test failures.\n\nBug: 79921586\nTest: Build and boot AOSP.\nChange-Id: Iab75d271eb5b9812a127e708cf6b567d0c4c16f1\nMerged-In: Iab75d271eb5b9812a127e708cf6b567d0c4c16f1\n(cherry picked from commit a253c2d27bb95f120a27dc3fa8a66184a15a7442)\n"
    },
    {
      "commit": "baa99adfc7154a9d8b12736752e44e199a5fbbf0",
      "tree": "0d8f14153c67c3d5970a492e0b5b0b2039e03f2b",
      "parents": [
        "b5649f9b2bce5f4e90be7e2ccfbb9e33ff3105a0"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon May 13 18:45:09 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed May 15 16:46:08 2019 +0000"
      },
      "message": "Optimize RegionSpace::ClearFromSpace()\n\nWe perform madvise() and mprotect() syscalls in\nRegionSpace::ClearFromSpace() for every region that we reclaim. This was\nbeing done while holding region_lock_. This has the potential to stall\nthe TLAB allocation requests.\nIn this CL, we pull out system calls out of the critical section of\nregion_lock_.\n\nBug: 132463704\nTest: art/test/testrunner/testrunner.py --host --debug\nChange-Id: Ie9e96c95a7ee78a9b18c1bfc26ed04acbe99c32b\n"
    },
    {
      "commit": "3ac5ea4aa6f12a45e64bb2665e9abff2206d664f",
      "tree": "2ef0763f66281abadada7f2c2f4700d70016859b",
      "parents": [
        "8cd84e42162228d56f31e10a026a2a76ad6e36d5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 14 13:49:35 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 15 09:25:29 2019 +0100"
      },
      "message": "Fix image_space_test on Q+ target.\n\nThis is a follow-up after\n    https://android-review.googlesource.com/958079\nto make image_space_test pass when DEX2OATBOOTCLASSPATH is\nset, i.e. on a Q+ device.\n\nTest: image_space_test\nBug: 122937705\n\n(cherry picked from commit 3f795d2ab38ede7821db73904ddd1ddadb6bac4e)\n\nChange-Id: I237ffd348a4466981b969ff1c7fc93a9b4a1dc44\nMerged-In: If84cde5e68ae42aed7d2a402817436c19ee6fc21\n"
    },
    {
      "commit": "3f795d2ab38ede7821db73904ddd1ddadb6bac4e",
      "tree": "8624b2a5c63e1edf85a21388caa083d4a1e13503",
      "parents": [
        "a253c2d27bb95f120a27dc3fa8a66184a15a7442"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 14 13:49:35 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 15 07:54:50 2019 +0000"
      },
      "message": "Fix image_space_test on Q+ target.\n\nThis is a follow-up after\n    https://android-review.googlesource.com/958079\nto make image_space_test pass when DEX2OATBOOTCLASSPATH is\nset, i.e. on a Q+ device.\n\nTest: image_space_test\nBug: 122937705\nChange-Id: If84cde5e68ae42aed7d2a402817436c19ee6fc21\n"
    },
    {
      "commit": "a253c2d27bb95f120a27dc3fa8a66184a15a7442",
      "tree": "0923928a83836ae8cc4e6538039c58517849910f",
      "parents": [
        "092f7993336961434d6d3d30908c1ca4429e3d05"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 13 12:38:54 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 15 04:40:29 2019 +0000"
      },
      "message": "Bytes_moved accounting fix and accounting cleanup\n\nBytes_moved should be incremented by the correct number of bytes needed\nfor the space the object is allocated in, not the number of bytes it\nwould take in region space.\n\nVarious minor cleanups for code that I found hard to read while\nattempting to track this down.\n\nRemove a CHECK that held only because of the incorrect accounting.\nIt now results in TreeHugger test failures.\n\nBug: 79921586\nTest: Build and boot AOSP.\nChange-Id: Iab75d271eb5b9812a127e708cf6b567d0c4c16f1\n"
    },
    {
      "commit": "2180d8e8d82874576017348a6d865ed629c77747",
      "tree": "3ae9e04f58b3606c3c30ce56f0f1c9e52f93476a",
      "parents": [
        "9ac09eeb8bbd48a343213a96f6e7e0328fe30447"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 11 14:22:53 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 13 08:52:11 2019 +0000"
      },
      "message": "Clean up ArtField/ArtMethod relocation for app image.\n\nRemove specialized code and use the same code as for\nboot image relocation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I5d7cad217165ea0a6afefdc58981e0a1f7bffdcc\n"
    },
    {
      "commit": "776ce74f23fb43008dd72668f45dd5ded1c22e17",
      "tree": "67fa7ab45d6a24d64dd08c4f67da1034220ffc9b",
      "parents": [
        "76da18e3ea49dd55f3f091a81173cf39f4628bfc"
      ],
      "author": {
        "name": "wangshumin",
        "email": "wangshumin@xiaomi.com",
        "time": "Wed May 08 12:52:39 2019 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 10 05:03:42 2019 +0000"
      },
      "message": "Use DEX2OATBOOTCLASSPATH to generate boot image\n\ninstalld use DEX2OATBOOTCLASSPATH, so we need\nuse DEX2OATBOOTCLASSPATH to generate boot image,\notherwise the dexopt will fail when install apps.\n\nNote that this is needed only for devices that\nship without boot image in /system.\n\nBug: 122937705\n\nSigned-off-by: wangshumin \u003cwangshumin@xiaomi.com\u003e\n\n(cherry picked from commit d6d878ef7f452335e6642265605de10220f7809f)\n\nChange-Id: Ibb6a0e4145299b8c5fb1e7086449daae5c27622e\nMerged-In: I19549d4ae19e8a530022625f53ca2334f33a0755\n"
    },
    {
      "commit": "d6d878ef7f452335e6642265605de10220f7809f",
      "tree": "a990a4ddfd0a41ca6e80f74c171431f104aaae6b",
      "parents": [
        "d3374a048d3f80fb15c2bb32d02b1d8aa7a10fbc"
      ],
      "author": {
        "name": "wangshumin",
        "email": "wangshumin@xiaomi.com",
        "time": "Wed May 08 12:52:39 2019 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 09 11:31:28 2019 +0000"
      },
      "message": "Use DEX2OATBOOTCLASSPATH to generate boot image\n\ninstalld use DEX2OATBOOTCLASSPATH, so we need\nuse DEX2OATBOOTCLASSPATH to generate boot image,\notherwise the dexopt will fail when install apps.\n\nNote that this is needed only for devices that\nship without boot image in /system.\n\nBug: 122937705\n\nChange-Id: I19549d4ae19e8a530022625f53ca2334f33a0755\nSigned-off-by: wangshumin \u003cwangshumin@xiaomi.com\u003e\n"
    },
    {
      "commit": "1fe5839d10114209a75d1716bd81c353e4096810",
      "tree": "1c4453056b53a1c9f362c697148a6f809690bb71",
      "parents": [
        "c6934e36d33ab402b7b51c78d46c319fc33e8ef3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 10 16:14:56 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 08 08:19:28 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ieced7a452d381e5cacbafc91fd5d7672d9d92c30\n"
    },
    {
      "commit": "e9f4729d2d94604a37ca73c95b4c5c501412be4c",
      "tree": "acd878dee37f93d1ebd7c7ecebe97c553ea7bdf8",
      "parents": [
        "0a561abe5763f848e27c435147cfaff043f7d8f8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 16:19:46 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 06 15:44:34 2019 +0000"
      },
      "message": "Free classes after objects for memory tool\n\nSince the memory tool space calls Object::SizeOf, we need to free\nclasses after instances to prevent reading stale data.\n\nBug: 131542326\nTest: art/test/testrunner/run_build_test_target.py -j50 art-gtest-heap-poisoning\n\n(cherry picked from commit 48adf79ac9e9b24cc03f3456044af181ac931610)\n\nMerged-In: I4b0583b2456e8db23ae3cd19ef6495bff955e7dc\nChange-Id: I14f9fb1527f9ad522436d96f238fe1d005e59ec9\n"
    },
    {
      "commit": "164f133d98fe2677546b870e9876a9b7ccbdac53",
      "tree": "2b57a5287c77cca79306c16ad9ec50a318f0ee98",
      "parents": [
        "52fc7ab4d557cfbcd1a7494fd5bf52671c0e122f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 16:19:46 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 03 19:39:23 2019 +0000"
      },
      "message": "Free classes after objects for memory tool\n\nSince the memory tool space calls Object::SizeOf, we need to free\nclasses after instances to prevent reading stale data.\n\nBug: 131542326\nTest: art/test/testrunner/run_build_test_target.py -j50 art-gtest-heap-poisoning\n\nChange-Id: I4b0583b2456e8db23ae3cd19ef6495bff955e7dc\n"
    },
    {
      "commit": "f1890fd47361788e859a533e447d4d393be651b7",
      "tree": "87472edf95242577a07344b171110e9b137f958e",
      "parents": [
        "d801a7bb4da0c08b5e6f2847824c0a95bfe3892c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 30 17:35:08 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 02:40:12 2019 +0000"
      },
      "message": "Go to native for image decompression thread pool wait\n\nWe should not be holding the mutator lock since that will maybe\ncause DCHECK failures.\n\nBug: 131318971\nTest: test-art-host\nChange-Id: I14064b06adb9ec0e83af6afb70320f184fd2aed0\n"
    },
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "96b3baab90767a4a021be4c7055683cdc0cc39c1",
      "tree": "f0fec21748e4b36b014585b8310ebc37da0f583c",
      "parents": [
        "3db3d37dcd3ca8e232a260ce71ac540f33fcf584"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 12 12:45:58 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 24 21:27:54 2019 +0000"
      },
      "message": "ART: Validate boot image system oat files conditionally\n\nWhen the load order prefers data, validate the oat files for a\nboot image picked up from system.\n\nFollow-up to commit 8682354d448e1c3c355dbcac07b77e9c40e35987.\n\nBug: 126307038\nTest: m test-art-host\nTest: Device boots with either order\nChange-Id: I7c239a1ddd6e78df136c4aa4c47461392676be87\n"
    },
    {
      "commit": "2c5bcb873f086c3db4f633e620de31d53cedede5",
      "tree": "d9910806bb98962f5f7c0aa851066fa28b996d51",
      "parents": [
        "29885b3e215d1022c130abffbfc337a79833e20a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 11:14:34 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 12:44:46 2019 +0000"
      },
      "message": "Support boot classpath checksum without image\n\nAdd special case to ImageSpace::GetBootClassPathChecksums to handle\nempty image space. In that case, we skip the image space part of the\nchecksum completely and print only the boot classpath \"tail\", which here\nare all the boot classpath dex files.\n\nThis fixes a DCHECK failure in 692-vdex-inmem-loader.\n\nTest: ./art/test/testrunner/run_build_test_target.py \\\n      art-interpreter-no-image\nBug: 72131483\n\nChange-Id: I3deb2c4704a010214c2f4287cc3010cb5fb450dd\n"
    },
    {
      "commit": "39402548017c99f9b33afaa851f412371013e911",
      "tree": "80c4d53cb7ae12ab9f4800cb358e53d5109593da",
      "parents": [
        "2fde9bdc252e209d722f83410f2ced42ab73e8a4"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sun Mar 24 02:47:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 18:18:00 2019 +0000"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy, with IgnoreDestructors option enabled.\n\nTest: m checkbuild\nBug: 116509795\nChange-Id: I5dafa10c2cf605165581b8cf7dd2633ed101ed65\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\n"
    },
    {
      "commit": "0eefb9bad0b098e892f977694ad1207f3ef42c90",
      "tree": "9c1abc5959eaf2d6a3a420369ba642381febca04",
      "parents": [
        "5aead700219d9c9fc05524d5d72dc32cb1807c61"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 15:04:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Field and mirror::Executable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ib536df95543cb7240a5816bef019391bb90e6369\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "557feceeb438946e4a005471bc80935e5c0af195",
      "tree": "10c1d8acd53adb5739102efb6e0f691c83c10acd",
      "parents": [
        "c524e9e7e767be0801cf110310039635698c1532"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 14:29:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::IfTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I77d36cc96f48ff92c1ca3b2581be7637a2ea22d7\n"
    }
  ],
  "next": "c524e9e7e767be0801cf110310039635698c1532"
}
