)]}'
{
  "log": [
    {
      "commit": "057d977aed600843dd4a617dca7098555d79110b",
      "tree": "1af506ef9e3ae36d44c355b0baa49b362d976f83",
      "parents": [
        "6a669aac63ffc17b5e903aa4a1f285fe338eadcf"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 17 15:33:23 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 21 13:50:11 2017 -0800"
      },
      "message": "Always mark reference referents in transaction mode.\n\nFix a to-space invariant check failure in EnqueueFinalizerReferences.\n\nReference processing can be a problem and useless during transaction\nbecause it\u0027s not easy to roll back what reference processing does and\nthere\u0027s no daemon threads running (in the unstarted runtime). To avoid\nissues, always mark reference referents.\n\nAdd a do_atomic_update parameter to MarkHeapReference.\n\nBug: 35417063\nTest: test-art-host with CC/CMS/SS.\nChange-Id: If32eba8fca19ef86e5d13f7925d179c8aecb9e27\n"
    },
    {
      "commit": "65f5f247a367af9d6b9ac63767b69ecf3ab079bc",
      "tree": "bff631b0efd7e8fe77be9c445ea9224e2b67433b",
      "parents": [
        "5b32b91d731d6187ada4c6fc804041b7b3b6903c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 19 11:44:47 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Dec 19 11:44:47 2016 -0800"
      },
      "message": "Fix race condition btw DelayReferenceRefernent vs Reference.clear().\n\nRename IsMarkedHeapReference to IsNullOrMarkedHeapReference.\n\nMove the null check from the caller of IsMarkedHeapReference into\nIsNullOrMarkedHeapReference.\n\nMake sure that the referent is only loaded once between the null\ncheck and the IsMarked call.\n\nUse a CAS in ConcurrentCopying::IsNullOrMarkedHeapReference when\ncalled from DelayReferenceRefernent.\n\nBug: 33389022\nTest: test-art-host without and with CC.\n\nChange-Id: I20edab4dac2a4bb02dbb72af0f09de77b55ac08e\n"
    },
    {
      "commit": "12b58b23de974232e991c650405f929f8b0dcc9f",
      "tree": "bc08011e3b9f4c132fc605dc54d1d5f50c932a29",
      "parents": [
        "b0b2080b4cea8365052d1be973e927f8ee85f609"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Nov 01 11:55:29 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 02 16:31:04 2016 -0700"
      },
      "message": "Clean up the runtime read barrier and fix fake address dependency.\n\n- Rename GetReadBarrierPointer to GetReadBarrierState.\n- Change its return type to uint32_t.\n- Fix the runtime fake address dependency for arm/arm64 using inline\n  asm.\n- Drop ReadBarrier::black_ptr_ and some brooks code.\n\nBug: 12687968\nTest: test-art with CC, Ritz EAAC, libartd boot on N9.\nChange-Id: I595970db825db5be2e98ee1fcbd7696d5501af55\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": "5ffa0780a2738eed1f86efb967ea99badcbd5d9c",
      "tree": "ee3a4bde21aa03ad564c84877b3cbab3048e6cfd",
      "parents": [
        "93afc5f20a23ece78d6d6e506ed75775b8ef2113"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 27 10:45:47 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 27 13:57:01 2016 -0700"
      },
      "message": "Reduce unnecessary read barriers in GC\n\nRemoved read barrier from IsUnprocessed, DequeuePendingReference,\nEnqueueReference, and a few other places.\n\nHard to tell if GC time goes down.\n\nEAAC:\nBefore GC slow path count: 254857\nAfter GC slow path count: 1005\n\nBug: 30162165\nBug: 12687968\n\nTest: test-art-host, volantis boot with CC\n\nChange-Id: Ic2add3a9b1e1d7561b0b167f2218b10f8dbff76c\n"
    },
    {
      "commit": "8e67465aa57ee58425be8812c8dba2f7f59cdc2e",
      "tree": "b9ec80a0978d3a4d42a38efe1cee0e9a01696b47",
      "parents": [
        "20eef176101924d5047895214bad4e73b8ae35ec"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Dec 22 11:09:18 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon May 23 10:50:36 2016 -0700"
      },
      "message": "Avoid the need for the black color for the baker-style read barrier.\n\nWe used to set marked-through non-moving objects to black to\ndistinguish between an unmarked object and a marked-through\nobject (both would be white without black). This was to avoid a rare\ncase where a marked-through (white) object would be incorrectly set to\ngray for a second time (and left gray) after it\u0027s marked\nthrough (white/unmarked -\u003e gray/marked -\u003e white/marked-through -\u003e\ngray/incorrect). If an object is left gray, the invariant would be\nbroken that all objects are white when GC isn\u0027t running. Also, we\nneeded to have an extra pass over non-moving objects to change them\nfrom black to white after the marking phase.\n\nTo avoid the need for the black color, we use a \u0027false gray\u0027 stack to\ndetect such rare cases and register affected objects on it and change\nthe objects to white at the end of the marking phase. This saves some\nGC time because we can avoid the gray-to-black CAS per non-moving\nobject as well as the extra pass over non-moving objects.\n\nRitzperf EAAC (N6):\n  Avg GC time:  232 -\u003e  183 ms (-21%)\nTotal GC time: 15.3 -\u003e 14.1 s  (-7.7%)\n\nBug: 12687968\nChange-Id: Idb29c3dcb745b094bcf6abc4db646dac9cbd1f71\n"
    },
    {
      "commit": "c4695dfdab80c280c98a89c20e027a3804191585",
      "tree": "b78f388ac75edd9f02abfcae68aad7d445af75d1",
      "parents": [
        "97f4bc04b61d5cf78b0820dbf18e999b20d7a108"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Jan 15 14:08:05 2016 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 28 15:34:19 2016 -0800"
      },
      "message": "Always use pendingNext to test enqueability of references.\n\nAlso clean up a misleading comment in a reference queue test.\n\nBug: 24404957\nChange-Id: Ieea4788039ecef73cba1871fb480a439bf65b499\n"
    },
    {
      "commit": "522d51b088c63d757e487d07d769f8f09e042f2a",
      "tree": "f1b5a1646ef0fa68f7b51e68caaf1f82624099e2",
      "parents": [
        "c31fb58453ec1eba82390c3313623d37314c5490"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Jan 22 14:18:57 2016 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 26 15:19:36 2016 -0800"
      },
      "message": "Factor out common code for SetPendingNext.\n\nChange-Id: I6c1f9cd6da7b2c21714175455e61479273d3669f\n"
    },
    {
      "commit": "d2bb5ba17c5760aee5347de3c32b4f2f47a33d54",
      "tree": "16cdbfc9f8a2c87b1453a63b882b28ec2c733c72",
      "parents": [
        "5da1ea29be0d5f4e8fc03c3c509f0474b53affd2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Sep 14 15:10:50 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 15 10:33:03 2015 -0700"
      },
      "message": "Expect null referent in DequeuePendingReference().\n\nFollowing up on CL 170735.\n\nIt\u0027s possible that the referent may potentially be cleared which would\ncause a check failure. Avoid that.\n\nBug: 12687968\nBug: 23896462\nChange-Id: I8ccc5936b61ceacf250624681e65307f23ce0405\n"
    },
    {
      "commit": "70c08d3c913ce2150cd620ea87b919f8eb5bd953",
      "tree": "7390f7bc8cfbf3ada1f387e470e51c4ff7531145",
      "parents": [
        "2d06e08d25bbf8eff1de945736a60810009e59ad"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 10 16:01:30 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Sep 14 10:15:08 2015 -0700"
      },
      "message": "Fix the DequeuePendingReference crash.\n\nIn DequeuePendingReference, acknowledge a black/white Reference object\nin the queue if its referent was marked right after it\u0027s enqueued.\n\nBug: 12687968\nBug: 23896462\nChange-Id: I33c802e04e1688a54a70ad3935628e3853c46e44\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": "60f63f53c01cb38ca18a815603282e802a6cf918",
      "tree": "4f18427401ead0c790e926672957189a0c0a39eb",
      "parents": [
        "633a37ece49c5afcf3fa9a89692f07d19c56229b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 23 16:12:40 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 23 21:11:40 2015 -0700"
      },
      "message": "Use the lock word bits for Baker-style read barrier.\n\nThis enables the standard object header to be used with the\nBaker-style read barrier.\n\nBug: 19355854\nBug: 12687968\n\nChange-Id: Ie552b6e1dfe30e96cb1d0895bd0dff25f9d7d015\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": "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": "9e2094f921b63582e84d65849b1c5c6dc4d22b44",
      "tree": "02613d533bdc382988b7fc70954c15c2ea4575aa",
      "parents": [
        "6b1497421c7c81cb9bf2ce077f1ef3d8ac24cfcb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 11 18:43:48 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 12 12:08:16 2014 -0800"
      },
      "message": "Add ReferenceQueue test\n\nAlso cleaned up reference queue.\nTODO: Add tests for missing functionality.\n\nBug: 10808403\n\nChange-Id: I182f9cb69022fe542ea9e53d4c6d35cff90af332\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": "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": "530e1b54887b6b5e7d648170096e22a5f1850ea8",
      "tree": "c273698b2e51c29f373c18ece5eac5635bbbe037",
      "parents": [
        "5d4a3fedcb18dadba5f50661e2a6d86890adfcbc"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Jun 09 15:19:54 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Tue Jun 10 10:33:02 2014 -0700"
      },
      "message": "Reduced frequency of blocks for concurrent gc\n\nImmediately return for references that are marked before reference\nprocessing without blocking. Soft references are kept in the queue until\nthe reference processor stops preserving, after which, all marked\nreferences are removed. Finalizer references will still block on get().\n\nBug: 15471830\nChange-Id: I588fcaef40b79ed7c95a4aa7f4fc2e17ee0c288f\n"
    },
    {
      "commit": "bfff21aaa05d4fce39481cf7899f7639eb7fd66d",
      "tree": "489efb8743f63ccb1e45197f4ae4c6e67cb9c1c4",
      "parents": [
        "25023c744c4388a6459b21cc3babf8c602b024a2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 09 12:21:15 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 09 12:21:15 2014 -0700"
      },
      "message": "Reference::GetReferent() calls by GC should not trigger read barriers.\n\nOtherwise, GC\u0027s reference processing would turn all referents alive\nvia read barriers, which is incorrect.\n\nBug: 12687968\nChange-Id: I1463365981d55fa74a7bb207dd4a16aeec007f8b\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"
    },
    {
      "commit": "8fa2dad7fe7909c8335101d6c8904ae997cdf29f",
      "tree": "b4809584363705a640b8a4d5c87f9fa2af59c41e",
      "parents": [
        "282cbe489046face5475991aaa1ecb5f1deba107"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 13 12:22:56 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 14 10:15:18 2014 -0700"
      },
      "message": "Refactor reference code into mirror namespace.\n\nAdded two new files: mirror/reference.h and mirror/reference-inl.h.\n\nChange-Id: Ibe3ff6379aef7096ff130594535b7f7c0b7dabce\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\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": "39e3261168e7761fea6d873494d7c5d191285791",
      "tree": "b0fe6e048631991cd8842a9b4a374c3d843c2e83",
      "parents": [
        "ad435ebd9d011eef66ef77e96b065024220c10ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 12 16:28:05 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 15 10:38:59 2013 -0800"
      },
      "message": "Refactor reference queues.\n\nRefactored the reference queue processing to reside in the heap code.\nThis removes significant code duplication in the semispace and\nmarksweep garbage collectors.\n\nChanged the soft reference behaviour to preserve all soft references\nunless the GC requires them to be cleared to avoid an out of memory\nerror. It may be worth investigating a better heuristic in the\nfuture to preserve soft references by LRU order.\n\nChange-Id: I1f3ff5bd4b3c5149271f4bb4fc94ba199e2f9bc2\n"
    }
  ]
}
