)]}'
{
  "log": [
    {
      "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": "3f64f25151780fdea3511be62b4fe50775f86541",
      "tree": "732f9761dce6ef0d4ab6fad18c92137f38248cc5",
      "parents": [
        "8d73a91d8f4c89ac152d18081b07093f68c56a11"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 12 18:35:06 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jun 15 17:09:33 2015 -0700"
      },
      "message": "Print more diagnosis info on to-space invariant violation.\n\nPass the method/field (in GcRootSource) to the read barrier to print\nmore info when a to-space invariant violation is detected on a\nmethod/field GC root access.\n\nRefactor ConcurrentCopying::AssertToSpaceInvariant().\n\nBug: 12687968\nBug: 21564728\n\nChange-Id: I3a5fde1f41969349b0fee6cd9217b948d5241a7c\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": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\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": "ea2e1bd713ca8295ba4fcd01e77a3ce532ea61e4",
      "tree": "d41be4b08041c5a2b1af626d8cdf6b69280723d5",
      "parents": [
        "241fd1192dfc0f7322660343179f9fc0591ed9ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 18 13:47:35 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 20 11:23:58 2014 -0700"
      },
      "message": "Add more read barriers for JNI roots.\n\nTo make it possible to concurrently scan the JNI global roots (that\nis, the roots visited by JavaVMExt::VisitRoots()), add read barriers\nto the indirect reference table and the reference table.\n\nAlso, add read barriers to the jmethodID/jfieldID decode routines\n(ScopedObjectAccessAlreadyRunnable::DecodeField/DecodeMethod) so that\nwe can concurrently handle (encoded) fields and methods.\n\nBug: 12687968\nChange-Id: I3df4e4e622a572ff0ea8d44b2dc70a4d6b3ba058\n"
    },
    {
      "commit": "a91a4bc1f8960f64c5f7e4616d46e21b8e1bfba2",
      "tree": "31988cb0623dc3b095142b65dff37dd959ff4df2",
      "parents": [
        "97ed29f800c56a06fd6989e0883e4c97bedd2453"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 13 16:44:55 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 13 16:44:55 2014 -0700"
      },
      "message": "Add read barriers for the class and the intern tables.\n\nAdd read barriers for the strong roots in the intern table and the\n(strong) roots in the class table to make possible concurrent scanning\nof them.\n\nBug: 12687968\nChange-Id: If6edc33a37e65a8494e66dc3b144138b1530367f\n"
    },
    {
      "commit": "1bd4872773184fb9f5f152c7bbf9856a8235d2af",
      "tree": "f00044ea6edf93e130dd89a30f88fb6c7c60b0ce",
      "parents": [
        "0130ba045e1397594f2c6a0dd48730349fe3cbed"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 23 19:58:15 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed May 28 11:46:57 2014 -0700"
      },
      "message": "Add read barriers to the weak roots in the intern table.\n\nBug: 12687968\nChange-Id: I424f1df76a7e3d7154fb9f3c951c973d19bd640f\n"
    },
    {
      "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": "6e83c172f385cb45dd13bbcf41d2df8e410828c6",
      "tree": "e2c2f4ee55cfd623ea9d363286b380213748e1e8",
      "parents": [
        "9a16f222cdf40e68b084316b6e768c14d4b9e020"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 01 21:25:41 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 01 21:25:41 2014 -0700"
      },
      "message": "Replace the bool kDoReadBarrier template parameter with an enum.\n\nFix one kDoReadBarrier/kIsVolatile mixup in an Object::GetFieldObject\ncall.\n\nBug: 12687968\n\nChange-Id: I896b1137b21a20c0504abd2bf3fe6f83805f3300\n"
    },
    {
      "commit": "800ac2defde5d12b2f1f313c6b6162560cfa6fc7",
      "tree": "c25e10b68be9be9949e96d3c977fbcf906f22a3a",
      "parents": [
        "5cff3083c00dfbae7b8c5c34b0bedbc514c91df9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Apr 02 17:32:54 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 03 20:16:44 2014 -0700"
      },
      "message": "Insert an empty read barrier call.\n\nBug: 12687968\nChange-Id: Ie1d28658e16e09f6a983cb5c1f0d5b375b7ae069\n"
    },
    {
      "commit": "624468cd401cc1ac0dd70c746301e0788a597759",
      "tree": "b21c389d43e25c3d95208c9d2f3f1bc81355a4e5",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Mar 31 15:14:47 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Mar 31 17:40:21 2014 -0700"
      },
      "message": "Make the support code for read barriers a bit more general.\n\nAdd an option for Baker in addition to Brooks.\n\nBug: 12687968\nChange-Id: I8a31db817ff6686c72951b6534f588228e270b11\n"
    }
  ]
}
