)]}'
{
  "log": [
    {
      "commit": "675e0a545b04a392a0026d7ce9c67222d717f7bc",
      "tree": "48f19fcfb2f41b5d114071fc9c6cc7405aa3db67",
      "parents": [
        "7f00f5a1fa25f9b6414905983e7ac2739f662615"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:29:00 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 18:26:27 2018 -0700"
      },
      "message": "Fix various not so benign fdsan errors.\n\nBug: http://b/113558485\nTest: art/test.py --target --gtest\nChange-Id: Ic376ec33fff30a239d978e40b0c48966c6d0a9c2\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "4b233677a7b83e7961ba605191909c9d40b507e7",
      "tree": "3bbb6cd8e8db9ae5b042d6574b02426de95d2172",
      "parents": [
        "921e51710566d68cf0d5504bcb19f9ec4fee3f87"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 08 10:06:44 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 08 10:08:24 2018 -0700"
      },
      "message": "Delete ClassDataItemIterator\n\nNo longer required.\n\nBug: 79758018\nTest: test-art-host\nChange-Id: Ieb3e5d27dbcb4697052a1ae43dafbd268506277b\n"
    },
    {
      "commit": "396dc08833659c78409567b28f7bb25e9254fbb0",
      "tree": "22e8989313c1040e47e010077d6d144ab08c34f1",
      "parents": [
        "0d3f480343f00d971ec55b197b0825a540777e32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 06 12:29:57 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 07 13:44:46 2018 -0700"
      },
      "message": "Move hiddenapi to ClassAccessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: Ib0848cc69ffaa7735f43d88e9719cc43953e4a93\n"
    },
    {
      "commit": "8f75f7bdc9e72204ed4712670fd04e88f60e7f13",
      "tree": "69fb1725aa7f565713e6ab34633f3de72d515261",
      "parents": [
        "34be5e212b18f03a6cd3ec3b11cd05df49a4d32a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 06 23:38:48 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 07 08:38:47 2018 -0700"
      },
      "message": "Move veridex to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I38bfc8ca1050698a60807ae77eadeb04a5809579\n"
    },
    {
      "commit": "4b22b34c698db8aa59343d0a5af89fc737532bce",
      "tree": "985c0e28dcdf5a497737690b50d31c4eb7bbda85",
      "parents": [
        "9e53f5f19167848d043f91e6d20436e9b568b55a"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 14:43:21 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 14:43:21 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: Id869744db54b5b366454a5e13b467ac1f4df2845\n"
    },
    {
      "commit": "efcdd13a3d820aa084ed4255196da1363cf9e5cf",
      "tree": "59d28153d72bef9cd11cacd8f56cf021a3b239b0",
      "parents": [
        "eeac119a22b09496eb66109c906df6a5243eac36",
        "a34812c0801b8b991b5b5b1d0d5e5a4ccf2bf0ac"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 02 16:54:56 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 16:54:56 2018 +0000"
      },
      "message": "Merge \"Move dex_file_verifier_test and dexlayout to ClassAccessor\""
    },
    {
      "commit": "350b6a312222b9b27bfee0e72ce261a45cb60e1c",
      "tree": "ca740698a94e6cdd106c52311430917ac68f16ec",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d",
        "759fea2974699e8dea2bcfbe319a932ff3654810"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 02 07:58:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 07:58:51 2018 +0000"
      },
      "message": "Merge \"ART: Improve IsValidMemberName\""
    },
    {
      "commit": "a34812c0801b8b991b5b5b1d0d5e5a4ccf2bf0ac",
      "tree": "7a45987265ef96b06bfb8d7761f7a83a16c340b5",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 17:10:43 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 18:03:24 2018 -0700"
      },
      "message": "Move dex_file_verifier_test and dexlayout to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I01d53eaf45d28fd762800c2716d6bf2dd3c9ad9e\n"
    },
    {
      "commit": "759fea2974699e8dea2bcfbe319a932ff3654810",
      "tree": "1dd4ff3b891344523698ccc51d718ec9f434ae72",
      "parents": [
        "72fb8639a61e100dcc39645c35a5c3e394ab0eba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:41:11 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:49:02 2018 -0700"
      },
      "message": "ART: Improve IsValidMemberName\n\nForce inlining of the fast-path IsValidPartOfMemberNameUtf8.\n\nperf stat of dexdump -c of a large app,\n  before:\n     4,867,415,428      instructions:u\n     1,089,412,280      branches:u\n        26,880,249      branch-misses:u\n  after:\n     4,425,845,396      instructions:u\n       978,781,201      branches:u\n        26,585,670      branch-misses:u\n\nTest: m test-art-host\nChange-Id: I5b96a9fa4c3f2ec70126c4931e01f30b5e8a1172\n"
    },
    {
      "commit": "c49e8f29ead62e4d832cd7243a7bd9f493faab43",
      "tree": "ae9e9283fb4b1eff5ee559cfe4e7f0119477b38e",
      "parents": [
        "537dd4a3c0f6369de716787ecc6f3effa7822ea6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 19 17:00:36 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 14:06:45 2018 -0700"
      },
      "message": "Move DexFileVerifier to ClassAccessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: I57cc324a26c51909fc2535f1c471c42ccb670c58\n"
    },
    {
      "commit": "94c54de5c510415d0cc9d13eb2c9fe29e8b586f5",
      "tree": "bca4435bb901748315c6112a91be4e0638c7c3cf",
      "parents": [
        "9acb522e35e3302786a338c7f50585dd412d68d3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 26 22:38:47 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 27 10:16:06 2018 -0700"
      },
      "message": "Move dex_file_tracking_registrar and art_dex_file_loader_test to class_accessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: Ic114d407697176be55c89adf4486cd63fc018844\n"
    },
    {
      "commit": "4ac9ade09d796ce4fc866a02d05c1fba64578f78",
      "tree": "4b6894e379bb224dc86141acf573949c37af24c4",
      "parents": [
        "c19adea473a8415adcbdeb8eedb1245d4ae92351"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 24 10:27:21 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 24 17:42:44 2018 -0700"
      },
      "message": "Move dexdump, dexlist, openjdkjvmti to ClassAccessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: Iecdcf81b9dd2fa5cd938579847d4934467abf813\n"
    },
    {
      "commit": "98dad409dc3b1b54a2e514710a7fc60084629b7f",
      "tree": "2c7791ca4eb8dc085dc7fc0e453b32e9e8b1b513",
      "parents": [
        "fe62f672694a70d151d0b55bbce718b5d66a5f5a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 18:00:12 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 23 17:08:30 2018 -0700"
      },
      "message": "Finish moving oatdump to ClassAccessor\n\nMoved one remaining part of oatdump/ to class accessor.\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I7a1abfa9547658f1e9349c09f2c088bdc820af85\n"
    },
    {
      "commit": "6250dfa22577160b270f3f3165260739707cf7d3",
      "tree": "2b68128ea361e61d1186252a5ba1e98277fc9585",
      "parents": [
        "125a47c0d5c77894eeef2229ec26e72a42bfa5e5",
        "e166facea335b9adcff7717d6d30150a41718668"
      ],
      "author": {
        "name": "Dario Freni",
        "email": "dariofreni@google.com",
        "time": "Fri Jul 20 08:59:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 20 08:59:35 2018 +0000"
      },
      "message": "Merge \"Add a public error code to DexFileLoader::OpenAll.\""
    },
    {
      "commit": "bd39d145e4986217bcb8dce1d4a9631d926a2781",
      "tree": "52dfd3307ab5279e960f9a1bf6e474e47440a3d8",
      "parents": [
        "6f4cf6e8fa15de2f9bf7c6a649ea7a2fabef886a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 19 11:14:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 19 11:37:05 2018 -0700"
      },
      "message": "ART: Clean up unused using declarations\n\nMake tidy happy, and enable checking.\n\nTest: mmma art\nChange-Id: I9e18e80b3f37dd2aeb8ecd1c25abe4d5cf2f1c45\n"
    },
    {
      "commit": "e166facea335b9adcff7717d6d30150a41718668",
      "tree": "fee3bff71f8820141c6f58b9e733677c9c0e906e",
      "parents": [
        "6743f1ebd4a1a266896541acb5c4dde1f78e708f"
      ],
      "author": {
        "name": "Dario Freni",
        "email": "dariofreni@google.com",
        "time": "Mon Jul 16 11:08:03 2018 +0100"
      },
      "committer": {
        "name": "Dario Freni",
        "email": "dariofreni@google.com",
        "time": "Thu Jul 19 16:12:13 2018 +0100"
      },
      "message": "Add a public error code to DexFileLoader::OpenAll.\n\nSome of the APKs in the build system don\u0027t contain any dex file (e.g.\nthey are only there to test that PackageManager can install them).\nUsers of this library (e.g. veridex) can now verify the error condition\nto determine whether they should just skip the file or propagate the\nerror.\n\nTest: m test-art-host-gtest; ran veridex on an APK without classes.dex\nBug: 110073830\nBug: 78924201\nChange-Id: I65b6a5aa8abb404a77b90352dd066fb0dff36955\n"
    },
    {
      "commit": "c1528176838174896afc001c3ebbc8b8ba06412c",
      "tree": "e7f33e67f9eed91266829449396f90ee9a3ef1e9",
      "parents": [
        "848f0d9782e467deb35b0ad3a904aeefbc9ef802"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 10 17:19:00 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 10 17:19:00 2018 -0700"
      },
      "message": "ART: Correctly compare in UTF-16 space\n\nWhen trying to cache the locations of constructor names, actually\ntake care of using UTF-16 comparison, as the string table may\ncontain strings with UTF-16 codepoints that are incompatible with\nstrcmp.\n\nAdd a crafted test to dex_file_verifier_test\n\nBug: 110157789\nBug: 78568168\nTest: m test-art-host\nChange-Id: Ifce56e53522eac2d421b316761ef0adfe341a5b9\n"
    },
    {
      "commit": "0e4563c4ccd3a36dff11c33fc98aa9cedae722e4",
      "tree": "c64221847df3d435cf0c5633a60380bad2719df4",
      "parents": [
        "0162450a86c1586c8e0d28710ea0280bfa64ae32",
        "0b6de0c0de6c760a6bdd45a37e92055f662ad4ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 04 13:13:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 04 13:13:02 2018 +0000"
      },
      "message": "Merge \"hiddenapi: Add \u0027list\u0027 command to generate public/private API lists\""
    },
    {
      "commit": "0b4267720380ca746abb9090364cea9ee6cb1435",
      "tree": "3e330d7241d5608858b9084a246a4bb8b88b070f",
      "parents": [
        "7583d915800ad330da0232dfdb0a4d1bda2d074c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 23:03:42 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 23:03:56 2018 +0000"
      },
      "message": "Revert \"Refactor DexFile ownership\"\n\nThis reverts commit b095f022a9683a9123018c01e22595cf969fd88b.\n\nReason for revert: Caused huge interpreter performance regression.\n\nChange-Id: I0f27f8f234d315807695362bf679ef47f68723f7\n"
    },
    {
      "commit": "7583d915800ad330da0232dfdb0a4d1bda2d074c",
      "tree": "2a22fcf9783d34fb8ed51527541daebfeaf184ac",
      "parents": [
        "1398c8fe04673bc1cff6811c9017368fb8d4bb99",
        "9bafa8b8abeafb36b2d791e89df65c4a3b74fd54"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 23:03:19 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 03 23:03:19 2018 +0000"
      },
      "message": "Merge \"Revert \"Cache DexFile begin and size\"\""
    },
    {
      "commit": "9bafa8b8abeafb36b2d791e89df65c4a3b74fd54",
      "tree": "851fd56078bdff9edb4a8354c8695fc5c7bda2f4",
      "parents": [
        "689caf046cb99efda4462183eeaacb11a6119adb"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 21:19:34 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 03 21:19:34 2018 +0000"
      },
      "message": "Revert \"Cache DexFile begin and size\"\n\nThis reverts commit 689caf046cb99efda4462183eeaacb11a6119adb.\n\nReason for revert: Did not fix regression caused by prior CL.\n\nChange-Id: I8a01bacfa98539d2980095c445cd580d73e39975\n"
    },
    {
      "commit": "0b6de0c0de6c760a6bdd45a37e92055f662ad4ff",
      "tree": "e6b1398d87f31392a0dc1ff99c1ba10efbbb782e",
      "parents": [
        "2258c2ef5f6cb25ff12a1dc6dfac1f868892c226"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 28 11:56:41 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jul 03 17:21:53 2018 +0100"
      },
      "message": "hiddenapi: Add \u0027list\u0027 command to generate public/private API lists\n\nIn order to make decisions about non-SDK API restrictions, we need\na complete list of public and private class members in the boot\nclass path. This was previously done by Doclava but having to lower\nits Java view of the framework to dex level has proven cumbersome\nand error prone.\n\nThis patch adds a new command to the `hiddenapi` build tool which\nbuilds the class hierarchy of boot class path and attempts to resolve\neach member of android.jar against it. Resolved members are dumped\ninto a public API text file, the rest into a private API text file.\n\nNote that the resolution is not strictly the same as in ART and we\nmay err on the side of caution. This should be revisited to comply\nwith the spec.\n\nBug: 79409988\nTest: m out/target/common/obj/PACKAGING/hiddenapi-private-list.txt\nChange-Id: Ia82bcaad9347344aacf8dc6f7b093f769cd853ec\n"
    },
    {
      "commit": "675673dea0d85a82a152c877a36b24d6e1e5ad1b",
      "tree": "74a92310a216fbcb85a8b879301ed4711ae3ef01",
      "parents": [
        "936523d4e9554b6cbc11ebcb405ed6d300d78fa4",
        "12dd8a90af1f1cfae172f6d9c3443808c4fb6e40"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 29 21:00:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 29 21:00:37 2018 +0000"
      },
      "message": "Merge \"Add bytecode conversion experiments\""
    },
    {
      "commit": "12dd8a90af1f1cfae172f6d9c3443808c4fb6e40",
      "tree": "452b6f4de6b9054ede8528c1e3ea97933e642c75",
      "parents": [
        "d20a4d76c33cd6e609ad6b1b3cde09fdcbdde05c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 12 11:17:22 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 29 10:45:37 2018 -0700"
      },
      "message": "Add bytecode conversion experiments\n\nAdd a few new instructions and measure savings:\ninvoke-xx-[1-4]-[move-result].\niget/set-this\nnew-instance-invoke-this\nif-eqz4\nif-nez4\netc..\n\nCumulative Dex bytecode savings are ~14% of the Dex size.\n\nTest: test-art-host\nBug: 77721545\n\nChange-Id: Ibe2b04614e2c5782612b515fbb7f77dbcf9eb66c\n"
    },
    {
      "commit": "689caf046cb99efda4462183eeaacb11a6119adb",
      "tree": "d318dd6e64269150bd3844b94ebb75dc8abf8ea2",
      "parents": [
        "04a4f20f26b0935a43f74269f68ddfd67335afb8"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 29 09:31:30 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 29 09:50:55 2018 -0700"
      },
      "message": "Cache DexFile begin and size\n\nAvoid virtual function invocations in DexFile Begin() and Size() methods\nby caching duplicate copies of the beginning address and size at construction.\n\nBug: 110980617\nTest: make -j 50 test-art-host\nChange-Id: I70867bcd69e30a93b91873171d365a916b76bc96\n"
    },
    {
      "commit": "b095f022a9683a9123018c01e22595cf969fd88b",
      "tree": "ccbf6e69ca17f4677186f4e148e1f9baf8bc7ae4",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 22 14:38:51 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jun 27 18:14:50 2018 -0700"
      },
      "message": "Refactor DexFile ownership\n\nAvoid bare pointers in DexFileLoader APIs, which caused clang-tidy\nissues and other problems.\n\nBug: none\nTest: build and boot\nChange-Id: Ic277bc83af1997774b42c55d3d631ec940b9c015\n"
    },
    {
      "commit": "1e96e13ebe4526cab224af95aad8631f452e05d1",
      "tree": "ea3bb7c6ae8ca39a3325dadb0ceac409704e42fe",
      "parents": [
        "d6de4564f4494c78955d667b21e4693844d7b818"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 19:36:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 19:36:55 2018 -0700"
      },
      "message": "ART: Forward declare dex helper\n\nReduce transitive dex includes where unnecessary.\n\nTest: mmma art\nChange-Id: I24ad409e97b07c84e2f15afb9533103a5b536f0d\n"
    },
    {
      "commit": "5774f57afc997ffe765c32199bd0d5e55d23005a",
      "tree": "5efdd0edb9c5a6d55c20f76c26fc7b330f014c87",
      "parents": [
        "7e56bd41cde4e489a11050d9e340bf8b5692d9e8",
        "bc802de2244ed9769d1ddf8841d7965a29493d9a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Fix some performance-X tidy\"\""
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "bc802de2244ed9769d1ddf8841d7965a29493d9a",
      "tree": "acac22c89c8cdedb65d6dc0657755851834500f7",
      "parents": [
        "35d4b9410c362685fdd8181483a6126dd3e20cdd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:24:11 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:25:25 2018 -0700"
      },
      "message": "Revert^2 \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 6856214f2c849600bcb94cc6e84975ba8cb69920.\n\nFix lifetime issue in imgdiag.\n\nTest: mmma art\nTest: m test-art-target-gtest-imgdiag_test\nChange-Id: I919db6310c0713313340adfe66bcd75a1c5c236e\n"
    },
    {
      "commit": "6856214f2c849600bcb94cc6e84975ba8cb69920",
      "tree": "a103f54ec49fac8d5cd15661f5c2d0cb5dab32e5",
      "parents": [
        "89de444350fdbd7df4fb4d95bb71f00e6673b466"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "message": "Revert \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 89de444350fdbd7df4fb4d95bb71f00e6673b466.\n\nReason for revert: Seemingly breaks imgdiag_test on device.\n\nChange-Id: I46084ecb4205575381aafffd90a0f1a1126e8d2d\nTest: mmma art\n"
    },
    {
      "commit": "89de444350fdbd7df4fb4d95bb71f00e6673b466",
      "tree": "57fa7214c4059afcfd11aa35a81999b8558b91b8",
      "parents": [
        "e383d23918db4eede30c3d78589d4639de3ec446"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 18 13:33:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:11:21 2018 -0700"
      },
      "message": "ART: Fix some performance-X tidy\n\nFix performance-for-range-copy, performance-unnecessary-copy-initialization\nand performance-unnecessary-value-param issues.\n\nTest: mmma art\nTest: m test-art-host\nChange-Id: I43d8736fc541030a3c61f66aeee0b9c2f1d295f7\n"
    },
    {
      "commit": "74f2ccc9fad3cfd8e04d24aceba1c58ce08884dc",
      "tree": "ba0051646cb8e8192f690259475101b61101d5c3",
      "parents": [
        "9fdd0125538fe63458aec68c4a40b025759bcf7c",
        "05e34f4cb8c9db165d1008721e874b9dd3db024b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "05e34f4cb8c9db165d1008721e874b9dd3db024b",
      "tree": "c41d397ef5cfb9d7918fceadcda3195a0d0d91de",
      "parents": [
        "428d80e3a49f732b39bb0c71cfde26451e3fdf4d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 13:19:05 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 14:03:37 2018 +0100"
      },
      "message": "Revert^2 \"Remove support for Valgrind in ART.\"\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nThis reverts commit 8b362a87d52a6668ffd2283ef6ffc274315f41c8.\n\nChange-Id: I23c76845e6ccf766f19b22b58a0d5161f60842a9\nTest: art/test.py\nTest: art/test/testrunner/run_build_test_target.py art-asan\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "18e2687c4126d66870d61d6548abc2c7661a66cc",
      "tree": "06eff605df9259dde8170c8efb48b11df4108eb3",
      "parents": [
        "2607d6c47114a18ccf4a532b20e1099d1dd8fcca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 17:19:02 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 07 22:13:48 2018 -0700"
      },
      "message": "Refactor ClassAccessor to use an index instead of ClassDef pointer\n\nRemoves a separate class_def_idx being required for getting the index\nof a ClassAccessor foreach loop.\n\nBug: 79758018\nTest: test-art-host-gtest\n\nChange-Id: Ie3010a17669f24cf492c678b55bdddba7ec62ea8\n"
    },
    {
      "commit": "75aed5d2a141fbc3b6dc3d285ffd3ed9d7261217",
      "tree": "72c7a4e57b41883784400d5b934f0bb97a76f5b8",
      "parents": [
        "fa304bd02dca606a9ab79a25d053ed897957cc3b",
        "ea341d2830298b666d7c6faf369d2fc3fe94fef8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 05 09:14:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 05 09:14:58 2018 +0000"
      },
      "message": "Merge \"Rewrite TypeLookupTable.\""
    },
    {
      "commit": "1f1cb9f2f0945dbcf6b79d0795b035233dfd9131",
      "tree": "fc5f72ef884e0eaa92f515a90cfd997b0938208a",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 09:22:46 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 20:41:12 2018 +0000"
      },
      "message": "Revert \"Revert \"Move runtime/ to ClassAccessor\"\"\n\nFixed misplaced UnhideAccessFlags to be outside of a conditional\nthat the code item is null / not deduped. This fixes an issue\nwhere these methods would not have had their access flags restored.\n\nBug: 77709234\nBug: 79758018\nBug: 91962648\n\nThis reverts commit cc7e20f9ec7b4a7a57f7196e5e8be67a727f21d3.\n\nTest: test-art-host\nTest: atest FrameworksUiServicesTests\nTest: atest CtsInlineMockingTestCases\n\nChange-Id: I7e5712cdcccef81e19ce81d26743c517b0b8a67d\n"
    },
    {
      "commit": "ea341d2830298b666d7c6faf369d2fc3fe94fef8",
      "tree": "ae20b9be257fcd1bcef71698ed06307c2932cced",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 11 10:33:37 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 13:06:42 2018 +0100"
      },
      "message": "Rewrite TypeLookupTable.\n\nImprove bit-packing of the data to store twice as many bits\nof the hash as previously. Check for bucket mismatch after\nthe first partial hash conflict (previous comments alluded\nto the bucket check but it was not implemented).\n\nAvoid an unnecessary unique_ptr\u003c\u003e indirection by making the\nTypeLookupTable moveable.\n\nTest: Rely on Treehugger.\nBug: 79514364\nChange-Id: I9fa6f712b037a6e6904d09c88670966486f56621\n"
    },
    {
      "commit": "cc7e20f9ec7b4a7a57f7196e5e8be67a727f21d3",
      "tree": "3aebc9078ad94f132f7a5df0813a97bbdd4c4ed9",
      "parents": [
        "2649ecf6c59a29262556aa356fbf894d49df8fe7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jun 02 05:37:39 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jun 02 15:45:36 2018 +0000"
      },
      "message": "Revert \"Move runtime/ to ClassAccessor\"\n\nSeems to cause \u0027atest CtsInlineMockingTestCases\u0027 and other tests\nto fail due to sending agents dex files with hiddenapi flags still\npresent.\n\nThis reverts commit 2649ecf6c59a29262556aa356fbf894d49df8fe7.\n\nReason for revert: Seems to be causing sysui test failures, maybe\n\nBug: 77709234\nBug: 79758018\nBug: 91962648\n\nTest: Tree-Hugger\n\nChange-Id: I2cab5d0d58808dd8beb38400d2811307f26e1021\n"
    },
    {
      "commit": "2649ecf6c59a29262556aa356fbf894d49df8fe7",
      "tree": "5534dfcb7d32be889acba07787b303c221869f82",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 14:07:52 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 31 11:24:30 2018 -0700"
      },
      "message": "Move runtime/ to ClassAccessor\n\nAdded more iterator helpers, added logic for dealing with hidden API\nflags.\n\nBug: 77709234\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I3e6d34dd3fe61f1a3256a1cc4c74b63a6bdf514c\n"
    },
    {
      "commit": "3d092995bbba4f7b559114d8c803890a5c90e646",
      "tree": "512abb2e5c327e127c594bb3233f17db544c67a3",
      "parents": [
        "525bb7427d7e97b5a4eba7b113ca065e79ad83d2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 13:36:23 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 15:18:36 2018 -0700"
      },
      "message": "Move oatdump/ to use ClassAccessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: I53d70063cfb0a4c94d9d95ac7e98758d97082c20\n"
    },
    {
      "commit": "0d896bd7da4f7b11559aa88aad82e9a9e170a4e4",
      "tree": "44a9278d98ace169e8296feba98038c173f29eaf",
      "parents": [
        "267c83529850f51cd690b3e31882aaae98601afd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 00:20:27 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 10:20:59 2018 -0700"
      },
      "message": "Add Method/Field iterator to ClassAccessor\n\nEnables ranged based for loops on fields and methods.\n\nFor visiting both fields and methods, VisitFieldsAndMethods will\nbe faster because of not needing to decode the fields twice for\nseeking purposes.\n\nAdded test.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host-gtest\n\nChange-Id: I593e23ccd138b87a27d8bab6927ff2b685c057f3\n"
    },
    {
      "commit": "7d43242e7061bc5d4ee6c34c45635eb50f3ec8e9",
      "tree": "865295cea0a64c99b6f5b24d84d70d159a2a334b",
      "parents": [
        "39b86481098427d34a5a9cd6c3bb430b57507da7"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 25 10:49:02 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 25 13:37:31 2018 -0700"
      },
      "message": "Move more test code to CommonArtTest\n\nComplete migration of libdexfile and libartbase to CommonArtTest.\n(libprofile and clients remain on CommonRuntimeTest because of required\nrefactorings.)\n\nBug: 78651010\nBug: 72216369\nTest: make -j 40 test-art-host-gtest\n      make -j 2 test-art-target-gtest\n\nChange-Id: Id10d8fc9002e0ad9451730627dfd848f5761c90c\n"
    },
    {
      "commit": "c8c8d5f484b9e4660de288aa51ce3f831317ee53",
      "tree": "fa329a0787a0e302ff40c7deefa97d5b79b28550",
      "parents": [
        "d804b76c0b8f9d2c94f3a8648aba26254742a1e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 11:56:14 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 10:48:53 2018 -0700"
      },
      "message": "Move compiler/ to ClassAccessor\n\nRemove usages of ClassDataItemIterator to reduces boiler plate code.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host\n\nChange-Id: Id41db3299bba3ea8debcbb0b9c721fa675adc064\n"
    },
    {
      "commit": "05dc23eab55efcfbd13a3de59864d0491e87b834",
      "tree": "baa2ac740d54d849f2c8c71dbe536f1fa63d3716",
      "parents": [
        "ac1cec6eae1646fede5a7355699a317a93a88ac5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 11:56:14 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 23 13:27:52 2018 -0700"
      },
      "message": "Add ClassIterator\n\nAdd a way to iterate over all of the classes in a Dex file. The\niterator returns a ClassAccessor for each class.\n\nAdded DexFile::GetClasses to return an iteration range for this new\niterator type.\n\nSample usage:\nfor (ClassAccessor accessor : dex_file.GetClasses()) {\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host\nChange-Id: I66e000aa11f433e72f6857496f4e89a0b811f5a2\n"
    },
    {
      "commit": "197f1ef6f4f2411d011d7e8f696775c3fbcffd86",
      "tree": "eacc720024479e75b03d12ac6764f2cd2ba945b3",
      "parents": [
        "04f0eaffa70e0384c07bb3680aa0724144358330",
        "8b362a87d52a6668ffd2283ef6ffc274315f41c8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "message": "Merge \"Revert \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "438918b2f37e11684fa1e80bbbfe3a8f657b79a9",
      "tree": "b77443efb26d5a18a5f5f7d853223dfb3c6ab919",
      "parents": [
        "f31343f1eab771010b3f293366149d2524f30902",
        "c2b4db61e5d0d9ec40b87b9a051aa1ac15ed1294"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 22 16:49:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:49:41 2018 +0000"
      },
      "message": "Merge \"Add ClassAccessor\""
    },
    {
      "commit": "f31343f1eab771010b3f293366149d2524f30902",
      "tree": "5187b2bceee4c7d5347750dc6ba0020172d5ef51",
      "parents": [
        "e816389b61d17b9a82d8e61426ddfcce20e1238c",
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "message": "Merge \"Remove support for Valgrind in ART.\""
    },
    {
      "commit": "c2b4db61e5d0d9ec40b87b9a051aa1ac15ed1294",
      "tree": "7d8ba5f2ab1c8ff66b17ce2352be3d7f0e12651c",
      "parents": [
        "8926b780fd75f23e8685e108e2d3f4905f3809fd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 18 13:58:12 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 21 12:59:22 2018 -0700"
      },
      "message": "Add ClassAccessor\n\nAims to replace ClassDataItemIterator with a cleaner and simpler\nabstraction.\n\nBug: 77709234\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I871a3e1cf213e0d81bfe4bb77790fbab2d13e44c\n"
    },
    {
      "commit": "2c5827a67a7f3d307384e98757f91c8b5d49f94f",
      "tree": "12d13e0e5c321639ca21d53eae61cfcaf3231c2d",
      "parents": [
        "80a7c29b29c50c1c6cf40093a4552dacd4c5d638"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 17 22:26:08 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 21 11:31:43 2018 +0100"
      },
      "message": "ART: Simplify operands in InstructionBuilder\n\nTest: art/test.py --host --optimizing --jit -r\nChange-Id: Ia408ae00637aa6a05a3ba54e1144ea00c6b335b5\n"
    },
    {
      "commit": "1f010164bea4714e9f653c52e8948c5d5305040b",
      "tree": "e69b2c3f4d2645d4097655f8914325945fe5dbbd",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 15 08:59:32 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 16 13:01:34 2018 -0700"
      },
      "message": "Move ArtDexFileLoader to libdexfile\n\nAdds a dependency from libdexfile on libartbase, but allows the use of\nMemMap loaders, etc.\n\nBug: 78652467\nTest: make -j 40 checkbuild\nChange-Id: I15cf33893ca9192050762f8350a3cc1e39f88dc5\n"
    },
    {
      "commit": "00e15d651e705640d4fdf206faf8317d69b20758",
      "tree": "fc8dd0911ee17433a679a052f58c8eb8c2d0b75f",
      "parents": [
        "6c99dc805acf46ff0047163e29d6c08e182e73a2",
        "06d10a78506fae7e033795cda7b1d9d0e1f1fff5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 11:35:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 15 11:35:20 2018 +0000"
      },
      "message": "Merge \"ART: Add dex::ProtoIndex\""
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "93fea8afb29dd5576bcf45df30add112f4469f52",
      "tree": "50e86f6530c304a0c3e010d2c95a9809f9b8576d",
      "parents": [
        "768c6cc3c4ae3aaf0fa65e10c685567371e18dc9",
        "2300b2d45aba525a163688e5e8faa7448dbfcaef"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon May 14 15:24:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 14 15:24:16 2018 +0000"
      },
      "message": "Merge \"Remove MemMap dependency on libbacktrace\""
    },
    {
      "commit": "2300b2d45aba525a163688e5e8faa7448dbfcaef",
      "tree": "734e02b52a162b28f17e637320ffa08a555a8115",
      "parents": [
        "42805fa0afeefbc4fd4e3339940582bdda9c77bd"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 10 14:20:10 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 11 16:48:36 2018 -0700"
      },
      "message": "Remove MemMap dependency on libbacktrace\n\nRemove the dependency on BacktraceMap/libbacktrace for MemMap.\nThe removed code was entirely debug, but we may want to add back\nsome of it to facilitate test debugging.\n\nThis removes the dependency from libartbase on libbacktrace and\nmakes it possible to use libartbase from libdexflie without\ncausing a cyclic dependency.  This facilitates moving\nArtDexFileLoader and some other code into libartbase, and gets\nrid of some debt accumulated during all these refactorings.\n\nBug: 78652467\nTest: make -j 50 checkbuild\nChange-Id: Ic575a764817ba660b851f7d5b5c60e43f8356fea\n"
    },
    {
      "commit": "9d93cd6518633be803cc140b51d0ad5093fc25f2",
      "tree": "8619f55be46f787e4347435f436ace283e8dbc06",
      "parents": [
        "da1e6d2a8d41c130eefbb4ad3b828f2cd1470529",
        "0d0f3164160e50ddb78022f662c5438fc167f50d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 11 12:19:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 11 12:19:20 2018 +0000"
      },
      "message": "Merge \"Handle multidex in LocationIsOnSystemFramework.\""
    },
    {
      "commit": "0d0f3164160e50ddb78022f662c5438fc167f50d",
      "tree": "13bfdad1117db0adfb8b434ff1b8e1589c0c43ea",
      "parents": [
        "9d7905fffb9eca8f4fa6f3f3d7d3deb9718e3005"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 12:55:40 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 10 22:49:34 2018 +0100"
      },
      "message": "Handle multidex in LocationIsOnSystemFramework.\n\nbug: 79111915\nTest: art_dex_file_loader_test.cc\nChange-Id: I507ad98c62b4c589196685d74abdeaf748502a61\n"
    },
    {
      "commit": "59a49a6fe102b26aacda906b6a2c466d84819c73",
      "tree": "f33b21de298b1943ae3483ba877cdbf50313e049",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 09 10:58:27 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 10 12:38:11 2018 +0100"
      },
      "message": "Implement VMDebug API to mark a class \"platform\"\n\nAdd a native implementation of VMDebug.allowHiddenApiReflectionFrom\nwhich takes a Class object and sets a new access flag\nkAccSkipAccessChecks on the corresponding mirror::Class instance.\n\nThe function will throw a SecurityException if the process has not\nbeen forked as Java debuggable.\n\nhiddenapi::IsCallerInPlatformDex is extended to take an optional\nargument of the mirror::Class of the caller. If it is set and\nthe class has kAccSkipAccessChecks, the caller is allowed to\nacccess non-SDK APIs.\n\nNote that the mirror::Class of the caller is only provided for\nreflection and JNI. The access flag is ignored for other means of\naccess.\n\nBug: 64382372\nTest: N/A\nChange-Id: I2bf0ca7dcb45c17fe91eb2d421c947b892bd6fec\n"
    },
    {
      "commit": "abd9e1515bc6be88372c61071971c5432a51553d",
      "tree": "821b3e27a022ff907cfe0b953140ed4ed354c8d8",
      "parents": [
        "2cd2eea6d14acdc4a9b62df7e9fcffd997962da3",
        "5a2993cd9a158a8fb36d1fdd65d796b3e6e6db2c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 08:44:56 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 09 08:44:56 2018 +0000"
      },
      "message": "Merge \"ART: Templatize DexFileVerifier::CheckIntraIdSection().\""
    },
    {
      "commit": "5a2993cd9a158a8fb36d1fdd65d796b3e6e6db2c",
      "tree": "230c7643d031d5d57500b0219f9ab95e3d1f87ee",
      "parents": [
        "b865d9af3bb5f4777dbe9cbd60cdb2a8fe5f0557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 18:11:25 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 08 18:19:15 2018 +0100"
      },
      "message": "ART: Templatize DexFileVerifier::CheckIntraIdSection().\n\nAnd use macros in DexFileVerifier::CheckIntraSection() to\navoid code duplication.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/672438\nbut the improvements in instruction count measured on host\nwith \"perf stat dexdump2 -c \u003clarge apk\u003e\" are absolutely\ninsignificant (0.0003%).\n\nTest: Rely on TreeHugger.\nChange-Id: I95fd3b2f7f2d767e5446dd71552b34ea55f4bd47\n"
    },
    {
      "commit": "166546c3579b7a9deb413f8e44ad94b8ed41335b",
      "tree": "766450bb9576909e925c5e7d5e1b81c25dd05839",
      "parents": [
        "2e6f69c704202d41f0ab5ab0aa65583a26184e51"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:50:38 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:23 2018 +0100"
      },
      "message": "Fix hidden API flags decoding for intrinsics\n\nHidden API decision logic would try to decode the access flags of\nintrinsics directly, bypassing the override in ArtMethod. This patch\nget hidden_api.h to use the same code path.\n\nThis also fixes CtsHiddenApiDiscoveryTestCases where the access flags\nof blacklisted APIs are tested. VarHandle intrinsics would not pass.\n\nBug: 64382372\nBug: 72430785\nBug: 78230396\nTest: cts-tradefed run cts --module CtsHiddenApiDiscoveryTestCases\nMerged-In: I080313dd91bbee2d7d98b00c02e224974b344c01\nChange-Id: I080313dd91bbee2d7d98b00c02e224974b344c01\n(cherry picked from commit 14c212a44ac9a3ad12025ebf30836129669fa949)\n"
    },
    {
      "commit": "a92f51bc0cb959a9c54d998ef0e7a08d740df8db",
      "tree": "3ec1a51ab807a735f0994a3e64f6429e1be9aea4",
      "parents": [
        "d637fdac0ea396780b12052c7ab9de61744bcd4b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 01 11:50:33 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 02 19:40:19 2018 -0700"
      },
      "message": "ART: Follow-up changes to DexFileVerifier\n\nAddress comments.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I9649f4342986995bf2aeb83e89c1ea74a9d9b74b\n"
    },
    {
      "commit": "d5f8de8bc61160bb2cecdcc0f5aa54d151b6176a",
      "tree": "efecd6d3dffd3a1d768b87a111d9e60335d9108c",
      "parents": [
        "9417b6b81393253a56b1b9bb4c7d8a2a2966707e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 14:12:03 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 01 16:23:42 2018 -0700"
      },
      "message": "Add CommonArtTest\n\nAdd a test framework that does not start up a Runtime object.\n\nBug: 78651010\nTest: make -j 40 test-art-host\nChange-Id: I6c8af384af5fe1289c6cf137635e94934ac3795d\n"
    },
    {
      "commit": "0e4e814e09bea5c3c169c73122e8ebd53a8d04f4",
      "tree": "ba56aa1c181c59eef8c1090e89fcbe14ee2988fc",
      "parents": [
        "56189d23563610a63064b9ef97e5851f21bcadc8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 12:19:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 30 13:57:32 2018 -0700"
      },
      "message": "ART: Find and cache indices for method names\n\nCache the range of string indices starting with \u0027\u003c,\u0027 especially the\nwell-defined \"\u003cclinit\u003e\" and \"\u003cinit\u003e,\" to optimize the constructor-flags\ncheck.\n\nSaves about .2% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I9ed26bb0382a169d945bcec4067c0166c200e227\n"
    },
    {
      "commit": "0b9b1c6d5bb8b10aac7bd686fe5e4b947fdfaccc",
      "tree": "79d4ad69b73ff5237c554638e59335c5d1f69469",
      "parents": [
        "c0147ed51f4e4d6ecfc9fe71e8d7619d79bf1d6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:20:30 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:34:45 2018 -0700"
      },
      "message": "ART: Improve bit-test function\n\nImprove the test for single-bit-set by using POPCOUNT. Saves about\n.1% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: Ifaa5987f1ca9e7507ac6c57dac7da5fae6dcef8d\n"
    },
    {
      "commit": "c0147ed51f4e4d6ecfc9fe71e8d7619d79bf1d6a",
      "tree": "c9953d926d2aef1f9869cf8a0dd745ca34b14e73",
      "parents": [
        "3153915714c48a57fecb5e41ca10b7fb16df52f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:40:09 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Templatize dex-file-verifier check code\n\nTemplatize by item type to avoid repeated checks. This saves about\n1.4% of instructions.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I002c99ac1241a33ada85c1a991fb77ff06f76ebe\n"
    },
    {
      "commit": "3153915714c48a57fecb5e41ca10b7fb16df52f6",
      "tree": "9d259c272733c89475da3d202027d58d35015c55",
      "parents": [
        "a111ab1f5703ce839983a86caffae9bcad34c86f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 13:34:29 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Use alloca to avoid an expensive allocation\n\nAttempt to avoid a new[] for common cases.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I393ecdeef58f885f6e7a6ffa216ed37a4726c227\n"
    },
    {
      "commit": "a111ab1f5703ce839983a86caffae9bcad34c86f",
      "tree": "38366c057cea39db660576c9c9c44b4353781853",
      "parents": [
        "0ecbdb32eb0f829614c25a54a165f43c3ad676f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 11:41:13 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 27 09:04:29 2018 -0700"
      },
      "message": "ART: Refactor class-def retrieval\n\nPeel the first loop iteration to avoid excessive branches and loads.\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: I22f403254b01d34837dde1decc05e2d00700ffeb\n"
    },
    {
      "commit": "8047d8477c5723ae8cc9411531d0c5d6444ed974",
      "tree": "8cd0fb7962e064060683581d0b53afac44c46481",
      "parents": [
        "189ee81f9768f4ffbd3ffa52997a229c81ac0c7e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 08:40:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 25 10:12:39 2018 -0700"
      },
      "message": "ART: Change direct-method overlap detection\n\nAvoid allocations in a hash set when trying to ensure that there are no\nmethod-ids denoting both direct and virtual methods. Instead use a copy\nof the item iterator, as the methods are guaranteed to be sorted.\n\nSaves 1% of instructions for a compiler-filter\u003dextract compact-dex-level\u003dnone\ncompile:\n\n                 Before             After\nSmall app      545,345,563       540,654,732\nLarge app    8,040,713,801     7,956,413,657\n\nBug: 78568168\nTest: m test-art-host\nChange-Id: Ia2a0fbb82dad5d9fa781cbab46fe543d1dd0645e\n"
    },
    {
      "commit": "4a68b66f468e1df989cc6f1526dadd1618e4f793",
      "tree": "ec1dc5e0f60a6a6d1c8ec7d91842f98bbdc704f0",
      "parents": [
        "a90cc8715f31f3f082cb113129f05ec21ebd14ca"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Apr 20 12:16:36 2018 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Apr 20 19:18:36 2018 +0000"
      },
      "message": "Remove unnecessary definition of \u0027art::Split\u0027\n\nBug: http://b/78352390\n\nFix duplicate symbol warning found with lld\n\nTest: build with\nhttps://android-review.googlesource.com/c/platform/art/+/669149 and\nverify that the duplicate symbol warning is no longer generated.\n\nChange-Id: Ie77d1bfaa84ec034ef9bc39dd63422d859e0f7c5\n"
    },
    {
      "commit": "9c4a015cf01989597fd899011dba310b704dacaa",
      "tree": "17101dd177beb28c1d28c8eddab645bc7d1af984",
      "parents": [
        "6485701497edf2fd4e5296c3715929ad44ea9752"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 12:23:54 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 09 23:30:08 2018 +0000"
      },
      "message": "Move more runtime code to libartbase, libdexfile\n\nMove some code that logically belongs to libartbase or libdexfile to\nthose places respectively.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: Idfded5d24b40d8587011681e6235b6672846da19\n"
    },
    {
      "commit": "dffcbe9d8686bc2010695c95c3a6573596af34fe",
      "tree": "0009e320164629b6cff4a2e1ea06bab0a43e38e3",
      "parents": [
        "faa7b29f1e0c311e42ab5a265cb1b17036ca5a10"
      ],
      "author": {
        "name": "John Stuart",
        "email": "johnstuart@google.com",
        "time": "Fri Apr 06 16:31:43 2018 -0700"
      },
      "committer": {
        "name": "John Stuart",
        "email": "johnstuart@google.com",
        "time": "Fri Apr 06 16:31:43 2018 -0700"
      },
      "message": "Remove unused DexFile UTF-16-based string lookup\n\nDexFile has 2 methods for finding a string ID given an input string:\n- MUTF-8 (C null-terminated)\n- UTF-16\n\nOnly the first one is used in ART.\n\nBug: 77725588\nTest: test-art-host\nChange-Id: I2bdaecf4914aa346b77c9a0f6ad17f96abbead9d\n"
    },
    {
      "commit": "11ed0275c48ad9a6301d914d3344a27467fcaf0c",
      "tree": "ad3995e2cc5ba7c1ac269e10712cd979a00de6f5",
      "parents": [
        "dd43fe71d956ca16aecf3a12d12a02dde72cfe82"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 28 18:18:48 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 29 13:59:43 2018 +0100"
      },
      "message": "[veridex] Detect reflection uses.\n\nAdd HiddenApiFinder to walk over the code item of\napp dex files, and find static linking uses and potential\nreflection uses.\n\nbug: 64382372\nTest: m\n\nChange-Id: I35f0b276703504f2e27a80007d410625ba7c9af3\n"
    },
    {
      "commit": "8e1a7cb303d7c8f763dfb99ae311b820996b1ab4",
      "tree": "ea952245e2b907c44d5c0fcadf90f00a1fe31913",
      "parents": [
        "10c4390a7d63775b1c7e6f6a291e9aade388d733"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 08:14:25 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 27 18:15:21 2018 +0100"
      },
      "message": "Revert \"Revert \"Allow hidden API access from system libraries\"\"\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nThis reverts commit 0127b71a2588efcd1a53c192c5c267157878b010.\n\nPrevious CL saw two issues:\n- buildbots would set non-existent ANDROID_ROOT for host-side builds\n- calling realpath on unquickened dex files would overflow the stack\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nBug: 76452688\nBug: 76429651\nTest: art/test.py --target -r -b -t 674-hiddenapi\nTest: SystemUI APCT test\nChange-Id: Ie07a088509002593353965d3d24bf7362b643f40\n"
    },
    {
      "commit": "0127b71a2588efcd1a53c192c5c267157878b010",
      "tree": "cfe89ca742bed927e67d9cf926937fe5e6f89347",
      "parents": [
        "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 19:31:41 2018 +0000"
      },
      "message": "Revert \"Allow hidden API access from system libraries\"\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\n\nSeems to cause run-test issues.\n\nThis reverts commit eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5.\n\nChange-Id: Ia9b3d946742dbfde4fb56cf14413fde0600c8252\n"
    },
    {
      "commit": "eefabd28c21e6ae02ca05e97bd22f9e23cbf98a5",
      "tree": "58e4c2635e0d5682c3385bed639664ccfdd44f6a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 22 16:27:18 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 26 08:05:33 2018 +0000"
      },
      "message": "Allow hidden API access from system libraries\n\nLibraries like RemoteDisplay provide an APK that an app loads into\nits process and which accesses internal APIs on the app\u0027s behalf,\nwithout exposing the internals to the app. These libraries are\nconsidered part of the platform, but were not exempt from hidden API\nchecks because they are not loaded with the boot strap class loader.\n\nThis patch adds a new flag to DexFile class which the constructor\nsets to true of the canonical location of the newly loaded dex file\nstarts with \"${ANDROID_ROOT}/framework/\". Hidden API enforcement\nthen checks this flag when determining whether the caller of\na hidden class member is allowed to access it or not.\n\nBug: 64382372\nBug: 76138670\nBug: 76165623\nBug: 76112393\nTest: art_dex_file_loader_test gtest\nTest: art/test.py --gtest\nChange-Id: If062bd668d7ba494bbb7b828e40932748d173b9a\n"
    },
    {
      "commit": "d45863a976c2fd10cf179d8ff42926a7a37c70f0",
      "tree": "5c75cee282e815780c56127e13fb420a0851b54e",
      "parents": [
        "9ec1e24ebc683b15bb9c6db5554ac2ff9458adae"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 21 18:16:36 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 21 18:28:28 2018 -0700"
      },
      "message": "Run dex verifier for OOB + compact-dex-level combination\n\nPreviously, there was logic to not run the dex verifier if\ncompact-dex-level was not \"none\". The idea was that the dex writing\nwould have run the verifier. This caused issues for OOB APKs since\nthese don\u0027t write out the DEX. This CL moves the dex verifier\navoidance logic to the dex loader for the compact dex input case.\n\nBug: 75970654\nTest: test-art-host\nChange-Id: Ic7af6857edb8f7d8e449fee6a544f184aad79b3a\n"
    },
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\n"
    },
    {
      "commit": "c17b7d80652765750fa7f2baf236061014b23f93",
      "tree": "1be2a3330aab9d6b216bd90685e0133ce5bd597e",
      "parents": [
        "2a66809d28c9ee1cbabe52991dbf526095c96c04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 14 14:00:04 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 15 09:27:08 2018 -0700"
      },
      "message": "Add owned section for CompactDex\n\nThe owned section is the part of the shared data section owned by\na given dex file. This enables efficiently attributing an offset to\na dex file.\n\nBug: 74443371\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I2de9a281e18b02a20c3dcf5f484eacb591220cdc\n"
    },
    {
      "commit": "281fee0dd44a4349fec38fd6f6348ca381c80218",
      "tree": "e82420586df1049df822cec0e33ac52df35e62e9",
      "parents": [
        "8ba5641ddc43fc13cdb0158bd9f3237c4a90a356"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 12:59:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 08 10:36:56 2018 -0800"
      },
      "message": "ART: Remove static libbase\n\nExcept for static binaries, do not include a static copy of libbase.\n\nBug: 34867873\nTest: mmma art\nChange-Id: I6ed37b45c01c9dac33c4fc3bb71ee416138c2cb8\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "cc4e7b7c7b37d9f7bd6e2bfe22e36308150dddad",
      "tree": "a9320d2f496ca2795e521e73181f8bd126c81724",
      "parents": [
        "6dfaa0c6dc4a6906bd8522a9d9189be378695e0f",
        "a19b7649faf8780737be7ce3ec48a12d81c6d69f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 27 17:26:27 2018 +0000"
      },
      "message": "Merge \"Revert \"Full-stack integrity: check vdex contents.\"\""
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "7b5e244b9920de20807487b0bffee7ebb7f24ce4",
      "tree": "32d895616958a521bb11aab4d9434df8b843adc9",
      "parents": [
        "c57b3ae06f78b7386b6866a1ea265b3c790026dc",
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 27 12:24:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 27 12:24:54 2018 +0000"
      },
      "message": "Merge \"Full-stack integrity: check vdex contents.\""
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "2daa13448d5caeb7eb4f7fd3981c0d430264c7c3",
      "tree": "547222519fc7627a99eae914fbaa39eb294a82c6",
      "parents": [
        "b2f1edc3d1f162bd9007f10bc66009eac5b2daab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:19:28 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 22 10:37:31 2018 -0800"
      },
      "message": "Fix unquickening logic for quickened input dexes\n\nIn the case where an input dex is already quickened (i.e.\nobfuscation), do not attempt to unquicken it. This is done by\nswitching the quicken info table to the compact offset table (used by\ncdex debug infos).\n\nAdded test.\n\nPosssible to get a bit of extra savings by deleting the quicken info\nnum entries field.\n\nQuicken filter size regression average on golem: -0.14%.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest-dex2oat_test -j64\nChange-Id: I5534a7509b4c718a9b959fa43b82bde857e0b59e\n"
    },
    {
      "commit": "b2f1edc3d1f162bd9007f10bc66009eac5b2daab",
      "tree": "f4c196b5f313167737835a33227778eaf62ac774",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9",
        "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 22 16:20:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 16:20:17 2018 +0000"
      },
      "message": "Merge \"Remove duplication, split tests\""
    },
    {
      "commit": "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "8ccef7e84280f63723588c1ad6194af0910e24d6",
        "b8b9387c0d7420b463a9ca11bf18ae86f3ed0a65"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 14:49:12 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 14:49:12 2018 +0000"
      },
      "message": "Merge \"ART: Support for VarHandle invokers\""
    },
    {
      "commit": "b8b9387c0d7420b463a9ca11bf18ae86f3ed0a65",
      "tree": "d7fba6a12a1d074d8d0c1a80d1eae0fd9a41b5ed",
      "parents": [
        "ae3c5cc582442e3493aa23155f2ee2f6b4613923"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 30 07:51:10 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 22 12:45:02 2018 +0000"
      },
      "message": "ART: Support for VarHandle invokers\n\nEnables VarHandles to invoked by a MethodHandle.\n\nBug: b/65872996\nTest: art/test/run-test --host 713\n\nChange-Id: I4672dd50654396c2b45bd212a523698cf22879eb\n"
    },
    {
      "commit": "1c128fa54eee5405be816402ac7fb0b299e9106d",
      "tree": "f0fd0cf305bfa5907a44f4ebf7290f007478c25f",
      "parents": [
        "5b3628898b84f6fb0e9deefff1e551946edcd596",
        "ccb0019c9c60617dcd420c6c92a931e1d82c4920"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 03:00:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 03:00:54 2018 +0000"
      },
      "message": "Merge \"Fix a memory leak\""
    },
    {
      "commit": "5b3628898b84f6fb0e9deefff1e551946edcd596",
      "tree": "6f0e0b482f23a9a1fdb4cf3699132e87fc3379be",
      "parents": [
        "8f6dc914758848c91a7d8a0a6733c8e24b9fa384",
        "b69d2d3c3af7a7a62efb38d04dec878ea9b0b43c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 02:29:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 02:29:08 2018 +0000"
      },
      "message": "Merge \"Remove generate-operator-out.py symlinks\""
    },
    {
      "commit": "b69d2d3c3af7a7a62efb38d04dec878ea9b0b43c",
      "tree": "4220e5b7475b5c53b19609ef46d1d081bf8357cb",
      "parents": [
        "c758875461cca47d1b342c3c56a218a704b04365"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 13:37:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 22:42:13 2018 +0000"
      },
      "message": "Remove generate-operator-out.py symlinks\n\nRewrite the operator out step to use a python_host_binary instead.\nTest: mma -j50\n\nChange-Id: I1503ad9851bf6d7bae8964f7cb91ba7f19b660ca\n"
    }
  ],
  "next": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb"
}
