)]}'
{
  "log": [
    {
      "commit": "584771b5a85843700289ffcd36a46f3b187ca349",
      "tree": "a88996e445a1a2aee66e15ee58b977891ddf9618",
      "parents": [
        "6bc39b1e080d574a0ed0c4dabe4d0895dd40456c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 13:22:23 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 12:14:10 2018 -0700"
      },
      "message": "ART: Fix tidy bugprone-macro-parentheses\n\nAdd parens where necessary, add NOLINT for the cases where it\u0027s wrong.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If56ce51c078e9adf26b9469a01c95a857aac66a4\n"
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\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": "5573c37e795668eca81a8488078f798d977685c3",
      "tree": "5e7675d6c1ca9ed1c31834e52282bfb9f73dc2a4",
      "parents": [
        "1598a77ca3559c8a59902f26ee887504b8159859"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 13:34:30 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 14:42:49 2017 -0800"
      },
      "message": "cpplint: Remove many unnecessary NOLINT\n\nNow that we updated to upstream cpplint, a lot of these NOLINTs are no\nlonger necessary.\n\nBug: 68951293\nChange-Id: If8ed5ffe89727f313f907a214b6d8fd2a2eddbad\n"
    },
    {
      "commit": "dfabcc50f13f27201fd9c0ab0def187ef5945fda",
      "tree": "eee8862eebf83d94cf8fb81042666732390933aa",
      "parents": [
        "2875173c75049777e6b63dbc9739846dd8f7d085"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 26 14:51:52 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Oct 27 15:06:23 2017 -0700"
      },
      "message": "base: Fix bitstruct bug with assigning fields\n\nGiven a BitStruct \u0027foo\u0027, where bar was a BitStructField, assignment was\nbroken because it was using the C++ default behavior (copy the entire\nword).\n\n  foo.bar \u003d other_foo.bar\n\nThis will now correctly use BitFieldInsert to update the \u0027bar\u0027 bitfield.\n\nChange-Id: I1464462ffd4df22ad14a2e43a34f74d75ac2809a\n"
    },
    {
      "commit": "1e77d2760862ee3a2ce908cdce652a6f6db0c842",
      "tree": "eae305649e4e7f42bccbb24cf580eed1d662d8ab",
      "parents": [
        "5e008b3c5a907015116aa95623205ac8fc2c6768"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sat Oct 07 14:09:43 2017 +0000"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sat Oct 07 14:14:58 2017 +0000"
      },
      "message": "Revert \"Revert \"base: Add more bit utils and bit struct class\"\"\n\nThis reverts commit 5e008b3c5a907015116aa95623205ac8fc2c6768.\n\nChange-Id: I05d26dd4a1f8d35e4377f65e209587b67b2ca04e\n"
    },
    {
      "commit": "5e008b3c5a907015116aa95623205ac8fc2c6768",
      "tree": "5939cf872b038e58c41e98e31d633e51b2bbb014",
      "parents": [
        "c60f75d6d6f229fa7b5494d54189e974883dafa2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Oct 07 12:57:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Oct 07 12:57:50 2017 +0000"
      },
      "message": "Revert \"base: Add more bit utils and bit struct class\"\n\nTests fail on device.\n\nThis reverts commit c60f75d6d6f229fa7b5494d54189e974883dafa2.\n\nChange-Id: I2d8f919df154b700854d78993c460e3aab7cf0c3\n"
    },
    {
      "commit": "c60f75d6d6f229fa7b5494d54189e974883dafa2",
      "tree": "f728320ab915995a011f15089e726ca674f36dc8",
      "parents": [
        "7ec532fd6387a309c824f1abba466003593a685e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Oct 06 11:34:26 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Oct 06 16:46:56 2017 -0700"
      },
      "message": "base: Add more bit utils and bit struct class\n\nAllows efficient, zero-cost, bitwise memory storage.\n\n // Definition for type \u0027Example\u0027\n BITSTRUCT_DEFINE_START(Example, 10)\n   BitStructUint\u003c0, 2\u003e u2;     // Every field must be a BitStruct[*].\n   BitStructInt\u003c2, 7\u003e  i7;\n   BitStructUint\u003c9, 1\u003e i1;\n BITSTRUCT_DEFINE_END(Example);\n\n Would define a bit struct with this layout:\n  \u003c- 1 -\u003e    \u003c--  7  --\u003e  \u003c- 2 -\u003e\n +--------+---------------+-----+\n |   i1   |       i7      | u2  +\n +--------+---------------+-----+\n 10       9               2     0\n\nSee bit_struct.h for more documentation.\n\n(Also adds new BitField[Extract|Insert|Clear] bit_utils similar\nto the ARM bitfield instructions).\n\nTest: art/test.py --gtest\nChange-Id: I5e43f2468c5d275ee872546855527bb4ea73ad4c\n"
    }
  ]
}
