)]}'
{
  "log": [
    {
      "commit": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "c9a7028430d95090ad3d7690203fd887d1e201a4",
      "tree": "83e690d43ce87913c274b788c61d3425e6570e51",
      "parents": [
        "36994ba006c18c1933815cc0c4c036df086e6814"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 14:44:33 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 13 16:40:14 2016 -0800"
      },
      "message": "Add exclusion for Reference.clear and reference processing\n\nPrevents race conditions like unclearing cleared references or\ncalling IsMarkedHeapReference on null references.\n\nBug: 33389022\n\nTest: test-art-host\n\nChange-Id: Iee83b76d84453e929172f1a83f284aa4910e126c\n"
    },
    {
      "commit": "5d3f73aef1b778d81ba101ece41935adee259cf2",
      "tree": "fec0c2fdbb88df0a366e29b6470d1274aa6e2ec1",
      "parents": [
        "cfdff144f154df876987fefb340058a975c43381"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:28:47 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:38:43 2016 -0700"
      },
      "message": "Move reference processor and mirror::Reference to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061\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": "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": "3130cdf29eb203be0c38d1107a65d920ec39c106",
      "tree": "0b4093afe3f71d89b22f6ba927ad05946fb33910",
      "parents": [
        "25dcb2594a21a565ef82faa66a79bcf595c3a780"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 03 15:20:23 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 03 15:20:23 2015 -0700"
      },
      "message": "Add some more DISALLOW_COPY_AND_ASSIGN\n\nMay help prevent bugs maybe.\n\nChange-Id: Ie73d469dfcd078492ecb3aa28682b42707221202\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": "a5a53efea976af505f4f849b5925d5e14c4f8e5c",
      "tree": "455a536a9394908c17ec1ede04ab7ec49f9d3420",
      "parents": [
        "91bbd5347b391278b56440b2dbb0b77526bae4e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 12:58:05 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Sep 14 14:48:24 2014 -0700"
      },
      "message": "Add native support for FinalizerList.makeCircularListIfUnenqueued\n\nCalled from FinalizerReference.enqueueSentinelReference to prevent\na race where the GC updates pendingNext of the sentinel reference\nbefore enqueueSentinelReference.\n\nBug: 17462553\n\n(cherry picked from commit 3256166df40981f1f1997a5f00303712277c963f)\n\nChange-Id: I7ad2fd250c2715d1aeb919bd548ef9aab24f30a2\n"
    },
    {
      "commit": "4ee7a665e7f9cd2c5ace2d6304e33f64067b209f",
      "tree": "e8e6867c71fde6e37ec5597e8677ab807084f734",
      "parents": [
        "76e6773dfed9e9bf382bbb8d6c8654525fa44b0c"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Fri Jul 11 09:59:27 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Tue Jul 15 15:45:21 2014 -0700"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Add intrinsic for Reference.get()\"\"\"\"\n\nFixed TargetReg issue causing build failure for x86.\nThis reverts commit 9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f.\n\nChange-Id: I7e6a526954467aaf68deeed999880dfe9aa5f06e\n"
    },
    {
      "commit": "9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "d4415e8bd04c4a9367744ff0149597b4f37a0e0a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add intrinsic for Reference.get()\"\"\"\n\nThis reverts commit d4415e8bd04c4a9367744ff0149597b4f37a0e0a.\n\nChange-Id: I34553ccbdcfea35c7742d21be2a74dc7085ab2a0\n"
    },
    {
      "commit": "d4415e8bd04c4a9367744ff0149597b4f37a0e0a",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "a9b870b73a155ce70c867d5b3f9758fab0b45f07"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "message": "Revert \"Revert \"Add intrinsic for Reference.get()\"\"\n\nThis reverts commit a9b870b73a155ce70c867d5b3f9758fab0b45f07.\n\nChange-Id: Ic2a9b47f2b911bef4b764d10bc33cf000e4b4211\n"
    },
    {
      "commit": "a9b870b73a155ce70c867d5b3f9758fab0b45f07",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "460503b13bc894828a2d2d47d09e5534b3e91aa1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "message": "Revert \"Add intrinsic for Reference.get()\"\n\nThis reverts commit 460503b13bc894828a2d2d47d09e5534b3e91aa1.\n\nChange-Id: Ie63f43049307e02e3b90f4e034abc9ea54ca4e24\n"
    },
    {
      "commit": "460503b13bc894828a2d2d47d09e5534b3e91aa1",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "adce33da293b0eeaaf52673338770f22be71ca5d"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jun 18 11:26:11 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Thu Jul 10 10:41:34 2014 -0700"
      },
      "message": "Add intrinsic for Reference.get()\n\nAdded an intrinsic function for Reference.get(). Return immediately\nwithout going through JNI if the slow path is not currently in use.\nOtherwise, branch off to the the existing JNI function.\n\nApproximately 47x speedup for cases where slow path is not enabled.\n\nChange-Id: I13ad65a356fe4e104d8d83980694dc2740d7d039\n"
    },
    {
      "commit": "52e4b43d62896b56f8c2bd041e528472bb4a0d8d",
      "tree": "3a9367c391418c1375a6c86f678b3f047cacc03f",
      "parents": [
        "ef38670cae8462d579da983c1863f96717cccee6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 10 11:22:31 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 19 12:57:05 2014 -0700"
      },
      "message": "Add mark compact collector.\n\nThe mark compact collector is a 4 phase collection, doing a normal\nfull mark_sweep, calculating forwarding addresses of objects in the\nfrom space, updating references of objects in the from space, and\nmoving the objects in the from space.\n\nSupport is diabled by default since it needs to have non movable\nclasses and field arrays. Performance numbers is around 50% as fast.\n\nThe main advantage that this has over semispace is that the worst\ncase memory usage is 50% since we only need one space isntead of two.\n\nTODO: Make field arrays and classes movable. This causes complication\nsince Object::VisitReferences relies on these, so if we update the\nfields of an object but another future object uses this object to\nfigure out what fields are reference fields it doesn\u0027t work.\n\nBug: 14059466\n\nChange-Id: I661ed3b71ad4dde124ef80312c95696b4a5665a1\n"
    },
    {
      "commit": "308351ada0008b0cbe1a5afc31c302c975554ee4",
      "tree": "1447c36df5616515d6e7ac35c185721d3c829c4b",
      "parents": [
        "97ed29f800c56a06fd6989e0883e4c97bedd2453"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jun 15 12:39:02 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 16 14:01:52 2014 -0700"
      },
      "message": "Change reference processing to use heap references.\n\nRemoves several SetReferents for updating moved referents. Cleaned\nup other aspects of the code.\n\nChange-Id: Ibcb4d713fadea617efee7e936352ddf77ff4c370\n"
    },
    {
      "commit": "78f7b4c04ab6e8b5581921bc95b67a9beee1c246",
      "tree": "78b93c72007478b5bfc3b88ab413fa3d772da723",
      "parents": [
        "052a647973b590c9d5007a2e16f313f4e32a70bd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 06 10:57:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:28:35 2014 -0700"
      },
      "message": "Add concurrent reference processing.\n\nConcurrent reference processing currently works by going into native\ncode from java.lang.ref.Reference.get(). From there, we have a fast\npath if the references aren\u0027t being processed which returns the\nreferent without needing to access any locks. In the slow path we\nblock until reference processing is complete. It may be possible to\nimprove the slow path if the referent is blackened.\n\nTODO: Investigate doing the fast path in java code by using racy reads\nof a static volatile boolean. This will work as long as there are no\nsuspend points inbetween the boolean read and referent read.\n\nBug: 14381653\n\nChange-Id: I1546b55be4691fe4ff4aa6d857b234cce7187d87\n"
    }
  ]
}
