)]}'
{
  "log": [
    {
      "commit": "31afbec96e9f9c8e58778694e74aea7ce55e1378",
      "tree": "1ad1633c75fb6c65fbb25d09fb9dcf92c4a81b8c",
      "parents": [
        "c53528a048e47ef8c51fc5c9667061ebd840adf1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 14 15:30:19 2017 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 16 05:31:59 2017 -0700"
      },
      "message": "ART: Bit intrinsics for Mterp interpreter\n\nAnother batch of interpreter intrinisics, mostly around bit\nmanipulation.  Also some formatting changes and inclusion of a\ncomprehensive list of recognized intrinisics (to assist with\ntelling what\u0027s left to do).\n\nBug: 30933338\n\nBenchmarks:\n   20% Improvement for Reversi\n   10% Improvement for Scimark2\n    3% Improvement for ChessBench\n\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nTest: art/tools/run-libcore-tests --host (edited for force -Xint)\n\nNote: Added intrinsics have existing test coverage via\n082-inline-execute, 123-inline-execute2, 565-checker-rotate,\n564-checker-bitcount, 566-checker-signum \u0026 567-checker-compare\n\nChange-Id: I29f0386e28eddba37c44f9ced44e7d5f8206bb47\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\n"
    },
    {
      "commit": "caa348cee1312150a957bd308ce77ad406f3eb64",
      "tree": "575f0b062f8adb1b8fc7ebc5f6ef18bea5ae1db7",
      "parents": [
        "c02fe5f31d487765a8c59922c46d459ba6ebf939",
        "01b47b046b01ec68696f8ff61b5326cdd3af348e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 08 20:29:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 08 20:29:51 2017 +0000"
      },
      "message": "Merge \"Inlining a few small methods based on profiling dex2oat with perf.\""
    },
    {
      "commit": "01b47b046b01ec68696f8ff61b5326cdd3af348e",
      "tree": "e526306fc89bf6fb04ff914e24343dde0369e98c",
      "parents": [
        "dcab11d06860ae1e23d03926adb6c31f75404032"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 03 12:09:57 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 08 10:15:06 2017 -0800"
      },
      "message": "Inlining a few small methods based on profiling dex2oat with perf.\n\nTest: m test-art-host\nChange-Id: I6313158e59592d8d132154523be9c82dda3c7eb8\n"
    },
    {
      "commit": "8a433246d0f26f1f8519925ee6fc5cee8fbd0788",
      "tree": "cc16e3892780e6d6262a9ea2ebc74d29e978f6a0",
      "parents": [
        "b139b6d3833cd6a90f345204202ec57ff277c088"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 07 14:39:22 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 07 14:39:22 2017 -0800"
      },
      "message": "Add two locks to expected_mutexes_on_weak_ref_access_.\n\nThe ObjectRegistry lock and the jdwp event list lock to avoid DCHECK\nfailures.\n\nSome cleanup.\n\nBug: 35360959\nBug: 35745310\nTest: test-art-host\nTest: jdwp test.\nTest: angler boot.\nChange-Id: I16000c0c7624b1271d40c4c1a01a4e249271b67e\n"
    },
    {
      "commit": "b139b6d3833cd6a90f345204202ec57ff277c088",
      "tree": "b7e264fc3c10c6f040d6d887177ab58a82201e88",
      "parents": [
        "7ba6ed786aa21257cfeefb917157d7d4768b9501"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 28 15:01:23 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 07 14:38:30 2017 -0800"
      },
      "message": "Revert \"Add jdwp event_list_lock_ to expected_mutexes_on_weak_ref_access_.\"\n\nThis reverts commit 35b456a05af864da6580dd01c033efb0ed3e3e44.\n\nWill be superceded by aog/346324.\n\nBug: 35360959\nTest: test-art-host.\nTest: jdwp test.\n\nChange-Id: I325003cb85b29c0245de6ba86b719b51201a840c\n"
    },
    {
      "commit": "92685a8a56fba7191612cf210f9c667b5ceda2af",
      "tree": "563009abe4387cb83c63320504148cedfc764bc3",
      "parents": [
        "5c90d0b0f332436f7ca5c028256bf5e91e9023d4"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 06 11:13:43 2017 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 06 15:20:04 2017 -0800"
      },
      "message": "Pass driver to loop opt. Add new side_effects phase.\n\nRationale:\nBreak-out CL of ART Vectorizer: number 3.\nThe purpose is making the original CL smaller\nand easier to review.\n\nBug: 34083438\nTest: test-art-host\nChange-Id: I7cece807ee4f5fcaeae41f1deed33ac263447b77\n"
    },
    {
      "commit": "497d5266380934ac78574a2a471d3dc0d8862708",
      "tree": "9ea3933f447ba68e7c044b9bdf4bbbc72d5bd91e",
      "parents": [
        "fddc19338d9fdee24c4e10b758db1a6997004e2e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 28 20:17:30 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 01 11:34:44 2017 -0800"
      },
      "message": "Handle RawData case for DexLayout\n\nFor vdex, the RawData dex file source is used. This was not\ncompatible with the existing LayoutAndWriteDexFile code. Added\nhandling to support RawData sources.\n\nWithout the handing, it was incorrectly using GetRawFile and casting\nthe dex file header to a File* causing a bogus fd number.\n\nTest: adb shell cmd package compile -a --reset\nTest: adb shell cmd package compile -a -m speed-profile\nTest: test-art-host\n\nBug: 35761072\nChange-Id: I74bdd17295479058e9245d1defb132df40fff474\n"
    },
    {
      "commit": "64be7c55311988bf52f6833635f79bdd8329dfec",
      "tree": "9b6b83e621e6da4d1f98da98418355a1dc1cf551",
      "parents": [
        "747aeb423267aed1d22a8d66013c351026d68f55",
        "3c3c4a1da1e8c03e78813d175a9974fb9f1097ea"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 27 19:48:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 27 19:48:22 2017 +0000"
      },
      "message": "Merge \"Improve the region space memory mapping.\""
    },
    {
      "commit": "3c3c4a1da1e8c03e78813d175a9974fb9f1097ea",
      "tree": "8f93825423a9cfa2ab591de05a1399990f2df12f",
      "parents": [
        "ea36aaf1ebd5342e24ea414d0b797b25eb8d7936"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 21 16:49:59 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 24 10:22:06 2017 -0800"
      },
      "message": "Improve the region space memory mapping.\n\nAdd a region space mmap fallback when the initial address isn\u0027t\navailable.\n\nClean up around the asan-specific base address.\n\nAdd MemMap::AlignBy to align the region space base address by the\nregion size, which is currently required by ReadBarrierTable.\n\nDisable some read barriers in ZygoteCompactingCollector to avoid a\nDCHECK failure in LockWord::SetMarkBitState when classes are in the\nforward state due to unnecessary read barriers on\nSizeOf/VisitReference.\n\nBug: 12687968\nTest: test-art-host with CC and CMS.\nTest: marlin-userdebug_asan_coverage boot.\nTest: angler boots with CC and CMS.\n\nChange-Id: I70f99779df6acc1b64cab6402f3ef7c73ce5b39b\n"
    },
    {
      "commit": "35b456a05af864da6580dd01c033efb0ed3e3e44",
      "tree": "8b84cac89a86ca3eb015a697ce6e42efed541899",
      "parents": [
        "fbf7dd9f86cdea46e10e018e73292d5cd9a984d9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 22 18:06:55 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 22 18:06:55 2017 -0800"
      },
      "message": "Add jdwp event_list_lock_ to expected_mutexes_on_weak_ref_access_.\n\nTo avoid a DCHECK failure where event_list_lock_ is unexpectedly held\nduring a weak ref access.\n\nAlso move event_list_lock to Locks.\n\nBug: 35360959\nTest: test-art-host.\nTest: jdwp test.\nChange-Id: I6315e1f7152058656f2479ad7b4e4f3defd15555\n"
    },
    {
      "commit": "9c57113ab1469a65cea2c0ec48dae2fdce9a8f19",
      "tree": "d8c9e1808631812cc16b2b438e73cea0c490017e",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 22 11:59:57 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 22 12:40:40 2017 +0000"
      },
      "message": "Move StackMapStream deduplication maps to arena.\n\nMeasured compilation of a big app using heap track:\n  bytes allocated in total (ignoring deallocations): 4.14GB -\u003e 3.98GB\n  calls to allocation functions: 21662554 -\u003e 1016606\n\nTest: testrunner.py --host\nBug: 34053922\nChange-Id: I0b1c4b5273daa2bc35e039df246bafad417b9b2b\n"
    },
    {
      "commit": "df56931343fc925aa33c93ca9120dddf41f0cf5a",
      "tree": "ae402e56213ad1abb9321c6d6e4e37fcf6ddde7d",
      "parents": [
        "a6dfa573fa951747a09a5fb8b5e1f276e569e934"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 15 14:41:26 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 15 14:41:26 2017 -0800"
      },
      "message": "Add jni_libraries_lock_ to expected_mutexes_on_weak_ref_access_.\n\nFix a DCHECK failure where jni_libraries_lock_ is unexpectedly held\nduring a weak ref access.\n\nBug: 35360959\nTest: test-art-host\nChange-Id: Ief9e97c03cdff7f350e739f1004925a3689ecaf2\n"
    },
    {
      "commit": "a222404a5832ab16786931576d52825d08eed3ca",
      "tree": "7350e5efbb6ef72c33e82753d79f7f4bed92d9d4",
      "parents": [
        "1561de49b382627ddd277b8ad7e5e8f4cec32f0b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 08 16:35:45 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 16:15:01 2017 -0800"
      },
      "message": "Fix the empty checkpoint timeout.\n\nThe problem happens when a thread is indirectly blocked on a mutex\nthat another thread holds and is blocked on a weak ref access.\n\nAdd a way to do a dummy wakeup on a thread that\u0027s blocked on a mutex\nso that the thread will respond to the empty checkpoint request. Do\nthis for the mutexes that are expected to be held when a weak ref is\naccessed. Add a check that detects an unexpected case.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host.\nChange-Id: Iefec69b9a21aa25a928cb31fcf4fb872f867a8c2\n"
    },
    {
      "commit": "37f84f4e549a5dfdad66b81dfe22e54310292bd1",
      "tree": "d7a177b5a9aa5470cef2ced16e662304d3f3439e",
      "parents": [
        "f13eb66a9396b393b84d9fb77381865ad04f260f",
        "5f9da555e69e7a2e1b4cadd87bbdfcce54c1395d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 07 18:25:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 07 18:25:33 2017 +0000"
      },
      "message": "Merge \"Fix issues due to updated toolchain.\""
    },
    {
      "commit": "1b14fb8bc459c3f91ed9fc1ff2e6c011c3d0a0f9",
      "tree": "ac561b61e2bc75adbc3aaa6ea8154946f55bbaf1",
      "parents": [
        "7b220d60e3cb58c384a0d245106406080c6f3e37"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 10:42:11 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 06 11:54:10 2017 -0800"
      },
      "message": "Remove Mutex dependency from MemMap\n\nUse std::mutex to remove the dependency between MemMap and Mutex/Thread,\nwhich depend upon Runtime.  Next step towards making dexdump2 build and\nrun on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: Ia6f4ef882dcef516ee83a81e965b3d744ce325b0\n"
    },
    {
      "commit": "5f9da555e69e7a2e1b4cadd87bbdfcce54c1395d",
      "tree": "4cd325857e304c73f22516ae97299a0aec3c5cc7",
      "parents": [
        "afdd4ce489fb06be35c50e7ed80a931f70b92870"
      ],
      "author": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Thu Feb 02 12:48:10 2017 -0800"
      },
      "committer": {
        "name": "Jayant Chowdhary",
        "email": "jchowdhary@google.com",
        "time": "Thu Feb 02 18:22:44 2017 -0800"
      },
      "message": "Fix issues due to updated toolchain.\n\nSupress -Winstantiation-after-specialization for clang_major \u003e\u003d 4.\n\nTest: mma -j64.\n\nChange-Id: I644c900999b07d62b7e13ef8c551f7af6f26ea48\n"
    },
    {
      "commit": "2cf7d5e53e94ceb2bccb06f251fd3df26e126011",
      "tree": "5f6998dcafc4cdf489ed150f7f3d9547e813ca3d",
      "parents": [
        "caebca9d2a00059c11ecc5f055c25eacf0630392",
        "22aa54bf8469689c7c6c33f15ff4df2ffba8fa15"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 02 11:23:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 11:23:03 2017 +0000"
      },
      "message": "Merge \"AArch64: Add HInstruction scheduling support.\""
    },
    {
      "commit": "47b22472b25d4b0d23df9ea99ae4ba7cd8a08f87",
      "tree": "a637aa13a143bf2c50518df161591dcf52635b04",
      "parents": [
        "1ddaa2573e8ea7c69dd2015d6cfbd2021989c816"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Jan 26 00:50:31 2017 -0800"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Jan 26 00:50:31 2017 -0800"
      },
      "message": "Revert \"Revert \"Ignore warning for instantiation after specialization.\"\"\n\nThis reverts commit ee7a1c5d327e132c923cd45b5b2de091204f07dd.\n\nBug: http://b/31532493\nTest: Manual validation\n"
    },
    {
      "commit": "d5125b65a706e919d02fea2a586e6bd469263fbd",
      "tree": "29e8020ae06b12ed10803419c11933355c84bde9",
      "parents": [
        "699ba6ad82a66212398262c18cc9b93fc4d10ce8",
        "ee7a1c5d327e132c923cd45b5b2de091204f07dd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jan 26 08:05:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 26 08:05:36 2017 +0000"
      },
      "message": "Merge \"Revert \"Ignore warning for instantiation after specialization.\"\""
    },
    {
      "commit": "ee7a1c5d327e132c923cd45b5b2de091204f07dd",
      "tree": "d7dc428c8a0d451d57460ba813a1560dafe77cac",
      "parents": [
        "445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Jan 26 07:59:40 2017 +0000"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Jan 26 07:59:40 2017 +0000"
      },
      "message": "Revert \"Ignore warning for instantiation after specialization.\"\n\nThis reverts commit 445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c.\n\nReason for revert: \u003cINSERT REASONING HERE\u003e\n\nChange-Id: I911049f64c4e963cfa47fd8bc7f16ed14e25b057\n"
    },
    {
      "commit": "699ba6ad82a66212398262c18cc9b93fc4d10ce8",
      "tree": "ada1293453660be9a59a6a9f85113865e313e642",
      "parents": [
        "e3081680875848505cd8812ed74331a29f4f9173",
        "fbd5118c1c36900910cabe89e3a73d598160e629"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 26 07:13:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 26 07:13:21 2017 +0000"
      },
      "message": "Merge changes from topic \u0027clang-3625443\u0027\n\n* changes:\n  Disable optimization of Atomic::LoadJavaData for x86 targets.\n  Ignore warning for instantiation after specialization.\n"
    },
    {
      "commit": "22aa54bf8469689c7c6c33f15ff4df2ffba8fa15",
      "tree": "14204d55784dce3ffdd2641382a763afee85ced0",
      "parents": [
        "8116003cc9dd1e74fac1682eec547b8bb0afb061"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Tue Oct 18 09:32:29 2016 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Wed Jan 25 14:25:20 2017 +0000"
      },
      "message": "AArch64: Add HInstruction scheduling support.\n\nThis commit adds a new `HInstructionScheduling` pass that performs\nbasic scheduling on the `HGraph`.\n\nCurrently, scheduling is performed at the block level, so no\n`HInstruction` ever leaves its block in this pass.\n\nThe scheduling process iterates through blocks in the graph. For\nblocks that we can and want to schedule:\n1) Build a dependency graph for instructions. It includes data\n   dependencies (inputs/uses), but also environment dependencies and\n   side-effect dependencies.\n2) Schedule the dependency graph. This is a topological sort of the\n   dependency graph, using heuristics to decide what node to schedule\n   first when there are multiple candidates. Currently the heuristics\n   only consider instruction latencies and schedule first the\n   instructions that are on the critical path.\n\nTest: m test-art-host\nTest: m test-art-target\n\nChange-Id: Iec103177d4f059666d7c9626e5770531fbc5ccdc\n"
    },
    {
      "commit": "44751efea1d5457f8eaf1b685ac9a09be1fd7c3e",
      "tree": "920e59513f690dd13f8a5edf7e043d418d95b192",
      "parents": [
        "b0355130e38034db6b904783a00f74a3524e1881",
        "bf6331a45f730e1f1044af2ce43bceda660ae6fc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:03:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 19 09:03:13 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Start RuntimeCallbacks\"\""
    },
    {
      "commit": "bf6331a45f730e1f1044af2ce43bceda660ae6fc",
      "tree": "66013474dc85b2a868d5fad2506c8674a086fa1a",
      "parents": [
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "message": "Revert \"ART: Start RuntimeCallbacks\"\n\njdwp tests failing with:\n    STDERR\u003e dalvikvm32 E 01-18 23:14:50 12180 12198 thread-inl.h:137] holding \"runtime callbacks lock\" at point where thread suspension is expected\n\nBug: 31684920\n\nThis reverts commit 13093d455b8266338fd713b04261c58e9dc2b164.\n\nChange-Id: I94e4154e273d006eecdd485607dcfd96392d6a00\n"
    },
    {
      "commit": "a7e64f00df89dfd984a8798548af46c7d0657511",
      "tree": "fc87511672825a99a034c2955efd7cd38d16f283",
      "parents": [
        "5d61614eda1ec69d46584605b439c56b6f3fd5e0",
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "message": "Merge \"ART: Start RuntimeCallbacks\""
    },
    {
      "commit": "13093d455b8266338fd713b04261c58e9dc2b164",
      "tree": "b4c5e54ce8a74af2f8929df089133967ea7f7274",
      "parents": [
        "3a5e34b65727d2c9e7e6ebe45c337dae0d0398a4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 17 21:40:35 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 19:48:37 2017 +0000"
      },
      "message": "ART: Start RuntimeCallbacks\n\nAdd a central RuntimeCallbacks structure to handle certain interesting\nruntime events.\n\nIn a first iteration, add ThreadLifecycleCallback with ThreadStart and\nThreadStop. Move Dbg over to ThreadLifecycleCallback.\n\nAdd a test.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nChange-Id: Ie0f77739a563207bfb4f04374e72dc6935c40b4f\n"
    },
    {
      "commit": "c8089540ccf0f1c43d8db3828f21d489b28a4013",
      "tree": "dd1d7038adfd2474ba5648e8c5312ca1f8c098e7",
      "parents": [
        "d4a282789669b27ce0352c99c26469b07a86d871"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 16 12:41:12 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 09:24:52 2017 -0800"
      },
      "message": "ART: Add JNI function table manipulation\n\nAdd support for a function table override. This will override the\ndecision between the regular and the CheckJNI function tables, if\nset.\n\nBug: 34343708\nTest: m test-art-host-gtest-jni_internal_test\nChange-Id: I0e95b0cbd21f4efdcd8c3d312781d9aeeff54a1e\n"
    },
    {
      "commit": "445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c",
      "tree": "0262c8b2a9d31f5c1ff3cca3582ee5e05e203e7f",
      "parents": [
        "4cddd03950bb21e950afd72cad87e963bc53ea10"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Dec 13 19:06:49 2016 -0800"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Jan 13 18:57:54 2017 -0800"
      },
      "message": "Ignore warning for instantiation after specialization.\n\nBug: http://b/31532493\n\nThe false template specialization is indeed a duplicate, so we can\nremove it, but the ART team would prefer to keep this explicit.\n\nart/runtime/base/arena_allocator.cc:147:16: error: explicit\ninstantiation of \u0027ArenaAllocatorStatsImpl\u003cfalse\u003e\u0027 that occurs after an\nexplicit specialization has no effect\n[-Werror,-Winstantiation-after-specialization]\ntemplate class ArenaAllocatorStatsImpl\u003ckArenaAllocatorCountAllocations\u003e;\n               ^\nart/runtime/base/arena_allocator.h:105:7: note: previous\ntemplate specialization is here\nclass ArenaAllocatorStatsImpl\u003cfalse\u003e {\n      ^\n\nTest: Builds correctly with latest toolchain.\nChange-Id: Ifbcb3b98ff4451b9860a6c6c6b085745f89c0a64\n"
    },
    {
      "commit": "46fc9d6db4e4ee37043343bc1994299607d880b3",
      "tree": "c12632c2e5c5171d74314f3e75a761fef1f8f562",
      "parents": [
        "db47a144d816e0976c5b4c00461b80b07ce97c60"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 10 15:12:38 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 08:23:21 2017 -0800"
      },
      "message": "liblog: use log/log.h to access ALOG macros\n\nTest: compile\nBug: 30465923\nChange-Id: Ia2699768da1af6d508472360baa08c77c07fca01\n"
    },
    {
      "commit": "ec107997ab237908d2910609b3e1f9f135b6179b",
      "tree": "3409ff1ee6f944d37ab8553898c6e35a0600679e",
      "parents": [
        "16722603e0f0ef286085fbe9b2cbe9ccad86bfef",
        "d0a160d722e696b1a3ffb91dcfde61ee11bfb3e0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 05 19:13:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 05 19:13:39 2017 +0000"
      },
      "message": "Merge \"Fix unquitable apps when debug enabled.\""
    },
    {
      "commit": "21f2364f11a709c7c22320588abe2adc91c69b6a",
      "tree": "9c0404499b37dcf5cae6d982b6e65c925e57f772",
      "parents": [
        "06ce6d4359ed897f1d1b39be4e748f0c4f3ca2ff"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@partner.samsung.com",
        "time": "Fri Dec 02 17:44:54 2016 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Dec 20 16:53:03 2016 +0300"
      },
      "message": "Fix incorrect string hash value extension during cross-compilation.\n\nPreviouly, having a 32-bit Android device and a 64-bit host to compile\nboot.oat could lead to an interning table be fulfilled using one hash\nfunction and be worked with using another hash function (which is caused\nby sign extension).\nTarget case is any string with a negative .GetHashCode().\n\nTest: test-art-host-gtest-intern_table_test\n\nChange-Id: I3f417e1ac990ef681f0651160292130e9b3632f0\n"
    },
    {
      "commit": "d0a160d722e696b1a3ffb91dcfde61ee11bfb3e0",
      "tree": "fecf340a29cc23d8c0b84bd11d898b8b0917cca6",
      "parents": [
        "d812f782978932f790b7e844cd992f116776b6e3"
      ],
      "author": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Tue Dec 13 18:32:17 2016 -0800"
      },
      "committer": {
        "name": "Tao Wu",
        "email": "lepton@google.com",
        "time": "Mon Dec 19 15:59:06 2016 -0800"
      },
      "message": "Fix unquitable apps when debug enabled.\n\nThere is a race condition that we could read from control_sock_ after we are\nasked to shutdown. Then we are stuck at pthread_join and can\u0027t exit.\n\nBug: 33592362\n\nTest: manual - for detail, check bug description.\n\nChange-Id: Ia7ece00131803a55fc040323ec19665d9b0300f9\nSigned-off-by: Tao Wu \u003clepton@google.com\u003e\n"
    },
    {
      "commit": "4e335d0279038d9a33628e7174eecbd1e540ab6e",
      "tree": "86ae55206adef06b2adacf624b3c0dd95df26fa1",
      "parents": [
        "71464a10a434e5b8aac75998d08b2cdcbce57bab"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 16:04:33 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 16:09:16 2016 +0000"
      },
      "message": "Fix arena allocation counting.\n\nAdd the \"CHA\" allocation kind description. Move the\nstatistics to the heap to avoid excessively large frames\ntriggering errors with -Werror, -Wframe-larger-than\u003d.\n\nTest: m test-art-host\nTest: m test-art-host with arena allocation counting.\nChange-Id: I7947a3a17b4c1ed773742516b1f7ab9a58c92150\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "c560fc0b430816825add4125134b20eb791f6036",
      "tree": "117d62174f17f5b0eed1b4b3f64f6575330fe29c",
      "parents": [
        "7d81bf2c9de138a65ea7189df18bc88f2c4fe6c5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 16 09:57:39 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 11:27:09 2016 -0800"
      },
      "message": "ART: Report cputime in dex2oat\n\nAdd ProcessCpuNanoTime. Log cputime in dex2oat completion message.\n\nSample:\n\n dex2oat took 20.036s(64.843s cpu) (threads: 48) arena alloc\u003d25MB (26760672B) java alloc\u003d2MB (2311688B) native alloc\u003d44MB (46792784B) free\u003d35MB (37502896B)\n\nTest: m test-art-host\nChange-Id: I78646c4808c8205f7f8e7995a82a1ba63cd15298\n"
    },
    {
      "commit": "cc1b5357f83f0b787d51fbfde3fe870c8a2fa050",
      "tree": "253d23dba63e1003dc8e953002b994d01c97f181",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 16:58:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:00:22 2016 -0800"
      },
      "message": "ART: Clean up ClassLinker\n\nTry to clean up and simplify ClassLinker.\n\nMove dex_lock to Locks. Remove dead code. Move single-use\ncode to user. Hide implementation details from header.\n\nTest: m test-art-host\nChange-Id: I58150fa9c2a9524f8304370270c2197d655cb3a8\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "1af0c4ff8b79ad44a4e12d7271a66d4e775ba224",
      "tree": "3e5e2527241d423290df454d551bf6787a052f0d",
      "parents": [
        "71601907b95a3527fc554a3a1724b3c12b872a7a"
      ],
      "author": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 16 14:05:48 2016 +0000"
      },
      "committer": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 23 10:37:31 2016 +0000"
      },
      "message": "Fix the target Linux builds of ART\n\nWhen ART_TARGET_LINUX was set it would hit some pieces of dead code that\nwere using old defines i.e. `__ANDROID__`\n\nTest: export ART_TARGET_LINUX\u003dtrue\nTest: source build/envsetup.sh\nTest: lunch\nTest: cd art \u0026\u0026 mma\n\nChange-Id: I80102750192928606e0884d2b723a87ccb7d7e19\n"
    },
    {
      "commit": "f05ccaf2cc9882e8b2d0add30072fd2648bea88d",
      "tree": "c92854218ee522a99c298d6f32a45327c14626dc",
      "parents": [
        "c394d0558de9afff6ab8b87ae9706497e01f37ff",
        "6f4d102e0c3029b3c74af13d3846a14e1c878a12"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 19:26:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 19:26:10 2016 +0000"
      },
      "message": "Merge \"Correctly handle EINTR return from futex\""
    },
    {
      "commit": "340dafabc8e88378e395cda9027cf17726910e91",
      "tree": "f742cfc9b9eb3fdf0245a66491d39fb841da7c01",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 16:03:10 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:08:29 2016 +0000"
      },
      "message": "Use a per-thread VerifierDeps.\n\nAvoid lock contention on a singleton VerifierDeps by allocating\ntemporary per-thread VerifierDeps that get merged after verification.\n\nThis saves around ~35% compile-times on interpret-only.\n\nOnly the creation of extra strings is guarded by a lock, for simplicity.\n\nTest: test-art-host, test-art-target\nbug: 32641252\nbug: 30937355\n\nChange-Id: I11a2367da882b58e39afa7b42cba2e74a209b75d\n"
    },
    {
      "commit": "6f4d102e0c3029b3c74af13d3846a14e1c878a12",
      "tree": "18ad351a86cabf94c2bb7f4f8b9dff9d0ec7c59a",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 14:35:42 2016 -0800"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 15:44:06 2016 -0800"
      },
      "message": "Correctly handle EINTR return from futex\n\nWe should handle EINTR the same way we do EAGAIN: they\u0027re both\ntransient failures. Either way, higher-level code (see\nReaderWriterMutex::SharedLock) will do the right thing, loop around,\nand try again.\n\nTest: code inspection\nChange-Id: I1eb7fb6851cc1a65acc9a0cf7cbeef787b6b28b6\n"
    },
    {
      "commit": "1ffcf7b06fa301f6f1bd7d4d776387d4ecdcef1b",
      "tree": "5a0ffcc6becddeb3b1f6e34c135ad0c760a74b65",
      "parents": [
        "137b07593aedfad193a77f3787ecf5197008c5da"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Nov 17 17:57:25 2016 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Nov 17 17:58:00 2016 -0800"
      },
      "message": "Fix false positive stack ASan errors on x86.\n\nCall a special ASan function in x86 DoLongJump to let the tool know\nthat strange things are going to happen with the stack pointer. Other\narchitectures do not need this because they do the stack pointer\nmanipulation in a separate ((noreturn)) function, and noreturn\nattribute triggers the same conservative behaviour in ASan.\n\nBug: 24199050\nBug: 32849425\nTest: SANITIZE_HOST\u003daddress stub_test32\nChange-Id: Ic639d2d84474d875487e66369c034db9907a7e8f\n"
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "550c589938ef7cd7c4287ba4e52ddc4853598af7",
      "tree": "5df86a44749f20d73e1b0ff8443f375ef01fa2f7",
      "parents": [
        "8ef4642ef27a0acf8dce07b174adea3e7f997846"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 24 10:49:32 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 10:58:01 2016 -0800"
      },
      "message": "ART: Add Unlink to FdFile\n\nAdd Unlink function that tries to unlink the file if it\nwas created with a file path. The function tries to\nensure that it does not unlink a newer file.\n\nAdd a parameter to Erase to add unlinking.\n\nTest: m test-art-host-gtest-fd_file_test\nChange-Id: I49993bb94aec10d5c8d9b2cbea30ebaa255b99e1\n"
    },
    {
      "commit": "686b8458f5531ef8e9c0ad79402879f510cdb8d3",
      "tree": "03539c541eaf59facd71c31980d94c462ae507b1",
      "parents": [
        "ca47a17f90bb0be9b98685fbf46e4e4f53ea18c6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 18:07:20 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 18:07:20 2016 -0700"
      },
      "message": "ART: Remove unused lock levels\n\nRemoves three obsolete lock levels.\n\nTest: m test-art-host\nChange-Id: I04517ee29a40ec383010d0e6f561d625360f067a\n"
    },
    {
      "commit": "ca47a17f90bb0be9b98685fbf46e4e4f53ea18c6",
      "tree": "2f0c28349de25f3e1feb5d31c70ae61f857cfc82",
      "parents": [
        "6adc5a8cac4eab3b847f81c422def4b4ae510332"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 16:39:27 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 16:39:27 2016 -0700"
      },
      "message": "ART: Clean up old mutex\n\nRemove obsolete mutex.\n\nTest: m test-art-host\nChange-Id: I476792cac4d5d680192e35055abed66772cf8081\n"
    },
    {
      "commit": "384cb6674b967a9c58da9ad70fd6f98caa1d8691",
      "tree": "b75a3309609ebbcd0d9d8d8b4297db82e80e988a",
      "parents": [
        "a908348b4388854dab0b655b55dbeac1ecec2949",
        "2c45bc9137c29f886e69923535aff31a74d90829"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 27 15:44:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 27 15:44:55 2016 +0000"
      },
      "message": "Merge \"Remove H[Reverse]PostOrderIterator and HInsertionOrderIterator.\""
    },
    {
      "commit": "2c45bc9137c29f886e69923535aff31a74d90829",
      "tree": "90c7762c2dcb1105bf5907d6a1d068f172ea6155",
      "parents": [
        "168c58ce18b139d313cbc6131e3bb43539952c55"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 25 16:54:12 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 27 14:30:29 2016 +0100"
      },
      "message": "Remove H[Reverse]PostOrderIterator and HInsertionOrderIterator.\n\nUse range-based loops instead, introducing helper functions\nReverseRange() for iteration in reverse order in containers.\nWhen the contents of the underlying container change inside\nthe loop, use an index-based loop that better exposes the\ncontainer data modifications, compared to the old iterator\ninterface that\u0027s hiding it which may lead to subtle bugs.\n\nTest: m test-art-host\nChange-Id: I2a4e6c508b854c37a697fc4b1e8423a8c92c5ea0\n"
    },
    {
      "commit": "0fc1c9a34d169cfe46b91ecef044908a2011a494",
      "tree": "7aadb40a2f5851ff64d492786e0ab094aad2982c",
      "parents": [
        "f877c165de3868a28fcfeb36e742efb02f39b854"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 26 10:13:15 2016 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 26 10:13:15 2016 -0700"
      },
      "message": "Fix build on XCode 8 w/OSX 10.12 SDK\n\nCLOCK_REALTIME (along with clock_gettime and friends) are now defined,\nso the build fails with a redefinition error.\n\nTest: m checkbuild (w/XCode 8 on 10.11 with 10.12 SDK)\nChange-Id: Ic8a5cc872ded1766597fda5f098d0e044cd063ee\n"
    },
    {
      "commit": "f42eb2c7801dbb45a6ba20a372d5ba4712ebefba",
      "tree": "62939df36e0d113aab0307f75ab728de72b80953",
      "parents": [
        "fc5fbfc13fd6873d42fe82c308ee68a685258b4c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 19 13:20:45 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 20 13:40:56 2016 -0700"
      },
      "message": "Remove mutex dependency on art::Runtime\n\nBreaks the cyclic dependency between mutex and the runtime.  This allows\nthe use of mutexes without instantiating a runtime.\n\nBug: 22322814\nTest: test-art\nChange-Id: Ia642e515937068d385e5bb1e10bbd3e50a6e36d2\n"
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "8c0fee9ca38ea1b4ee6a8ab72c5f9c0ba924761f",
      "tree": "523144558243e6b810d4f7da192d44628b8e3681",
      "parents": [
        "a3344e8349b6abf2d31d8b973627248706382970",
        "1a1de67c4923436eb7de7da334c6d77703375dbd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 17 12:27:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 17 12:27:55 2016 +0000"
      },
      "message": "Merge \"Do not write empty class table and intern table to image.\""
    },
    {
      "commit": "05a364c8d8271ceeca307d04736f53e92d03de9d",
      "tree": "70e166900c99564c0ab3596ef3c8d5d85f14e767",
      "parents": [
        "4aed412037e6e7bad2cf589645449df960b88200"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 13:27:12 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 14:48:26 2016 -0700"
      },
      "message": "ART: Make JNI global and weak global locks global\n\nAdd them to Locks. Give the JNI global table lock\na lock level, close to the weak global JNI references.\n\nBug: 31684578\nTest: m test-art-host\nChange-Id: I3857a3b0be69b16811d9999096b2c42e7a25d227\n"
    },
    {
      "commit": "1a1de67c4923436eb7de7da334c6d77703375dbd",
      "tree": "bf82b30cddfeaa822e14a63c0ad9fedd3886958d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 13 12:53:15 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 14 11:25:28 2016 +0100"
      },
      "message": "Do not write empty class table and intern table to image.\n\nAnd remove dead ClassLinker and InternTable code that would\nbe erroneously triggered by not writing the tables.\n\nTest: m test-art-host\nChange-Id: I2520daa8d1231e16112d44e364a72d782fa32527\n"
    },
    {
      "commit": "463a67dd60ab0341e56713426a34c3c0a0749a35",
      "tree": "a6644661cffbd5ea89b7215eb37ef261ee9dcff8",
      "parents": [
        "78c6fefdb9008cb6dc9f0014d4616b457009c6c8",
        "8778c521de4f686118549ef7b20ae497e53b9e93"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 21:55:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 21:55:21 2016 +0000"
      },
      "message": "Merge \"Change indirect reference table to use ObjPtr\""
    },
    {
      "commit": "78c6fefdb9008cb6dc9f0014d4616b457009c6c8",
      "tree": "aecbe9fe31d94ffbad4166c92b8fe81cd4219b0d",
      "parents": [
        "7638651be29f117ef651841fbb9ffda76921ae1b",
        "9620230700d4b451097c2163faa70627c9d8088a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 20:29:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 20:29:58 2016 +0000"
      },
      "message": "Merge \"Refactoring of graph linearization and linear order.\""
    },
    {
      "commit": "8778c521de4f686118549ef7b20ae497e53b9e93",
      "tree": "18e82a5860cf7c7d388f314615ba66e9a3ac4521",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 19:06:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 13:02:53 2016 -0700"
      },
      "message": "Change indirect reference table to use ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I340fdf430897ebd790ea4e35f94bcee776e98445\n"
    },
    {
      "commit": "9620230700d4b451097c2163faa70627c9d8088a",
      "tree": "695b96b9efeaa4c2cb3816e51904e19540fe3883",
      "parents": [
        "4aa6a93c46a959df1ab71ee7a68ad345338046ef"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Oct 04 17:33:56 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Oct 05 11:50:42 2016 -0700"
      },
      "message": "Refactoring of graph linearization and linear order.\n\nRationale:\nOwnership of graph\u0027s linear order and iterators was\na bit unclear now that other phases are using it.\nNew approach allows phases to compute their own\norder, while ssa_liveness is sole owner for graph\n(since it is not mutated afterwards).\n\nAlso shortens lifetime of loop\u0027s arena.\n\nTest: test-art-host\nChange-Id: Ib7137d1203a1e0a12db49868f4117d48a4277f30\n"
    },
    {
      "commit": "6c60d8420e51fda65ad247ae04b5a823c88c26b6",
      "tree": "8c4222eadad97235b5f6d860fb63ab8a749d111a",
      "parents": [
        "c13fbeb2201dc0bf783670d4548a49f03b1cb33e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 15 10:24:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 09:39:07 2016 -0700"
      },
      "message": "Initialize dex cache while holding dex_lock\n\nFixes multiple threads calling RegisterDexFile occasionally getting\nDCHECK failures due to the arrays not being null since the BSS ones\nis per dex file.\n\nBug: 31369621\n\nTest: test-art-host, no DCHECK failure during debug booting\n\nChange-Id: I7b6e4cd03460dd1213eb4e044bdcf5f6103fd5f9\n"
    },
    {
      "commit": "d74bd3a9a48d34d7321f7de7a6f8e1d3467be58a",
      "tree": "4f643819c8e960b015a8211d7e09558cb84f4412",
      "parents": [
        "129fc43ff9d820fa782111e3fdb11fa8d4d7d239",
        "90a32b16feb58d4edf932fdcb6a070be3418e365"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 04 19:08:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 04 19:08:14 2016 +0000"
      },
      "message": "Merge changes I65bc7769,Ib24c7060\n\n* changes:\n  ART: Reprint long messages on abort\n  ART: Clean up IRT-related abort messaging\n"
    },
    {
      "commit": "90a32b16feb58d4edf932fdcb6a070be3418e365",
      "tree": "dadbf8759551c67cdb54851027459a542d4d10f4",
      "parents": [
        "f1e8630fe8eab89e61e9f0a97135ae7c9d38ce23"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 03 19:47:08 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 03 19:47:08 2016 -0700"
      },
      "message": "ART: Reprint long messages on abort\n\nAdd an abort message parameter to Runtime::Abort. In case the message\nis multiline (and will thus not be completely preserved in the\nAndroid abort reason), reprint the message after all threads have\nbeen dumped.\n\nBug: 31893081\nTest: m test-art-host\nChange-Id: I65bc77691fec79f7c868a90d6132805fcc91e473\n"
    },
    {
      "commit": "0ad6c8fe441019980b1eeaf3047949e6601cdd7f",
      "tree": "89db2672821b60881bc9672cdec937284514b4de",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 15:29:14 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 03 11:29:34 2016 -0700"
      },
      "message": "art: Replace cutils/log.h with android/log.h\n\nTest: compile\nBug: 26552300\nBug: 31289077\nChange-Id: Ie5720d9e1388047856392e8635895895c22f3112\n"
    },
    {
      "commit": "762869dee6e0eadab5be1c606792d6693bbabf4e",
      "tree": "8c986c621e8a5f3cf4e4e3b2cc13b400401ad89b",
      "parents": [
        "b4cf427734c6839b46d0d6037e3189a5e8aa1bdb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 15 15:28:35 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 30 10:44:31 2016 +0100"
      },
      "message": "Simplify our intrinsic recognizer.\n\n- Use the modifiers for storing the intrinsic kind.\n- Delete dex_file_method_inliner and its associated map.\n\nThis work was also motivated by the fact that the inline\nmethod analyzer leaks intrinsic tables, and even worse, might re-use\na table from one dex file to another unrelated dex file in the presence\nof class unloading and the unlikely event of the dex files getting\nthe same address.\n\ntest: m test-art-host m test-art-target\n\nChange-Id: Ia653d2c72df13889dc85dd8c84997582c034ea4b\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "42c49d236c2dc02c4d3ce8ddd890a48d3812f70e",
      "tree": "0a9ff4247ae3ee3468f6c636dbdc9f38f64c7e34",
      "parents": [
        "cda79e87e0e12ad0b413dd3df3ba4662a3b4b1cb",
        "58246a13ded36d5256c6fcd3cc60bae5705a73bd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 26 23:00:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 26 23:00:02 2016 +0000"
      },
      "message": "Merge \"ART: Revert base/logging conditional hacks\""
    },
    {
      "commit": "d6e54bbc09595465309aa7909b7a3965defe4419",
      "tree": "9c12c8a0192119725e8659f593704bc416b222e0",
      "parents": [
        "a4850b0fa18c8b92dd5c20c166856cfe87aec72f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "message": "ART: Fix nits\n\nFollow-up to commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: Ia50f450bef144167b946224c26242c529302996e\n"
    },
    {
      "commit": "58246a13ded36d5256c6fcd3cc60bae5705a73bd",
      "tree": "c541e811079bd74d506db3a1b906c5f32ed7684e",
      "parents": [
        "a4850b0fa18c8b92dd5c20c166856cfe87aec72f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 12:51:53 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 12:55:11 2016 -0700"
      },
      "message": "ART: Revert base/logging conditional hacks\n\nThis partially reverts commit bda1d606f2d31086874b68edd9254e3817d8049c.\nART was switched to libbase logging.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I1a2f90d1ddb67d45ebe28d970b3ee7fd2d16a730\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    },
    {
      "commit": "a5931185c97c7b17981a9fc5016834a0bdd9480b",
      "tree": "22f1a57647d7113c7c5aa5e0f0db5937380f2739",
      "parents": [
        "fce42f486d9a607fb4fb472ec142a82ceccb6b5f"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 01 15:08:13 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 15 09:09:35 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings in art.\n\n* Add explicit keyword to conversion constructors,\n  or NOLINT for implicit converters.\nBug: 28341362\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I1e1ee2661812944904fedadeff97b620506db47d\n"
    },
    {
      "commit": "d9c90373d640a5e08072cf469c372e24a8c0fc35",
      "tree": "35615699aa6c12b21d9c0de7d11ccf0f088ba0d8",
      "parents": [
        "b180b893b5acb5c55251522465f9d20ed45c3b5a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 16:53:55 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 19:57:21 2016 +0100"
      },
      "message": "Move ArrayRef to runtime/base\n\nWill be used in upcoming CLs regarding VDEX and VerifierDeps.\n\nTest: m test-art-host\nChange-Id: I68e611a4a52246c2bdf45eab7c61f3212908afd4\n"
    },
    {
      "commit": "5fd66d0546805f0d86ec3365762c00b8dd3415f5",
      "tree": "82fb3cbb657f970a5c1d7c65e5567026816e284f",
      "parents": [
        "6a8c69f9d9d7840cac8cd17057d58c4cf91da4c6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:22:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:25:01 2016 -0700"
      },
      "message": "ART: Remove LogSeverity NONE\n\nRemove non-standard severity, and instead use a new enum to\nconfigure verifier logging.\n\nPartially reverts commit 7fe30233d32a872f5349e921dba65bd767ad994b.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: If52ee23c4902fbf2dabe7b232f6742448764ff8c\n"
    },
    {
      "commit": "bda1d606f2d31086874b68edd9254e3817d8049c",
      "tree": "db07417935fe72e99c3da60152e13f0620c7d8d7",
      "parents": [
        "d14d515df39cd963179088b8721768f9645243aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 17:43:45 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 08 10:13:47 2016 -0700"
      },
      "message": "ART: Detach libart-disassembler from libart\n\nSome more intrusive changes than I would have liked, as long as\nART logging is different from libbase logging.\n\nFix up some includes.\n\nBug: 15436106\nBug: 31338270\nTest: m test-art-host\nChange-Id: I9fbe4b85b2d74e079a4981f3aec9af63b163a461\n"
    },
    {
      "commit": "5e953d626866318c31ef300305facb920c7496cf",
      "tree": "70f8ecbfbe9a3edcff9c3e3cd6c8848e2bc5d7c5",
      "parents": [
        "5f17d642b0a220c24e51882fd5e785cb2404f7a3"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Sep 05 21:39:51 2016 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Sep 06 06:14:06 2016 -0700"
      },
      "message": "LogMessageData: Fix assignment in constructor\n\nThe previous code was assigning to the function argument, not\nthe member variable.  Since our member variable is \u0027const\u0027\nwe use a helper function to acheive this.\n\nTest: m test-art-host\nChange-Id: I11bf7b04297b7b6c0649a87416a7a6e622e2db43\n"
    },
    {
      "commit": "d38374eb1658777460ac936068e11a06e36a887c",
      "tree": "f6a476c412956f60f96907959b257043029c87f8",
      "parents": [
        "1c29876b303ab392e615b2294db009a971613bea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 31 13:53:13 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 31 15:06:24 2016 -0700"
      },
      "message": "ART: Use thread annotation macros from base\n\nUse thread annotations from libbase. Only leave the two local\ndefinitions.\n\nTest: m\nTest: m test-art-host\nChange-Id: I55a731e60b995fa6d0fd54a4da50654d6574019d\n"
    },
    {
      "commit": "e534a160337bb188fa946b671d34fdcfd87ef2da",
      "tree": "7d9571e3e4db98f77d5aee9696ded56265556a4a",
      "parents": [
        "a2ab404b622c1f3d6daffd70cf7744b3a882ea59",
        "aaadff8c182bc95f42eba7375737fb56da572863"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "message": "Merge \"ART: Use libbase\""
    },
    {
      "commit": "a2ab404b622c1f3d6daffd70cf7744b3a882ea59",
      "tree": "b0e4c28fa32dad4cd2f4e9246badb84f9c26fb6e",
      "parents": [
        "3d08238729dedecba73ddc0b42bc6bbf4806ecae",
        "f04cf5470fd53d93f7ae5b07205284c19fa59f41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 18:30:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 18:30:22 2016 +0000"
      },
      "message": "Merge \"Remove workarounds for [D]CHECK()s in constexpr functions.\""
    },
    {
      "commit": "f04cf5470fd53d93f7ae5b07205284c19fa59f41",
      "tree": "2eeb90611ef858fb542ec475c2d8cbb1ee719d8f",
      "parents": [
        "081e7a16c4fcbdb014441a236e12f58eb89ff99a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 15:25:25 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 16:53:30 2016 +0100"
      },
      "message": "Remove workarounds for [D]CHECK()s in constexpr functions.\n\nWe\u0027re now using C++14, so we can use [D]CHECK()s directly\nin constexpr functions. Remove the C++11 workaround macros\n([D]CHECK_CONSTEXPR) and C++ version checks. Also remove the\n\u0027static\u0027 qualifier from inline functions in affected files.\n\nTest: m test-art-host\nChange-Id: I0f962ad75e4efe9b65325d022cd272b229574222\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "aaadff8c182bc95f42eba7375737fb56da572863",
      "tree": "7fcbf58a92978817678f815e8fef2c429a875559",
      "parents": [
        "3079bc2b73666320a5d2d3454f5c418ef0d37519"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 09:53:48 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 12:54:23 2016 -0700"
      },
      "message": "ART: Use libbase\n\nMove to using standard macros from libbase. Required so that we\ncan use libbase in libart-disassembler to disconnect from libart.\n\nBug: 15436106\nTest: m\nTest: m ART_BUILD_HOST_STATIC\u003dtrue\nTest: m test-art-host\nChange-Id: I1f1723d875d20689d73835f6ab78c27a8efcf27a\n"
    },
    {
      "commit": "8aea8dbca646074cc02d839be28ba3fd9863b0b8",
      "tree": "3cffbb3f1913302afeee21d6c45577073fb774e9",
      "parents": [
        "7c95b4e22897a6f14ef79ec6e547e2eed686814a",
        "9231f4e55d6e79e37880071e222c28141bf65f49"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 17:09:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 17:09:43 2016 +0000"
      },
      "message": "Merge \"ART: Remove vestiges of GCC\""
    },
    {
      "commit": "9f98286cf29d226b05b10ef96f18d9938392fa67",
      "tree": "3a139c3a1a730a787435d5af3194bd3735d1e0f7",
      "parents": [
        "2ccdfbbf786df73b08939c3909e9c9f5301e7a5f",
        "a48a86ba37a1310f742ac267ac21655643627b57"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 03:01:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 03:01:49 2016 +0000"
      },
      "message": "Merge \"Revert \"Make dchecked_vector C++11 compatible.\"\""
    },
    {
      "commit": "a48a86ba37a1310f742ac267ac21655643627b57",
      "tree": "8efcc1c3e3850be151ce6d5046b1a9b3679d023f",
      "parents": [
        "05ff5a4ad666d9eb583ff343c1cbba886d7621b1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 24 01:24:51 2016 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 24 01:24:51 2016 +0000"
      },
      "message": "Revert \"Make dchecked_vector C++11 compatible.\"\n\nWe no longer support GCC in ART.\n\nThis reverts commit 05ff5a4ad666d9eb583ff343c1cbba886d7621b1.\n\nBug: 25022512\nChange-Id: Ie0aee5ce3f8b5bb5023fba90c39d96ae01e3e256\nTest: m test-art-host\n"
    },
    {
      "commit": "9231f4e55d6e79e37880071e222c28141bf65f49",
      "tree": "929c75752d7dd5d667b5f2cdaa044ad83d0522eb",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 17:35:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 18:20:12 2016 -0700"
      },
      "message": "ART: Remove vestiges of GCC\n\nWe no longer support GCC.\n\nChange-Id: I869ac6e5dcb166747e45236a0d313c7672bbf2de\nTest: m test-art-host\n"
    },
    {
      "commit": "6206da5d0f158838748006f8cd978d0b2beb2762",
      "tree": "b39ab485cd404570736b9dedd0778b5d5585cd06",
      "parents": [
        "48d2b14feb749c9160eb4af3e870ed935a1c6455"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 19:14:29 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 19:14:29 2016 -0700"
      },
      "message": "ART: Separate out Realloc reuse and alignment tests\n\nSeparate out the tests for Realloc buffer reuse and realloc\nalignment tests. This allows to turn off reuse tests under\nmemory tools (where we do not reuse).\n\nChange-Id: I93375c6fbc577f9b796325f8143317610948455a\nTest: m test-art-host-gtest-arena_allocator_test\nTest: m valgrind-test-art-host-gtest-arena_allocator_test\n"
    },
    {
      "commit": "c134ee7de1919b17ee0803752beb2e19c8855d68",
      "tree": "9693ccb6830f9ebd7b753a513d190f9455999b8e",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 14:03:10 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 14:03:10 2016 -0700"
      },
      "message": "ART: Test arena allocator alignment\n\nAdd tests for Alloc and Realloc alignment.\n\nChange-Id: If17b1d898200752a6a1ae25f436c73e5b7eb23f7\nTest: m test-art-host-gtest-arena_allocator_test\n"
    },
    {
      "commit": "f6dd829292b451a0eaaf339964fcf9ebc804897b",
      "tree": "f266ae41051125f4fea558bbfa87c617f9d5ac9b",
      "parents": [
        "da0f5e72cc5f2747a330b21afa34e7d798fc5c54"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 19 20:22:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 19 20:45:04 2016 -0700"
      },
      "message": "ART: Enforce arena alignment in Realloc\n\nEnforce the expected alignment in Realloc when the given buffer\ncan be expanded.\n\nAdd debug checks to prove alignment guarantees.\n\nChange-Id: I7dbaf3ca0896f714cff07ff08f067a7c088a6c8d\nTest: m test-art-host\n"
    },
    {
      "commit": "9826c3e458c3a6d91277b55e956e02c326f9887c",
      "tree": "e6657105c1db1b342f1d6a5745bb5ae1c801d365",
      "parents": [
        "d1272553516e6595dea310d07d7b974dcd0a421f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 17 10:28:48 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 17 12:46:19 2016 -0700"
      },
      "message": "Add newline for INTERNAL_FATAL automatically\n\nBefore, the behavior was different compared to other log levels\nthat automatically added newlines.\n\nBug: 30913672\n\nTest: test-art-host\n\nChange-Id: I02147d8ac7ea38f3e93450ef5290cdfed7b5a2eb\n"
    },
    {
      "commit": "346285b55869af2054465fccef2065f7462ac9cd",
      "tree": "0bc092fedc880f5022fcdc6ab0c3a53f5a599dd4",
      "parents": [
        "635ba0cbceb367836dae0cc4da4eb672263e7ef5",
        "185d134a3b43ab7529053e965917e0fa74bceba4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 17:33:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 17:33:34 2016 +0000"
      },
      "message": "Merge changes I852b4daf,Id648eaed\n\n* changes:\n  Add basic runtime-plugins support.\n  Create a basic agent loading framework.\n"
    },
    {
      "commit": "7cbd27fe778f2c348136540d52b5473e28f5769d",
      "tree": "80c0fa4ff2a223c061245c6799d992cd4d863fa0",
      "parents": [
        "3d1d18d74dfac5039b6093ddf04f74eee4f157a3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 11 23:53:33 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 12 13:19:51 2016 +0100"
      },
      "message": "Adjust spacing before NOLINT comments in ART.\n\nNote that neither clang-tidy nor cpplint.py complain about\nthese style \"issues\", precisely because of the NOLINT\ncomments.\n\nTest: WITH_TIDY\u003d1 WITH_TIDY_CHECKS\u003d\u0027-*,misc-macro-parentheses\u0027 mmma art\nChange-Id: Id692fd394ffbd4fe208cbbe4407b4d5e208462bb\n"
    },
    {
      "commit": "7233c7e752c0d26387d143ee74420e9cd1f09390",
      "tree": "680b4c1fc3fddbe6004156e5e02770223f3f8587",
      "parents": [
        "f2b1529b0988a1722b718fee6911e0030e95c9b6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 28 10:07:45 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 11 13:48:13 2016 -0700"
      },
      "message": "Create a basic agent loading framework.\n\nCurrently we only allow agents to be loaded at runtime startup, though\nthis is expected to change soon.\n\nTest: ./test/run-test --host 900\nChange-Id: Id648eaed4bbbe6fdef41d64922d023a4db0bfa54\n"
    },
    {
      "commit": "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5",
      "tree": "af38070b0fad716033c005a673a4ae0f7ccd27cc",
      "parents": [
        "45b17187699a938af2cf67fe11848951f2501087",
        "14832efeb92334c562ebedef34e920d30e3cee69"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 10:20:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 10 10:20:50 2016 +0000"
      },
      "message": "Merge \"Revert experimental lambda feature.\""
    },
    {
      "commit": "65975776f807d55c83af6cca1e447f8daa794413",
      "tree": "3b30b9a6ba00e72df89f59387c383ef747772025",
      "parents": [
        "3f3201a89ec19257b3bc93c25b20abdcfe61f3e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 05 10:46:36 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 09 10:45:18 2016 -0700"
      },
      "message": "Card mark holding class instead of declaring class\n\nFor profiling info, we need to mark the card of the holding class\ninstead of declaring class. This is required for GC correctness since\nthe GC relies on the card table to track cross space references.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 30655270\n\nChange-Id: Ia4690219ded0df38032b644440273e06bc303956\n"
    },
    {
      "commit": "b64decdc7361c6c93bd91fdd016a50971c8e537a",
      "tree": "66ce484619cabb75ccbc39e09a1f6a9307b21734",
      "parents": [
        "51616fb233df2760fd6002a02dce692f24b93fb6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 09 12:10:56 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 09 14:33:39 2016 +0100"
      },
      "message": "Fix setting FdFile::ReadOnlyMode() flag\n\nThe Unix flag O_RDONLY is defined as zero and hence its presence\ncannot be tested with \u0027(flags \u0026 O_RDONLY) !\u003d 0\u0027. This used to be\nbroken in FdFlag when setting its internal `read_only_mode_` flag.\n\nTest: m test-art-host-gtest-fd_file_test\nChange-Id: Ib48abfc908c7032f031450a1574130e06f6c3bab\n"
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "ba65cc4a71273904294245cb37ce70e5bce797e3",
      "tree": "d53a7a816ec4c8e5bdbf80729ac945787b27bf2c",
      "parents": [
        "1a827a05afbffd5bee241f245f9aa3c40b4dbae4",
        "542451cc546779f5c67840e105c51205a1b0a8fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "message": "Merge \"ART: Convert pointer size to enum\""
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    }
  ],
  "next": "33ee1205a8c66c36f86378e2cbaec14e9b3097ea"
}
