)]}'
{
  "log": [
    {
      "commit": "d29e8487ff1774b6eb5f0e18d854415c1ee8f6b0",
      "tree": "827ee7fedc275eb6801fcf200a36c06159e9f829",
      "parents": [
        "e6e38ce021ef5e0d326d76172307c000e0e6fab3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 22 17:50:37 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 23 17:07:47 2015 +0100"
      },
      "message": "ART: Fix Quick/Optimizing suspend check assumption mismatch.\n\nQuick\u0027s SuspendCheckElimination (SCE) expects that every\nmethod contains a suspend check and it eliminates suspend\nchecks in loops containing an invoke. Optimizing eliminates\nthe suspend check from leaf methods, so the combination of\na Quick-compiled loop calling an Optimizing-compiled leaf\nmethod can lead to missing suspend checks and potentially\nleading to ANRs.\n\nEnable Quick\u0027s kLeafOptimization flag to remove suspend\nchecks from leaf methods and disable Quick\u0027s SCE. This\naligns the suspend check placement for the two backends\nand avoids the broken combination.\n\nCurrently, all methods containing a try-catch are compiled\nwith Quick, so it\u0027s relatively easy to create a regression\ntest. However, this test will not be valid when Optimizing\nstarts supporting try-catch.\n\nBug: 22657404\nChange-Id: I3bc40bf3f5c1e7d18704d1547b139e939950b770\n"
    },
    {
      "commit": "6ce3eba0f2e6e505ed408cdc40d213c8a512238d",
      "tree": "5f7ced5c710ada776fa2e2624a05a0d414ed8b39",
      "parents": [
        "1b472546657d31d38883373d8340d1441281a6a5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 16 13:05:59 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 19 17:08:25 2015 +0000"
      },
      "message": "Add suspend checks to special methods.\n\nGenerate suspend checks at the beginning of special methods.\nIf we need to call to runtime, go to the slow path where we\ncreate a simplified but valid frame, spill all arguments,\ncall art_quick_test_suspend, restore necessary arguments and\nreturn back to the fast path. This keeps the fast path\noverhead to a minimum.\n\nBug: 19245639\nChange-Id: I3de5aee783943941322a49c4cf2c4c94411dbaa2\n"
    },
    {
      "commit": "8b858e16563ebf8e522df026a6ab409f1bd9b3de",
      "tree": "910900d8eefd5bed3f3c144894c970bb1973c71e",
      "parents": [
        "f7ebda43cb185b6414a2e86eef95eaf10b74db2c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 27 14:52:37 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 09 10:07:30 2014 +0000"
      },
      "message": "Quick: Redefine the notion of back-egdes.\n\nRedefine a back-edge to really mean an edge to a loop head\ninstead of comparing instruction offsets. Generate suspend\nchecks also on fall-through to a loop head; insert an extra\nGOTO for these edges.\n\nAdd suspend checks to fused cmp instructions.\n\nRewrite suspend check elimination to track whether there is\nan invoke on each path from the loop head to a given back\nedge, instead of using domination info to look for a basic\nblock with invoke that must be on each path. Ignore invokes\nto intrinsics and move the optimization to a its own pass.\n\nThe new loops in 109-suspend-check should prevent intrinsics\nand fused cmp-related regressions.\n\nBug: 18522004\nChange-Id: I96ac818f76ccf9419a6e70e9ec00555f9d487a9e\n"
    },
    {
      "commit": "7befd0e35bbed32b90bc0c8b6d3fa8bd612f5506",
      "tree": "e6ec21b97eb4c68ecbf1056a6767f233c241eceb",
      "parents": [
        "9e64cabda36bd7b30f2fd873750fdc17e5931358"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 03 17:48:41 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 04 13:38:57 2014 -0800"
      },
      "message": "Update ART tests to handle new System.gc behavior\n\nChanged calls from System.gc to Runtime.getRuntime.gc where it was\nnecessary.\n\nRequired for:\nhttps://android-review.googlesource.com/#/c/80253/\n\nChange-Id: I2b0622585da54229a6248e95d40134b6d18598a9\n"
    },
    {
      "commit": "cbcfaf3a410e35730c4daeaff6c791665764925a",
      "tree": "92f836a197f74ee912135fd4bb389cd261e6d4a5",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 19 07:37:40 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 19 07:37:40 2013 -0700"
      },
      "message": "Fix suspend check optimization\n\nArt\u0027s Quick compiler currently uses a convervative mechanism\nto ensure that a safe point will be reached within a \"small\" amount\nof time.  Explicit suspend checks are placed prior to backwards\nbranches and on returns.  There are a lot of ways to optimize,\nwhich we\u0027ll get to in the future, but for now the only optimization\nis to detect a backwards branch that targets a return block.  That\u0027s\na common pattern in dex, and simple to detect.  In those cases, we can\nsuppress the suspend check on the backwards branch knowing that the\nreturn will do it.\n\nHowever, the notion of what is a backwards branch got a bit muddied\nwith some mir optimizations that transform the graph by changing the\nsense of branches.  What started off as a taken backwards branch may\nturn into a fallthrough backwards branch.\n\nThis CL avoid the confusion by marking branches backwards based on\ntheir original dex targets rather than using the post-transform test\nof backwardness.\n\nChange-Id: I9b30be168c801af51bae7f66ecd442edcb115a18\n"
    }
  ]
}
