)]}'
{
  "log": [
    {
      "commit": "d9911eeca13f609c885e0f6a5ce81af9b6340bfa",
      "tree": "f850510643ee120dba140bf0bb3e1c1b9c9ce4db",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:27:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:53:48 2017 -0700"
      },
      "message": "ART: Clean up field initialization\n\nAdd explicit field initialization to default value where necessary.\nAlso clean up interpreter intrinsics header.\n\nTest: m\nChange-Id: I7a850ac30dcccfb523a5569fb8400b9ac892c8e5\n"
    },
    {
      "commit": "c52b26d4fb5b1ca91f34ce4b535b764853e538f6",
      "tree": "9b734310200bb70cb42696082a55db70bed51b3c",
      "parents": [
        "b28c8749a52f4f3252fbfe8bfb5f9d7c7f980adf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 19 09:18:07 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 10 14:11:32 2017 +0000"
      },
      "message": "Recognize getClass() in RTP.\n\nAlso always keep around the resolved field\nin related HInstructions to avoid resolving it again\nand again.\n\nTest: test-art-host, 631-checker-get-class\n\nChange-Id: I3bc6be11f3eb175c635e746006f39865947e0669\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "18b36abc7cc03076fe1c399c0bb8ec8793cc6806",
      "tree": "3e38ee71b94c7bbde6f93976e16416a2f6d33ee0",
      "parents": [
        "defccc564481c2c892792680c6abb6020e36bacd"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 16:41:35 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 15 10:49:34 2016 -0700"
      },
      "message": "Remove the no-longer-needed F/I and D/J alias.\n\nRationale:\nNow that our HIR is type clean (yeah!), we no longer have\nto conservatively assume F/I and D/J are aliased. This\nenables more accurate side effects analysis, with improvements\nin all clients, such a LICM.\n\nRefinement:\nThe HIR is not completely clean between building and SSA.\nThis refinement takes care of that, with new tests.\n\nBUG\u003d22538329\n\nChange-Id: Id78ff0ff4e325aeebf0022d868937cff73d3a742\n"
    },
    {
      "commit": "1f7624c3bc41251ff72b1409441f541d992967c7",
      "tree": "d6f91bc54a8216358cfc7aa62aab2a615a41160f",
      "parents": [
        "2f52064dcfe5ebce5a998d30766ca079a366c920"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 21:17:17 2016 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 21:17:17 2016 +0000"
      },
      "message": "Revert \"Remove the no-longer-needed F/I and D/J alias.\"\n\nThis reverts commit 2f52064dcfe5ebce5a998d30766ca079a366c920.\n\nReason:\n\nArrays.sort() returns wrong result on double[] and this CL is the most likely suspect. Rolling back to buy some time for careful analysis and debugging.\n\nChange-Id: I58223c42e95c2287520eef863fbcb738b0736d4d\n"
    },
    {
      "commit": "2f52064dcfe5ebce5a998d30766ca079a366c920",
      "tree": "4c49114f810e22e83d662f42705ac908d473b9f4",
      "parents": [
        "ec9a828fa4a4638d2d17124c4fa835f15c7c5589"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 12 15:05:45 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 12 19:25:42 2016 -0700"
      },
      "message": "Remove the no-longer-needed F/I and D/J alias.\n\nRationale:\nNow that our HIR is type clean (yeah!), we no longer have\nto conservatively assume F/I and D/J are aliased. This\nenables more accurate side effects analysis, with improvements\nin all clients, such a LICM.\n\nBUG\u003d22538329\n\nChange-Id: Iba1fb09ff063f31b5893f588aa6d0c5ab3b42f39\n"
    },
    {
      "commit": "38e9e8046ea2196284bdb4638771c31108a30a4a",
      "tree": "a2fecce9af616bebd73ce17d9f5954f84f291817",
      "parents": [
        "eda4dfae59eec2db945cf032aee3a9aeaa2eb494"
      ],
      "author": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Thu Feb 18 16:42:03 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 18 16:15:27 2016 +0000"
      },
      "message": "Add statistics support for some optimizations\n\nThis patch adds support for the --dump-stats facility with some\noptimizations\nand fixes all build issues introduced by the patch:\nI68751b119a030952a11057cb651a3c63e87e73ea (which got reverted)\n\nChange-Id: I5af1f2a8cced0a1a55c2bb4d8c88e6f0a24ec879\nSigned-off-by: Jean-Philippe Halimi \u003cjean-philippe.halimi@intel.com\u003e\n"
    },
    {
      "commit": "badd826664896d4a9628a5a89b78016894aa414b",
      "tree": "a30e8b3e62126ae1e1df1152ac643cfc5f2b074a",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:28:56 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 10:21:07 2016 +0000"
      },
      "message": "ART: Run SsaBuilder from HGraphBuilder\n\nFirst step towards merging the two passes, which will later result in\nHGraphBuilder directly producing SSA form. This CL mostly just updates\ntests broken by not being able to inspect the pre-SSA form.\n\nUsing HLocals outside the HGraphBuilder is now deprecated.\n\nBug: 27150508\nChange-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e\n"
    },
    {
      "commit": "15693bfdf9fa3ec79327a77b7e10315614d716cc",
      "tree": "918208d60ec2a5595a2b5e42791865fefdbf9692",
      "parents": [
        "87bafaf563d35616804dd0cc0dbde176aac87817"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:30:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 12:44:42 2016 +0000"
      },
      "message": "ART: Resolve ambiguous ArraySets\n\nJust like aget(-wide), the value operand of aput(-wide) bytecode\ninstructions can be both int/long and float/double. This patch builds\non the previous mechanism for resolving type of ArrayGets to type the\nvalues of ArraySets based on the reference type of the array.\n\nBug: 22538329\n\nChange-Id: Ic86abbb58de146692de04476b555010b6fcdd8b6\n"
    },
    {
      "commit": "4833f5a1990c76bc2be89504225fb13cca22bedf",
      "tree": "8e096f222368f30bf821b154bc78bac12d5cd2e5",
      "parents": [
        "bb41b250153308ef51664d7a6cc26c6a2e588fb7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:37:39 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 31 09:58:33 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis reverts commit 68289a531484d26214e09f1eadd9833531a3bc3c.\n\nNow uses Primitive::Is64BitType instead of Primitive::ComponentSize\nbecause it was incorrectly optimized by GCC.\n\nBug: 26208284\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: Ib39f3da2b92bc5be5d76f4240a77567d82c6bebe\n"
    },
    {
      "commit": "9865bde5d822f56c4732214c2005dfcaa41f94cf",
      "tree": "cd2eae058f4f4f13b5a82ff557b7eaaf13a1ecfb",
      "parents": [
        "115a02b737dd5f4d485b2f6c359e02988df66b83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "message": "Rename NullHandle to ScopedNullHandle\n\nThis makes it clearer that is invalid to do things like:\nHandle\u003cT\u003e h \u003d ScopedNullHandle\u003cT\u003e();\n\nBug: 26233305\nChange-Id: I6d8f54eae01ec2e901cb7043afa853ea77db79fe\n"
    },
    {
      "commit": "68289a531484d26214e09f1eadd9833531a3bc3c",
      "tree": "6f87852b9d14e479ea2c7ef92de35c3118a0fd1e",
      "parents": [
        "bc90a0538e56f98b8e138cb622e6b9d834244ad9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:30:30 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:40:08 2015 -0800"
      },
      "message": "Revert \"ART: Refactor SsaBuilder for more precise typing info\"\n\nThis reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12.\n\nBug: 26208284\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I5f491becdf076ff51d437d490405ec4e1586c010\n"
    },
    {
      "commit": "d9510dfc32349eeb4f2145c801f7ba1d5bccfb12",
      "tree": "9f4e4ffb5fae25c4f14059fd1d772726e9d96170",
      "parents": [
        "ceec5a3c81925cf80a18954b2e585316450c575c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 04 23:30:22 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 13:03:19 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis patch refactors the SsaBuilder to do the following:\n\n1) All phis are constructed live and marked dead if not used or proved\nto be conflicting.\n\n2) Primitive type propagation, now not a separate pass, identifies\nconflicting types and marks corresponding phis dead.\n\n3) When compiling --debuggable, DeadPhiHandling used to revive phis\nwhich had only environmental uses but did not attempt to resolve\nconflicts. This pass was removed as obsolete and is now superseded\nby primitive type propagation (identifying conflicting phis) and\nSsaDeadPhiEliminiation (keeping phis live if debuggable + env use).\n\n4) Resolving conflicts requires correct primitive type information\non all instructions. This was not the case for ArrayGet instructions\nwhich can have ambiguous types in the bytecode. To this end,\nSsaBuilder now runs reference type propagation and types ArrayGets\nfrom the type of the input array.\n\n5) With RTP being run inside the SsaBuilder, it is not necessary to\nrun it as a separate optimization pass. Optimizations can now assume\nthat all instructions of type kPrimNot have reference type info after\nSsaBuilder (with the exception of NullConstant).\n\n6) Graph now contains a reference type to be assigned to NullConstant.\nAll reference type instructions therefore have RTI, as now enforced\nby the SsaChecker.\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260\n"
    },
    {
      "commit": "db51efb3617d15f1cd9e5ff0cc2d934777014e9a",
      "tree": "fa70acb9f8d090def2cae550db8c2e1f630f31c4",
      "parents": [
        "2649cba0fb7cdbd8fa60cb4f2fb320fb2b18ee37"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 06 01:36:20 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 09 10:27:08 2015 +0000"
      },
      "message": "ART: Fix critical edge splitting under try/catch\n\nA critical edge would not be split if the predecessor ends with\nTryBoundary. This would eventually trip liveness analysis because\na back edge block would have smaller liveness position than a nested\nloop.\n\nAnother implication of this change is that an edge between a loop\u0027s\npre-header ending with TryBoundary and the header will be split,\nguaranteeing that a pre-header always has just one successor.\n\nBug: 25493695\nBug: 25454012\nChange-Id: I5a13b8bb74509b48f5d628906f7158af007f99ae\n"
    },
    {
      "commit": "8df69d42a9e3ccd9456ff72fac8dbd1999f98755",
      "tree": "b2d7617d4d2e1ae80ab7024b47802dafbaee3b3a",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 15:40:58 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 16:37:46 2015 -0700"
      },
      "message": "Revert \"Revert \"load store elimination.\"\"\n\nThis reverts commit 8030c4100d2586fac39ed4007c61ee91d4ea4f25.\n\nChange-Id: I79558d85484be5f5d04e4a44bea7201fece440f0\n"
    },
    {
      "commit": "e6e3beaf2d35d18a79f5e7b60a21e75fac9fd15d",
      "tree": "b4164b3862e372a8fb83a1910bb669dedc8664ca",
      "parents": [
        "c05aca78fad20901ae17902a3671ccfca9071758"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 14 13:53:10 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 14 13:53:10 2015 +0000"
      },
      "message": "Revert \"Revert \"optimizing: propagate type information of arguments\"\"\n\nThis reverts commit 89c0d32437011bbe492fe14c766cd707046ce043.\n\nChange-Id: I603a49794e155cc97410b8836c8ea425bfdc98eb\n"
    },
    {
      "commit": "c05aca78fad20901ae17902a3671ccfca9071758",
      "tree": "b17f003a121f0b1a27bd237dfbc83c2514538f99",
      "parents": [
        "2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 13 13:10:33 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 13 13:10:33 2015 +0000"
      },
      "message": "Revert \"optimizing: propagate type information of arguments\"\n\nThis reverts commit 2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a.\n\nChange-Id: I3291070c373e661fa578f5a38becbb5a502baf94\n"
    },
    {
      "commit": "2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a",
      "tree": "b4164b3862e372a8fb83a1910bb669dedc8664ca",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 15:01:58 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 18:01:14 2015 +0100"
      },
      "message": "optimizing: propagate type information of arguments\n\nThis helps inlining and type check elimination.\n\ne.g:\n\nvoid foo(ArrayList a) {\nint size \u003d a.size(); // this can be inlined now.\n}\n\nChange-Id: I3ffeaa79d9df444aa19511c83c544cb5f9d9ab20\n"
    },
    {
      "commit": "154746b84b407cfd166b45e039b62e6a06dc3f39",
      "tree": "e610cbef3b2ccba5fd7bc6f2be8c007ab02990f9",
      "parents": [
        "98893e146b0ff0e1fd1d7c29252f1d1e75a163f2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 15:46:54 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 16:42:57 2015 +0100"
      },
      "message": "Remove dex_pc\u0027s default value from top level HInstruction\n\nThis clearly hints that the dex_pc is stored in the super class and\ndoesn\u0027t need to be reimplemented in subclasses.\n\nChange-Id: Ifd4aa95190c4c89367b4dd2cc8ab0ffd263659ac\n"
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\n"
    },
    {
      "commit": "736b560f2d2c89b63dc895888c671b5519afa4c8",
      "tree": "d5aee7ac36f458a5f6e6d75fceb19f8963a71db5",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 14:54:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 13:27:19 2015 -0700"
      },
      "message": "Reduce how often we call FindDexCache\n\nBefore host boot.oat -j4 optimizing compile:\nreal  1m17.792s\nuser  3m26.140s\nsys 0m8.340s\n\nAfter:\nreal  1m12.324s\nuser  3m22.718s\nsys 0m8.320s\n\nChange-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3\n"
    },
    {
      "commit": "8f08f9e84b0b784fff8a636989bdb24bfaf93bbf",
      "tree": "333a3ebeaef249cb7b9daa20552848763f1b835f",
      "parents": [
        "c5bee2a133f6505b8004075288b19efb99e24b4f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 22 11:27:39 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 22 11:27:39 2015 -0700"
      },
      "message": "Replaced CHECK with EXPECT in tests.\n\nDoh!\n\nChange-Id: Ibef45031146215034647c7eaab4065c766d6fb86\n"
    },
    {
      "commit": "3f307f3e88140b792c20b9c3366afe059c77909f",
      "tree": "16a33a7b7883bb3cd3ec38e218315b3f69dfa66e",
      "parents": [
        "236d0a3c35a369da99bb1f0c617a29f23b2f4df8"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 21 18:30:18 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 21 18:30:18 2015 -0700"
      },
      "message": "Added unit tests to LICM.\n\nRationale:\nLICM did not have its own unit test yet, and it was a good\ntime to ensure that the improved side effect analysis does\nwhat it is supposed to. Also, a nice way for me to get\nfamiliar with the testing infrastructure.\n\nChange-Id: I16471e5fd99615c04a59b09c4a69126d7a94684f\n"
    }
  ]
}
