)]}'
{
  "log": [
    {
      "commit": "1e70b89afe0e022ec51210ea0da1e0706e194fd0",
      "tree": "1c2b9d0c52e008795ec122b4b904c85c103b3e31",
      "parents": [
        "61a9328e807426636d3e29699cd978d4a7a345c0",
        "6c70224ebd667b52a862f850893f6528af63f3e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "message": "Merge changes Id4ffa9f9,I1bb5d05d\n\n* changes:\n  Replace MergeSets() with std::set::merge().\n  Replace StringPiece with std::string_view.\n"
    },
    {
      "commit": "6c70224ebd667b52a862f850893f6528af63f3e8",
      "tree": "43e1ed17ee7fdfd7081cb07e11700b77c38a5a52",
      "parents": [
        "8581e2a234b562880c1d6c6b5ad14d23f7b597ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 16:17:33 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 08 17:19:20 2019 +0000"
      },
      "message": "Replace MergeSets() with std::set::merge().\n\nAnd clear up ownership of the VerifierDeps being merged\nby using std::unique_ptr\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 123750182\nChange-Id: Id4ffa9f9fa1968fa762b9e825f25827240f6d45d\n"
    },
    {
      "commit": "e0f8bb99ad5c6f33d530f1157e1a116c42970deb",
      "tree": "0bc6b20a848b0d15dc25e601386c70581c137516",
      "parents": [
        "3b241361b639c297c99a1b00f40e89ad7fd184b8",
        "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 08 10:24:41 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 08 10:24:41 2019 +0000"
      },
      "message": "Merge \"Replace StringPiece with std::string_view in profman.\""
    },
    {
      "commit": "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6",
      "tree": "16e82b22829a269dcb7b8c305bb0a44c6f74c58e",
      "parents": [
        "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 17:38:26 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 12:29:35 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in profman.\n\nAnd in dexoptanalyzer and hiddenapi, see below.\n\nThe parsing helpers in utils.h were mostly unused, only\nprofman was calling one of them, so move that helper to\nprofman and rewrite and fix it, remove the other helpers.\nThis exposed dependency of dexoptanalyzer and hiddenapi\non StringPiece indirectly included from utils.h, thus we\nreplace it with std::string_view also in those tools.\n\nDuring the rewrite, avoid using std::string_view::data()\nas a null terminated string, prefer to fall back to the\noriginal null terminated raw option instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: Ibeec8069a5d82ea556e03e4577812f94dca6f387\n"
    },
    {
      "commit": "8e1ca6103de597cec698b2337d19a94d17ae8338",
      "tree": "c485c00a7a74406670b36b937a150f72468a0565",
      "parents": [
        "3a8761f8451276300350bcfa50910105e88505df",
        "8fd6722f5840385462a31bd701426b3749ac1031"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "message": "Merge \"Generalize vdex class redefinition check\""
    },
    {
      "commit": "8fd6722f5840385462a31bd701426b3749ac1031",
      "tree": "7e5f202ed5596815c3638173273ab7d490c25636",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 05 18:13:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 06 17:34:57 2019 +0000"
      },
      "message": "Generalize vdex class redefinition check\n\nThe check introduced in CL If0c56b1970d8ebe701d198ffccec52f586aea9e6\nskips fast verification if an apk\u0027s class is overshadowed by a class in\nboot classpath because the vdex dependencies do not contain intra-apk\ndependencies.\n\nHowever, the change only checks for presence of a duplicate class in the\nboot classloader, while a duplicate class could be in any of the parent\nclassloaders. Fix this and move the check into VerifierDeps to make it\na proper part of the verification process.\n\nThe CL also refactors VerifierDeps::ValidateDependencies to output\nan error string for better logging.\n\nBug: 122968669\nTest: test/testrunner/testrunner.py -t 719\nTest: m test-art-gtest-verifier_deps_test\nChange-Id: I0d06b82e31088c58d4493723a5435309740f1d0c\n"
    },
    {
      "commit": "e027d727b833930f1bd0029bc1b2cf750d8af5da",
      "tree": "0bb05206b8c019798bd3ffede02fb9243d08e615",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 10:13:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 11:56:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in class.h.\n\nTranslate the std::string_view to StringPiece where\nneeded for comparing with Signature until we change\nthe Signature::operator\u003d\u003d() to take std::string_view.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I9699f13882353d84dc69e6b8e30d12dac4bace24\n"
    },
    {
      "commit": "b0f16e6fca217b67e0b47da49896781dba429130",
      "tree": "c176db28304cf2dbaa1b5f003c635736a15a229b",
      "parents": [
        "59ae4f949c26266a60ba0318995b46b4308312bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:17:37 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:38:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in RegType.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I888a268bbec4eb0e5a19b0bc2a4a97e3492feda5\n"
    },
    {
      "commit": "43e43251a011c05c21fe120ba791313b6ea53d5d",
      "tree": "29dc4d668d4887f807213fb5b5c69b2e9578a8a0",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 12:06:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:03:16 2019 -0800"
      },
      "message": "ART: Handle clobbering in verifier peephole\n\nBug: 121191566\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nTest: m test-art-host\nChange-Id: I1c983fca5f92570f9dba4fb8ef3bcd3c7d3854f2\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "dc39d32cc0c72af00b58c58077fb2cad6774df03",
      "tree": "ae3cce77bb8540717273fca4aad880e6b5a238bc",
      "parents": [
        "ff71e663a08b4218fc9d08f8e65ad7da84a4ab99"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:26:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:31:03 2018 -0700"
      },
      "message": "Revert^2: \"ART: Restrict some checks in the verifier to P+\"\n\nReinstate old behavior for apps targeting earlier releases.\n\nThis reverts commit 5ff2596da427351308992a1677348e460a398591.\n\nBug: 111969862\nBug: 113863780\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I4fd967271cf43e21af34739a08907a1a7953539a\n"
    },
    {
      "commit": "ff71e663a08b4218fc9d08f8e65ad7da84a4ab99",
      "tree": "eac052f9eb2a23f395338bf08d6e526a45375b89",
      "parents": [
        "77bb25b037d120ecbf5e7bbd90be6375b9e61957"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:25:12 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:27:43 2018 -0700"
      },
      "message": "Revert \"ART: Restrict some checks in the verifier to P+\"\n\nThis reverts commit 2337d53846d9d2e7f82f8cf64ff25585ad010339.\n\nChangeset is incomplete and triggers debug errors.\n\nBug: 111969862\nTest: n/a\nChange-Id: I74b5feb054403696433be24147b5484f2c3d27e9\n"
    },
    {
      "commit": "125a3a4604f7d543334ee6b3d6fd15d0a6e5897a",
      "tree": "d4c572017ae0bc1c311b865cce6d8d9592f141dd",
      "parents": [
        "025059b5bc5974717e94d95cf2d82ff1ad51e75d",
        "2337d53846d9d2e7f82f8cf64ff25585ad010339"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "message": "Merge changes I207718d6,I700ef52e\n\n* changes:\n  ART: Restrict some checks in the verifier to P+\n  ART: Add API level to verifier\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": "2337d53846d9d2e7f82f8cf64ff25585ad010339",
      "tree": "713afb905bc3da0d96bf4e2962b582474147ee17",
      "parents": [
        "6cc23acba91d26d7afd6bc681004ac5865a8a163"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 18:58:25 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 18:58:25 2018 -0700"
      },
      "message": "ART: Restrict some checks in the verifier to P+\n\nReinstate old behavior for apps targeting earlier releases.\n\nBug: 111969862\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I207718d65f906817d20d5b32b53011530b616fab\n"
    },
    {
      "commit": "6cc23acba91d26d7afd6bc681004ac5865a8a163",
      "tree": "d5b6850d7ce511658a33ca417764eac92cafe2d1",
      "parents": [
        "e9dce6a280057315a8a58ed46190c9a893c90fba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "message": "ART: Add API level to verifier\n\nPass API level to verifier. In preparation for API-level dependent\nchecks.\n\nBug: 111969862\nTest: m test-art-host\nChange-Id: I700ef52e28436a7fda8b9d9ef29841110ed6d3bb\n"
    },
    {
      "commit": "0b0ffc1429fde6fbf9bac20b8582e71ff1569451",
      "tree": "8da642e25c1e0dce946290389a9860092da184d1",
      "parents": [
        "72fb8639a61e100dcc39645c35a5c3e394ab0eba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:41:27 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:58:21 2018 -0700"
      },
      "message": "ART: Add parameter for verifier timing log threshold\n\nMake the old 100ms timing threshold configurable.\n\nBug: 111857793\nTest: m test-art-host\nTest: manual\nChange-Id: I6c3d0c05acbe9d35d71999522077d5768c4e6c20\n"
    },
    {
      "commit": "b07dcdba37e9a5652b7754a6bd9c3538880d6668",
      "tree": "15524fb0505323ec78bf4d8841245da6fe61d6ee",
      "parents": [
        "6250dfa22577160b270f3f3165260739707cf7d3",
        "c945e0d410ca8d4e9ba09272e8727a3192f1e449"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "message": "Merge changes I87f2999f,I8af0e845\n\n* changes:\n  Remove ArtMethod\u0027s declaring class state checks.\n  ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "ce75049c31e7064b00104ca7f65fe12faeabc391",
      "tree": "6f7bb5977a99db0d89c74238576956f0aa1d4dad",
      "parents": [
        "0495fb053094181de232e3fa390806a9110ba208"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Fri Jul 13 17:07:25 2018 +0300"
      },
      "message": "Revert \"Revert \"Handle a special case of lock aliasing during lock verification\"\"\n\nThis reverts commit 753a055b5398fcf00d2633565452679c8fb93e9d.\n\nReason for revert: Fixed failing tests\n\nTest: m test-art-host\n\nChange-Id: I4a8be656288199108c05c9d302393e1efa41a7a4\n"
    },
    {
      "commit": "97c465ca6ee4c76766f8abaa3a98ee0329019c5c",
      "tree": "ea4236d021cfa3df45e27efe1556732a06c6737b",
      "parents": [
        "91b6befbb0a323ccbdce5f0631e260346e04f045",
        "753a055b5398fcf00d2633565452679c8fb93e9d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "message": "Merge \"Revert \"Handle a special case of lock aliasing during lock verification\"\""
    },
    {
      "commit": "753a055b5398fcf00d2633565452679c8fb93e9d",
      "tree": "e334f68df51c6078fd51f293a38146c6fcb6c106",
      "parents": [
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "message": "Revert \"Handle a special case of lock aliasing during lock verification\"\n\nFails run-test with --tracing or --debuggable.\n\nThis reverts commit 82898ed01eedfb82a5b4adfe1327b827210af3ca.\n\nChange-Id: I8005a1fbe63c6508d9abd5bea77679201c71ab46\n"
    },
    {
      "commit": "91b6befbb0a323ccbdce5f0631e260346e04f045",
      "tree": "ceb3c5608472a396f4f090c315c5cf16386fabd1",
      "parents": [
        "4a72f8b1baec1fb93105e381edb1bad60e372540",
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "message": "Merge \"Handle a special case of lock aliasing during lock verification\""
    },
    {
      "commit": "82898ed01eedfb82a5b4adfe1327b827210af3ca",
      "tree": "c801d41b2491271324a06343efc8618d5ea063a2",
      "parents": [
        "dc53f1616d656a757fb26039f387b7ee44ff2f1d"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu Jul 05 12:41:54 2018 +0300"
      },
      "message": "Handle a special case of lock aliasing during lock verification\n\nCheck whether the two instructions immediately before a monitor-enter\nare const-class, establishing previously untracked lock aliasing\nin a low-overhead manner.\n\nTest: m test-art-host\nChange-Id: I94c187cbc422f8f0c13b688b09a5d9579a735b56\n"
    },
    {
      "commit": "e383d23918db4eede30c3d78589d4639de3ec446",
      "tree": "a103f54ec49fac8d5cd15661f5c2d0cb5dab32e5",
      "parents": [
        "dbf540399a2aaddad00b1233b80808c80dc0d443"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 12:29:51 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:09:45 2018 -0700"
      },
      "message": "ART: Mask garbage-memory warnings\n\nAdd invariants or NOLINT to let clang-analyzer understand that\nthere\u0027s no garbage involved.\n\n(The analysis itself is too expensive to force it on for all\n local builds.)\n\nTest: mmma art\nChange-Id: I6148d743321248195abb3a8f646e63941f11f9a9\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": "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": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "a8bba7d0853b372aea3ed3ea154fb2b2a23c2c9d",
      "tree": "973a89870e0cc8912401503ebab1b709a9df5ba0",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 15:18:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 09:48:59 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassLinker::FindClass(), fix 1 stale reference use.\n\nThread::CreateAnnotatedStackTrace() was using a stale\nreference `aste_array_class`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I191907c0053456bb57de425aa6ccd9668df818a2\n"
    },
    {
      "commit": "acb906d7f907b79ef1e6038d7104a5569e81a1ac",
      "tree": "5004be84fa88b8829881efed9ebf2d578b21086f",
      "parents": [
        "5924a4a73f1a2dcf83877062d67c297a9496b326"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 10:23:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 14:48:02 2018 +0100"
      },
      "message": "Remove mirror::String::java_lang_String_.\n\nAnd simplify ClassLinker::InitWithoutImage().\nAnd finish ObjPtr\u003c\u003e-ification of annotation processing.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I882a6c2f2b2a88d6ba34e4759bac4a6caa54cafa\n"
    },
    {
      "commit": "2cffc5d2807096c0b7a07b89f5dda6920c6429f5",
      "tree": "3949ab54fa34ba6297aa0074daeba43f560ca9bc",
      "parents": [
        "adbceb73b19cfad3ff9011390415a680382a21ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:40:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 12:50:32 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify RegTypeCache, fix 1 stale reference use.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: If8674fc712d9bc4d7d2fef1d154192b31b153627\n"
    },
    {
      "commit": "adbceb73b19cfad3ff9011390415a680382a21ec",
      "tree": "b7d4c12fb8cc8d4f9091d48d8e2c35a06b7a8e26",
      "parents": [
        "aab8bc928a8eff425d5e5755fde75b1cb55998a9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 14:34:14 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 17:48:45 2018 +0100"
      },
      "message": "Remove GcRoot\u003c\u003e static from Throwable and related classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8115e6413a07419ec261af3ec5068833b72b5218\n"
    },
    {
      "commit": "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5",
      "tree": "32d5d74718cc558e13642873e55724782ac9df22",
      "parents": [
        "0278be74269fcfe4f2517d449f2bd53472f9b2f9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 15:19:52 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:37:45 2018 +0100"
      },
      "message": "Remove static_class_ from Method/VarHandle and CallSite.\n\nAnd add MethodHandle to the class roots to avoid extra\nindirection through MethodHandleImpl.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Iaf172f3732677f2b4509e8297e6e9af5fb81a89f\n"
    },
    {
      "commit": "537a4fed85530ac29fe5ff173c4b77538d8bbd0b",
      "tree": "dc7a7e699145082827e17034a66260a10d1b9609",
      "parents": [
        "00e15d651e705640d4fdf206faf8317d69b20758"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 13:57:58 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 16:35:59 2018 +0100"
      },
      "message": "ART: Add VarHandle accessors to invoke-polymorphic entrypoint\n\nRemoves the need to interpret methods containing VarHandle accessor\nmethods. Whilst there are VarHandle accessors that the compiler does\nnot support, this will be the fallback path.\n\nBug: 71781600\nTest: art/test.py --host -r -t 712\nChange-Id: I40314b773882faed554c31b7f34c0e319dcf8d45\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": "dbaa5c7ba8935cf87ceb40a4054f9842929e9a51",
      "tree": "5037625c80cb97a0e13026dc450db28e59ff72ca",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 08:22:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 11:55:30 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-handle\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I67f461c819a7d528d7455afda8b4a59e9aed381c\n"
    },
    {
      "commit": "18259d7fb7164a5e029df4f883b3a79ccc2403e8",
      "tree": "ba378bfdef4127bb0607215186e3b150fd38bcdf",
      "parents": [
        "922501b4bbf724e4259477a27764291684eedffb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 11:18:23 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 15:04:09 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-type\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I4b3d3969d455d0198cfe122eea8abd54e0ea20ee\n"
    },
    {
      "commit": "4525e0b62cc808a49b4cd2c826bb52a768779e72",
      "tree": "aba9be998bb3684dff53b4b56c0568fb7187502e",
      "parents": [
        "a8503d9696f37ff66b23016f3374ecbe59774dc6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 05 16:57:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:30:45 2018 +0100"
      },
      "message": "Fix verifier/linker IncompatibleClassChangeError with hidden API\n\nThe verifier and class linker will attempt to find a method with\nthe wrong type if it could not be found with the original type,\ni.e an interface method on a regular class and vice versa.\n\nThis logic did not previously take hidden API restrictions into\naccount and would result in bogus error messages to the user or\ndebug crashes.\n\nBug: 64382372\nBug: 77464273\nTest: art/test.py -r -t 674-hiddenapi\nMerged-In: If8327a70dd73b90249da3d9e505f0c6f89838f8e\nChange-Id: If8327a70dd73b90249da3d9e505f0c6f89838f8e\n(cherry picked from commit 54a99cfcf3d3463404fdf4152523dcc69b8648d7)\n"
    },
    {
      "commit": "5713f668ea0374a1c3020fb466aa0ef6e8c3be7f",
      "tree": "2e1be3cb7c5863374ed15163529f3e029c7f0226",
      "parents": [
        "3896e437d1964fda0120aa249de264de6ef91143"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Apr 24 08:55:18 2018 -0700"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Apr 24 13:18:56 2018 -0700"
      },
      "message": "Use named constant instead of magic number in RegisterLine\n\nTest: host\nChange-Id: I61a8cd8378c9fd6eeafffe2a01fa38f25c01dca8\n"
    },
    {
      "commit": "b58dcecb477668f192d98a964b5397ca98bdd5fe",
      "tree": "8b6df7e2a138b6e04b87bbbd41fe2f5d4470ab8d",
      "parents": [
        "6c3533991522d036cbb5a656c44f63bf633a2925",
        "9c4a015cf01989597fd899011dba310b704dacaa"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 11 15:27:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 11 15:27:40 2018 +0000"
      },
      "message": "Merge \"Move more runtime code to libartbase, libdexfile\""
    },
    {
      "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": "f5c537efc5c35a91283ce1df188a0c70947d3cb4",
      "tree": "4e355f8d9c0334c47b5ad37e6ea63da7ff86909c",
      "parents": [
        "c83e7fe38da1e94fa98f05454d96c38f5de639a4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 09 18:33:55 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 09 18:53:57 2018 +0100"
      },
      "message": "Add extra logging for bug 77342775.\n\nTest: testrunner.py --host --64 --optimizing\nTest: Repeat with disabled filtering to Lorg/apache/http/,\n      manually expect failure messages.\nBug: 77342775\nChange-Id: I98b1e4fb77dc5c6b57a91c7dda19e1a4b15c29be\n"
    },
    {
      "commit": "3215fff7ef8fa3c2250b91158560eacc613a4671",
      "tree": "50d6fe7aff3f8fae31dcf2ca020f5079f49a592f",
      "parents": [
        "6371249ce05032db5d8c4c7ec96bf7fd7264c42f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 03 17:10:12 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 04 14:47:57 2018 -0700"
      },
      "message": "Separate Malloc and MemMap ArenaPools\n\nMake ArenaPool an abstract base class and leave MallocArenaPool\nimplementation with it.  This enables arena_allocator to be free\nof MemMap, Mutex, etc., in preparation to move the remaining collections\nout of runtime/base to libartbase/base.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      build and boot\n\nChange-Id: Ief84dcbfb749165d9bc82000c6b8f96f93052422\n"
    },
    {
      "commit": "69b1cf13e56a0f192fc40fa38382f072683e063c",
      "tree": "8e652f74729f0cdb166cf4d3ed0fdf799407e2a2",
      "parents": [
        "ba1e9e73c07bffc046f651414db43aeee9953d15"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 21 10:44:58 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 22 13:14:15 2018 +0000"
      },
      "message": "Don\u0027t HARD_FAIL when not able to resolve a quickened opcode.\n\nWe were failing to report locks being held due to this.\n\nThis means we can also share the code between the non-quickened\nand quickened instructions.\n\nbug: 74521989\nTest: 679-locks\n\nChange-Id: Ib87441b80f6ab7706c138600740b8bc7e448f1da\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": "b041a406daf5213ac1d5c9bcdc197d34cba85bf3",
      "tree": "f32c9f97143d2df79940e070f2862cc7a5f6e807",
      "parents": [
        "51038fc5f8be887ff86fe062e6a5af840e37726d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 13 15:16:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 19 09:25:09 2018 +0000"
      },
      "message": "Use vdex\u0027s quickening info when decoding a quickened instruction.\n\nbug: 74521989\n\nTest: test.py, 678-quickening\nChange-Id: I3a85cc6014afcf11889941dcd15b90d4296b8408\n"
    },
    {
      "commit": "c2a2bdab0e34a130c54a0fdcd77b6bf6fa5bf6df",
      "tree": "dec215b35af5cb3cc1f769d6d51cae9f4043f09f",
      "parents": [
        "68f0680e83179cfe0127fda54a8e02a8552bf619"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 12 11:21:52 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 12 11:38:46 2018 -0700"
      },
      "message": "Add more details to verifier dumping for gAborting\n\nPrint the method we are verifying.\n\nBug: 74521989\nTest: test-art-host\nChange-Id: I5a92d5ff56cb7319bc19c47acc3d66e363da0c66\n"
    },
    {
      "commit": "a5dca524abcbf55c3cfa778e3b72aa1efd1e9813",
      "tree": "77f128dd2fcab181b6a81831ec350fc2d3cc1e62",
      "parents": [
        "d395e73e9ed7c3fb5e8a48c3f3141a8997d4a82b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 27 12:42:11 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 08 16:55:17 2018 +0000"
      },
      "message": "ART: Update invoke-custom implementation\n\nAdds type checking for bootstrap arguments and support for variable\narity bootstrap arguments.\n\nAdds tests for malformed bootstrap arguments, variable arity bootstrap\narguments, and invocation arguments to passed to the CallSite\u0027s\nMethodHandle.\n\nRemoves unnecessary wrapping when j.l.Error\u0027s are raised during BSM\ninvocation.\n\nRemoves BSM argument type checking from verifier. This is now\nperformed during invocation.\n\nBug: 73927525\nTest: art/test/run-test --host 952-invoke-custom\nChange-Id: Id43226edad64ad9812e4ba1a069dfb70b8196dad\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": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\n"
    },
    {
      "commit": "ea179f477465789605e0c8f57a3ec660c3d852e8",
      "tree": "bde254b238c9ed42a5c0ae3ff14ffacadeeddb34",
      "parents": [
        "d991e5119a2bb61542899da9708f794dc60677c4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 08 22:30:18 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 15:47:02 2018 +0000"
      },
      "message": "Refactor method resolution in class linker.\n\nRewrite all runtime callers of DexCache::SetResolvedMethod\nto call a shared method that will do the dex cache update.\n\nbug: 64759619\nTest: test-art-host\nTest: device boots, runs\n\nChange-Id: Icc1aca121030e2864de09667bdbc793b502e3802\n"
    },
    {
      "commit": "ef012225dcec8f736fc8fd848f5d8ee01c3c280f",
      "tree": "d5f65b05313a09e92055550f07f063537b9e6ca5",
      "parents": [
        "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 21 16:28:06 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Feb 09 15:36:49 2018 +0000"
      },
      "message": "Fix typos.\n\nTest: art/test/testrunner/testrunner.py\nChange-Id: I5f5e052c940650a3adb3a8717b84260e6b306500\n"
    },
    {
      "commit": "928033d81f63912f669acd27a72897694eb31db6",
      "tree": "4fa9d3e320f1fbb8f39d4128037f6a4b02c69fd7",
      "parents": [
        "426ee26b3dcc2c6ff0e16096c57f62b98b91b71e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 07 05:30:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 09 13:09:26 2018 +0000"
      },
      "message": "Revert^2 \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd.\n\nBug: 65872996\nTest: art/test/testrunner.py -b --host\nChange-Id: I2d1017c45cee5b2fd2dd05e5eeff0a72146663b1\n"
    },
    {
      "commit": "c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd",
      "tree": "f84ebefc503e5cffb6df5989979492ae04f85cbb",
      "parents": [
        "becc83b59ff703c02198f832dbc3216a0ab8a022"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 16:02:49 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 16:02:49 2018 +0000"
      },
      "message": "Revert \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit becc83b59ff703c02198f832dbc3216a0ab8a022.\n\nReason for revert: breaks on the ART buildbots due to localized toolchain differences.\n\nChange-Id: Ieb1d93b0fc7116ddc542d8bbfee1975bcb30a8f7\n"
    },
    {
      "commit": "becc83b59ff703c02198f832dbc3216a0ab8a022",
      "tree": "38a3061481f01e2dcdc955bd9e9ddb60e0fd5a6f",
      "parents": [
        "1e5b3f39ff1776fd8b7d8d7d372347a08d98781b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 08 11:36:19 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 12:51:42 2018 +0000"
      },
      "message": "ART: Interpreter support for VarHandle accessors\n\nAdd support for invoking VarHandle accessors in the interpreter and\nforces code with VarHandles accessor invocations to use the interpreter.\n\nBug: 65872996\nTest: art/test/run-test --host 712\nChange-Id: I9ee3ad6aef6a3bc73d90cec0a8e023e5db42b7a2\n"
    },
    {
      "commit": "5a61bb7969347ffe8e0bf4f4dff841cc6c21ed85",
      "tree": "44c266c97576dcbdc931cf94d81774614a2c762b",
      "parents": [
        "d02784e17c20c91a50dcb10522351f4937e250ff"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 19 16:59:46 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 10:11:11 2018 +0000"
      },
      "message": "Start enforcing hidden API blacklist\n\nInsert checks into reflection, JNI and Class::CanAccessMember to\nmake blacklisted hidden APIs undiscoverable.\n\nThe change was tested with internal microbenchmarks of reflection\nand those showed no measurable performance impact.\n\nTest: art/test.py -b -r -t 674-hiddenapi\nBug: 64382372\nChange-Id: I9e39804b837ae9ffeba926f2a5b1e8e9986c472b\n"
    },
    {
      "commit": "077d9dbdf7c0965cb6ad9fb8c103bfcc03df738a",
      "tree": "e4ecd63348312b3d1b8c2eda5267c5ab17ed23f9",
      "parents": [
        "ba94510917814f9e79233bc6de192e87078c6941"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 19 18:54:14 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 19 18:54:14 2018 -0800"
      },
      "message": "ART: Fix verifier dumping\n\nIf the verifier stops early, the register line table won\u0027t have\nbeen initialized. This can lead to an out-of-bounds access when\ndumping the state.\n\nBug: 72237763\nTest: m test-art-host\nChange-Id: I179909f343e74ada8a65f060bbd4d97e9b0107ee\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\n"
    },
    {
      "commit": "118c59cf6af50e128d29609c9046a4af15826976",
      "tree": "c0f82859babac12e3e000964a328ddc2498b74bb",
      "parents": [
        "71a7b36894114d02860d2e64b9396dbd5e0b9b38",
        "fe92d1227f74a383172c0f339884c69e151fb404"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jan 08 08:11:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 08:11:23 2018 +0000"
      },
      "message": "Merge \"ART: Verifier support for VarHandles\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "fe92d1227f74a383172c0f339884c69e151fb404",
      "tree": "c8cb4777ef1335e2ef1da22ca239524b6aa33214",
      "parents": [
        "4131d1096ac57a29ba1939c1cf2cb74144c16c92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 02 10:45:17 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 05 10:38:26 2018 +0000"
      },
      "message": "ART: Verifier support for VarHandles\n\nExtends checking of signature polymorphic methods to support VarHandle\naccessor methods.\n\nBug: 65872996\nTest: run-test --host 954\nChange-Id: I696bfdfbf1cd99f7cd6720cda5911dd4f5e66ada\n"
    },
    {
      "commit": "f6e31474096a3c25b2d0c872fc120d7479b62367",
      "tree": "72d8cee843375af8b8c8c7919ae930c9e5df2bfd",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 13:32:08 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 11:41:47 2018 -0800"
      },
      "message": "Fix default method verifier check for compact dex\n\nAdd a feature flag and mark if the compact dex file was\ngenerated from a dex file that supported default methods or not. This\nis done to maintain the existing verifier behavior differences for\ndex files that do and don\u0027t support default methods.\n\nFixed callers to use a virtual function instead of always checking\nthe dex file version.\n\nRe-enabled run-test 975.\n\nBug: 70930171\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I46ac5d3cde0d0c9f41cbc68cccaf954b531e0edf\n"
    },
    {
      "commit": "dc578c7e47b2db623b382932bfe4dbc6dce41aa4",
      "tree": "409e6dc0c338bf75c1ce55acfae91fe86ef3028e",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 11:51:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 13:24:11 2017 -0800"
      },
      "message": "Move dex exception helpers to their own file and use dex accessor\n\nAlso change the input argument to be a code item accessor\ninstead of a code item pointer. This removes the dependency on\nthe code item layout.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If75a168d0b5a77d08fa3c6ba38d00705158911db\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "666ee3d7c6039c80e75287e311895bd6a9b01e9f",
      "tree": "5e65f39ff7cc83af4be3b691c247d7348052f854",
      "parents": [
        "890111968fbd3f5ae528d97e42984c12a3dd27bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 18:37:36 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 12 13:48:02 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveType().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nAlso refactor the code to avoid doing the DexCache lookup\ntwice and avoid unnecessary read barriers in the initial\nDexCache lookup (also for Lookup/ResolveField()).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Idea9aa42b6a5bade947e93e330b1abdb9d11b2da\n"
    },
    {
      "commit": "890111968fbd3f5ae528d97e42984c12a3dd27bd",
      "tree": "edb4ed38332a817b7d3037ea260856cec839dca9",
      "parents": [
        "0f13269734be07b5869005952a3cb91b0b34b73d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 13:45:05 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 15:43:45 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveMethod().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I2e47280e7cb8b84595130c4abfb5ece18d7f5c75\n"
    },
    {
      "commit": "0f13269734be07b5869005952a3cb91b0b34b73d",
      "tree": "026115080385984050674455e54721f00cb5df10",
      "parents": [
        "768bd97cede0a6de738936aad738f8bb0099322e",
        "a64b52deb0c792b8a0d47546edb8a2f8a7816c33"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 14:24:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 11 14:24:43 2017 +0000"
      },
      "message": "Merge changes I8c4cec43,I00634b89,I0579db64\n\n* changes:\n  Do not pass DexFile to ClassLinker::Lookup/ResolveString().\n  Do not pass DexFile to ClassLinker::ResolveMethodType().\n  Do not pass DexFile to ClassLinker::ResolveField*().\n"
    },
    {
      "commit": "c654816053ae07fb1f129d705e94b76e59f37454",
      "tree": "867d678ab3f6e0f4af70da98e935aafae0c6126c",
      "parents": [
        "8f1a586fd4ac9796e75b2b18638e39b33ad6e9a2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 08 12:15:22 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 08 12:22:21 2017 -0800"
      },
      "message": "ART: Change SCOPED_TRACE implementation\n\nMove to a LOG-like usage pattern. This improves usability in the\npresence of lock annotations.\n\nDemonstrate in the JIT compiler, where a lambda would require\na REQUIRES_SHARED annotation.\n\nTest: m\nTest: manual\nChange-Id: I9da2bfb29ed11660dbeb6f114a3d6c7ffef3a26d\n"
    },
    {
      "commit": "8f1a586fd4ac9796e75b2b18638e39b33ad6e9a2",
      "tree": "f1970c938487dbd9e773619804612ac824b0721c",
      "parents": [
        "2ba3557b6d2ea65956f7a98e6f0fd921f35792a5",
        "170331f0e44a0e07fcfe0b5932517e0500f5cd1f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "message": "Merge changes I917df597,Ib2ca880e,Ib3733573,I3e3a4672\n\n* changes:\n  ART: Remove base/logging from heap-inl.h\n  ART: Factor out gAborting\n  ART: Move runtime-debug flags to own files\n  ART: Replace base/logging with android-base/logging\n"
    },
    {
      "commit": "e11dd50ac2b5ccbf3b02213b7361f55b1f1a90da",
      "tree": "ea958df5f757369119cc84968f3b77210faf593f",
      "parents": [
        "2ba3557b6d2ea65956f7a98e6f0fd921f35792a5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 14:09:45 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 17:54:25 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::ResolveField*().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I0579db64c63afea789c7c9ad8db81e37c9248e97\n"
    },
    {
      "commit": "2ba3557b6d2ea65956f7a98e6f0fd921f35792a5",
      "tree": "5362f0306de9dfd47576b0988dc8b660ece0898b",
      "parents": [
        "f56a1c0abde24065f02705004cdc245f850e064a",
        "208f67072283be64da231b51f9c195aff403dceb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 17:26:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 17:26:53 2017 +0000"
      },
      "message": "Merge \"Change ArtField::ProxyFindSystemClass() to lookup the class.\""
    },
    {
      "commit": "f56a1c0abde24065f02705004cdc245f850e064a",
      "tree": "6b5debfcb663f76e6a5bcb3949eec1bce891989e",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476",
        "28e012a4af2d710e5e5f824709ffd6432e4f549f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 17:26:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 17:26:18 2017 +0000"
      },
      "message": "Merge \"Determine HLoadClass/String load kind early.\""
    },
    {
      "commit": "208f67072283be64da231b51f9c195aff403dceb",
      "tree": "97748c71e6c16ae110ccdbb13f50a78e5a21cd33",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 12:00:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 16:50:21 2017 +0000"
      },
      "message": "Change ArtField::ProxyFindSystemClass() to lookup the class.\n\nAs the function is called from ArtField::LookupType(),\nwe should avoid calls that appear to allow type resolution\nrather than plain lookup. The lookup should always succeed.\n\nAlso rename ArtField::LookupType() to LookupResolvedType()\nto align with naming used in ClassLinker and ArtMethod.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I0a87347b5341575e47e0fdba6d58ade2543387c8\n"
    },
    {
      "commit": "28e012a4af2d710e5e5f824709ffd6432e4f549f",
      "tree": "576ebdbff9d5f9f098cd29d652215b8f67b6b042",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 07 11:22:59 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 15:27:27 2017 +0000"
      },
      "message": "Determine HLoadClass/String load kind early.\n\nThis helps save memory by avoiding the allocation of\nHEnvironment and related objects for AOT references to\nboot image strings and classes (kBootImage* load kinds)\nand also for JIT references (kJitTableAddress).\n\nCompiling aosp_taimen-userdebug boot image, the most memory\nhungry method BatteryStats.dumpLocked() needs\n  - before:\n    Used 55105384 bytes of arena memory...\n    ...\n    UseListNode    10009704\n    Environment      423248\n    EnvVRegs       20676560\n    ...\n  - after:\n    Used 50559176 bytes of arena memory...\n    ...\n    UseListNode     8568936\n    Environment      365680\n    EnvVRegs       17628704\n    ...\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 34053922\nChange-Id: I68e73a438e6ac8e8908e6fccf53bbeea8a64a077\n"
    },
    {
      "commit": "f223f76bdd360664a1e8068eeac6ce35f7392bc6",
      "tree": "d3d0a8f6cb7841b0052301d22963e1978ff0563f",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd",
        "dfebbac8e30172169dbdaaf7e6a0be51433d57f1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 02:58:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 02:58:59 2017 +0000"
      },
      "message": "Merge \"ART: Add ScopedTrace constructor with lambda\""
    },
    {
      "commit": "dfebbac8e30172169dbdaaf7e6a0be51433d57f1",
      "tree": "3c751ff6792aaf88706fd0b3e0ed77d2cc4f83c2",
      "parents": [
        "92ab698e46dba3b6cff1457f47bfc344cb03f7ec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 14:17:22 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 08 02:54:45 2017 +0000"
      },
      "message": "ART: Add ScopedTrace constructor with lambda\n\nIn an effort to allow more complex and expensive atrace tagging,\nadd a ScopedTrace constructor that uses a passed-in lambda to\ncompute the string lazily.\n\nAdd a macro to simplify usage.\n\nTest: m\nChange-Id: I3b4576d786177042922fef0d05161e4cc11144d4\n"
    },
    {
      "commit": "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8",
      "tree": "1da7bdc834fbc2f11243fa2b936f0d7a67d982c1",
      "parents": [
        "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 15:44:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Factor out gAborting\n\nCut dependencies on base/logging.h by moving gAborting to its\nown header. Leave the static storage in logging.cc.\n\nTest: m\nChange-Id: Ib2ca880e15f9cb50cb9aab803784826bb46efb5e\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "92d77208d7434f2c8c49aa368769165c4d33896f",
      "tree": "1146aa6d673b38c81b551687bede8c0aeffed8d5",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 20:49:00 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:48:47 2017 -0800"
      },
      "message": "ART: Make kDebugVerifier a verbose flag\n\nTo aid in debugging efforts, finally introduce a verifier-debug\nverbose-logging flag that takes over the compile-time kDebugVerifier\nflag.\n\nCollecting verification times from a well-known large app during\ndex2oat via dump-timings shows a difference in the noise.\n\nLogging of the steps is restricted to failure cases, to avoid\nspam.\n\nTest: m\nTest: m test-art-host\nTest: manual: dex2oat --runtime-arg -verbose:verifier-debug APK with failures\nChange-Id: Icb998cc42a531b80f20f986625869505271b7c98\n"
    },
    {
      "commit": "52f205a38bda70d5c63907ef354a1475b4237b21",
      "tree": "4e7ff8aa8daccf308fa4e0bd6e4dc001805d855b",
      "parents": [
        "92ab698e46dba3b6cff1457f47bfc344cb03f7ec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 01 12:16:07 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 14:13:21 2017 -0800"
      },
      "message": "ART: Remove old aget on null workaround\n\nUse null for an aget-object of null. Ensure that other aget types\non null cannot be converted to or used as a reference type.\n\nLet the verifier continue scanning after an aget on a null register,\nto ensure that the dead code is type-safe.\n\nAdd test coverage for the new behavior.\n\nPartially reverts commit 4824c27988c8eeb302791624bb3ce1d557b0db6c\nPartially reverts commit 857f058d4b7bd07c5c99eda416ad91516a10b4da\n\nBug: 22059710\nBug: 64683522\nBug: 69669661\nTest: m test-art-host\nChange-Id: Ie0b554e8f880251d8e73ab6dfb6b41a5e63defc6\n"
    },
    {
      "commit": "8ddb7f5c9a3fa2b31e87efcf785a1e427f042bbb",
      "tree": "d133e0d2a02643e2f554ebcd120e20e6521b8f7f",
      "parents": [
        "d57fdd82fccfa15933033646c9436313b399d528"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 04 10:14:08 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 04 10:14:08 2017 -0800"
      },
      "message": "ART: Reorder null check in verifier\n\nDo not execute DCHECK before null check.\n\nBug: 69606743\nTest: m test-art-host\nChange-Id: I63b49b003943d7e902adefd4763310e1541ce732\n"
    },
    {
      "commit": "eed3a5d1a6560464b3a271c85b40b1cdf8a1bfd4",
      "tree": "2611ced1c62ad9e987202204fe083502a7165166",
      "parents": [
        "38af096a2fe0f2c0edb22bfca74d05c1aeeedaee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 29 14:58:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 01 17:11:45 2017 -0800"
      },
      "message": "ART: Add null type to verifier\n\nAdd a null type to distinguish zero from null. This is an\ninfra-only change, as nothing will introduce null with this\ncommit, yet.\n\nBug: 22059710\nBug: 64683522\nBug: 69669661\nTest: m test-art-host\nChange-Id: Id2549a5aefefe9471d4bdbd2c8993395150947c6\n"
    },
    {
      "commit": "b6b15438e3ad8bf0c820ce7ab0c9fb0a19fb3192",
      "tree": "5d6f49631a0a71b0f8778cd9efa57d39e887ac2d",
      "parents": [
        "c6387088d77c5e7eb3f3c0e3c8178e84d654f687"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 01 11:25:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 01 13:29:51 2017 -0800"
      },
      "message": "ART: Clean up primitive-type construction\n\nChange the scope of the helper to be a lambda. We rely on character\ndata being available here (and passed on), which is acceptable for\ncompile-time const char* values.\n\nTest: m test-art-host\nChange-Id: Ideac7e6ac22d9394cfc5c1cb8125bf71a450fc9c\n"
    },
    {
      "commit": "c6387088d77c5e7eb3f3c0e3c8178e84d654f687",
      "tree": "81dafe6c88c90cc6181f2b28c301cf4d1afe7304",
      "parents": [
        "45d3efbc433e321d0fdb3de54b01cf056c3d85ba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 30 21:00:49 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 01 11:26:00 2017 -0800"
      },
      "message": "ART: Add more comprehensive merge test\n\nAdd a more comprehensive test starting from a covering relation\nand derive expectations algorithmically.\n\nFix a missing collapse of UnresolvedMergedReference types with\nObject as the resolved component.\n\nTest: m test-art-host\nChange-Id: I20ab059195a0130c48b51f92f9a8ff5a3e9d4e10\n"
    },
    {
      "commit": "aaf0d38d9e3bd35aaf5ea2be6409bf2f3575f0ad",
      "tree": "a1eb3414c972f866b606dd1d11b3203640f30880",
      "parents": [
        "23f8f50ace964ed597261f19e87ac050f415957e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 27 14:10:21 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 28 12:01:32 2017 -0800"
      },
      "message": "ART: Change lock dumping\n\nReturn dex registers as well as dex PCs from FindLocksAtDexPc.\n\nIt is necessary to return the registers as the register used for\na monitor-enter operation may be aliased and overwritten by the\ntime the requested dex PC is reached.\n\nIt is at this point necessary to return a set of registers as\noptimizations may have eliminated dead registers, and the verifier\nhas no notion of liveness.\n\nA client of FindLocksAtDexPc should not assume that all registers\ncan be successfully retrieved from a stack frame, with the possibility\nof none. Only a properly verified method (i.e., lock verification succeeded)\nimplies that at least one register should work for all locks held at\nany point in the program.\n\nBug: 68703210\nTest: art/test/testrunner/testrunner.py -b --host -t 167\nChange-Id: I9027787e395cf8df0e7699a606665edb2ecb5136\n"
    },
    {
      "commit": "3da1d0f0881e130ebab95e2d06abe7d2beff57f0",
      "tree": "00b655e97955b317e995e4884ac726a1146b489d",
      "parents": [
        "5552e535951f2feb10bfd492b8abb54bd41a9f4b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 20:02:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 13 09:18:38 2017 -0800"
      },
      "message": "Use CodeItemAccessor helpers for method verifier\n\nCreate a code_item_accessor_ in the verifier and replace the existing\ncode_item field. Added some handling in DexFile to deal with\ntry/catch items.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I4e073c9cb29f94518f0016fccbe1628185884df4\n"
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "4098a7ad22535212c193f5c66eaf8a7387e1b7fc",
      "tree": "b6fbfef133515376185b769ea2c9625a6a637a04",
      "parents": [
        "383684585824efa60350b208b92362efab3962eb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:00:51 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:24:06 2017 +0000"
      },
      "message": "Refactor ArtField::GetType\u003c\u003e() as {Lookup,Resolve}Type().\n\nAnd add no thread suspension assertion to LookupType()\nas well as ArtMethod::LookupResolvedClassFromTypeIndex().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: If1541ccb0aafeabb6d1dd5566f10afcac98a2ef1\n"
    },
    {
      "commit": "5f317039d87d74f25d3b0a442072557086742d17",
      "tree": "6beae56f543d234b49a2f973dcbeb5f6f0bd2b90",
      "parents": [
        "72627a5f675b1c664beb2ad33d60a1c8dca80826",
        "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "message": "Merge \"Refactor DexInstructionIterator\""
    },
    {
      "commit": "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f",
      "tree": "7948ee1d32e211198a595bb7ed35558d22838da8",
      "parents": [
        "f199f1d3a9816edf9282766a8874d894d7bf87c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 17:10:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 01 15:36:21 2017 -0700"
      },
      "message": "Refactor DexInstructionIterator\n\nAdd a way to get the dex PC for the \"for each\" use case.\n\nBug: 67104794\nTest: test-art-host\nChange-Id: I144c459c9a2a03ec8d56842280338d1f7ce1caf0\n"
    },
    {
      "commit": "d9aff1372e6a2f573b14d124f3d6f5305bdc6080",
      "tree": "2e0eaeb39c909167ecb5190b51f908e3622940cd",
      "parents": [
        "df00a1ed1a0b633a1e66f1f650f53c22ea260e5b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:30:05 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 01 18:49:04 2017 +0000"
      },
      "message": "Revert \"Revert \"Prevent races with GC when transferring objects between threads\"\"\n\nThis reverts commit e5179ce0ca8becf34ba6e7b2f3988874fe647c26.\n\nReason for revert: Fixed issues with:\n  Checkpoint flag set without pending checkpoint in parent CL.\n\nBug: 67838964\nTest: ./test.py --host -j50\n\nChange-Id: I7622f9c18866b58ee3cbd9f4fe38a29b2cf84a88\n"
    },
    {
      "commit": "a2cbb2b0723a3fa05cc44e13cbe90543b3236883",
      "tree": "1db9efcd8bcece516b6f5cbb48cf5f00ba7c1796",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5",
        "e5179ce0ca8becf34ba6e7b2f3988874fe647c26"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:29:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 31 22:29:21 2017 +0000"
      },
      "message": "Merge \"Revert \"Prevent races with GC when transferring objects between threads\"\""
    },
    {
      "commit": "e5179ce0ca8becf34ba6e7b2f3988874fe647c26",
      "tree": "6d1bad18374493e2e85f715a575dea65f1725317",
      "parents": [
        "7585b91bfc77b8e4b821ccfa716fa86e46455275"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:28:11 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 31 22:28:11 2017 +0000"
      },
      "message": "Revert \"Prevent races with GC when transferring objects between threads\"\n\nThis reverts commit 7585b91bfc77b8e4b821ccfa716fa86e46455275.\n\nReason for revert: Seems to be causing fatal error: \n  Checkpoint flag set without pending checkpoint\n\nChange-Id: I98ea653e629d73e854907115583afed3ed5ac68e\nTest: None.\nBug: 67838964\n"
    },
    {
      "commit": "62540e3cc58abde95e147210d584614651d858b5",
      "tree": "1ceacf74b8aa3980d8c0b03a757c9eb9d3b94330",
      "parents": [
        "a877fa31eadeebb481122bbd444f9c3816a35369",
        "7585b91bfc77b8e4b821ccfa716fa86e46455275"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 31 15:43:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 31 15:43:09 2017 +0000"
      },
      "message": "Merge \"Prevent races with GC when transferring objects between threads\""
    }
  ],
  "next": "7585b91bfc77b8e4b821ccfa716fa86e46455275"
}
