)]}'
{
  "log": [
    {
      "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": "6d340c4f16f374e05f4205e5a27de1174abcaf2a",
      "tree": "ea4f4205049668dc1d46fb0ed4b6f349cbd3d761",
      "parents": [
        "94e480778b0946d1ab405ecf901e5d41ed54cc17"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 03 11:54:54 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 17 10:07:23 2015 +0000"
      },
      "message": "ART: Faster implementation of GVN\u0027s hash table\n\nThe basic hash table in Optimizing\u0027s GVN pass does not scale for\nlarger methods and quickly becomes a bottleneck. This patch provides\na different implementation, focusing on the following:\n(1) Proper buckets with chaining for near constant-time lookup.\n(2) Bucket inheritance for faster cloning. A clone does not actually\n    copy the entries until a first change is made.\n(3) Table resizing for better load management. Done during cloning.\n(4) Kill() and IntersectWith() applied only on impure instructions.\n    This is achieved by splitting (im)pure entries between even- and\n    odd-indexed buckets.\n\nBenchmarks show that this optimization speeds up GVN by ~10%, which\ntranslates to a rougly 2% change in the overall compilation time.\n\nChange-Id: Ib4058359701d990194cfd49c6ee46ac2372f090c\n"
    },
    {
      "commit": "dc5ac731f6369b53b42f1cee3404f3b3384cec34",
      "tree": "72a90f1da01185014551628078b98a79e5d5230e",
      "parents": [
        "0e5e728a4a4f042f157e1897cc8bbc2b0bb110b1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Feb 25 11:28:05 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 13:24:03 2015 -0800"
      },
      "message": "Opt compiler: enhance gvn for commutative ops.\n\nChange-Id: I415b50d58b30cab4ec38077be22373eb9598ec40\n"
    },
    {
      "commit": "433be7f82e4c3433da718a739f9e738410727ca3",
      "tree": "a48823f06721cefbc0ffc751acff3887eb625a55",
      "parents": [
        "304e47467579c909a6312ef3cca5cdad1433de9c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 23 18:02:02 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 23 18:02:02 2015 +0000"
      },
      "message": "Optimizing: Remove redundant hash set copy in GVN\n\nDuring the GVN analysis, a basic block inherits the set of movable\ninstructions from its dominator. If the block is the only successor\nof the dominating block, there is no need for cloning of the parent\nset (a very expensive operation).\n\nChange-Id: I59e033b9e9e093984dc8e903e3a7be1cb3645cc2\n"
    },
    {
      "commit": "827eedbfa882496407375f22b08243a38a5bd53b",
      "tree": "aa4ff781982ffd2f8a95d9a6cdeb1aa28a1f671a",
      "parents": [
        "f90eec005997f98c1a9f874fbbf68414e5f9c766"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 15:18:36 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 16:02:35 2015 +0000"
      },
      "message": "Move code around and address growable_array comment.\n\n- Move SideEffectsAnalysis to its own file.\n- Move most of gvn.h to gvn.cc.\n- Don\u0027t call Resize in GrowableArray constructor, but just set num_used\n  directly.\n\nChange-Id: I1f1291207945d678d3c99cc0ec1ec155bcae82f6\n"
    },
    {
      "commit": "86dde1658a1951c251dd5c6ff21ecc5c281879a6",
      "tree": "ac28ec3a686fb4e9809123d8bfcdd0096b2426fb",
      "parents": [
        "2dadc9df0ffb822870a150f81257792b83241c77"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 12:54:33 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 14:44:57 2015 +0000"
      },
      "message": "Introduce a SideEffectsAnalysis class.\n\nLICM also needs the side effects information of loops, so move\nthe GVN::ComputeSideEffects method into its own analysis class.\n\nChange-Id: I810c8230a0eb6b9b536e8f808e17a3a4ad72f7db\n"
    },
    {
      "commit": "dbca6fae9d09160f45bf8d3512f15cdd9558975b",
      "tree": "4e06651a63b661610f2f12654600c9146b0d3607",
      "parents": [
        "35ecc8ca8fba713728b8fc60e9e2a275da2028aa"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 27 12:01:59 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 28 11:05:22 2014 +0000"
      },
      "message": "Fix a bug in GVN.\n\nWhen a predecessor block was killing instructions in a set, we were\nnot taking into account side effects of blocks between the dominator to\nthis predecessor.\n\nImplementation now intersects the copied set of the dominator with\nthe predecessors to take these side effects into account.\n\nChange-Id: If297439cc4e50cee91e9fffd028216a3e49e19ef\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "d31cf3d55a0847c018c4eaa2b349b8eea509de64",
      "tree": "2594116391a59c1fce83c5cbd9058ba76534fec0",
      "parents": [
        "e07d111b9bff8b68b8d0ed44fb95805a5c6f47fb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 08 17:30:24 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 19 13:59:39 2014 +0100"
      },
      "message": "First optimization in new compiler: simple GVN.\n\nChange-Id: Ibe0efa4e84fd020a53ded310a92e0b4363f91b12\n"
    }
  ]
}
