)]}'
{
  "log": [
    {
      "commit": "ecaf7d1657d8e92697775d3979ff42c59e5cfc89",
      "tree": "e6bd3743161e513234b08cecf78531e2fe6ec372",
      "parents": [
        "7f21ebe84b726081874cd2bd3fc8dd1ea39aa2d8"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 11:09:21 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 15 16:17:49 2021 +0000"
      },
      "message": "Fix double close in dex2oat when BCP is passed as FDs\n\nBug: 191052821\nTest: Modify odrefresh to pass BCP as FDs to dex2oat. Run w/ --force-compile.\n      # With thix fix, no longer seeing \"fdsan: double-close of file\n      descriptor 24 detected\"\n\nChange-Id: Iac09b06c8e7aa93114896632cdea6c610662455b\n"
    },
    {
      "commit": "094b1cfc9fa9e1c02238a2352c190be1746f5622",
      "tree": "2ce218587228aafd5cdaf3bd17ee2cecde484957",
      "parents": [
        "4f6bb446f8fbaa192f4e5b69734414c66d5e1bae"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jun 08 09:28:28 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 09 11:34:22 2021 +0000"
      },
      "message": "odrefresh: enable loading of system_server image files\n\nFix check in ValidateBootImageChecksum() to account for image files\nwith multiple components which exists for boot-framework when\ncompiling on device.\n\nUpdate logic for only_load_system_executable to be\nonly_load_trusted_executable and treat /system and the ART APEX data\ndirectory as trusted.\n\nAdd test to check .art,.odex,.vdex files derived from the\nsystem_server classpath are mapped when the ART module updates.\n\nAdd test to check .art,.oat,.vdex files for the boot class path\nextensions are present in the zygote processes.\n\nBug: 180949581\nTest: atest com.android.tests.odsign.OnDeviceSigningHostTest#verifyGeneratedArtifactsLoaded\nChange-Id: I3114fc6393402d8da2eb16ba756ab5fab713dc20\n"
    },
    {
      "commit": "4f6bb446f8fbaa192f4e5b69734414c66d5e1bae",
      "tree": "c07c8cf278137c14fda476ed682968ee3c01c65f",
      "parents": [
        "beb9f2012587035a5c30d0eca8af458b2ad659b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 02 18:05:51 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 09 11:03:12 2021 +0000"
      },
      "message": "Remove palette hooks.\n\nMake the method be part of the official palette API.\n\nBug: 186016399\nBug: 185778652\nChange-Id: I3dc9e879c647fd63f5826091813613fd97e25c0d\n"
    },
    {
      "commit": "b390ba9fad86d8fe431c037708fe9bd8a3d44960",
      "tree": "43c15ea60c1f26003dbf5a4342a58e4988a55d6d",
      "parents": [
        "f75b8e9947763ab59ee655054f878e44844518e2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 07 09:05:08 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 07 17:17:50 2021 +0000"
      },
      "message": "Fix flags_tests for older platforms\n\nOlder platforms might not be able to properly set the properties\nwe need for test (e.g. due to length limitations), so update the\ntests to skip the checks that rely on property setting.\n\nTest: gtest\nBug: 188655918\nChange-Id: Ibdaf80b45c0a3a6529bfd2714c17df2dc83478b2\n"
    },
    {
      "commit": "14a5151ea476d722b48aa58069451a48580998df",
      "tree": "3b1d22bde1b7064e2f7a5ed2823477665af2730e",
      "parents": [
        "691c3c56c513d03d54dd46977d6985b8677072d4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 04 12:57:16 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 04 20:01:11 2021 +0000"
      },
      "message": "Fix flags_test flakiness\n\nThe tests could run in parallel and step on eachothers logic by\nsetting/resetting global properties.\n\nRevamp the logic to generate unique property names using scratch\nfiles to prevent collisions.\n\nTest: gtest\nBug: 190150217\nBug: 181748174\nChange-Id: If870478e13dcfa2487da57b223b322847e702ea2\n"
    },
    {
      "commit": "09eacd9a5d982687b68031a884e4daaa11560f0c",
      "tree": "79a7fdac9c3330e850d05028cf95b3de6cb108a3",
      "parents": [
        "341be9e71c8dbb1f6e29e860336e8e4944d54c63"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 19 17:03:55 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 03 19:35:14 2021 +0000"
      },
      "message": "Setup ART experiments infra\n\nAdd a flexible class for ART Flags that can take their\nvalues from cmdline arguments, system properties or\ndevice config settings.\n(the flags concept is evolved from Eric\u0027s previous CL\n3dba023d4fb47882fa215715c196cfa3be30c098)\n\nPlumb the loading/re-loading of flags in the runtime\ninitialization and after forking from zygote (so that\nwe don\u0027t require restarts to refresh the flags).\n\nIf multiple values are given for the same flag the\nevaluation order is:\n1) device config (configurable from server side)\n2) system properties\n3) cmdline arguments\n4) the default value\n\nThe existing cmdline arguments are not migrated to the\nnew infra and will be done only on a per need basis.\n\nTest: gtest \u0026 manual\nBug: 181748174\nChange-Id: If3940393493af1052367d725a3f2aa94eee927c2\n"
    },
    {
      "commit": "a6b3b297bdd70ad3e915a48b02a7c7cf5f204e05",
      "tree": "a721f273d8776a349dafc2ee496a76d401765074",
      "parents": [
        "9c7b1e7073f3c309e8b0023974aa9136b22f4b2e"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed May 19 16:22:46 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 19:07:01 2021 +0000"
      },
      "message": "Add flag for clamping hidden api list\n\nAllow clamping the hidden api list to a max value; if an API is\nrestricted for a newer SDK, transform it into a regular unsupported API.\nThis change is laying out the groundwork to ensure that older platforms\ndo not receive dex code updated that has unknown hidden api flags - e.g.\nif the hidden api encode step uses \u0027--max-hiddenapi-level\u003dmax-target-q\u0027,\nthen the resulting dex code will not exhibit undefined behavior with respect to\nhidden api access when running on R devices, and any newer \u0027max-target-r\u0027 APIs\nwill be marked as \u0027unsupported\u0027.\n\nTest: mma test-art-host-gtest-art_hiddenapi_tests\nBug: 172453495\nChange-Id: I710c440c8429081096d8a417f164c0e01c97ecd9\n"
    },
    {
      "commit": "e8efdaa09b7ff36d5a986f0320f29ac4a7563896",
      "tree": "5066cecab43006a7bf23f793aa911f74559c8017",
      "parents": [
        "ae553e0e1b26d95006aa27df4675104bfb55d49d"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 26 17:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 27 19:28:16 2021 +0000"
      },
      "message": "Revert \"Remove stack protector from some interpreter functions\"\n\nA performance regression was noticed in go/lem banchmarks for ART.  This\nis likely caused by the no_stack_protector attribute preventing inlining\ninto hot functions.\n\nReason for revert: performance regression\nReverted Changes:\nIe0c81f97f:Remove stack protector from some interpreter funct...\nIaf565a374:Reset stack guard after fork from Zygote\n\nBug: 168258494\nChange-Id: I018d58759c3a5bb624ea8e7fe09b6b49c9b19b6a\n"
    },
    {
      "commit": "bdf1737bd17132525bcfdc778663123b61e97fa3",
      "tree": "ec097408de25394ac6444ae0589fcfa41d400257",
      "parents": [
        "f2d1a510bf36f98e0607f0527299789a64d755c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 06 00:19:19 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 27 13:28:37 2021 +0000"
      },
      "message": "Introduce `art::FastExit` to replace all uses of `quick_exit` in ART.\n\nNo longer use `quick_exit(3)` in ART, as it does not play well with\nClang\u0027s code coverage instrumentation (see b/187935521 and\nb/186576313). Replace all its uses with a new routine,\n`art::FastExit`, calling either `exit(3)` when ART is built with\nClang\u0027s code coverage instrumentation (in order to dump coverage\nprofiles when the program terminates) or `_exit(2)` otherwise (to exit\nquickly).\n\nFunction `art::FastExit` is implemented as part of the\n`art_libartbase_headers` header library, so that it can be used easily\nin `dalvikvm`.\n\nTest: mmma art\nTest: ART tests\nBug: 186576313\nBug: 187935521\nChange-Id: I7b4f86f6f0e7b12814684ecea73a2ed0ef994395\n"
    },
    {
      "commit": "abe7c69edb5ff8f9a4b8019d475caa2f35085aa7",
      "tree": "d8d86bf8c2264897eb9f7cf35be7c523f611688e",
      "parents": [
        "571a6bea24452e9b288106f379c7510c380a7f61"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 12 17:16:50 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Tue May 25 17:47:38 2021 +0000"
      },
      "message": "Remove stack protector from some interpreter functions\n\nThis CL removes stack protection from several functions in the\ninterpreter to allow us to re-set the stack protector cookie when new\nprocesses fork from any of the zygotes.\n\nTest: boot\nTest: atest KeyboardVisibilityControlTest\nBug: 168258494\nChange-Id: Ie0c81f97fedfcdde7afc1b6b4befa65524724194\n"
    },
    {
      "commit": "7414ec29f15bf9c5c8ad5af5ce45b3f5fc41ce80",
      "tree": "90409c332610a466ffeaa6fee1574ba1f824e4db",
      "parents": [
        "0d290721a8d63d5e0d38a64d3ecf922a91becb10"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu May 13 17:18:34 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 17 21:40:35 2021 +0000"
      },
      "message": "[metrics] Add prebuilt and cmdline compilation reason\n\nTest: manual\nBug: 188104237\nChange-Id: I91cb31ddd178230bc435672b6a657cd9eb572c31\n"
    },
    {
      "commit": "c63d9672264e894d8d409e8d582b4e086b26abca",
      "tree": "1e285cbab4c71aea3c8c37b4e4c5e8241a3ce117",
      "parents": [
        "0bf5b6729be507f1e78fc61f17554393dd978e46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 15:50:39 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 17 13:42:11 2021 +0000"
      },
      "message": "Rewrite profile file format.\n\nThe new format contains one mandatory section and several\noptional sections. This allows extending the profile with\nnew sections that shall be ignored by old versions of ART.\n\nWe add an \"extra descriptors\" section to support class\nreferences without a `dex::TypeId` in the referencing dex\nfile. Type indexes between the dex file\u0027s `NumTypeIds()`\nand `DexFile::kDexNoIndex16` are used to index these extra\ndescriptors. This prepares for collecting array classes\nwhich shall be tied to the element type\u0027s dex file even\nwhen the array type is not needed by that dex file and has\nbeen used only from another dex file. It also allows inline\ncaches to be self-contained, so we can remove the profile\nindex from data structures and serialized data.\n\nThe creation of the the binary profile from text files is\nupdated to correctly allow array types to be stored as the\nprofiled classes using the \"extra descriptors\". However,\nthe interface for filling in inline caches remains unchanged\nfor now, so we require a `TypeId` in one of the processed\ndex files. The data collection by JIT has not been updated.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nTest: boots.\nTest: atest BootImageProfileTest\nBug: 148067697\nChange-Id: Idd5f709bdc0ab4a3c7480d69d1dfac72d6e818fc\n"
    },
    {
      "commit": "93c28ed5e8303eed09d6286725029a21293d3f56",
      "tree": "2194b6025407b02be2f87e2e2b597dd7ad0660e7",
      "parents": [
        "2ef367acf3f95ee4c0459b73c3b18613cfa7d74d"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 14:11:42 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 17:51:59 2021 +0000"
      },
      "message": "Use the system namespace to get the right permitted paths for loading OAT files.\n\nThe ART namespace doesn\u0027t permit e.g. /product/apps, and there may be\nother locations too that need to be configurable from the system linker\nconfig.\n\nTest: Boot\nBug: 188078687\nBug: 130340935\nChange-Id: Id23c45dec6aef8379b125d70f2a47289f34c5a3a\n"
    },
    {
      "commit": "8ffaef9fbd1dc5194dbdcd3405360f8eb1e47a9e",
      "tree": "b73775bad6edbc0884225f40246aee72a2f18e76",
      "parents": [
        "022f9e555bbad95b3e8699731ca5455151dfca8a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 12:51:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 14 08:22:44 2021 +0000"
      },
      "message": "Remove BUILDING_LIBART macro.\n\nIt has been used only to prevent including the libart header\n`runtime_asm_entrypoints.h` when compiling other targets.\nInstead make symbols in that header hidden so that using\nthem from other targets shall yield a link time error. (This\nis somewhat pointless because the header defines only inline\nfunctions but the actual entrypoint symbols defined in\nassembly are already hidden anyway.)\n\nThis change adds the symbol visibility macros `HIDDEN` and\n`EXPORT` which were originally included in the reverted CL\n    https://android-review.googlesource.com/1137699 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 186902856\nChange-Id: Ia9fed6b3f49d7356888d702f4ad3bb48e5884793\n"
    },
    {
      "commit": "a220980389b87aa448b5f2d110eba7604c383c12",
      "tree": "66fa588b2b52279f662b3fd9edb0ad6953abb838",
      "parents": [
        "a61859210844849e97a479bcfa74d1a62f51f819"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 13:28:29 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 26 07:27:21 2021 +0000"
      },
      "message": "dex2oat: Expect boot image profiles for boot image.\n\nThe profile loading is currently permissive, so this\ndoes not really matter but we intend to make it more\nstrict soon.\n\nAlso clean up ScratchFile to avoid dex2oat_image_test\nerror logs related to ScratchFile destruction.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148067697\nChange-Id: I34526ddb0389444d54b9754afbedeb671c7b05a8\n"
    },
    {
      "commit": "f4d05ff134347d723e27919ccc89ce9d412b2d58",
      "tree": "aa368066676880ef1f4fbbec722ad8d88cad8771",
      "parents": [
        "c005ada78df5edebac74739b2c344e1a2a3efcba"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 14 09:39:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 16 08:21:03 2021 +0000"
      },
      "message": "Clean up profile tests.\n\nUse TestDexFileBuilder and remove FakeDex. Add a helper\nclass for shared code between ProfileCompilationInfoTest\nand ProfileAssistantTest.\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nBug: 148067697\nChange-Id: I0bf5d3fb7a456dcd717bce694d7f832a654fcccb\n"
    },
    {
      "commit": "56f4c8143d1656fcf5acb092ac4aaa5f20a04d93",
      "tree": "22b1791f1e01af46703f456832450c7c5e9770fe",
      "parents": [
        "8731e70a0f197594ecee91953169ee3f902c48f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 01 14:06:23 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 12:04:40 2021 +0000"
      },
      "message": "Handle hiddenapi lists which are yet unknown.\n\nMake such APIs behave like @UnsupportedAppUsage.\n\nTest: 822-hiddenapi-future\nBug: 172325244\nChange-Id: Ic69e4d81fb64e0affb9c7c5e376bb19ab9e2d91f\n"
    },
    {
      "commit": "722992f7b63b5e2962aaba6119402c7b93deb2f4",
      "tree": "900fbca1994a87376ad6602c4c4a4ebe5559f060",
      "parents": [
        "000508177b82640628b20bbbf5dacb3dfb77cc80"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Apr 06 23:12:17 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 07 20:09:20 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Report CompilationReason and CompilerFilter\"\n\nSince we do not know the real primary OAT file when the runtime starts\nup, we have to wait until NotifyStartupCompleted to be sure we have\nthe right one. To accomodate this, we delay starting the metrics\nsession until the first report and then send updated session\ninformation in NotifyStartupCompleted.\n\nNote that we could delay the whole metrics reporting initialization to\nNotifyStartupCompleted, but this doesn\u0027t get called in all\ncircumstances, which would mean metrics reporting is disabled in cases\nwhere we want it.\n\nThis reverts commit 8b07c653a7e45886ee92d8a12aa439e98e84befa.\n\nReason for revert: Fixing crash\n\nThe bug was get GetPrimaryOatFile could return null in some cases, but\nwe were not handling this correctly.\n\nBug: 178239096\nTest: manual\nChange-Id: I468837ee8f026edd82c47bd216ddb5b2d9c2ece3\n"
    },
    {
      "commit": "000508177b82640628b20bbbf5dacb3dfb77cc80",
      "tree": "7b2a428bd984ade5839252a51ddd05de53056378",
      "parents": [
        "3e54dfa45dcf4d9b844dad992328c34ed9822481"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 07 12:59:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 07 13:05:39 2021 +0000"
      },
      "message": "Support stateful hash and predicate in HashSet\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ibd9cf361af3f4bc701f44df401fd805f34da7f8c\n"
    },
    {
      "commit": "8b07c653a7e45886ee92d8a12aa439e98e84befa",
      "tree": "d204054a2b7b07769384db6f3c68ff53f7dccb3b",
      "parents": [
        "50419f2d4ce9bef92115342692a405f30600e114"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 05 19:31:30 2021 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 05 20:57:07 2021 +0000"
      },
      "message": "Revert \"[metrics] Report CompilationReason and CompilerFilter\"\n\nThis reverts commit f9bf4efcab3d05b6d547e492075de377400d2d88.\n\nReason for revert: b/184402526\n\nChange-Id: Id297ef1db997d185bcd6f910cc6c84a62e6eaa0d\n"
    },
    {
      "commit": "f9bf4efcab3d05b6d547e492075de377400d2d88",
      "tree": "5c4c8f6214c20d8e2d19bc5ca27a37b772ffe274",
      "parents": [
        "f442a84ca02002cd52aebdc724d84de9e8f2dd36"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Mar 18 13:52:41 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 01 19:23:52 2021 +0000"
      },
      "message": "[metrics] Report CompilationReason and CompilerFilter\n\nSince we do not know the real primary OAT file when the runtime starts\nup, we have to wait until NotifyStartupCompleted to be sure we have\nthe right one. To accomodate this, we delay starting the metrics\nsession until the first report and then send updated session\ninformation in NotifyStartupCompleted.\n\nNote that we could delay the whole metrics reporting initialization to\nNotifyStartupCompleted, but this doesn\u0027t get called in all\ncircumstances, which would mean metrics reporting is disabled in cases\nwhere we want it.\n\nBug: 178239096\nTest: manual\nChange-Id: Ide59be88bc934526e0c172fb745dc2f5cd797749\n"
    },
    {
      "commit": "b2a1416f6d7031d8f255398407a3e8a2bb6d6447",
      "tree": "7dd7e79e47787b0f7c600f7db1a282321519c623",
      "parents": [
        "30126397f7d9219f5556b2f852e3fea1069d5ae0"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Mar 30 16:54:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 31 20:17:51 2021 +0000"
      },
      "message": "[metrics] Add JitMethodCompileCount\n\nThis tracks how many methods have been compiled by the JIT.\n\nBug: 170149255\nTest: manual\nChange-Id: Id7943818318dae26afdac7f9903cd32b7e2c4e89\n"
    },
    {
      "commit": "1043aa2489538fe7089ba3cc8fac0567672b14d6",
      "tree": "e0549ed72d2a2542fef5e8390b929bf2ed71b5c2",
      "parents": [
        "3965fe825ff939a550e6eed53e66314213a0485c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Mar 09 15:41:11 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 22 19:59:48 2021 +0000"
      },
      "message": "[metrics] Add MetricsAccumulator\n\nMetricsAccumulator metrics are a generalization of counters that allow\na custom function to be supplied that specifies how to combine\nincoming values. This allows for the definition of things like minimum\nand maximum metrics.\n\nTest: libartbase_gtests\nBug: 170149255\nChange-Id: Ibc928a5d0e5cad3036e5829be9a535bc4a685ae1\n"
    },
    {
      "commit": "d91328fe62fbfe428859ec1c1fb1cd88160cc8ab",
      "tree": "963ef0355266c85e3039da6b3e81bac8a4586b65",
      "parents": [
        "71a6e8984ea24f531e40fb5ce07cdbe6568eaa7f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 17 16:21:51 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 21:24:22 2021 +0000"
      },
      "message": "[metrics] Reset metrics at zygote fork\n\nThis is needed to prevent metrics in the zygote from being counted\ntowards child processes. This is especially important as the zygote\ncan be a very long running process.\n\nTest: libartbase_gtests\nBug: 170149255\nChange-Id: I5c34d44c55381dd976b83e81517145f7e23d061f\n"
    },
    {
      "commit": "e7ff7ef6e5dc2bbb52f3f5c96f14535e5fc1dca0",
      "tree": "36006d79d8f572639ad727c3de5794d658187a12",
      "parents": [
        "a4c87959ccac3500182f4ab91f7e5f37489a791f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 17 16:42:24 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 20:33:49 2021 +0000"
      },
      "message": "[metrics] Add ClassVerificationCount\n\nTrack how many classes we verify at runtime.\n\nTest: gtests\nBug: 170149255\nChange-Id: I72f0a4933820f54acdeef70478129d2320e91afd\n"
    },
    {
      "commit": "a4c87959ccac3500182f4ab91f7e5f37489a791f",
      "tree": "58d459165bb61164c2d984b27097725ce2a3cded",
      "parents": [
        "3407fb2590756bd571020e175e607c8b8c988ede"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Mar 05 17:58:17 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 20:33:49 2021 +0000"
      },
      "message": "[metrics] Improve metrics definition API\n\nThis CL combines the ART_COUNTERS and ART_HISTOGRAMS lists into a\nsingle ART_METRICS list. Additionally, this will make it possible to\nadd additional metrics types with less boilerplate.\n\nBug: 170149255\nTest: gtests\nChange-Id: I09e161de1ae574dfcc9ab95e8827b071f0a53892\n"
    },
    {
      "commit": "d3d1a1a11626bd5198edb9242831c7b120652fbb",
      "tree": "ff8a97051ef08c463ae49d0d04faa24aa26713fa",
      "parents": [
        "9cf17115d93649311da4fd2ac0cd1f8e97e06490"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 14:11:11 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 20:37:45 2021 +0000"
      },
      "message": "Remove DexToDexCompiler\n\nSince quickening is deprecated, it is no longer used.\n\nThis CL only removes compile-time dead code.\n\nBug: 170086509\nTest: test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I46c02fb7a9304f8361cecfafb9507c906a93592f\n"
    },
    {
      "commit": "a64c1ad1ad20b99c4bb3a27acdd30dc9b3aa004b",
      "tree": "3872764b79c105075a49d615334bebae34cf6e9d",
      "parents": [
        "f84ec8662b695f6679023f368bc7203d3804a43e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 14:27:05 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 15 11:00:50 2021 +0000"
      },
      "message": "Rewrite hot method info retrieval.\n\nRemove the `ProfileCompilationInfo::GetHotMethodInfo()` API\nand provide another API to tie profile indexes to dex files\nfor inline caches that avoids unnecessary heap allocations.\n\nAnd look up only dex caches for the referenced dex files\nwhen getting AOT inline caches in HInliner.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimzing\nTest: boots.\nBug: 181943478\nChange-Id: I124ac4870b0f483c1f0422c841c4ff69fc95b7e0\n"
    },
    {
      "commit": "a718d6450feae9ee6b5de96407c8e44afbf173e7",
      "tree": "133f55536e360b999021fbba9332f85709fc7fae",
      "parents": [
        "5e435b2c209d87030f607c4cdfba913dec3eb3e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 10 15:36:40 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 09:48:35 2021 +0000"
      },
      "message": "Preallocate a HashMap buffer in LSE.\n\nAdd more HashSet\u003c\u003e constuctors with the allocator argument.\nInherit HashSet\u003c\u003e constructors in HashMap\u003c\u003e.\n\nUse a pre-allocated buffer with size 16 to avoid allocating\na large one (kMinBuckets \u003d 1000) on first use. With the\ndefault max load factor 0.7, this pre-allocated buffer is\nsufficient for all methods with up to 11 stores.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I7862b98ec9ec3ddb34693fd956fea75138d35e02\n"
    },
    {
      "commit": "bc1748f825aed2a59a9bfbb087ab6e29e875d2d1",
      "tree": "d9599a24114f37850a895cd90fa9ec46d3dd56f3",
      "parents": [
        "157fc969066aa41842c029350e5af780c517fcf6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 22 10:51:32 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 09 14:26:34 2021 +0000"
      },
      "message": "Refactor statistics printing in oatdump.\n\nSimplify the code so that it is easier to add/remove sections.\n(motivated by the non-trivial removal of DexCache arrays)\n\nTest: m dump-oat\nTest: m test-art-host-gtest-art_oatdump_tests\nChange-Id: I2fe4a3062125d8aa053c1a38eb24a624f95291b0\n"
    },
    {
      "commit": "81b1d78b3422e72ecbe0092f99dbf7b9ecccc5ec",
      "tree": "fbfcb9216cc4331df029e5c5c3120679fec20cbb",
      "parents": [
        "765a167cb152931dede6aad1fa398700d4702113"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Mar 07 21:33:28 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 08 12:32:59 2021 +0000"
      },
      "message": "Slightly refactor stack map stats printing.\n\nTake advantage of the \"operator\" overload and move\nthe pretty print method so it can be better reused.\n\nTest: m dump-oat\nChange-Id: I46b169e044f2c4481bb2bc277601d61f873c9950\n"
    },
    {
      "commit": "62b75587021d432d1522316822e7cafe0beada43",
      "tree": "999e4e9c5210718bafb0c55b1b984a50ef1eb660",
      "parents": [
        "7fc6aacab1bfbe64ea54390fa61ce0b3c9b446e4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 03 15:14:58 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 22:54:51 2021 +0000"
      },
      "message": "[metrics] Enable periodic reporting for system server\n\nThis enables reporting from system server once an hour.\n\nThe reason is that system server is long-running, so startup metrics,\nwhich are all that are enabled by default otherwise, are not as\nmeaningful. Note that the reporting period can still be overridden by\na command line argument.\n\nTesting instructions:\n\n    adb shell setprop dalvik.vm.extra-opts -Xwrite-metrics-to-log\n    adb logcat -e \"ART internal metrics\"\n\n    Observe periodic system server reports.\n\nBug: 170149255\nTest: manual (see above)\nTest: ./test.py --run-test --host -t 911\nChange-Id: I71775e454c6fd07c4312e3df9ae8082fa497ea93\n"
    },
    {
      "commit": "7fc6aacab1bfbe64ea54390fa61ce0b3c9b446e4",
      "tree": "0398fcdb7dd5a62cfbc204b65442280ccfdc11ce",
      "parents": [
        "65a9fb4a6fcf5e34d52c9416715761ee16ea53a7"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Mar 04 15:56:47 2021 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Mar 05 18:46:09 2021 +0000"
      },
      "message": "Add GC-related metrics to the telemetry infrastructure\n\nFollowing metrics are added in this CL:\n1) Young GC count\n2) Full heap GC count\n3) Young GC throughput histogram\n4) Full heap GC throughput histogram\n5) Total bytes allocated\n6) Total GC meta data\n\nThe last one in itself is not useful. But when divided by GC count gives\nan average of memory overhead of running a GC algorithm.\n\nTest: art/test/testrunner/testrunner.py\nBug: 170149255\nChange-Id: I5a93d1ceb9dc0764b8c6cebae038b98218c0656a\n"
    },
    {
      "commit": "59c21036b2e36f2ec0ac35aebe0c6e97539efef8",
      "tree": "cf79499394e87a968dc9a5fca9112de87cf66535",
      "parents": [
        "6a5a5b68647926ce9359607c216e010c4c0b40a1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 02 13:05:03 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 05 13:58:30 2021 +0000"
      },
      "message": "Support /system/system_ext/framework jars with hiddenapi.\n\nWhen devices ship without a /system_ext partition, we create\n/system/system_ext and add a symlink from /system_ext. However, the path\nART gets is the full resolved path, so we need to account for it.\n\nAlso rename LocationIsOnModule to LocationIsOn, as the method has\nnothing to do with modules (anymore?).\n\nCleanup hidden_api_test.cc\n\nBug: 180943021\nTest: hidden_api_test\nChange-Id: Ib3bf65da73248a80f76b8a8a5ed5e004c8716851\n"
    },
    {
      "commit": "39d529f45bad3ecf2bd6b376a049fde6cb0c21b4",
      "tree": "79cc268c360fb4f054bf242c8f4d35d7a90f30ee",
      "parents": [
        "4e7b3c78854d9639758e2519ae29f86a6799857b"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Feb 17 12:48:53 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 04 16:39:03 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add StatsdBackend\"\n\nAdds a new backend that allows reporting ART\u0027s metrics to statsd, where\nthey can then be uploaded to Westworld.\n\nManual Testing Instructions:\n\nRun the following commands.\n\n    m statsd_testdrive\n    adb shell setprop dalvik.vm.extra-opts              \\\n                      -Xwrite-metrics-to-statsd\\\\\\      \\\n                      -Xwrite-metrics-to-log\\\\\\         \\\n                      -Xmetrics-reporting-period\u003d10\n    adb shell stop \u0026\u0026 adb shell start\n    statsd_testdrive 332\n\nAfter about a minute, you should see several atoms logged from ART.\n\nThis reverts commit dbad1ef673140c66cdbcbbf40424674ae8e2b4c8.\nReason for revert: Added statsd apex to prebuilts\n\nBug: 178236337\nTest: Manual, see above\nTest: see instructions on https://r.android.com/1591932\nChange-Id: I2071983c04c51efe88df6a56c59fc418fe6e9424\n"
    },
    {
      "commit": "4c3ade67c470543562a0029e39b576954a807321",
      "tree": "21f56e9c9dae7868ee5d68c18457fd0ea3a271fe",
      "parents": [
        "3a8d7c2de4392ff4c40858803447efe14c3c9fa8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 14:07:10 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 25 08:44:32 2021 +0000"
      },
      "message": "odrefresh: regenerate artifacts after ART APEX update\n\nReplaces compile_bcp.sh to check and compile boot class path\nextensions and system server jars.\n\nEnable ART to load those artifacts when present in the ART APEX data\ndirectory.\n\nBug: 160683548\nTest: art_libartbase_tests\nTest: adb root \u0026\u0026 adb odrefresh {--force-check,--force-compile}\nTest: adb install com.android.art \u0026\u0026 adb reboot \u0026\u0026 adb root \u0026\u0026 \\\n      adb shell odrefresh {--check,--compile} \u0026\u0026 adb reboot \u0026\u0026 \\\n      adb shell cat /proc/\u003czygote\u003e/maps | grep apexdata\nChange-Id: I81bf520d38f9dc0109c91f192bc6e728099049fd\n"
    },
    {
      "commit": "e99a85840462fddafd4253a7c16ca83bb6cca3ed",
      "tree": "ae278cd171cb8fc94a5dde4199c415af2d3e5f53",
      "parents": [
        "135e948025ac2fbc262ad6da34052a8b981c9aee"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Feb 23 19:07:39 2021 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Feb 24 22:16:25 2021 +0000"
      },
      "message": "[metrics] Add GC related counters/histograms\n\nAlso added a base metrics class.\n\nTest: art/test/testrunner/testrunner.py --host\nBug: 177591729\nBug: 177591724\nBug: 177591575\nChange-Id: I8319b134c9afdb674427ea96b2e57e09bb078bb2\n"
    },
    {
      "commit": "df69bd7575cf2537f5563141fd7cb945712686ca",
      "tree": "6584dbdb18a508890f769a9a77f8d328cade66c6",
      "parents": [
        "aa704f17d0d0a026b496853811fefda5d0783028"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 23 11:36:21 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 24 00:40:14 2021 +0000"
      },
      "message": "Remove Flags\n\nThese were reading system properties which caused security warnings in\nsome cases. Removing to allow us to do a more comprehensive design.\n\nThis reverts commit 0a6e9e56f7f3ac7750b38eaba83639ad47a2692f.\nThis reverts commit 3dba023d4fb47882fa215715c196cfa3be30c098.\n\nTest: test.py --host\nChange-Id: I04e8b7a934540b250e6fc56f5aa6ce7f18131d4d\n"
    },
    {
      "commit": "b7cb691fb8da124e8a6276a5a7fee47dd0aaa338",
      "tree": "ab145cf22542511fbbe72d522aca623f663a9db7",
      "parents": [
        "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Feb 19 12:04:58 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 14:44:35 2021 +0000"
      },
      "message": "Do not read persist.device_config properties in flags\n\nThis was causing permission warnings in dexoptanalyzer. Let\u0027s disable\nthis for now until we can be sure to do it right.\n\nTest: presubmit\nChange-Id: I42828857b7db06d6cde47b57c5834ffb02f2f9a6\n"
    },
    {
      "commit": "74584e6b65b6d5949afa9de664b05f453d42872b",
      "tree": "7d4ff8395607f4d64b393e91b5db7d6c1ee45adb",
      "parents": [
        "27b8cb7bb6ba85ca0a903f02c7d38b9f24636af7"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 18 14:39:17 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 22 22:28:15 2021 +0000"
      },
      "message": "[metrics] Add ClassLoadingTotalTime counter\n\nThis keeps track of how much time we spend in the class loading\nprocess.\n\nTesting instructions:\n\n   adb shell setprop dalvik.vm.metrics.write-to-log true\n   adb shell stop \u0026\u0026 adb shell start\n   adb logcat -e \"ART internal metrics\"\n\nObserver ClassLoadingTotalTime in internal metrics report. Example:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 34555\n        session_id: 2710488913234081424\n        uid: 10065\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassLoadingTotalTime: count \u003d 120959\n        ClassVerificationTotalTime: count \u003d 216121\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 4482,10,2,3\n    *** Done dumping ART internal metrics ***\n\nBug: 177591870\nTest: Manual, see above\nChange-Id: I24f0c94ab6af5e6cd9b0dc32122f2905c36cf3b7\n"
    },
    {
      "commit": "0a6e9e56f7f3ac7750b38eaba83639ad47a2692f",
      "tree": "627d537bfaf9a219b855902716bcb3c8609823a7",
      "parents": [
        "8dcdd4735bff02673e5a3ec1238b8aff1d217957"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Feb 12 15:46:06 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 18 18:58:25 2021 +0000"
      },
      "message": "[metrics] Move existing command line arguments to flags\n\nThis will allow us to tune metrics reporting behavior as needed\nthrough server-side configurations rather than having to wait for the\nnext ART release.\n\nThis CL also includes the flag to enable statsd reporting, even though\nthat feature is not yet implemented.\n\nBug: 175050458\nTest: manual\nChange-Id: Id69828684f2cf9d32471703494439d0722f18dce\n"
    },
    {
      "commit": "dbad1ef673140c66cdbcbbf40424674ae8e2b4c8",
      "tree": "d1f1d2521aae7d28f0def5abaed2746e353d2162",
      "parents": [
        "3dba023d4fb47882fa215715c196cfa3be30c098"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Feb 17 13:46:00 2021 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Feb 17 16:45:59 2021 +0000"
      },
      "message": "Revert \"[metrics] Add StatsdBackend\"\n\nThis reverts commit 3d2b93e6acb4e7ac6fc808f17813975f250dbf89.\n\nReason for revert: Breaks ART tests in chroot environment, as the\n  libstatssocket library is not found. The error message is:\n\n  CANNOT LINK EXECUTABLE\n  \"/apex/com.android.art/bin/art/x86/art_libdexfile_tests\":\n  library \"libstatssocket.so\" not found: needed by\n  /apex/com.android.art/lib/libartd.so in namespace com_android_art\n\n  How to reproduce in AOSP (e.g. on cuttlefish):\n\n  $ lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m \u0026\u0026 launch_cvd\n\n  In another terminal, run art gtests on the device:\n\n  $ unset ART_TEST_ANDROID_ROOT\n  $ unset CUSTOM_TARGET_LINKER\n  $ unset ART_TEST_ANDROID_RUNTIME_ROOT\n  $ unset ART_TEST_ANDROID_TZDATA_ROOT\n  $\n  $ export ART_TEST_CHROOT\u003d/data/local/art-test-chroot\n  $ export OVERRIDE_TARGET_FLATTEN_APEX\u003dtrue\n  $ export ANDROID_SERIAL\u003d\"0.0.0.0:6520\"\n  $\n  $ . ./build/envsetup.sh\n  $ lunch aosp_cf_x86_64_phone-userdebug\n  $\n  $ art/tools/buildbot-build.sh --target -j72\n  $ art/tools/buildbot-cleanup-device.sh\n  $ art/tools/buildbot-setup-device.sh\n  $ art/tools/buildbot-sync.sh\n  $\n  $ export ISA\u003dx86_64\n  $ art/tools/run-gtests.sh -j8\n\nBug: 178236337\nTest: art gtests in chroot env on aosp_cf_x86_64_phone-userdebug\nChange-Id: Icbd38792f4d8828c40a53f037cefeebd777172bf\n"
    },
    {
      "commit": "3dba023d4fb47882fa215715c196cfa3be30c098",
      "tree": "da22f82b7cde87f37100f715a0e05f332b377f73",
      "parents": [
        "381d35c1b01401e193544f679bfaf4f5c197f7cd"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Sat Jan 30 02:03:29 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 17 15:05:02 2021 +0000"
      },
      "message": "Add a server-configurable flags API\n\nAdds a new set of flags that can be set by the command line, server\nconfiguration, or system properties. These flags can be used to enable\nor disable certain features or otherwise change their behavior. The\nflexible configuration options facilitate both development and also\nexperimentation.\n\nAs an example of their use, this CL also moves the\n-Xwrite-metrics-to-log command line option to the flags system\ninstead. Future work will migrate the rest of the metrics settings.\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nBug: 175050458\nChange-Id: I1ef37e7d355204a3172b7aa5c0baa4cbd8c7076b\n"
    },
    {
      "commit": "d6e00a754bb5a7f041a4506b0602293fd9cce0e0",
      "tree": "605c24f4b0d1d72f3c3dd633d3ad1c8bad6e2f4e",
      "parents": [
        "3d2b93e6acb4e7ac6fc808f17813975f250dbf89"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 13:52:40 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 17 11:41:42 2021 +0000"
      },
      "message": "libartbase: add utilities for on-device signing files\n\nBug: 160683548\nTest: art_file_utils_test.cc\nChange-Id: I17967eebda0a565c033b095fb1deb6ceeaa3760d\n"
    },
    {
      "commit": "3d2b93e6acb4e7ac6fc808f17813975f250dbf89",
      "tree": "c44605b61d2e863ad9d0cb76b59b84a0a8f71266",
      "parents": [
        "d2efecc12ca362cf7d2ee86455b1646f96aecb2c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 15:02:13 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 16 21:16:42 2021 +0000"
      },
      "message": "[metrics] Add StatsdBackend\n\nAdds a new backend that allows reporting ART\u0027s metrics to statsd, where\nthey can then be uploaded to Westworld.\n\nManual Testing Instructions:\n\nRun the following commands.\n\n    m statsd_testdrive\n    adb shell setprop dalvik.vm.extra-opts              \\\n                      -Xwrite-metrics-to-statsd\\\\\\      \\\n                      -Xwrite-metrics-to-log\\\\\\         \\\n                      -Xmetrics-reporting-period\u003d10\n    adb shell stop \u0026\u0026 adb shell start\n    statsd_testdrive 332\n\nAfter about a minute, you should see several atoms logged from ART.\n\nBug: 178236337\nTest: Manual, see above\nChange-Id: Ia1c0bbadb0a9790ab44453ad60ca217c0fdb4e1a\n"
    },
    {
      "commit": "271662c2de6df0a5c85d47177dbe257c973cb3ae",
      "tree": "d020a662fbb4a84fb1954bbd537800b5a2f5b7cc",
      "parents": [
        "f6eb16b1bc9edcdffb004cedd78c2b26be84e559"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Feb 10 06:44:08 2021 -0800"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Feb 10 18:33:13 2021 +0000"
      },
      "message": "[metrics] Avoid string copy\n\nWe pass by const reference instead of copy.\n\nTest: TreeHugger\nChange-Id: Icf9ed05d001d5ed07f6160a06d5295501bfeeb05\n"
    },
    {
      "commit": "60117aeeffda3d01a5314984694ae3d6d4588fc1",
      "tree": "12f5062c456de8b50418a8fb74c801c8ccc5b690",
      "parents": [
        "c7ac91b21d1a15c14e29d69ff02b48c485962b0d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 08 17:46:15 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 10 01:39:40 2021 +0000"
      },
      "message": "Improve string splitting\n\nString splitting is something that we often have to do but our support\ncode for doing so is not the best. Add support for using\nstd::string_view in many circumstances and add support for making an\niterator of splits without allocation.\n\nTest: ./test.py --host\nChange-Id: I1b56b7e10926a064b64011326b508dd4af707df9\n"
    },
    {
      "commit": "c7ac91b21d1a15c14e29d69ff02b48c485962b0d",
      "tree": "f8bcc4df536c29773742cbb54b32b959ebd601c3",
      "parents": [
        "5c48df9895530fb26666c6d79d155ef3886d7a83"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 04 21:44:01 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 16:31:17 2021 +0000"
      },
      "message": "[metrics] Report some ART metadata\n\nAdds reporting for some metadata associated with ART metrics,\nincluding timestamp relative to ART startup, the session id, and the\nprocess\u0027s user id. It additionally outputs placeholders for the\ncompilation reason and compiler filter, but these need some additional\nplumbing from the Runtime and OatFileManager to fill in, so those will\ncome in a followup CL.\n\nThis CL also includes a fair amount of refactoring around metrics\nreporting and handling the session data.\n\nExample output:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 768\n        session_id: 5026277321588503825\n        uid: 123456\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassVerificationTotalTime: count \u003d 4167\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 7,0,0,0,0,0\n    *** Done dumping ART internal metrics ***\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nChange-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc\n"
    },
    {
      "commit": "7302a74df6f956fe7e20b2c62441666835f1a1f5",
      "tree": "b2806c310cdc5a50c76daed5866908e7f18af50b",
      "parents": [
        "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 05 09:31:14 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sun Feb 07 22:10:57 2021 +0000"
      },
      "message": "Re-init Locks and MemMap for each gtest\n\nCommonRuntimeTest gtests will clear the MemMap statics when it deletes\nthe runtime. This can cause other tests to fail if you run the gtests\nwith the `--no_isolate` flag. By reinitializing these systems in\nCommonArtTestImpl::Setup in addition to the original call in\ngtest_main.cc this issue is avoided.\n\nTest: $ANDROID_HOST_OUT/nativetest64/art_compiler_tests/art_compiler_tests --no_isolate\n\nChange-Id: Ifb258e3ca6bf63ca0f821ed598143b3cc41d3e8b\n"
    },
    {
      "commit": "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af",
      "tree": "c81fb19ae8c7a12ffb70ea6caa62bcc6c637a742",
      "parents": [
        "b6dda5a1fa90b08d3ebf83a5d1f882e5355bc68b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 04 21:20:30 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 06 15:59:32 2021 +0000"
      },
      "message": "libartpalette: Use fixed width typedef rather than enum for status\n\nAs the NDK guidelines note, the size of an enum is a compiler choice\nso an enum of unqualifed width cannot be considered stable ABI.\n\nBug: 122824298\nTest: TH\nChange-Id: I63d42fdb5a989aab15ec995529781b1b8c3ddb7a\n"
    },
    {
      "commit": "de275aaeb7bf32eeed7a091c70015517ead6e514",
      "tree": "beca367d7d047644320305cf070adcf4d811eb45",
      "parents": [
        "480d98182efa33179f1773c791dc8f4bed62ef2b"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Feb 01 22:59:11 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 02 00:55:04 2021 +0000"
      },
      "message": "Revert \"[metrics] Add histogram statistics for reporting\"\n\nThis reverts commit 3a1ca400758302f44a95ae8255ca7c012d651d73.\n\nReason for revert: asan failures\n\nTest: m com.android.art\nChange-Id: I26e3575add133c790ec6f2d51aac3a013216b0e0\n"
    },
    {
      "commit": "480d98182efa33179f1773c791dc8f4bed62ef2b",
      "tree": "e352691c80cd341dcfb55ef31d3f2044362c9416",
      "parents": [
        "10592e30a959d4ebe90f5ba4b6237ec0cacddc6c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 27 23:41:45 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 01 19:09:57 2021 +0000"
      },
      "message": "[metrics] Move core metrics code to libartbase\n\nWe would like to be able to use ART\u0027s metrics system in places where\nwe do not have access to the runtime. This CL splits the metrics code\ninto the core implementation of the counters and histograms and the\nbackground reporting thread. The reporting thread was the only part\nthat had dependencies on the runtime, so this remains in the runtime.\n\nThe bulk of the metrics code moves to libartbase so that it can be\nused in more contexts.\n\nBug: 178099697\nTest: m test-art-host-gtest\nChange-Id: I26a4fe326371686d5857ad49ba98569f5c55f84a\n"
    },
    {
      "commit": "a7c66e7e5845b26711b261773179abf0f8b34ced",
      "tree": "a621a91059f9a7d2cefc92710fac2cd28350d133",
      "parents": [
        "af2aabc47d97556bf0fde258e6ddb472eebe0855"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 27 11:41:58 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 21:23:25 2021 +0000"
      },
      "message": "Avoid potential null dereference\n\nIn a log statement we were dereferencing a pointer that could\npotentially be null. Add support for safely dereferencing a pointer\nfor ostreams.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ibe04811883575902a9b2fe8a064f18de2b2cea7b\n"
    },
    {
      "commit": "ef01e763eb700b513e4042ef7a1fbd22ecb10fc4",
      "tree": "e25f0ae7bb2c36a83159ca4b649296b381caea56",
      "parents": [
        "7968cae11af60796b27398a95c32ff0cc31457a4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 22 10:40:16 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 22 12:30:44 2021 +0000"
      },
      "message": "Guard clock_gettime\n\nclock_gettime is available on mac os starting from 10.12. On older\nversions, let\u0027s use time(2).\n\nBug: 178124881\nTest: watch a forrest run on mac\nChange-Id: I60699cc013f090fe131642bf90afcfd3c6e9bdc6\n"
    },
    {
      "commit": "0b986f73e018fe55af1d71d2f8deaa61bd6840a2",
      "tree": "ac0626c2b722d7bdec205eda84fbf807621d35fa",
      "parents": [
        "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 20 22:24:06 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Jan 21 18:16:38 2021 +0000"
      },
      "message": "Revert^4 \"[metrics] Add background reporting thread\"\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nThis reverts commit 1060838894e34785139b5e3583fbc9edad7fa7f9.\n\nReason for revert: Remove problematic test\n\nTest: test/run-test --host 2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nBug: 170149255\nChange-Id: I3d72043bbb1e652728253585aae5486598658d2b\n"
    },
    {
      "commit": "1060838894e34785139b5e3583fbc9edad7fa7f9",
      "tree": "267cc17ce650219d520e847fa011ebada320b8b8",
      "parents": [
        "f1d06474baa2f7c00761db39099b89ddab71bbe4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 15 09:20:23 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 15 09:20:58 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"[metrics] Add background reporting thread\"\"\n\nThis reverts commit 4c176b9de6c430422395017910633bcb001b2e84.\n\nReason for revert: Test fails on target.\n\nChange-Id: Idfef53679cf602c7c10a9cc0ffb16fda583ed78f\n"
    },
    {
      "commit": "4c176b9de6c430422395017910633bcb001b2e84",
      "tree": "7e2977cbda130db7f4f83e8eba9449f49e0e4397",
      "parents": [
        "5bb354fa440ae7c9ebe6994ceb45e6795c5d3363"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 15 18:23:28 2020 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Jan 14 21:40:56 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add background reporting thread\"\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nThis reverts commit 73366109eec37b75f77f24e6e52832047508b34f.\n\nThe reason this was previously reverted was due to failures where\nJVMTI reported an unexpected thread at startup. This change fixes the\nissue by adding the metrics background reporting thread to the list of\nallowed threads in ti_thread.cc.\n\nTest: test/run-test --host 2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nChange-Id: I5eea4a4551de9cf4672a461c09521ef871063a91\n"
    },
    {
      "commit": "5bb354fa440ae7c9ebe6994ceb45e6795c5d3363",
      "tree": "166f2719d86826c33b8b2e541c4bda8ee9caa93f",
      "parents": [
        "ec389671c661ea1cb73490a2896d6519f299dea2"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 13 20:38:34 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 14 21:39:16 2021 +0000"
      },
      "message": "Revert^4 \"[metrics] Add file output support\"\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nThis reverts commit f8567b535dcc4618f0ee76e5b8716d296681197b.\n\nReason for revert: Splitting out problematic test.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360\nBug: 170149255\nChange-Id: I09be3bfe10293fe71ded1a5b155dcd2fd226f8b3\n"
    },
    {
      "commit": "365f94f828ebd8aa5f55e3a3882f847960ed6bb5",
      "tree": "b9f8bac488e85093e203f8c079a13dd44a7c033d",
      "parents": [
        "923141b0faf9a0ea3b61bf0a507d95578b2b95e6"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 13 16:27:57 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 14 10:58:35 2021 +0000"
      },
      "message": "Minor updates to fd_file.h\n\n* Add a static IsOpenFd() method for checking if fd is open.\n* File::IsOpened() now checks when underlying FD is open (not just valid)\n* Centralize a definition for kInvalidFd in art projects.\n\nTest: art_libartbase_tests\nChange-Id: Ic5db8b6c80e184308c6ad8979ed31585120eb89f\n"
    },
    {
      "commit": "f8567b535dcc4618f0ee76e5b8716d296681197b",
      "tree": "59581c9c3d168f3a1b8e0dd7f4a2e384a8434999",
      "parents": [
        "0ddba9a4239477a2319fbf4317ca8782308c2c35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 09:50:24 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 09:51:02 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"[metrics] Add file output support\"\"\n\nThis reverts commit 8ef84f233a55972eb3a3d84c11c1617531af8e92.\n\nBug: 175025360\nBug: 170149255\n\nReason for revert: test failing on target\n\nChange-Id: I8d82462f6fb853ece4a4b295de17ab13b1f1b6f1\n"
    },
    {
      "commit": "8ef84f233a55972eb3a3d84c11c1617531af8e92",
      "tree": "cb7113879d10fcafd3b3c2d969e75fba7c60dc35",
      "parents": [
        "46d6fc0e16d65468aa259fadf27ddfeef72987b7"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Jan 12 00:04:57 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Jan 12 17:16:13 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add file output support\"\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nThis reverts commit ce2e0957f065002293ef152da28b6fa941c6baa3.\n\nReason for revert: Fixed test failures by adding Android.bp file.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360\nBug: 170149255\nChange-Id: I6768f5b4920896fc0f8e5866c878af999f73012d\n"
    },
    {
      "commit": "782fb716122d37dc4c4d7482afb21f6e68be04b4",
      "tree": "fdbf479b04c73f692051dc8abf6efda3114a87e4",
      "parents": [
        "5bcdd17a43fda7ac27968b13f6969133fae40b37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 12:47:31 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:05:34 2021 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker.\n\nExtend the HashSet\u003c\u003e and HashMap\u003c\u003e API with constructors\nthat allow using a stack-allocated initial buffer to avoid\nthe allocation overhead for small containers.\n\nFix HashMap\u003c\u003e implementation for std::pair\u003c\u003e being used\nas the Key. Make Signature copy-assignable so that we can\nuse it as (part of) a Value in HashMap\u003c\u003e.\n\nMove the definition of ClassLinker::MethodTranslation from\nclass_linker.h to class_linker.cc. Add a default constructor\nused for creating empty entries in HashMap\u003c\u003e.\n\nUse HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker instead of\nstd::unordered_map\u003c\u003e and std::unordered_set\u003c\u003e as it is much\nfaster thanks to avoiding individual nodes that need malloc\nand free and for small containers we also avoid allocations\nthanks to the extended HashSet\u003c\u003e and HashMap\u003c\u003e API.\n\nAlso avoid unnecessary std::vector\u003c\u003e for FillIfTable() and\nreplace linear search with HashSet\u003c\u003e lookup (note that the\n`ContainsElement()` helper has an overload for std::set\u003c\u003e\nbut not for any other associative container).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I48722fb3bb7780bf12fb71c7449494e097e4a368\n"
    },
    {
      "commit": "26de89604fdb6f7db3effcf775860f9f0dcd00f0",
      "tree": "2830f9340b2af2c7d5f3919a46a014f20ad04368",
      "parents": [
        "cea158fa671917938562c69c143ac5a8b2a29fc7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 14:36:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 15:46:20 2020 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in dex2oat.\n\nUse HashMap\u003c\u003e instead of std::unordered_map\u003c\u003e in ImageWriter\nas it is much faster thanks to avoiding individual nodes\nthat need malloc/free. However, for larger value types, such\nas `NativeObjectRelocation`, this can increase memory usage.\n\nAvoid storing individual ArtField relocations to reduce the\nmemory usage and re-hashing time. Rename `pointer_arrays_`\nto `method_pointer_arrays_` and change it to HashSet\u003c\u003e,\nremoving the unnecessary storage for `Bin`, as it has not\nbeen used for fields since\n    https://android-review.googlesource.com/162796 .\n\nAvoid double-lookups for insertion CHECK()s by using the\nresult of HashSet\u003c\u003e::insert(). Remove obsolete comments from\nthe HashSet\u003c\u003e::insert() API that have been wrong since\n    https://android-review.googlesource.com/1169846 .\n\nSimilary, use HashSet\u003c\u003e instead of std::unordered_set\u003c\u003e in\nCompilerDriver.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I538c3ac2ce8d7cad69bb14709702ac7ee0af810d\n"
    },
    {
      "commit": "ce2e0957f065002293ef152da28b6fa941c6baa3",
      "tree": "d8c28f4e46c4140b073331ea69b8b14e87590f15",
      "parents": [
        "fff1d8f9f3881d223f3d068f974da14f3d80de88"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 11:24:36 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 13:29:17 2020 +0000"
      },
      "message": "Revert \"[metrics] Add file output support\"\n\nThis reverts commit 51a9283984b05511bd98f9bcbd1f2f18900239cc.\n\nReason for revert: The new test is broken on device.\n\nBug: 175025360\nBug: 170149255\nChange-Id: I94d33f9e3d2203a0323fd5dc34f5a6f3e6147367\n"
    },
    {
      "commit": "51a9283984b05511bd98f9bcbd1f2f18900239cc",
      "tree": "09b25eb574b2c93f4e940bfab423b58acdf340bd",
      "parents": [
        "20cadbf2a204a029b595cd44f9298f6570b5c812"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Dec 07 15:07:00 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 21 18:09:31 2020 +0000"
      },
      "message": "[metrics] Add file output support\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360, 170149255\nChange-Id: I83a4f959cbb96847dc71188035c050a73b915064\n"
    },
    {
      "commit": "73366109eec37b75f77f24e6e52832047508b34f",
      "tree": "b4467d6220aa9aa06bbbca2440d3cefa57ecd5a7",
      "parents": [
        "cf097a7dba6eb0f9c788e7284efd46640b100e1f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun Dec 13 01:28:33 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 13 14:33:59 2020 +0000"
      },
      "message": "Revert \"[metrics] Add background reporting thread\"\n\nThis reverts commit 77f7eb9d05b6d05531556882d99ed63688c6e3b0.\n\nReason for revert: We\u0027re seeing consistent 2233-metrics-background-thread failures on target.\n\nChange-Id: Ie394dbe90289b1472ac4c8876d01ece347541852\n"
    },
    {
      "commit": "77f7eb9d05b6d05531556882d99ed63688c6e3b0",
      "tree": "76754e225ffd358eda851b51d7ca541843d6040b",
      "parents": [
        "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 14:54:23 2020 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Dec 10 12:34:45 2020 -0800"
      },
      "message": "[metrics] Add background reporting thread\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nTest: test/run-test --host test/2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nChange-Id: I4d6ae7701dd2fe36bc761ef6170ddd6860a3c0e6\n"
    },
    {
      "commit": "e4f2215df60f0408d37ec796ececaa32b860d37a",
      "tree": "44aa9093d846a27a1681e60ebcc5d07f7b1a41c3",
      "parents": [
        "86d6cd53385eae365f16f45e1a5947cc6595eb63"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 15:23:33 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 22:14:15 2020 +0000"
      },
      "message": "[metrics] Move metrics code to runtime\n\nThe background reporting thread is going to need tighter ties to the\nRuntime object, so it makes sense to bring the rest of the metrics code\nunder runtime. Since these are mostly runtime metrics, this is a more\nlogical place for them anyway.\n\nTest: m test-art-host-gtest-art_runtime_tests\nBug: 170149255\nChange-Id: Ib425041c41a5283237af8dd9978582e605a89a31\n"
    },
    {
      "commit": "210a78d9ec4349601ac57381046229f4da1197f4",
      "tree": "dba581ba26ba7f6add0c3c1a2968d4f5d5dc8336",
      "parents": [
        "59d4b53e70bc1e0589ce05428c945b4585e28d0f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 16:58:05 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 20:12:45 2020 +0000"
      },
      "message": "Ensure ClearLoopInformation doesn\u0027t require particular ordering\n\nThe ClearLoopInformation call used to use the RPO list to find\nblocks which potentially had loop-information. This meant that if one\nwas also clearing the dominance information (which is quite common)\none needed to be sure to call ClearLoopInformation before calling\nClearDominanceInformation or else loop information will not be fully\ncleared. This could cause quite perplexing errors if dominance\ninformation is recomputed later (also quite common). This error is in\nfact present in several tests (none of which use loops which is how it\ngot missed).\n\nFix this issue by just looping over all blocks. Also add a new\nGetActiveBlocks function which does the filtering of null blocks\nautomatically. In many cases (such as these) we use RPO purely because\nit doesn\u0027t require filtering. This should be able to replace these\nuses.\n\nTest: ./test.py --host\nChange-Id: I60c7defc409111471064e9bf02b7ae3a0eb10584\n"
    },
    {
      "commit": "59d4b53e70bc1e0589ce05428c945b4585e28d0f",
      "tree": "f7ca666fa879e98e89956053911c5d206b09787d",
      "parents": [
        "de60ef3f91af06a3b8ef24f4bab5c547dc65e10d"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Oct 21 17:49:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 01 09:19:19 2020 -0800"
      },
      "message": "[metrics] Add -Xwrite-metrics-to-log option\n\nThis CL adds a -Xwrite-metrics-to-log command line option, which causes\nART to write metrics to logcat at shutdown. At the moment, this is\nmostly useful for tests, but this change also lays some of the\nfoundation for more flexible metrics reporting.\n\nTest: test/run-test --host 2232-write-metrics-to-log\nBug: 170149255\nChange-Id: Ie4db70b9be83b2dc82e62798aa9977120a6e4ac5\n"
    },
    {
      "commit": "21000ae6fe36b525b5b3561b1b35836eb1325dfe",
      "tree": "1c99d2c98a21431fac6a75659769b79b324b53c1",
      "parents": [
        "ac3fcff3ad61fe468517163f47ec2239dff4e17f"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Nov 16 10:47:08 2020 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Nov 23 09:45:45 2020 +0000"
      },
      "message": "Add \"lo-prio\" tag.\n\nThe tag is being introduced in hiddenapi-flags.csv  so support\nit here too.\n\nTest: Treehugger\nChange-Id: I121e573b2b6a65a164194c83777c4971a5c58673\n"
    },
    {
      "commit": "86fe9b85c5243debe5f695c1625bae03bf738452",
      "tree": "5de78b8292a0225b617e1825817cbd12b46b6fa3",
      "parents": [
        "cc9df4fa1e666b90c5dd8eac94773763f8421f1e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 16 16:54:01 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 20:26:53 2020 +0000"
      },
      "message": "Revert^4 \"Partial LSE analysis \u0026 store removal\"\n\nWe incorrectly handled merging unknowns in some situations.\nSpecifically in cases where we are unable to materialize loop-phis we\ncould end up with PureUnknowns which could end up hiding stores that\nneed to be kept.\n\nIn an unrelated issue we were incorrectly considering some values as\nescapes when live at the point of an invoke. Since\nSearchPhiPlaceholdersForKeptStores used a more precise notion of\nescapes we could end up removing stores without being able to replace\nthe values.\n\nThis reverts commit 2316b3a0779f3721a78681f5c70ed6624ecaebef.\nThis unreverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Fixed issue causing incorrect store elimination\nTest: ./test.py --host\nTest: Boot cuttlefish\n      atest FrameworksServicesTests:com.android.server.job.BackgroundRestrictionsTest#testPowerWhiteList\n\nChange-Id: I2ebae9ccfaf5169d551c5019b547589d0fce1dc9\n"
    },
    {
      "commit": "2316b3a0779f3721a78681f5c70ed6624ecaebef",
      "tree": "8aa4682729b839a97b2578e6cbe05ee5d35be923",
      "parents": [
        "aeb7f9f8fe718219cfb04e0da5df62683250477d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Nov 14 01:28:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 02:54:26 2020 +0000"
      },
      "message": "Revert^3 \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis unreverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis rereverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Git-blame seems to point to the CL as cause of\nb/173120044. Revert during investigation.\n\nChange-Id: I46f557ce79c15f07f4e77aacded1926b192754c3\n"
    },
    {
      "commit": "b6837f0350ff66c13582b0e94178dd5ca283ff0a",
      "tree": "f79fff81352545efe967850e3d17e32255dcfecd",
      "parents": [
        "32c2eb81320f24b5bab24754204b8be95faa08b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 12 17:05:28 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 10:07:21 2020 +0000"
      },
      "message": "Revert^2 \"Partial LSE analysis \u0026 store removal\"\n\nA ScopedArenaAllocator in a single test was accidentally loaded using\noperator new which is not supported. This caused a memory leak.\n\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: Fixed memory leak in\nLoadStoreAnalysisTest.PartialEscape test case\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 m test-art-host-gtest-dependencies\n      Run art_compiler_tests\n\nChange-Id: I34fa2079df946ae54b8c91fa771a44d56438a719\n"
    },
    {
      "commit": "fe270426c8a2a69a8f669339e83b86fbf40e25a1",
      "tree": "c048fdec8e37cefb7238218a087709c01d5d3923",
      "parents": [
        "e17530a19a717879c8dd8e70073de6aaf4ee455f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 14:12:52 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 16:33:50 2020 +0000"
      },
      "message": "Revert \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: memory leak detected in the test.\n\nChange-Id: I81cc2f61494e96964d8be40389eddcd7c66c9266\n"
    },
    {
      "commit": "bb6cda60e4418c0ab557ea4090e046bed8206763",
      "tree": "f6b94510108cb653a80e0ea14d50ad6616c9f44a",
      "parents": [
        "670ff8854cf075617e0abee77b2259903757d86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 09 13:24:56 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 12 02:08:44 2020 +0000"
      },
      "message": "Partial LSE analysis \u0026 store removal\n\nThis is the first piece of partial LSE for art. This CL adds analysis\ntools needed to implement partial LSE. More immediately, it improves\nLSE so that it will remove stores that are provably non-observable\nbased on the location they occur. For example:\n\n```\nFoo o \u003d new Foo();\nif (xyz) {\n  check(foo);\n  foo.x++;\n} else {\n  foo.x \u003d 12;\n}\nreturn foo.x;\n```\n\nThe store of 12 can be removed because the only escape in this method\nis unreachable and was not executed by the point we reach the store.\n\nThe main purpose of this CL is to add the analysis tools needed to\nimplement partial Load-Store elimination. Namely it includes tracking\nof which blocks are escaping and the groups of blocks that we cannot\nremove allocations from.\n\nThe actual impact of this change is incredibly minor, being triggered\nonly once in a AOSP code. go/lem shows only minor effects to\ncompile-time and no effect on the compiled code. See\ngo/lem-allight-partial-lse-2 for numbers. Compile time shows an\naverage of 1.4% regression (max regression is 7% with 0.2 noise).\n\nThis CL adds a new \u0027reachability\u0027 concept to the HGraph. If this has\nbeen calculated it allows one to quickly query whether there is any\nexecution path containing two blocks in a given order. This is used to\ndefine a notion of sections of graph from which the escape of some\nallocation is inevitable.\n\nTest: art_compiler_tests\nTest: treehugger\nBug: 67037140\nChange-Id: I0edc8d6b73f7dd329cb1ea7923080a0abe913ea6\n"
    },
    {
      "commit": "61c71ef48e7fb0557af5702a9021bd2854f84e28",
      "tree": "e25fdadab83a68735c29c341b22433b1a58c5594",
      "parents": [
        "1485d4affe0eb881c488d7b95eb3a556a22034a4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 22:37:36 2020 +0000"
      },
      "message": "[metrics] Dump ArtMetrics on SIGQUIT\n\nART now writes a current snapshot of its internal metrics in response to\na SIGQUIT.\n\nExample output:\n```\n*** ART internal metrics ***\n\nClassVerificationTotalTime: count \u003d 863833\nJitMethodCompileTime: range \u003d 0...1000000, buckets: 244,5,1,0,1,0,0,0,0,1,0,0,0,0,0\n\n*** Done dumping ART internal metrics ***\n```\n\nThis includes a new StreamBackend, which is used to write ART metrics to\nan output stream in a human readable format.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Iaf8bcee5a4993e70ac4e36940591a734fe1a6697\n"
    },
    {
      "commit": "31376818547504490f450aff52d50839f7a0b539",
      "tree": "852dc6f6b8ead8e152fd9fe39c3344ed5fabcd18",
      "parents": [
        "15efe16175115f29e7c99bfc2703c30a82e3f702"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Oct 21 11:23:29 2020 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Oct 26 08:52:09 2020 +0000"
      },
      "message": "Add support for new \"removed\" API flag.\n\nThe removed flag is informational only: it has no effect on runtime\nbehaviour, so all we need to do here is to recognize it as a valid\nflag so it doesn\u0027t cause problems.\n\nBug: 171300342\nTest: m\nChange-Id: I6bb469410c6728e1cc2860f5441b8021c3a80205\n"
    },
    {
      "commit": "096bef8285e1a4d2a2b89cb5a5f59c63ee2e7b65",
      "tree": "1e67eca126f08985f3d43c97b2f5df94a8e1e846",
      "parents": [
        "66474c2878e0c91fbcffba8271bc20a3cf760642"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 22 17:40:25 2020 +0000"
      },
      "message": "[metrics] Refactor reporting\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Ic02dd94f55fb782e1ffb59789bf95e7f53f1f8e8\n"
    },
    {
      "commit": "9fde2db3d4cfc6d7d1520454abc2aa4622a073ea",
      "tree": "24b984d2761b8b42df31e25949ce8d2d6f33bdc6",
      "parents": [
        "f50975ab491fa962e6e5ec4405fdb31591d51d96"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Oct 15 16:03:29 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Oct 20 15:08:20 2020 +0000"
      },
      "message": "Update host tests to point to a dedicated boot image directory.\n\nOn device the boot image files are in the APEX, but on host they\u0027re\ncreated by the global code in dexpreopt_config.go and installed by make\nin the same location irrespective of the ART APEX in use (release or\ndebug). That location is now moved to\n$(ANDROID_HOST_OUT)/apex/art_boot_images to avoid conflict with the\nAPEX paths (because the release APEX is moving from\ncom.android.art.release to com.android.art).\n\nTest: art/test/testrunner/run_build_test_target.py art-test\nTest: art/build/apex/runtests.sh\nTest: art/tools/buildbot-build.sh {--host,--target}\nTest: art/tools/run-gtests.sh\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --64 --optimizing\nTest: m build-art-target-golem\nBug: 169639321\nChange-Id: I932a15539e170d3c6c78515b22dd4b91ce1c57b4\n"
    },
    {
      "commit": "4bb09001683e00a9d0d34f685f2ec60004c0c1ef",
      "tree": "283e8c3c77c34a13b020275b031148cd46f1de9b",
      "parents": [
        "ae7168e19f886ed43ed200f9b0e769613df485f9"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 30 11:42:34 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 18:12:00 2020 +0000"
      },
      "message": "[metrics] Implement JitMethodCompileTime histogram\n\nJitMethodCompileTime keeps track of how long methods take to compile in\nJIT mode.\n\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: Ic0e5f365d9e7eb7bc0ebcf49d23972adcd6dfb36\n"
    },
    {
      "commit": "a79872b016ea95b6ec530ae1ac35f3c5b0d9997f",
      "tree": "4e2f5c06efcaa3d508931862a504f2d52fa4d70c",
      "parents": [
        "1cd030f76e6ee07888aadca25ba24119fefb31b8"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 01 13:09:53 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 08 16:16:38 2020 -0700"
      },
      "message": "[metrics] Add metrics to Runtime, implement ClassVerificationTotalTime\n\nThis creates the main metrics struct and makes it readily accessible for\nART components that want to start collecting metrics. It also implements\nthe ClassVerificationTime metric.\n\nTest: m test-art-host-gtest-art_runtime_tests\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: I33b5b2dd40127074619750d6730db220e3ed1257\n"
    },
    {
      "commit": "1cd030f76e6ee07888aadca25ba24119fefb31b8",
      "tree": "cb5992d5a5da66b1b1d967b48ec3d2892cda52bb",
      "parents": [
        "c4adf54117b96a34df228c83127d0986a69dc198"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 30 11:42:34 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 08 15:59:51 2020 -0700"
      },
      "message": "[metrics] Add timer conveniences\n\nThis adds convenience timers for each of the metrics. The timer\u0027s can be\nbacked by a Counter, in which case the Counter will store cumulative\ntime elapsed, or by a Histogram, in which case the timer will increment\na bucket based on the time between a particular start/stop pair.\n\nTimers can either be manually started and stopped, or can be used\nautomatically in an RAII manner.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: I4fc77e35f3e7b67c12fc004b72bf4fe177dc3151\n"
    },
    {
      "commit": "c4adf54117b96a34df228c83127d0986a69dc198",
      "tree": "f3dbfbd7686e7f473671da3c4b9ef83962c00ecc",
      "parents": [
        "d02435d009798c5b0a6cf0193769360307f82aa4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Oct 02 13:46:28 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 08 21:35:09 2020 +0000"
      },
      "message": "[metrics] Make metrics atomic\n\nART metrics need to be able to be updated by multiple threads. We make\nthis safe by making each metric value atomic.\n\nNote that this may be a scalability bottleneck if some metrics become\nheavily contended. If that turns out to be the case, we can explore\nother strategies, such as thread-local copies of contended metrics.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: I5857a0184e5715aa67cc551e5ee238552a374143\n"
    },
    {
      "commit": "d02435d009798c5b0a6cf0193769360307f82aa4",
      "tree": "c1f72d7c77b1809e36c3fbddd3d293484862e3e3",
      "parents": [
        "2734999f931a0e9082df7ae492dbfde668cd38d0"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Sep 29 11:16:24 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 08 19:03:48 2020 +0000"
      },
      "message": "[metrics] Define Histogram\n\nAdds a definition of the Histogram metric type. This CL also declares\nthe JitMethodCompileTime histogram, but collection for this metric is\nnot yet included.\n\nThe ArtMetrics class is also refactored so that metrics are not exposed\ndirectly as fields, but instead through accessor functions.\n\nFinally, this CL includes a test case for ArtMetrics::ReportAllMetrics\nthat demonstrates how the set of metrics are reported to a backend.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: I5041588609d9c386ce053c16713c9e9bb5210e3a\n"
    },
    {
      "commit": "2734999f931a0e9082df7ae492dbfde668cd38d0",
      "tree": "28d34c9254f21b878299bf40e4e231b3ae621e0f",
      "parents": [
        "5409408a41045c7f178e362311eb51dab992d6db"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 06 15:26:58 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 08 15:28:03 2020 +0000"
      },
      "message": "Fallback to using ANDROID_HOST_OUT env-var in gtests\n\nWhen running gtests using external runners in conjunction with certain\nrunners the gtest can believe that it is being run from a directory\nother than ANDROID_HOST_OUT. Instead of aborting this change makes the\ngtest simply accept the env-var and use it instead of trying to\ndetermine it based on the executable\u0027s path.\n\nTest: manual, VSCode\nChange-Id: I1ae7bbc58bea1813683d3180c9ee93be21f21df5\n"
    },
    {
      "commit": "f1a2c0e93f80fd9339270b10a5f68f93ebeffe67",
      "tree": "b3949e0e4996ef05a1d17c0f72c3d72e85c73827",
      "parents": [
        "0713ca0525579365ae927ac800797a7473d9267f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Sep 29 11:13:55 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 05 20:25:10 2020 +0000"
      },
      "message": "[metrics] Define Counter and related data structures\n\nAdd a definition for Counter, which is a type of metric ART can\ncollect. Note that this does not yet define any particular counters,\njust the infrastructure needed to add them.\n\nBug: 160734914\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Ideabadbf3cca222911da357af56c7ebc2ab637fd\n"
    },
    {
      "commit": "e2a9bb7175517c18ab0899ad54c730b272d9883c",
      "tree": "b911c47e4ef28afd99b6d683b1338e1a61dc8598",
      "parents": [
        "e0f09bb2e2e5b3971b1232edabb7db1f9219ceb7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Sep 28 12:24:39 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 29 13:26:10 2020 +0000"
      },
      "message": "Augment search path for tradefed host gtests.\n\nTradefed uses different directory layout locally and remotely.\n\nBug: 147817558\nTest: m general-tests \u0026\u0026 atest art_dex2oat_tests --host\nChange-Id: I60cb5971dfb7b6a644a74a1c77d1a269ce461859\n"
    },
    {
      "commit": "a28438ab47e8e41599fa6b2343f8a6a21efa0116",
      "tree": "519080d02e7f1b3ce07d82efd579ea3bfae59b8a",
      "parents": [
        "2f47a3110a16d60128a16b280191941df4ecf237"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Sep 23 01:40:03 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 28 10:13:56 2020 +0000"
      },
      "message": "Disable the -d vs non-d libartbase dlopen check when it\u0027s static.\n\nTest: m hiddenapi \u0026\u0026 out/host/linux-x86/bin/hiddenapi\n  when it is built with static libartbase (see child CL).\nBug: 145934348\nChange-Id: I2487e3e2b2b7153e71590748f5e2b6dbd4b5e4f6\n"
    },
    {
      "commit": "3c7bd3c783e5a171f7ae1e5bc1c11cb95b80a93b",
      "tree": "23d17987145abef47875db7cdbf03e5b8eb276c5",
      "parents": [
        "46c2a23dbbe48c8ba1dd0238e844f9b5fda47ec7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 17 14:16:36 2020 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 18 21:43:11 2020 +0000"
      },
      "message": "Fix issue where moving BitVector could cause free(nullptr)\n\nIf one std::move\u0027s a BitVector the old BitVector\u0027s storage_ will be\nnulled and size set to 0. This is fine but when ~BitVector is run the\nallocator will be asked to free a nullptr. Since this is generally not\nexpected by allocators, not supported by some and breaks the movement\nsemantics of C++ I\u0027ve changed the behavior to only Free memory\nif there is memory to be freed.\n\nTest: ./test.py --host\nChange-Id: I2716a604370c94bcea1a0989c5e6b94e45a2b063\n"
    },
    {
      "commit": "46c2a23dbbe48c8ba1dd0238e844f9b5fda47ec7",
      "tree": "d905233d37e6af9f4476b9d25b63baa7f8c4f5b3",
      "parents": [
        "b76cb89736d889929939223a22bc7fb44c6117b2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 17 14:01:55 2020 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 18 21:43:11 2020 +0000"
      },
      "message": "Don\u0027t assume allocators clear memory\n\nBitVector, when constructed with an explicit size, would assume that\nthe allocator would zero out memory. This is not always true and could\nlead to unexpected outcomes.\n\nTest: ./test.py --host\nChange-Id: Ibe556ebf07b5081f110e76efa927b7fa677a607e\n"
    },
    {
      "commit": "b76cb89736d889929939223a22bc7fb44c6117b2",
      "tree": "35d1d0121d3ea7fcd5631b4b68a57266ecbf5412",
      "parents": [
        "25c3e4872b079157873515b983c6ee62da652c48"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 17 13:57:00 2020 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 18 21:43:11 2020 +0000"
      },
      "message": "Fix incorrect inheritance declaration in IndexIterator\n\nThe BitVector::IndexIterator was declared as inheriting from\nstd::iterator without any access modifiers. This prevented the\ninherited declarations from being visible, meaning it could not be\nused by much of our other iterator code. Declare this inheritance\npublic and add a test that the iterator can be used with\nTransformIterator.\n\nTest: ./test.py --host\nChange-Id: I7e6483e03d01fb447dd73f80a72173190cc5fe60\n"
    },
    {
      "commit": "1faacf59b9f74e9d2de4e0331ef0cdfcf132225d",
      "tree": "e8288e534e85a816b7eb818bf20085e1b46a3553",
      "parents": [
        "93deebfd2af0470b13973d51e2cce6c62a7344f4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 31 15:48:25 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 03 17:07:33 2020 +0000"
      },
      "message": "Support running art gtests out-of-tree\n\nArt host gtests would CHECK that the binary path was below\nANDROID_BUILD_TOP. This could cause problems for some build\nconfigurations such as custom OUT_DIRs and using the vscode debugger.\nSince having ANDROID_BUILD_TOP be correct is the only actually\nimportant thing we can just ignore this discrepency. Change the test\nsetup to prefer ANDROID_BUILD_TOP if set and it differs from the\nbinary location.\n\nTest: gtests\nChange-Id: I566fd4c1b801efe87bf368caa41f2330f659b4b2\n"
    },
    {
      "commit": "dd3b57fc4912f92e397f8904549af67652c6891b",
      "tree": "a21b0aee1bb20b1b49fd7c793edc41d93ec04c31",
      "parents": [
        "f1e1dd135c086a15c0e683c5778add033f97e4d9"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Aug 31 07:31:00 2020 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Aug 31 07:31:00 2020 -0700"
      },
      "message": "Remove dead code\n\nWith byte_count unsigned, we will never hit the negative path.\n\nTest: m test-art-host-gtest\nChange-Id: I6856e133447b38e97118920b03264b554e736a29\n"
    },
    {
      "commit": "f1e1dd135c086a15c0e683c5778add033f97e4d9",
      "tree": "3146a9f0c4dd769a741641f1da34dff7df649480",
      "parents": [
        "ca8343842f9094fd5eb86569d293250e783f582c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Aug 21 15:38:12 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 28 17:00:06 2020 +0000"
      },
      "message": "Enable -Wconversion for thread.cc\n\nThis should help prevent bugs due to unexpected implicit integer\nconversions.\n\nSome collateral changes were needed as well to limit the number of casts\nthat had to be introduced.\n\nBug: 165843530\nTest: m test-art-host-gtests\nChange-Id: I091122827001ab335c7e140864f67cdf90fcf8b4\n"
    },
    {
      "commit": "ca8343842f9094fd5eb86569d293250e783f582c",
      "tree": "c4e040eff9f8528626535106a88fe4e7bb317a00",
      "parents": [
        "49a19f38c35605e675eee271691ed465802859bf"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Aug 26 21:41:13 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Aug 28 15:47:40 2020 +0000"
      },
      "message": "Avoid NanoSleep overflow\n\nNanoSleep with a very large argument could cause it to fail on 32 bits.\nIt doesn\u0027t appear to me that this was ever exposed to client code.\nSo this was probably not an observable bug.\n\nRemove redundant uses of \"constexpr inline\" instead of adding another\none.\n\nBug: 161006928\nTest: Treehugger\nChange-Id: I2ad3b92d01c764915ab2aac17cc72ac5c6907ed4\n"
    },
    {
      "commit": "02db072528792ab5ebb4ab4757a739b4dbd5617d",
      "tree": "71d516be22c9e1b826ebcbd3a51a19c3192dd910",
      "parents": [
        "b53d3b6aa48c799c95fd6fc45579c41dfd25cea3"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Aug 07 14:56:59 2020 +0100"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Thu Aug 13 13:42:10 2020 +0000"
      },
      "message": "Rename api lists\n\nUse more inclusive terminology for hidden api lists: blocked(blocklist),\nunsupported, max-target-* and sdk (go/hiddenapi-list-renaming).\n\nBug: 162500436\nTest: build and check hiddenapi-flags.csv\n\nChange-Id: Id25fabe25450a8d1f4776c526b208716e2d06ff9\n"
    },
    {
      "commit": "fc12a6cb415b2eacee0459fd170490a407c2548a",
      "tree": "f3b8508544e7320635146d0458e612e4b6f735d9",
      "parents": [
        "0f5784886faf0281a7b06eba35105ee68f1e5a00"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jul 29 19:52:34 2020 +0100"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Aug 10 12:27:13 2020 +0000"
      },
      "message": "Rename ApiList::Value enums\n\nUse a more inclusive terminology for the API lists. This change focuses\nspecifically on the ApiList::Value enum values. The string equivalents\nwill be changed separately, as they have multiple extra dependencies.\n\nBug: 162326106\nTest: m\nTest: m test-art-host-gtest-art_hiddenapi_tests\nTest: art/tools/run-gtests.sh\n\nChange-Id: I1dccf59ecc9e08b60dbd1bfed6ce438b5ce081d0\n"
    },
    {
      "commit": "f81d06cd7471585bb9c87c70f7ae849f452a2931",
      "tree": "b2337298e147f938edc27b017f2e9a1010a83c36",
      "parents": [
        "b2f2a49fca2004f8047e2539fc3dfb3998407905"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jul 29 18:30:49 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 30 08:31:58 2020 +0000"
      },
      "message": "Fix missing return in non-void TransformArrayRef::end\n\nTransformArrayRef::end() is not void but it does not return any value.\n\nThis CL fixes this.\n\nTest: transform_array_ref_test\nTest: run-gtests.sh\nChange-Id: I0bed31cae9fc3eb83f9a254393f6700471793d2a\n"
    },
    {
      "commit": "26ab270882523210c44bf156211283936471bbf6",
      "tree": "3ae1cb1d37a5e4facc39443f3ccbe76f3b486460",
      "parents": [
        "5880c77e9153b953952507cb924ce3ee8511e084"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 29 09:54:10 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 29 09:57:28 2020 +0100"
      },
      "message": "A few more inclusive language updates based on newer wordlist\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: I7e6362556136ce1a3085fffae7598104fa5bc56a\n"
    }
  ],
  "next": "43d7c65d8ff3097122acf9fcb4c45ae6ccd71f3a"
}
