)]}'
{
  "log": [
    {
      "commit": "09321dfb4803669ba6d6f3fef6363a1fd7202eea",
      "tree": "13c40e73bedfeaf994d62f1f27e56168634320d8",
      "parents": [
        "07277a700cdc7de2f40773a05c7a791b71abd581"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Fri Jul 18 15:33:57 2014 -0700"
      },
      "committer": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Tue Aug 26 17:07:13 2014 -0700"
      },
      "message": "ART: Added dirty flag to optimizations\n\n- Added a dirty flag to the PassMEDataHolder and use it to determine\n    if we want to perform the post-optimization passes or not.\n\nChange-Id: I59a85f5198f9224d5fe8893397bfaf68a978d8f1\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\n"
    },
    {
      "commit": "e1f65bcb957a65c6d45b319d968bc53a833f2c65",
      "tree": "f3562629207515af475802b02824be5021a42d1e",
      "parents": [
        "799605088f51dace7fddaf8493c8c6f3090fdaf6"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Mon Jun 09 10:18:26 2014 -0700"
      },
      "committer": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Sat Jun 14 16:59:05 2014 -0700"
      },
      "message": "ART: PassMEDataHolder should have a data field\n\nFor passes that would like to pass data around while working, let them actually\n  allocate it if need be in the Start, use it during the Worker, and\n  potentially free it during the End.\n\nChange-Id: I03238ef17158f7e2615d6defe5d7f15432c8a511\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\n"
    },
    {
      "commit": "2469e60e6ff08c2a0b4cd1e209246c5d91027679",
      "tree": "37b2f537fca7ba56cb787913557ee12d6e533d55",
      "parents": [
        "29b53d3d715b1ec19349e8cbf7c5e4ff529bd5fe"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Tue May 06 20:36:55 2014 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 30 10:15:48 2014 +0100"
      },
      "message": "ART: Setting up cleanup\n\n- Moved code around to actually have the clean-up code in a PassDriver format.\n    This allows us to better control what is being called after an optimization\n    It also allows the use of a centralized pass system for both optimizations\n      and cleanup.\n\nChange-Id: I9d21e9bb9ee663739722f440d82adf04f73e380c\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\nSigned-off-by: Razvan A Lupusoru \u003crazvan.a.lupusoru@intel.com\u003e\nSigned-off-by: Yixin Shou \u003cyixin.shou@intel.com\u003e\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\nSigned-off-by: Udayan Banerji \u003cudayan.banerji@intel.com\u003e\n"
    },
    {
      "commit": "a5b8fde2d2bc3167078694fad417fddfe442a6fd",
      "tree": "287942554467eb8566291f7d021549f65763f53e",
      "parents": [
        "567e9dbc65ee183cda2a052dbf224c8c4a8f9423"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 23 15:16:44 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 23 17:12:15 2014 +0100"
      },
      "message": "Rewrite BitVector index iterator.\n\nThe BitVector::Iterator was not iterating over the bits but\nrather over indexes of the set bits. Therefore, we rename it\nto IndexIterator and provide a BitVector::Indexes() to get\na container-style interface with begin() and end() for range\nbased for loops.\n\nAlso, simplify InsertPhiNodes where the tmp_blocks isn\u0027t\nneeded since the phi_nodes and input_blocks cannot lose any\nblocks in subsequent iterations, so we can do the Union()\ndirectly in those bit vectors and we need to repeat the loop\nonly if we have new input_blocks, rather than on phi_nodes\nchange. And move the temporary bit vectors to scoped arena.\n\nChange-Id: I6cb87a2f60724eeef67c6aaa34b36ed5acde6d43\n"
    },
    {
      "commit": "4f59668b3d51f63601ebe59dbd2b7e8a7c5bd093",
      "tree": "cf93995a8e42da6799e895918ee2ee52dc1c03a0",
      "parents": [
        "59f3f62534581311c7c403c832f56c272426a17c"
      ],
      "author": {
        "name": "James C Scott",
        "email": "james.c.scott@intel.com",
        "time": "Thu May 01 05:52:04 2014 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu May 22 06:42:23 2014 -0700"
      },
      "message": "ART: Pass driver generalization\n\n- Generalizing Pass Driver.\n- Migrating ME Pass Driver to use the new generalized Pass Driver.\n\nThere will be some more changes after in the compiler code to generalize\n it a bit more by separating what is being done by the optimizing passes\n and post-pass cleanups.\n\nChange-Id: I140a70e88483d7c3991b7d336bd593b2613ae194\nSigned-off-by: James C Scott \u003cjames.c.scott@intel.com\u003e\n"
    },
    {
      "commit": "bfea9c29e809e04bde4a46591fea64c5a7b922fb",
      "tree": "8c50357e0de293f105affd95941acc08ac33cd04",
      "parents": [
        "341a84af890a328a6c8f719beb3f670dd1a369b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 17 17:49:33 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 17 14:27:16 2014 +0000"
      },
      "message": "Class initialization check elimination.\n\nAlso, move null check elimination temporaries to the\nScopedArenaAllocator and reuse the same variables in the\nclass initialization check elimination.\n\nChange-Id: Ic746f95427065506fa6016d4931e4cb8b34937af\n"
    },
    {
      "commit": "da7a69b3fa7bb22d087567364b7eb5a75824efd8",
      "tree": "17aea3b34d6059b52fab73fc206470eca5e9d305",
      "parents": [
        "353e494a7108f382daf1782596fc0a93d92f38a4"
      ],
      "author": {
        "name": "Razvan A Lupusoru",
        "email": "razvan.a.lupusoru@intel.com",
        "time": "Wed Jan 08 15:09:50 2014 -0800"
      },
      "committer": {
        "name": "Razvan A Lupusoru",
        "email": "razvan.a.lupusoru@intel.com",
        "time": "Fri Jan 31 13:58:28 2014 -0800"
      },
      "message": "Enable compiler temporaries\n\nCompiler temporaries are a facility for having virtual register sized space\nfor dealing with intermediate values during MIR transformations. They receive\nexplicit space in managed frames so they can have a home location in case they\nneed to be spilled. The facility also supports \"special\" temporaries which\nhave specific semantic purpose and their location in frame must be tracked.\n\nThe compiler temporaries are treated in the same way as virtual registers\nso that the MIR level transformations do not need to have special logic. However,\ngenerated code needs to know stack layout so that it can distinguish between\nhome locations.\n\nMIRGraph has received an interface for dealing with compiler temporaries. This\ninterface allows allocation of wide and non-wide virtual register temporaries.\n\nThe information about how temporaries are kept on stack has been moved to\nstack.h. This is was necessary because stack layout is dependent on where the\ntemporaries are placed.\n\nChange-Id: Iba5cf095b32feb00d3f648db112a00209c8e5f55\nSigned-off-by: Razvan A Lupusoru \u003crazvan.a.lupusoru@intel.com\u003e\n"
    },
    {
      "commit": "75ba13f244098f42584637b8fd3f6d74d2fc291a",
      "tree": "22ce5cb88b6e4b08d4baaab21e00c4b7417887ac",
      "parents": [
        "78c0bb9bc0668be07baa0bde1e82a475a0ac1f86"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 28 12:15:24 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 29 16:51:31 2014 +0000"
      },
      "message": "Reduce PassDriver overhead, clean up Pass and PassDriver.\n\nRemove name lookup map and use vector for the pass list.\nAdd traversal mode kNoNodes to skip BasicBlock traversal.\nReplace the warn_override parameter with a DCHECK.\nMove iterators from arena to the stack. Style cleanup.\n\nChange-Id: I4bf10e28caa65efb98ce82a4d7486d803ceca535\n"
    },
    {
      "commit": "4e97c539408f47145526f0062c1c06df99146a73",
      "tree": "f196db2807a8e3640ad86e1d8026f2007348db19",
      "parents": [
        "121f6a1ebaf8abd2b7ec99df8347ec87b78548f7"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Tue Jan 07 10:07:18 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 13 19:34:52 2014 -0800"
      },
      "message": "Added pass framework\n\nThe patch adds a Middle-End pass system and normalizes the current\n passes into the pass framework.\n\nPasses have:\n - A start, work, and end functions.\n - A gate to determine to apply the pass.\n - Can provide a CFG dump folder.\n\nmir_dataflow.cc, mir_graph.cc, mir_optimization.cc, ssa_transformation.cc:\n - Changed due to moving code into bb_optimizations.cc.\n - Moved certain functions from private to public due to needed from the passes.\n\npass.cc, pass.h:\n - Pass base class\n\npass_driver.cc, pass_driver.h:\n - The pass driver implementation.\n\nfrontend.cc:\n - Replace the function calls to the passes with the pass driver.\n\nChange-Id: I88cd82efbf6499df9e6c7f135d7e294dd724a079\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\n"
    }
  ]
}
