)]}'
{
  "log": [
    {
      "commit": "79d8fa7c52c1810d4618c9bd1d43994be5abb53d",
      "tree": "411a76dec2adf4139328d5e607b498b72c9aa2af",
      "parents": [
        "acac09dad3d5aa3922e6cdf54ff2e4fa6f176484"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Apr 18 09:37:23 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu May 18 14:14:13 2017 +0000"
      },
      "message": "optimizing: Build HConstructorFence for HNewArray/HNewInstance nodes\n\nAlso fixes:\n* LSE, code_sinking to keep optimizing new-instance if it did so before\n* Various tests to expect constructor fences after new-instance\n\nSidenote: new-instance String does not get a ConstructorFence; the\nspecial StringFactory calls are assumed to be self-fencing.\n\nMetric changes on go/lem:\n* CodeSize -0.262% in ART-Compile (ARMv8)\n* RunTime -0.747% for all (linux-armv8)\n\n(No changes expected to x86, constructor fences are no-op).\n\nThe RunTime regression is temporary until art_quick_alloc_* entrypoints have their\nDMBs removed in a follow up CL.\n\nTest: art/test.py\nBug: 36656456\nChange-Id: I6a936a6e51c623e1c6b5b22eee5c3c72bebbed35\n"
    },
    {
      "commit": "13445e7176d67098a5d94754a9d3cd2928616bd8",
      "tree": "1a2279af45211b5398cf261e71b8700f51bc80b9",
      "parents": [
        "25009fdd7a5dccc957afc8178ca5d3733f899147"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 20 15:19:46 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 20 16:39:43 2017 +0100"
      },
      "message": "Handle catch phis in code sinking.\n\nWhen the user of an instruction we want to sink is a catch\nphi, we should not look at predecessors (which don\u0027t map 1-1\nfor catch phis), but can only look at its dominator.\n\nbug:37247890\nTest: 647-sinking-catch\nChange-Id: Ib64bd6f95d3ef45c394137e76819fa8d7d3d960a\n"
    },
    {
      "commit": "b813ca14be33f7db8b7049c3b08a1eb776f25d1b",
      "tree": "4757b96eb5efd3a0e992f7f399ea479e7b5426c8",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 16 22:08:29 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 10:27:42 2017 +0000"
      },
      "message": "Implement code sinking.\n\nSmall example of what the optimization does:\n\nObject o \u003d new Object();\nif (test) {\n  throw new Error(o.toString());\n}\n\nwill be turned into (note that the first user of \u0027o\u0027\nis the \u0027new Error\u0027 allocation which has \u0027o\u0027 in its\nenvironment):\nif (test) {\n  Object o \u003d new Obect();\n  throw new Error(o.toString());\n}\n\nThere are other examples in 639-checker-code-sinking.\n\nRitz individual benchmarks improve on art-jit-cc from\n5% (EvaluateComplexFormulas) to 23% (MoveFunctionColumn)\non all platforms.\n\nTest: 639-checker-code-sinking\nTest: test-art-host\nTest: borg job run\nTest: libcore + jdwp\n\nbug:35634932\nbug:30933338\n\nChange-Id: Ib99c00c93fe76ffffb17afffb5a0e30a14310652\n"
    }
  ]
}
