)]}'
{
  "log": [
    {
      "commit": "3a84e31b247f0c7b6c31946f15def732d556282c",
      "tree": "2be7005fd90cfb2267926e31b858dae3256bdc01",
      "parents": [
        "d0562a324d9eb56f69b967f1c4da03019026ff33"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 10 10:49:35 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 10 12:07:48 2016 -0800"
      },
      "message": "Allocate interrupted exception before re-acquiring lock\n\nAllocating the monitor exception after acquiring the lock can cause\na deadlock in the following scenario:\n\nReference queue daemon interrupted from wait() on\nReferenceQueue.class. Tries to allocate exception and starts a GC\nthat blocks on WaitForGcToComplete.\n\nSome other thread is already doing a GC, and tries to enqueue the\ncleared refereneces. This deadlocks trying to lock Reference.class\nin ReferenceQueue.add.\n\nBug: 27508829\n\n(cherry picked from commit daed5d81e2fdb9d1e03ee6c34567347b92dcfb22)\n\nChange-Id: Ibdc2769077976545385d8c6ecc5bf26316eb70a1\n"
    },
    {
      "commit": "dabdc0fe183d4684f3cf4d70cb09d318cff81b42",
      "tree": "512e47a453bd8d3762d8d6f7445ac2c9ff82d9f4",
      "parents": [
        "88027bd6810b9a5b785dba5396eec5301e4540b2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 15:56:05 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "328c5dc0d178632125f5a05002051a6adc04766a",
      "tree": "843e9b7a71ff0875bf477cc052d921141a6828ef",
      "parents": [
        "5165b6ba1fda85d769c5092a65f07bcfffb0b3e7"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 11 16:13:57 2015 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 11 18:05:30 2015 -0800"
      },
      "message": "Get class loader to remember interrupts\n\nBug: 25606036\n\nMonitor::Wait should not reset the interrupt flag unless it actually\nthrows the exception.\n\nChange-Id: Id6a35c888160043831f30055f9bd39e7f0440439\n"
    },
    {
      "commit": "0f7c93322e50ff53eeba6b9ae13cf73eb0617587",
      "tree": "5a155089bb26311f690a3440825767bb125a0fc9",
      "parents": [
        "55a77ef5f99c2b056eb5f2820c1ff3b29c0ec270"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 15:57:30 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 05 18:27:17 2015 +0100"
      },
      "message": "Minor cleanup of Monitor::VisitLocks\n\nUses the Instruction class to not bother with the decoding logic.\n\nChange-Id: Id1501b57129084014f05e41513319639a630361d\n"
    },
    {
      "commit": "b8b3702f6818443cd5535419d97ad106b8623c89",
      "tree": "e1e2a4adafa08359e8d2c15fe2a83e45c1f030b4",
      "parents": [
        "7dae1918d25ea2ad6b5ba166f44472d82c53fa5e",
        "eaa4609574267771f2080cbaa3dbe26da709b6f6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 15 15:55:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 15 15:55:56 2015 +0000"
      },
      "message": "Merge \"Fix monitor contention logging to support negative line numbers\""
    },
    {
      "commit": "2d096c94fbd3fd2470b8ac1a0da6f577b3f69f42",
      "tree": "b3b9fd96064c57a6e883ce2cb4996a08aab336ec",
      "parents": [
        "b2d2d6ae8ad3dcec77bbaf99589cd98a4797f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 12 16:18:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 13 08:14:46 2015 -0700"
      },
      "message": "Fix moving GC bugs in MonitorEnter and MonitorExit\n\nFixes test 088 with gcstress mode.\n\nChange-Id: Iaeb91f62f22233e403e97e954bfdc8dc367e63c8\n"
    },
    {
      "commit": "eaa4609574267771f2080cbaa3dbe26da709b6f6",
      "tree": "f1d44562808c89b615929e130adf2b1a0b9cad1b",
      "parents": [
        "7f9558eea5ffae184556ac13b93edf48371b41f8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 07 21:29:28 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 07 22:04:43 2015 -0700"
      },
      "message": "Fix monitor contention logging to support negative line numbers\n\nBug: 24743369\nChange-Id: I8dd4f59e0bd27aa4daa1d79a412fc7821c070c67\n"
    },
    {
      "commit": "f1d666e1b48f8070ef1177fce156c08827f08eb8",
      "tree": "772cbbe6652b32ea2be31532156295db27579390",
      "parents": [
        "897ce64153e4758663e464fb5fb339f9a7b496c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 16:13:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 17:33:19 2015 -0700"
      },
      "message": "Add ScopedThreadSuspension\n\nFixes the TransitionFromRunnableToSuspended and\nTransitionFromSuspendedToRunnable pattern that was prone to errors.\n\nChange-Id: Ie6ae9c0357c83b4fc4899d05dfa0975553170267\n"
    },
    {
      "commit": "fdbd13c7af91a042eda753e436eeebf0e1937250",
      "tree": "c1fb370c9a4a30b9e589802c9c75dcc4919fc6e9",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 02 16:16:58 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 03 10:45:21 2015 -0700"
      },
      "message": "Some fixes for the CC collector.\n\n- Remove a DCHECK in DisableMarkingCheckpoint, which caused\n  occasional (false) failures.\n- Check the thread-local GetWeakRefAccessEnabled in boxed lambdas weak\n  access.\n- Add missing BroadcastForNewAllocationRecords and\n  BroadcastForNewWeakBoxedLambdas. The lack of the former caused\n  occasional deadlocks in the ddmc test.\n- Remove the \u0027ensure system weaks disallowed\u0027 calls, which weren\u0027t\n  useful and dead.\n\nBug: 12687968\nChange-Id: I33850c8d12e6e1a3aed1c2bb18eba263cbab76e8\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "97509954404d031594b2ecbda607314d169d512e",
      "tree": "bb5371ba90d52e2f561b1dc6959584857cb84683",
      "parents": [
        "c6f3439b67962584cfb764133e192c3317f0e1fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 13 14:35:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 14 16:45:27 2015 -0700"
      },
      "message": "Clean up GC callbacks to be virtual methods\n\nChange-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735\n"
    },
    {
      "commit": "0b71357fb52be9bb06d35396a3042b4381b01041",
      "tree": "44b8d6b0ca4a71f33cda55068fa9e14864c55625",
      "parents": [
        "0e87d1809443d41b431ce3a686b4e074df2d7b8b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jun 16 18:29:23 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jul 13 15:50:20 2015 -0700"
      },
      "message": "Thread-local mark stacks for the CC collector.\n\nThread-local mark stacks are assigned to mutators where they push\nreferences in read barriers to reduce the (CAS) synchronization cost\nin a global mark stack/queue.\n\nWe step through three mark stack modes (thread-local, shared,\nGC-exclusive) and use per-thread flags to disable/enable system weak\naccesses (only for the CC collector) instead of the existing global\none to safely perform the marking phase. The reasons are 1)\nthread-local mark stacks for mutators need to be revoked using a\ncheckpoint to avoid races (incorrectly leaving a reference on mark\nstacks) when terminating marking, and 2) we can’t use a checkpoint\nwhile system weak accesses are disabled (or a deadlock would\nhappen). More details are described in the code comments.\n\nPerformance improvements in Ritzperf EAAC: a ~2.8% improvement\n(13290-\u003e12918) in run time and a ~23% improvement (51.6s-\u003e39.8s) in\nthe total GC time on N5.\n\nBug: 12687968\nChange-Id: I5d234d7e48bf115cd773d38bdb62ad24ce9116c7\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "15b9d5274399736ac09705f0507df24fac4f00c1",
      "tree": "04564a9265f5dccefdd32ea7bdd25adc0267f80b",
      "parents": [
        "8bc616d09f93523f4bc982cc60c377b00161522a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 15:05:13 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 10:26:47 2015 +0000"
      },
      "message": "API change in StackVisitor::GetVReg*.\n\n- Remove GetVReg() and SetVReg() that were expecting to always succeed.\n- Change Quick-only methods to take a FromQuickCode suffix.\n- Change deopt to use dead values when GetVReg does not succeed:\n  the optimizing compiler will not have a location for uninitialized\n  Dex registers and potentially dead registers.\n\nChange-Id: Ida05773a97aff8aa69e0caf42ea961f80f854b77\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "e15ea086439b41a805d164d2beb07b4ba96aaa97",
      "tree": "465ee3780acd8b7cb35c8a7f42a1f3c5df3d26ec",
      "parents": [
        "0b25c71ac93fb10c484dbacb9e23db505a8e2353"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 09 17:11:42 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 03 17:33:18 2015 -0800"
      },
      "message": "Reserve bits in the lock word for read barriers.\n\nThis prepares for the CC collector to use the standard object header\nmodel by storing the read barrier state in the lock word.\n\nBug: 19355854\nBug: 12687968\nChange-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "4936159997132d7706d9700c646f35ef0283df4b",
      "tree": "5c46890e666b8d74baed83a6de6429e495c9e2a0",
      "parents": [
        "40d9c6a2339a1610764c0266061e3a6040e64726"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 22 16:36:10 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 22 16:38:03 2015 -0800"
      },
      "message": "Fix compaction unsafe DescribeWait\n\nFixes a crash that was seen once in automated tests, PrettyTypeOf\nwas accessing a stale object which had moved during IdentityHashCode\ndue to thin lock inflation causing suspension.\n\nChange-Id: I105aa9a09d4e8c9091b9a60e508ef71e613f1eed\n"
    },
    {
      "commit": "e6a8eec3a5db28de7d5db6d78e38033b80740e49",
      "tree": "a87d70ae8935be1a9ad90a718d977a9169936fbd",
      "parents": [
        "af56baf94d0573df89b97f441df7ff4dea42786e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:17:57 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:25:27 2015 -0800"
      },
      "message": "Fix frequent gcstress ThreadStress crash\n\nCalling IdentityHashCode before PrettyTypeOf was causing occasional\nstale root errors since IdentityHashCode can cause thread suspension.\n\nCleaned up VisitLocks.\n\nBug: 18766916\nChange-Id: I7679539877e48a8c9aadb8a34718404ebce98d25\n"
    },
    {
      "commit": "f0dc8b5519102b3d3e738aed846975ae4239421e",
      "tree": "cf6c6b20c12e79595fc680f5da6de5575a6ea80f",
      "parents": [
        "3e2f0fc584463e9da1142a5011ac3f7bcf083e0f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 10:13:30 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 11:08:15 2014 -0800"
      },
      "message": "Add systrace events to monitors and thread suspension\n\nAdded systrace events to SuspendThreadByPeer, SuspendThreadByThreadId\nand monitor contention.\n\nBug: 18379850\nBug: 17470248\nChange-Id: I29eaf97c67361a6c6b437940b8729600d78696df\n"
    },
    {
      "commit": "4ad5cd3e7d519484559ef778d96fb3f0be8919fa",
      "tree": "9870938a0552b4fe472d9994a55a3bf761fc69d5",
      "parents": [
        "741e287b60136db49ecf8da72f2b5ca48b0a39bd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 23:08:07 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 12 15:29:12 2014 -0800"
      },
      "message": "Modify the behavior of thread suspend shootouts.\n\nThe thread doing the suspension doesn\u0027t attempt to suspend the other thread\nunless it knows another thread isn\u0027t trying to suspend it. Use the suspend\ncount, and its lock, for this purpose.\nRe-enable ThreadStress test.\nBug: 15446488\n\nChange-Id: Idd34410c7b89d8abd6973e5699a15ca699472c78\n"
    },
    {
      "commit": "ae1a434fa1740791ba479da668e8372ca3dcb2a6",
      "tree": "812f2e41acaa81590418b70c142a644e1a3f87eb",
      "parents": [
        "b396ff047c3480c99b03a3e4342556fed4a24e2f",
        "78a3233313260665fe82ba56257855e043bca3d4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "message": "am 78a32333: Merge \"ART: More warnings\"\n\n* commit \u002778a3233313260665fe82ba56257855e043bca3d4\u0027:\n  ART: More warnings\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "0e7217d74914d4feba6bd1c197c883177ea6867c",
      "tree": "65173ae29336ef879ce0e35b1b0a8a3473bb630b",
      "parents": [
        "a660fc15d682912c9dc054f4b7cf53b8d90f337b",
        "3e3364e267117462894e0c3b7d9b413b25d28057"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 04:51:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 28 04:51:55 2014 +0000"
      },
      "message": "am 3e3364e2: Merge \"Tidy logging code not using UNIMPLEMENTED.\"\n\n* commit \u00273e3364e267117462894e0c3b7d9b413b25d28057\u0027:\n  Tidy logging code not using UNIMPLEMENTED.\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "fdb97de88d92cad7698e1eda3062d0cee3d2d18b",
      "tree": "c80e2ed682efe2273e1d8ec39d4a34fdb8358f1e",
      "parents": [
        "c9ed6e64f910a3fb3afa34df36c9f8f56691164c",
        "b9001abff3a45f1ae90536da7dd1ec28a6ae0174"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 21:17:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 03 21:17:36 2014 +0000"
      },
      "message": "am b9001abf: Add extra logging for lock contention\n\n* commit \u0027b9001abff3a45f1ae90536da7dd1ec28a6ae0174\u0027:\n  Add extra logging for lock contention\n"
    },
    {
      "commit": "b9001abff3a45f1ae90536da7dd1ec28a6ae0174",
      "tree": "9f9c63eb2de3fce4c54583454f37d04f22668f5e",
      "parents": [
        "5be30072c5a750617dc3f9380776d074f26d9f32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 13:28:46 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 03 13:47:39 2014 -0700"
      },
      "message": "Add extra logging for lock contention\n\nWhen we get contention which is longer than kLongWaitMs (\u003d 100ms) we\nlog to logcat.\n\nExample output:\nW/art     ( 9960): Long monitor contention event with owner method\u003dvoid com.android.server.am.BroadcastQueue.processNextBroadcast(boolean) from BroadcastQueue.java:542 waiters\u003d1 for 243ms\n\nBug: 17787391\nChange-Id: Id1f92d9c41ec909d221871ecc2ff6181dcec2ed4\n"
    },
    {
      "commit": "c7376cabb889eb49cbd2dd9a77d10ee63a53d5b5",
      "tree": "09fef7a9ceb03b21ffa0bbe59485d6b1c9dfdc4d",
      "parents": [
        "38510082135a7fb438afb515fa3174596e644e9b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:15:19 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 09:48:17 2014 +0200"
      },
      "message": "Fix monitor visit for class initializer\n\nWe do not hold class object\u0027s lock when invoking class initializer. Therefore\nit is wrong to visit it when looking for monitors owned by a thread.\n\nBug: 17377924\n\n(cherry picked from commit 6d06f1b34322d91226c9dcd61e53c2b6731f8bb6)\n\nChange-Id: I9a18c421297608dc3109624111f9fea021a16d24\n"
    },
    {
      "commit": "5c9376a0fc6c0b25971d0b92e1de6de4f09ec90c",
      "tree": "c64699ea44ca4a61c828d8a77b743dfd33422f6b",
      "parents": [
        "37394eda2161b6e5b0aa361ad82732fbc664946d",
        "652984e4b32d06344fae8cad52524d4de7ac5c79"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 09 06:16:41 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 09 06:16:41 2014 +0000"
      },
      "message": "am 652984e4: am 77c318d5: Merge \"Fix monitor visit for class initializer\" into lmp-dev\n\n* commit \u0027652984e4b32d06344fae8cad52524d4de7ac5c79\u0027:\n  Fix monitor visit for class initializer\n"
    },
    {
      "commit": "6d06f1b34322d91226c9dcd61e53c2b6731f8bb6",
      "tree": "42e741ac4fe837938a8a20a1bd383aa92b6228b6",
      "parents": [
        "20632daac36995947d2d1943f89f07ac277e61f0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:15:19 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 08 10:18:18 2014 +0200"
      },
      "message": "Fix monitor visit for class initializer\n\nWe do not hold class object\u0027s lock when invoking class initializer. Therefore\nit is wrong to visit it when looking for monitors owned by a thread.\n\nBug: 17377924\n\nChange-Id: I7fddcdb9a554301e040c571971eec9be6cba5eda\n"
    },
    {
      "commit": "88ffa4933bab329e8225537be4f7a2333209e0b5",
      "tree": "a831fbb6d95b6d3532314a28661acf9038e405f5",
      "parents": [
        "5b984216c879db9cfebfe8a6b4a44efa3d7090e7",
        "1d4b6eff25aa29cbbf4d216d65349e1ad38f962e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 22:06:47 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 22 22:06:47 2014 +0000"
      },
      "message": "am 1d4b6eff: am 1e4fbd8b: Merge \"Using the correct time for wait_start_ms when lock contention logging is enabled\" into lmp-dev\n\n* commit \u00271d4b6eff25aa29cbbf4d216d65349e1ad38f962e\u0027:\n  Using the correct time for wait_start_ms when lock contention logging is enabled\n"
    },
    {
      "commit": "65282b253b55bbdb7f0e246d8c78ea34f84d0ff5",
      "tree": "713b938600814a62620abe5e2521f9dc267fabad",
      "parents": [
        "1dbc3a918612e9ce01f8b05b5ef5f4cbb34e74d0"
      ],
      "author": {
        "name": "Xin Guan",
        "email": "a18772@motorola.com",
        "time": "Fri Aug 22 11:55:37 2014 -0500"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 14:58:41 2014 -0700"
      },
      "message": "Using the correct time for wait_start_ms when lock contention logging is enabled\n\nBug: 17208457\nChange-Id: I35555e0acf3b37bb3776a62c64d59ae93403b237\n(cherry picked from commit b894a19dfd668b6779de939cf5265b7e409d8809)\n"
    },
    {
      "commit": "b894a19dfd668b6779de939cf5265b7e409d8809",
      "tree": "dcb74361c213660a7bfb82a754e967833a474d79",
      "parents": [
        "574758ef03b0930ebd1cb8d9afe741cb374419a1"
      ],
      "author": {
        "name": "Xin Guan",
        "email": "a18772@motorola.com",
        "time": "Fri Aug 22 11:55:37 2014 -0500"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 22 13:46:11 2014 -0700"
      },
      "message": "Using the correct time for wait_start_ms when lock contention logging is enabled\n\nBug: 17208457\nChange-Id: I35555e0acf3b37bb3776a62c64d59ae93403b237\n"
    },
    {
      "commit": "3b18f257344f911d7223bd36b90d1a4ad5331933",
      "tree": "93970f631b75ce62208625bfa06b1d60e9f59884",
      "parents": [
        "517e1e72e50bc30f438ef3826a37213e4ee65dbd",
        "d75383af2f0843ecd2f493fd64b4eb38630c6071"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 05:19:46 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 18 05:19:46 2014 +0000"
      },
      "message": "am d75383af: am 5e8a63ae: Merge \"ART: Do not recursively abort when visiting locks in a bad state\" into lmp-dev\n\n* commit \u0027d75383af2f0843ecd2f493fd64b4eb38630c6071\u0027:\n  ART: Do not recursively abort when visiting locks in a bad state\n"
    },
    {
      "commit": "90b180ee1edd17b8dca34ea9e58624818d2ee15a",
      "tree": "22a859bd5f2fe8b08d7a7bc2d5309d8228d59b55",
      "parents": [
        "9d352c06d8b6e9ea6343cc4f361a3309c2ce7ebe",
        "956a5228276693a7317ae6b41bfe7a7f0f3cbe6b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 16:41:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 16 04:08:14 2014 +0000"
      },
      "message": "Merge \"ART: Do not recursively abort when visiting locks in a bad state\""
    },
    {
      "commit": "956a5228276693a7317ae6b41bfe7a7f0f3cbe6b",
      "tree": "4fb359d422d2d7af04f1b9dc9b8b5d6f268b138b",
      "parents": [
        "078f4ea927b3259d698ca3dd542a096943e2cccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 16 13:41:10 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 09:40:40 2014 -0700"
      },
      "message": "ART: Do not recursively abort when visiting locks in a bad state\n\nThis avoids a nested abort in VisitLocks.\n\nBug: 17080621, 16382675\n\n(cherry picked from commit 760172c3ccd6e75f6f1a89d8006934e8ffb1303e)\n\nChange-Id: Id604976ac9dcac0e319fb25cab4d2cbc98d7ee24\n"
    },
    {
      "commit": "760172c3ccd6e75f6f1a89d8006934e8ffb1303e",
      "tree": "aa7b9c6c1690d09a36adb1dc7822fde80d057dd0",
      "parents": [
        "ebee8de725d5fa83483642786b19ea453d865762"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 16 13:41:10 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Aug 17 00:53:21 2014 -0700"
      },
      "message": "ART: Do not recursively abort when visiting locks in a bad state\n\nThis avoids a nested abort in VisitLocks.\n\nBug: 17080621, 16382675\nChange-Id: Id604976ac9dcac0e319fb25cab4d2cbc98d7ee24\n"
    },
    {
      "commit": "0ef3bd2a2334c0825130501bbabf6cbc8e870582",
      "tree": "f287b2083ab3ef63541def6f7de42e0ea4740c92",
      "parents": [
        "ee736b29675455ab0be615581145aa239ce7a6b3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 13:39:34 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 13:39:34 2014 -0700"
      },
      "message": "Tidy up monitor comments.\n\nChange-Id: Ib9d993f964ba6e2bec1979b486c26d3920a4a40c\n"
    },
    {
      "commit": "6f22fc166ed6c11cad229bff442c064e704de101",
      "tree": "750d9048864a264f35ca7929d8ee1c1c878fa0a2",
      "parents": [
        "63c051a540e6dfc806f656b88ac3a63e99395429"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:09:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:28:25 2014 -0700"
      },
      "message": "Make Monitor::Wait more robust to spurious Inflate failures.\n\nBug: 17062710\nChange-Id: Ife5f6b335caacc70cab543cd568676d277d3beb6\n"
    },
    {
      "commit": "43c69cc4cea794cd4d89d9d0680b1e25c6d02acc",
      "tree": "fdfabd74408bc13e4b73674e881ab0ebbfb39d0f",
      "parents": [
        "37f048b19da5ac245a6b2a8473b326d2167cc692"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:09:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 15 11:35:38 2014 -0700"
      },
      "message": "Make Monitor::Wait more robust to spurious Inflate failures.\n\nBug: 17062710\nChange-Id: Ife5f6b335caacc70cab543cd568676d277d3beb6\n(cherry picked from commit 6f22fc166ed6c11cad229bff442c064e704de101)\n"
    },
    {
      "commit": "94f7b49578b6aaa80de8ffed230648d601393905",
      "tree": "cfc69e453faefee38178ceb85378e1f0f1e17812",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 22 18:08:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 29 13:30:46 2014 -0700"
      },
      "message": "Add GcRoot to clean up and enforce read barriers.\n\nIntroduce a value-type wrapper around Object* for GC roots so that 1)\nwe won\u0027t have to directly add the read barrier code in many places and\n2) we can avoid accidentally bypassing/missing read barriers on GC\nroots (the GcRoot interface ensures that the read barrier is executed\non a read).\n\nThe jdwp test passed.\n\nBug: 12687968\nChange-Id: Ib167c7c325b3c7e3900133578815f04d219972a1\n"
    },
    {
      "commit": "6ec8ebd178ed39aa09e4c7fad194900114c4121a",
      "tree": "d618cd60098c59e6955ee19cb877b41aa7247753",
      "parents": [
        "9c81c0cb0dc8c8d8ae5dca3d2d82b0eec7af589f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 25 13:36:56 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 25 13:36:56 2014 -0700"
      },
      "message": "ART: Clean up API after change 102631\n\nThis adds an abort_on_error parameter to GetCurrentMethod, which is\nby default true. This restores all previous behavior, except for\nmonitor installation, where it follows 101639.\n\nBug: 16556938\nChange-Id: I9a12b9a21ccb9f558c86236bb58d15ff2fafaec0\n"
    },
    {
      "commit": "b363f666883860d40823d5528df3c98c897f74f4",
      "tree": "d4b629045d7e1d3e9236a0d8625b4ccbd0dbfc0f",
      "parents": [
        "ddc211980aa2f6149905d8d26f67201ac8e400b3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 16 13:28:58 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 22 17:25:32 2014 -0700"
      },
      "message": "Recycle mem-maps for collector transitions.\n\nWe now create spaces when we need them for collector transitions or\nhomogeneous compaction by recycling mem maps. Change the bump\npointer space size to be as large as the heap capacity instead of\n1/2 heap capacity like it used to be. For GSS, bump pointer spaces\nare set to 32MB currently.\n\nChanged GSS to have main space \u003d\u003d non moving space since we don\u0027t\nneed to copy from the main space.\n\nFixes GC stress tests 074, 096.\nFixed test 080 oom throw with -Xmx2m for GC stress test, this was\nbroken since it was allocating a 4 MB array before starting the\nOOM process.\n\nBug: 14059466\nBug: 16406852\nChange-Id: I62877cfa24ec944a6f34ffac30334f454a8002fd\n"
    },
    {
      "commit": "f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9",
      "tree": "de14ab8b610f43a2c2c4c02f4ac67d614919fde2",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:52:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:59:40 2014 -0700"
      },
      "message": "Avoid race in single thread suspension.\n\nDon\u0027t allow more than one concurrent single thread suspension to avoid\npotential cycles and deadlocks where threads try to suspend each other.\nBug: 16364458, 16354227\n\nChange-Id: I907f1d5591a6aa5c241d37d6b4a34f968f98df77\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "251755cd511463260e60be98bf138b6aa1c14bf3",
      "tree": "03c0e714efa3c9b54c2218cd4d5e64b27be01811",
      "parents": [
        "76e6773dfed9e9bf382bbb8d6c8654525fa44b0c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 15 18:10:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 15 18:32:02 2014 -0700"
      },
      "message": "Use sched_yield in Monitor::MonitorEnter.\n\nPreviously we used NanoSleep(1000), but this was unreliable. It could\nresult in waiting for \u003e\u003d 40ms instead of 1us. Since this was in a loop\nit was especially bad if the GC was trying to suspend all the\nthreads when we were sleeping. This resulted in thread suspension\noccasionally taking longer than a second.\nResults on the provided picasso-sample app on Nexus 5:\nLongest GC pause before: ~1.5s.\nLongest GC pause after: \u003c5ms.\n\nAlso added a warning if thread suspension takes longer than a\nthreshold (currently 5ms).\n\nBug: 16307460\nExternal bug: https://code.google.com/p/android-developer-preview/issues/detail?id\u003d367\n\nChange-Id: I3c2a9636357e255f38634615101eff8ca84e632f\n"
    },
    {
      "commit": "228602f562f1d130d06e60a98752d99c2d467d6a",
      "tree": "ee5b543695843ce48ebec4ffc88514ff679f4e93",
      "parents": [
        "be2a1df15a31a5223ee9af3015a00c31d2ad2e10"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "message": "Make CAS operations in Object use art::Atomic.\n\nMake naming consistent with art::Atomic.\n\nChange-Id: If3abdb019ef8b53bd809e3fef3fd5248aeb27e9a\n"
    },
    {
      "commit": "74240819ae09e29b2753ef38f4eb4be1c2762e2e",
      "tree": "61e2d3aa7268ce49fe77715593896f59feb92fe6",
      "parents": [
        "32710dd4a0232149002a5ae7bde1c640cdffd564"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 17 10:35:09 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 10 00:51:04 2014 -0700"
      },
      "message": "Use memory chunks for monitors on LP64\n\nMonitor IDs in lock words are only 30b. On a 32b system that works\nfine, as memory is usually aligned enough that shifting works out.\nOn 64b systems, the virtual memory space is too large for that.\nThis adds memory chunks into which we allocate the monitors so that\nwe have base_addr + offset and can use the offset as the monitor ID.\nTo allow for relatively compact but growable storage, we use a list\nof chunks.\n\nAdded a global lock for the monitor pool.\n\nChange-Id: I0e290c4914a2556e0b2eef9902422d7c4dcf536d\n"
    },
    {
      "commit": "1af6a1fa35ff7dc0a5c653f19dbc8a91c914aa42",
      "tree": "07807547760383cfe9310c70ea00eace03b2740b",
      "parents": [
        "13f89cb9930ea799c21559020da43c3845536da5"
      ],
      "author": {
        "name": "Elena Sayapina",
        "email": "elena.v.sayapina@intel.com",
        "time": "Fri Jun 20 16:58:37 2014 +0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 07 18:39:55 2014 -0700"
      },
      "message": "ART: Update Monitor::Wait so it releases monitor_lock_ before throwing an exception\n\nThread should release monitor_lock_ Mutex (which guards shared structures behind Java monitor)\nin Monitor::Wait before throwing any exception. Otherwise the thread may be suspended by GC\nduring that time still holding the lock. This may cause deadlock during GC in case\nsome other thread needs to acquire the monitor_lock_. The other thread can\u0027t be suspended\nby GC then waiting for exclusive lock and \"thread suspend timeout\" occurs.\n\nChange-Id: Id02f45052e1cfc01e676a43434125817564d7874\nSigned-off-by: Elena Sayapina \u003celena.v.sayapina@intel.com\u003e\n"
    },
    {
      "commit": "48ab687d1f864fec93c2682de6fdc44ab784e2f8",
      "tree": "a014f5ea92632b8c4409e2c763d87a84aa1a644f",
      "parents": [
        "cbb0e809c0a4e8a4e8b7f5d3768a1864cfb381bb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 24 11:21:59 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 24 14:49:48 2014 -0700"
      },
      "message": "Add logging to monitor deflation.\n\nChange-Id: I0251ff19e0a3c3b9edc7c7e296f15eb3229f8f7c\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "3035961cb41865b80b927546be0c708b6389cec6",
      "tree": "27ed39f92c013381d08c7ad51d311cb29be230dc",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 21 17:46:23 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jun 06 16:13:42 2014 -0700"
      },
      "message": "Clean up and augment Atomic class.  Replace QuasiAtomic MemBars.\n\nAdd a number of missing C++11 operations to Atomic class.\nInvoke the 64 bit routines in QuasiAtomic when necessary.\nReplace QuasiAtomic membars with fences that correspond to C++11 fences.\n\nQuasiAtomic was moved to the top of the file.  Only fence implementations\nactually changed.\n\nThis replaces some buggy uses of MembarStoreStore, as reported\nin b/14685856 .\n\nAvoid some redundant fences for long volatile operations.\n\nIncompletely converts low-level memory access operations to Atomic.\n\nChange-Id: Iea828431a0cea46540eb74fcaa02071cab6fdcda\n"
    },
    {
      "commit": "66b68faa42cd36eb368f96c206b29c940ddda129",
      "tree": "ec8d7be0ffd659c3369c3a4f45d319b8be3c4892",
      "parents": [
        "52925af1e3136bcf68bc5754fbfa407950235217",
        "0cd81352a7c06e381951cea1b104fd73516f4341"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\""
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "46960fe5dcc1be07b39a55114338423a73554449",
      "tree": "fb31a1fc7dc07abe3d87a26f8fd394e9f7193304",
      "parents": [
        "567e9dbc65ee183cda2a052dbf224c8c4a8f9423"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "message": "Make the specification of when we need precise constants more precise.\n\nMeans that oatdump output showing values for deoptimization actually reflects\nwhat we see at runtime.\nAlso, doesn\u0027t do precise in the case of determining methods and fields for the\nquickened case, which may be an occasional performance win.\n\nChange-Id: I62c7fb244f7996ba9d52e7a7ce75c046b663fa17\n"
    },
    {
      "commit": "7d5cf703f3c03769e5b2f7ebc9d216c52ee5c70d",
      "tree": "6d6f6aff838a440f418fe4a4e1451d9db8c8d5dc",
      "parents": [
        "be2cb9b284f3eca3b99571e83b7e0e3109f1ef06",
        "3bdb873122964da7937eb070cbcf2ef638a8e459"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:07:37 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 22 22:07:38 2014 +0000"
      },
      "message": "Merge \"Revert \"Fix an outstanding compaction bug in interpreter.\"\""
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "a6e7f0872c42009ecbee82d7fbe452deef9ae65b",
      "tree": "1ba6d026f6c9a47b9961c62511ab47c6d69314dd",
      "parents": [
        "697726d42eaf804a1124c25dec58c2b0013a30e9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 14:43:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 14:43:37 2014 -0700"
      },
      "message": "Move SetMonitorEnterObject outside of blocked thread state change.\n\nRace condition:\nThread is suspended in monitor kBlocked, GC decides to run the\ncheckpoint on it. The GC sees that the object is non null, and goes\nto mark it, but then the thread does SetMonitorObject(nullptr).\nWhich causes a null object to be marked.\n\nChange-Id: Ie8a5074112947ec07d01ccb813ca2c1bb9ac7066\n"
    },
    {
      "commit": "697726d42eaf804a1124c25dec58c2b0013a30e9",
      "tree": "28b1dbbfe0bd2110e32c54293f0ea655e1a2de02",
      "parents": [
        "65e3b69b366c6b7e06b87e7a1f76d30a51b1f777",
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 17:57:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 22 17:57:52 2014 +0000"
      },
      "message": "Merge \"Fix an outstanding compaction bug in interpreter.\""
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "225353e2ff7072d4e4aa9d2cd9cdbfa83670e323",
      "tree": "41b4ab344e0d5eef729be167d97857112e48670e",
      "parents": [
        "5da6e2b88258733dd3856543af27ca73b395ef60",
        "4cba0d979a11f955e6ec3c0f1bf61478af7aa810"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 22 17:34:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 22 17:34:45 2014 +0000"
      },
      "message": "Merge \"Add a read barrier for weak roots in monitors.\""
    },
    {
      "commit": "4cba0d979a11f955e6ec3c0f1bf61478af7aa810",
      "tree": "b3e3b61af6bd079989a1bf5259daaa8006af32d4",
      "parents": [
        "388c6e273018c753d7822d09d7cda0826f0c32ed"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed May 21 21:10:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed May 21 21:19:17 2014 -0700"
      },
      "message": "Add a read barrier for weak roots in monitors.\n\nA weak root requires a read barrier for the to-space invariant to hold\nbecause the object pointed to by a weak root can\u0027t be marked/forwarded\nlike the one pointed to by a strong root (GC does not know if it\u0027s\nalive or not at that point) and because, without a read barrier, a\nmutator could access it and obtain a from-space reference, which would\nviolate the to-space invariant.\n\nTODO: do similar for the other types of weak roots.\n\nBug: 12687968\nChange-Id: I563a0fa4f875e0c21ac96f57696959454e13b15a\n"
    },
    {
      "commit": "3e5cf305db800b2989ad57b7cde8fb3cc9fa1b9e",
      "tree": "52a737323ebd505cf37ca0e4b2dcee6524fba07f",
      "parents": [
        "27a2b70f612af9afc0fb5392fb10059f6a0a3569"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 20 16:40:37 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 20 21:17:03 2014 -0700"
      },
      "message": "Begin migration of art::Atomic to std::atomic.\n\nChange-Id: I4858d9cbed95e5ca560956b9dabd976cebe68333\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "86ab7912423f63541073af5c487b509e9b2b5420",
      "tree": "bdf2cda5bd949a5577fe9a64c708731378c8ba6c",
      "parents": [
        "e1a71b2a6e899645b006c29ba37695f521545a5b"
      ],
      "author": {
        "name": "Haifeng Li",
        "email": "omycle@gmail.com",
        "time": "Fri May 16 10:47:59 2014 +0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 09:36:58 2014 -0700"
      },
      "message": "ART: Fix Segment Fault with null owner while monitor logging is enabled\n\nWhen the monitor inflates from thin to fat with the existing hashcode，\nthe owner is nullptr, which will cause segment fault with\nowner-\u003eGetThreadId().\n\nChange-Id: I90081d581a0ffd3d38763cc175fd2d7f66076747\n"
    },
    {
      "commit": "a1ee14fc66a3c99bb7d5744ace881ec93c46f59d",
      "tree": "2cd8d531b587125a364a6dc8d90b0d882715d01d",
      "parents": [
        "421c53742610c053543f8c84e04d5e0c5185d68c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 14 16:51:03 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 14 17:05:03 2014 -0700"
      },
      "message": "Fix race in inflating thin locks.\n\nBefore we were inflating the lock word in the blocked state, this\nmeant that the garbage collector could be running at this point\nresulting in the lock word changing from underneath us.\n\nBug: 14881707\nChange-Id: If8897b2572a1b29a3cf44e5eb2e11c186236f519\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "4d7f61d44a732cfbc8573e5d93364983fd746888",
      "tree": "0ad34f9316227531696c01ba9b25a2175a5c5f65",
      "parents": [
        "425640d6fac3432a44e236a002e8401a7cd59c5c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 17 14:43:39 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 17 15:56:47 2014 -0700"
      },
      "message": "Use non volatile lock words in semispace collector.\n\nGSS FormulaEvaluationActions.EvaluateAndApplyChanges:\nBefore GC time: 9.1s\nAfter GC time: 7.98s\n\nFixed timing logger errors.\n\nChange-Id: I4193c6ccbbbe7a7220dfaabbf3472a5dcebae616\n"
    },
    {
      "commit": "440e4ceb310349ee8eb569495bc04d3d7fbe71cb",
      "tree": "db278d463f0c2440e9c8e8cb80e53d2b2effe196",
      "parents": [
        "4d3dc8a04da8a80251b381cdb482190363171dc1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 31 16:36:35 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 07 13:44:36 2014 -0700"
      },
      "message": "Add monitor deflation.\n\nWe now deflate the monitors when we perform a heap trim. This causes\na pause but it shouldn\u0027t matter since we should be in a state where\nwe don\u0027t care about pauses. Memory savings are hard to measure.\n\nFixed integer overflow bug in GetEstimatedLastIterationThroughput.\n\nBug: 13733906\nChange-Id: I4e0e68add02e7f43370b3a5ea763d6fe8a5b212c\n"
    },
    {
      "commit": "d803bc7ce255be6c16eaf6a8a58a742515e9da9f",
      "tree": "9d996494ae037ba99bb149927adfe961be68926b",
      "parents": [
        "8ce67ac16abcd25b376be622cbd20a34aec4a59d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 15:33:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 15:33:03 2014 -0700"
      },
      "message": "Fix ThreadStress, unify ANR lock descriptions.\n\nBug: 13323656\nChange-Id: I902825a847af9aa570ed79701409298e3532bebf\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\n"
    },
    {
      "commit": "e7e8a5fea2d852cccc840fa046151a16627f26cd",
      "tree": "4509736090c371a363e79f4a3d01107d0b8d5e72",
      "parents": [
        "cc35e45f371f5018b42e2ef383185e2840cf4374"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 14 16:59:41 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 14 18:26:37 2014 -0800"
      },
      "message": "Remove using mirror::* in jni internal.\n\nCleans up the code since it helps make it easier to spot moving GC\nrelated bugs.\n\nAlso fixed moving GC bugs in MonitorEnter, and FindFieldID.\n\nChange-Id: I794e4fbcc2010875fc6b299c6d4c9fb0f071b71a\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "b122a4bbed34ab22b4c1541ee25e5cf22f12a926",
      "tree": "624f16271f4481a8fd5aa2f607385f490dc7b3ae",
      "parents": [
        "e40687d053b89c495b6fbeb7a766b01c9c7e039c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 19 18:00:50 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 20 08:01:57 2013 -0800"
      },
      "message": "Tidy up memory barriers.\n\nChange-Id: I937ea93e6df1835ecfe2d4bb7d84c24fe7fc097b\n"
    },
    {
      "commit": "5f51d4b80058236759fea1d932470a57f348c199",
      "tree": "096ce11ba8dc096fd27d2fbed84459080c7d3b1e",
      "parents": [
        "d83d4c86c89357a74e94963994ad0c42ea7299c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 03 14:24:05 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 05 12:57:43 2013 -0800"
      },
      "message": "Fix races in thread list Unregister.\n\nFirst race:\nWe were releasing the thin_lock_id in Unregister before the thread\nwas not suspended. This could cause problems in\nSuspendThreadByThreadId since there was a small window of time where\ntwo threads could share the same thread id. This race caused an\noccasional check failure in SuspendThreadByThreadId.\n\nSecond race:\nWe were setting the thin_lock_thread_id_ to 0 in Unregister before\nwaiting to not be suspended. This caused another race in\nSuspendThreadByThreadId where we modified the thread suspend count,\nbusy waited, but didn\u0027t find the thread the next iteration. This\nmeant that we were returning null even though we had modified the\nsuspend count. This caused the suspend count to not get decremented\nsince the caller didn\u0027t know that the suspend count had been\nincreased. Removing the self-\u003ethin_lock_thread_id_ \u003d 0 in\nThreadList::UnRegister fixes this race.\n\nAdded a bit of additional checks and logging to prevent these issues\nfrom resurfacing, other misc cleanup.\n\nAdded thread names to threads in ThreadStress.\n\nBug: 11319866\n\nChange-Id: I48e3a0700193b72079e450be1e924a2f88cf52e2\n"
    },
    {
      "commit": "46bc778f1feed02b20d25e3d03470c93ca2c0506",
      "tree": "ac760c321039cd8a5e78ae766accf4dc3ddb194b",
      "parents": [
        "0b74e3acc2fd35d95ac55c4ee2ffe5c651229ed8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 12 17:03:02 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 12 17:03:02 2013 -0800"
      },
      "message": "Fix portable + mips build.\n\nChange-Id: Ia200e582b04c84973281e12331777351feb8a401\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "4e6a31eb97f22f4480827474b30b9e64f396eace",
      "tree": "3afe222c60314a22be8bb8de61cb245e1af2dc92",
      "parents": [
        "1b8cb967143d5c46db1db8ac940a73d111be3628"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 31 10:35:05 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 31 13:33:51 2013 -0700"
      },
      "message": "Lazily compute object identity hash codes.\n\nBefore, we computed identity hashcodes whenever we inflated a monitor.\nThis caused issues since it meant that we would have all of these\nhash codes in the image, causing locks to excessively inflate during\napplication run time.\n\nThis change makes it so that we lazily compute hash codes. When a\nthin lock gets inflated, we assign a hash code of 0 assigned to it.\nThis value signifies no hash code. When we try to get the identity\nhash code of an object with an inflated monitor, it gets computed if\nit is 0.\n\nChange-Id: Iae6acd1960515a36e74644e5b1323ff336731806\n"
    },
    {
      "commit": "9728f91a63016136261231ff5213bde703bd27b6",
      "tree": "a5da6d2ed4942a5b8fc00ad73551d7794703206b",
      "parents": [
        "30839a76a9efbda83189420b6cbce66cd7d15dd2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 30 09:45:13 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 30 09:45:56 2013 -0700"
      },
      "message": "Add missing null check in monitor install.\n\nFixes broken OTA.\n\nChange-Id: I3a89e4755dc6b23d214ec542df3d167e788b904d\n"
    },
    {
      "commit": "ad2541a59c00c2c69e8973088891a2b5257c9780",
      "tree": "523898cf039c5185352978e71a54fa3a2657a04c",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 25 10:05:23 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 29 12:14:36 2013 -0700"
      },
      "message": "Fix object identity hash.\n\nThe object identity hash is now stored in the monitor word after\nbeing computed. Hashes are computed by a pseudo random number\ngenerator.\n\nWhen we write the image, we eagerly compute object hashes to\nprevent pages getting dirtied.\n\nBug: 8981901\n\nChange-Id: Ic8edacbacb0afc7055fd740a52444929f88ed564\n"
    },
    {
      "commit": "13c479e7e9b62115fe0409e5273c1e976a1c09f9",
      "tree": "2c3fa2fd752f8e80ea888887c4ef46fd00bdb696",
      "parents": [
        "9822c33a66157b7a4c96222befb0848e204dcc5b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 11 07:59:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 11 07:59:01 2013 -0700"
      },
      "message": "Notify doesn\u0027t inflate, rename helper.\n\nChange-Id: I85c93b522478b3116a66630856a2370ec0fda490\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\n"
    },
    {
      "commit": "810b1d704f2db0d935bf5dddae3545f79cabd435",
      "tree": "baf1ec61b47031244cb1fe2458b136c9f9d54f1f",
      "parents": [
        "5c00e28cdc7da675451869a2e5baa8f1c3244892",
        "bb0140e051e62ca0b51b0870c2386ae3110b0556"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 14:02:02 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 14:02:02 2013 -0700"
      },
      "message": "resolved conflicts for merge of bb0140e0 to dalvik-dev\n\nChange-Id: I31e0c05c5e917cf3275296a7f65bd8b78ec9b78b\n"
    },
    {
      "commit": "c11d9b8870de5f860b13c84003ade7b3f3125a52",
      "tree": "89b0250d35a950774f98fa1abfa9cc296c9d85db",
      "parents": [
        "261d3cda32b28782d894be0244e617f78182ee3b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 19 10:01:59 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 20 10:36:49 2013 -0700"
      },
      "message": "Re-enable concurrent system weak sweeping.\n\nEnabled by disallowing new system weaks during the pause and\nre-allowing it after the system weaks have been swept. Reduces\nGC pause by ~1ms.\n\nFixes pause regression caused by fix for\nBug: 10626133\n\nChange-Id: If49d33e7ef19cb728ed3cef5187acfa53b9b05d8\n"
    },
    {
      "commit": "6aa3df965395566ed6a4fec4af37c2b7577992e9",
      "tree": "c17406cf6cbea16165ad05130609450ff0e1e204",
      "parents": [
        "cb135ad769a5368f6ceb8caf25105a95580cbd6a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 15:17:28 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 17 16:31:24 2013 -0700"
      },
      "message": "Refactor system weak sweeping, add support for modification.\n\nRequired for moving collectors.\n\nChange-Id: Ib97ba4a05af1139f8d388077a15e62bcb9534855\n"
    },
    {
      "commit": "049e7a35366937b1b7b28afcaccc88c0c69ea3ec",
      "tree": "211d80a34956141a730feb62977d2bff7a1d6b10",
      "parents": [
        "7b6da36ac600178f0cdc60a1c36843c3a4fd300e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 11 10:35:34 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 11 10:35:34 2013 -0700"
      },
      "message": "Tweak an unusual monitor log message.\n\nChange-Id: I0a62b0d04ce4ee4c3b6576737d58beacef09f520\n"
    },
    {
      "commit": "7dfb28c066159e6cde8181720f0c451a700ef966",
      "tree": "5279fb95da015365846eb48d931b9355b540cb9e",
      "parents": [
        "a7e885013753df3f07bf038a8c4a187fb97c78e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 22 08:18:36 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 23 10:49:29 2013 -0700"
      },
      "message": "Don\u0027t scan image space when starting runtime.\n\nBug 10432288.\nFind Classes and Strings from dex caches lazily rather than when the image is\nloaded.\nMake class status changes do notifies when there can be waiters.\nFor Class lookup there\u0027s a pathology if we always search dex caches and\nso after 1000 failures move all classes into the class table.\nBe consistent in using \"const char*\" for class linker descriptors as this\nmost easily agrees with the type in the dex file.\nImprove the intern run-test so that it has a case of a literal contained in the\nimage.\nModify image_test to allow any valid lock word rather than expecting 0, ideally\nwe wouldn\u0027t see inflated monitors but we do due to NotifyAll (see bug 6961405).\n\nChange-Id: Ia9bfa748eeccb9b4498784b97c6823141b1f6db8\n"
    },
    {
      "commit": "02e25119b15a6f619f17db99f5d05124a5807ff3",
      "tree": "7be4cbbf28033e5ee0621565b410fe5d8170a8fb",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 14 16:14:24 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 13:15:37 2013 -0700"
      },
      "message": "Fix up TODO: c++0x, update cpplint.\n\nNeeded to update cpplint to handle const auto.\n\nFixed a few cpplint errors that were being missed before.\n\nReplaced most of the TODO c++0x with ranged based loops. Loops which\ndo not have a descriptive container name have a concrete type instead\nof auto.\n\nChange-Id: Id7cc0f27030f56057c544e94277300b3f298c9c5\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "05f3057d6a4d23d712092ccd36a531590bff323b",
      "tree": "3f342c813afdb44a08466e379c060f917d073e5a",
      "parents": [
        "4aeb567fa8b1f5e17ef7beacf86fed505cc7335c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:13:11 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:15:09 2013 -0800"
      },
      "message": "Move monitor related object routines to object-inl.h\n\nAlso pass through readily available self Thread. Remove unused wait method.\nRename ObjectLock.Wait to document it doesn\u0027t honor interrupts.\n\nChange-Id: I991e5036997b3f60ee4fdf1a420beabab9a70c85\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    }
  ],
  "next": "56edc432fa914f7ccfa87ce443e64f5ef475666d"
}
