)]}'
{
  "log": [
    {
      "commit": "cf6a926f4041e5cb88fe70c701ce6aa043ae9df3",
      "tree": "005d37921c6dfa69a635461a8f3b22a2df1101e5",
      "parents": [
        "f513a7650e0bce9225e598b0fe4825b4ee1dc4cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 07:58:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 09:29:38 2021 +0000"
      },
      "message": "Revert \"Restore partial LSE.\"\n\nThis reverts commit c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c.\n\nBug: 197981962\nBug: 200168065\n\nReason for revert: b/200168065\n\nChange-Id: I3c28edfed2bc2d544891c30d070feb282993c79a\n"
    },
    {
      "commit": "c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c",
      "tree": "e6da7b57b10b004571f749b26e47a974a8925b31",
      "parents": [
        "8214de1bb682b2d0fc4968943ecddd9415d6b75f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 15 14:14:17 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 16 13:32:11 2021 +0000"
      },
      "message": "Restore partial LSE.\n\nThis fixes a bug where we were using the wrong value for initializing an\nallocation that we moved. See this test:\nhttps://android-review.googlesource.com/c/platform/art/+/1825138/4/test/828-partial-lse/src/Main.java\n\nRun LSE twice: one for the classical load store eliminiation, one for\nmoving allocations.\n\nTest: test.py\nBug: 197981962\nChange-Id: If317e10e239488876180047040dba66ae3fc8d4c\n"
    },
    {
      "commit": "18074d2b59ae56dcfccea770ceb515215c8eb53f",
      "tree": "e4c1c7d71254cfddd9420408bb7456504b1c5968",
      "parents": [
        "92e5d840ce0c3727a515eba1ed505dfe6770b1a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 14:07:10 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 16:11:26 2021 +0000"
      },
      "message": "Temporarily disable partial LSE.\n\nDue to a bug in it. Add a regression test.\n\nBug: 197818595\nTest: 828-partial-lse\nChange-Id: I65da4f7ef09cd2a1f6c4b21799ecd7a42c1adac2\n"
    },
    {
      "commit": "3a73ffb70151dbc99fa41f300a237f8c29783e0e",
      "tree": "8debef1b372e5bea27d5265a9019446229955e3d",
      "parents": [
        "e585964df42e9fd2fab6f209810cb03e1b261ab1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 14:11:05 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 07:01:32 2021 -0800"
      },
      "message": "Revert^4 \"Partial Load Store Elimination\"\n\nThis reverts commit 791df7a161ecfa28eb69862a4bc285282463b960.\nThis unreverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\nThis unreverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nWe incorrectly failed to include PredicatedInstanceFieldGet in a few\nconditions, including a DCHECK. This caused tests to fail under the\nread-barrier-table-lookup configuration.\n\nReason for revert: Fixed 2 incorrect checks\n\nBug: 67037140\nTest: ./art/test/testrunner/run_build_test_target.py -j70 art-gtest-read-barrier-table-lookup\n\nChange-Id: I32b01b29fb32077fb5074e7c77a0226bd1fcaab4\n"
    },
    {
      "commit": "791df7a161ecfa28eb69862a4bc285282463b960",
      "tree": "a43b022307ea2df82a360164bdf2627cd07eb5b1",
      "parents": [
        "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 13:28:56 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Jan 24 17:18:55 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"Partial Load Store Elimination\"\"\n\nThis reverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\n\nBug: 67037140\n\nReason for revert: Fails read-barrier-table-lookup tests.\n\nChange-Id: I373867c728789bc14a4370b93a045481167d5f76\n"
    },
    {
      "commit": "fc1ce4e8be0d977e3d41699f5ec746d68f63c024",
      "tree": "b656aa7c9e62aa181dfbf7fd4f2a0d32b8bf0704",
      "parents": [
        "c6da1be58086e873c9695f8c4c1a3a8ca718696e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 14:05:13 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:51 2021 -0800"
      },
      "message": "Revert^2 \"Partial Load Store Elimination\"\n\nThis reverts commit 47ac53100303e7e864b7f6d65f17b23088ccf1d6.\n\nThere was a bug in LSE where we would incorrectly record the\nshadow$_monitor_ field as not having a default initial value. This\ncaused partial LSE to be unable to compile the Object.identityHashCode\nfunction, causing crashes. This issue was fixed in a parent CL. Also\nupdated all Offsets in LSE_test to be outside of the object header\nregardless of configuration.\n\nTest: ./test.py --host\nBug: 67037140\n\nReason for revert: Fixed issue with shadow$_monitor_ field and offsets\n\nChange-Id: I4fb2afff4d410da818db38ed833927dfc0f6be33\n"
    },
    {
      "commit": "47ac53100303e7e864b7f6d65f17b23088ccf1d6",
      "tree": "95730c6ba84ef0eebca6236428c8ba51c5eaf280",
      "parents": [
        "51d771db35cc0647bc1fd2a32ed6348d181a7a41"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:08 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:39 2021 +0000"
      },
      "message": "Revert \"Partial Load Store Elimination\"\n\nThis reverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nBug: 67037140\n\nReason for revert: Fails a few tests.\n\nChange-Id: Icf0635bffbfbba93bf0a5b854a9582c418198136\n"
    },
    {
      "commit": "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07",
      "tree": "1721ee940f978736a2212d693271ee698897cb0b",
      "parents": [
        "625048049558d394d50b6e98885b8c210e481bf1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 02 08:48:33 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 21 17:58:10 2021 +0000"
      },
      "message": "Partial Load Store Elimination\n\nAdd partial load-store elimination to the LSE pass. Partial LSE will\nmove object allocations which only escape along certain execution\npaths closer to the escape point and allow more values to be\neliminated. It does this by creating new predicated load and store\ninstructions that are used when an object has only escaped some of the\ntime. In cases where the object has not escaped a default value will\nbe used.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 67037140\n\nChange-Id: Idde67eb59ec90de79747cde17b552eec05b58497\n"
    },
    {
      "commit": "d6750532bae8dbb072e78e410c9a1f14aa071a5b",
      "tree": "bab48e4844d3ed54924b95f0bd1c51ccbbb464b6",
      "parents": [
        "0e3a330f4a545a6a2d352bd4a803c8387f54e76b"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed May 30 20:07:43 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 15 17:21:02 2018 +0100"
      },
      "message": "ART: Ignore unneeded environment uses.\n\nSome of the environment uses of primitive-typed values are\nnot really needed in non-debuggable/non-OSR methods. Ignoring\nthose uses during liveness analysis significantly reduces the\nsize of stack maps in the oat file.\n\nCode reduction on arm64:\nboot-framework.oat: -1.8%\nboot.oat:           -1.4%\n\nTest: 466-get-live-vreg, 564-checker-condition-liveness.\nTest: 639-checker-code-sinking.\nTest: angler boots to GUI.\nTest: test-art-host, test-art-target\n\nChange-Id: I91dcb6d0a8ab86f56c7b243bf9b100f69bcd5979\n"
    },
    {
      "commit": "a354053541f478ff4f6dcba4dc7cc236e1718aaa",
      "tree": "1b07fd636ab53d692a7bbe1a76e8edc340a159df",
      "parents": [
        "e65948f7c78919083224c1cd2ca47e827ced6d3e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jan 25 12:17:28 2018 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 02 15:29:07 2018 -0800"
      },
      "message": "Revert \"Revert \"More general store elimination\"\"\n\nThis reverts commit e97949e878bb364adadc167ac158ffc9660ce996.\n\nA store before an invocation that only has write side effects\n(true for some intrinsics) needs to be kept since the store isn\u0027t used\nto track the heap value anymore.\n\nTest: ART_TEST_OPTIMIZING\u003dtrue ./test.py -j20 --host --run-test -b\nTest: using the device (marlin) with the CL.\n\nBug: 35745320\nBug: 72440777\n\nChange-Id: I0d1ce499008553e48ecca50f9ad94bb7c8c07583\n"
    },
    {
      "commit": "e97949e878bb364adadc167ac158ffc9660ce996",
      "tree": "22af74ac7c6017d0333a50ebaa504a4b0488c92e",
      "parents": [
        "aec4e73779e5034b6f84032a1649023c1333bad2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 25 10:42:01 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 25 10:42:01 2018 +0000"
      },
      "message": "Revert \"More general store elimination\"\n\nbug: 35745320\n\nGot a few failures:\nbug: 72440777\nbug: 72480435\n\nThis reverts commit aec4e73779e5034b6f84032a1649023c1333bad2.\n\nChange-Id: I32f0a80a590c4558bf252c2d426ee2e78a2296b7\n"
    },
    {
      "commit": "aec4e73779e5034b6f84032a1649023c1333bad2",
      "tree": "9f3e9546ff6cd28a56367c321fa48d1d76487066",
      "parents": [
        "7c6137448f21e48d8a6dc917393b32930096223e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jan 08 13:11:35 2018 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jan 17 14:32:34 2018 -0800"
      },
      "message": "More general store elimination\n\nExpand store elimination to non-singleton instance fields and static\nfields. See the added comments in load_store_elimination.cc for more\ndetails on how LSE works now.\n\nBug: 35745320\nTest: ART_TEST_OPTIMIZING\u003dtrue ./test.py -j20 --host --run-test -b\nTest: using the device (marlin) with the CL.\n\nChange-Id: I66ac4eacea593c3ee843ed5e26cdcfe2135947f6\n"
    },
    {
      "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": "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"
    }
  ]
}
