)]}'
{
  "log": [
    {
      "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": "86503785cd6414b8692e5c83cadaa2972b6a099b",
      "tree": "a242e28bd3605dce65c9f5e94b5fc13f06f07d19",
      "parents": [
        "be89a6f1d9e41b154be3fe1da97cedb6964fbd35"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 11 19:07:30 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 11 19:07:30 2016 +0000"
      },
      "message": "Fix x86-64 Baker\u0027s read barrier fast path for CheckCast.\n\nUse an art::x86_64::Label instead of an\nart::x86_64::NearLabel as end label when emitting code for a\nHCheckCast instruction, as the range of the latter may\nsometimes be too short when Baker\u0027s read barriers are\nenabled.\n\nBug: 12687968\nChange-Id: Ia9742dce65be7d4fb104688f3c4717b65df1fb54\n"
    },
    {
      "commit": "ad4ed08d557ff24bd7c66d3f36687d2035367ad0",
      "tree": "8322b51a8551c7805427b19f058a68659374b710",
      "parents": [
        "902838d865eaed9fa4df6414c706e5f6787d02ea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 27 14:15:23 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 09:11:42 2016 +0000"
      },
      "message": "Revert \"Revert \"Lift the spill at each irreducible loop block restriction.\"\"\n\nThis reverts commit 2818dbcd75ea9beadcba9d18e2f68523108d0cf5.\n\nChange-Id: I92b2b60b4f08f50cacfea4132f1c28cfbd628f1a\n"
    },
    {
      "commit": "09e8d5ffe52c738c6a74984b1cbc7ad4bc8f5e2c",
      "tree": "c48431e449a0bb23c8959bac451a4ff77d538c16",
      "parents": [
        "8881c422743ac4ffd3d594420fec078d896dd05f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jan 22 16:49:55 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jan 26 10:05:40 2016 -0800"
      },
      "message": "Some minor simplifications in code and tests.\n\nBackground:\nThis is actually a resubmit of an earlier cl that was\nreverted because was test was less robust against\ninlining changes (it assumed a virtual call would\nnever be inlined).\n\noriginal cl: If8ada79dfd70bea991c11d2b18661b951b6c4cd4\nrevert cl:   I739aaaccd0509d02a62ef01e797a6d45bfe941df\n\nChange-Id: I952680d60ff488874907f066bfdf156a45b409ba\n"
    },
    {
      "commit": "2818dbcd75ea9beadcba9d18e2f68523108d0cf5",
      "tree": "5e4a1f49fe8e59c105397b53da3a5a963a22a9ff",
      "parents": [
        "79e9f43951c3cfa9ab3b0fea93e5bfdfa7aa5950"
      ],
      "author": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Tue Jan 26 17:38:19 2016 +0000"
      },
      "committer": {
        "name": "Bart Sears",
        "email": "bsears@google.com",
        "time": "Tue Jan 26 17:38:19 2016 +0000"
      },
      "message": "Revert \"Lift the spill at each irreducible loop block restriction.\"\n\nThis reverts commit 79e9f43951c3cfa9ab3b0fea93e5bfdfa7aa5950.\n\nChange-Id: I0670618b4076e06bd3f6bf8c385abfd1b651393c\n"
    },
    {
      "commit": "79e9f43951c3cfa9ab3b0fea93e5bfdfa7aa5950",
      "tree": "ff436caee8e272f520628237553b5a490384b362",
      "parents": [
        "5d5dbeb0344fa57f34cee40f01f96829eae4b514"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 23:00:45 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 26 13:38:41 2016 +0000"
      },
      "message": "Lift the spill at each irreducible loop block restriction.\n\nIt was not intended to have it this way anyway. This also\nrequired to fix GetSiblingAt, to take into account interval\nholes, and ConnectSplitSibling to re-materialize a constant\nor a method.\n\nChange-Id: Ia5534a93a5413cd0458a251c022d0b655369502b\n"
    },
    {
      "commit": "69fd1b56021ac62c17e188bd0d4dd22fc911558e",
      "tree": "0fb450426591148401bb76b854a7a8fe4e69f993",
      "parents": [
        "bf03fcd10a3ffa15468d335f26697b0473e45b36"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 10:43:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 10:43:39 2016 +0000"
      },
      "message": "Revert \"Some minor simplifications in code and tests.\"\n\nFails 530-checker-loops on arm\n\nThis reverts commit bf03fcd10a3ffa15468d335f26697b0473e45b36.\n\nChange-Id: I739aaaccd0509d02a62ef01e797a6d45bfe941df\n"
    },
    {
      "commit": "bf03fcd10a3ffa15468d335f26697b0473e45b36",
      "tree": "4b2a6572ba079093e928aa7d04152d8596eff807",
      "parents": [
        "0021c310e2e613d6d180acda0d9d422dba8688b0"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jan 04 12:32:24 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jan 20 16:23:22 2016 -0800"
      },
      "message": "Some minor simplifications in code and tests.\n\nRationale: fell through the cracks of previous \"intrinsics\" CL.\n\nChange-Id: If8ada79dfd70bea991c11d2b18661b951b6c4cd4\n"
    },
    {
      "commit": "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc",
      "tree": "a261601589163faa4538bcf1c9d156e8ec4a42b3",
      "parents": [
        "5b7b5ddb515828c93f0c2aec67aa513c32d0de22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:55:41 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 15:00:20 2016 +0000"
      },
      "message": "Implement irreducible loop support in optimizing.\n\nSo we don\u0027t fallback to the interpreter in the presence of\nirreducible loops.\n\nImplications:\n- A loop pre-header does not necessarily dominate a loop header.\n- Non-constant redundant phis will be kept in loop headers, to\n  satisfy our linear scan register allocation algorithm.\n- while-graph optimizations, such as gvn, licm, lse, and dce\n  need to know when they are dealing with irreducible loops.\n\nChange-Id: I2cea8934ce0b40162d215353497c7f77d6c9137e\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": "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": "47229aa5848df7d45578dbdd9285f57dfa9399a8",
      "tree": "9d90b04780b632d21c6b51a7ba473bfe5605bb3d",
      "parents": [
        "b5cdc5dfdbc68aa30625a1464c6378d43bb5941d",
        "e523423a053af5cb55837f07ceae9ff2fd581712"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 14:39:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 14:39:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\""
    },
    {
      "commit": "e523423a053af5cb55837f07ceae9ff2fd581712",
      "tree": "6c2d9c570bf0d9a0e2cd056e052c0be618b03fc5",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 09:06:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 13:01:25 2015 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\n\nThis reverts commit c88ef3a10c474045a3476a02ae75d07ddd3230b7.\n\nChange-Id: I0ed88a48b313a8d28bc39fae40631123aadb13ef\n"
    },
    {
      "commit": "f64242a30c6e05a8e4302a64eab4bcc28297dc9e",
      "tree": "98cbceab543c81f523c5bb676e10853ddfbc9881",
      "parents": [
        "b1aa617639c01c0dffaafd1641e0304ad179b6a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 14:58:23 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 10:48:16 2015 +0000"
      },
      "message": "Optimizing: Add checker tests for sharpening.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/184116 .\n\nChange-Id: Ib03c424fb673afc5ccce15d7d072b7572b47799a\n"
    },
    {
      "commit": "c88ef3a10c474045a3476a02ae75d07ddd3230b7",
      "tree": "cd23e1e0a3cea10cc9a9ae8269a01f75ada8ef0e",
      "parents": [
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "message": "Revert \"Don\u0027t use the compiler driver for method resolution.\"\n\nFails 425 in debuggable mode.\n\nThis reverts commit 4db0bf9c4db6a09716c3388b7d2f88d534470339.\n\nChange-Id: I346df8f75674564fc4fb241c60f23e250fc7f0a7\n"
    },
    {
      "commit": "4db0bf9c4db6a09716c3388b7d2f88d534470339",
      "tree": "71feab1b20d4d773f881e0afc26dfcd236c177d1",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:35:04 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:23:01 2015 +0000"
      },
      "message": "Don\u0027t use the compiler driver for method resolution.\n\nThe compiler driver makes assumptions that don\u0027t hold for\nthe optimizing compiler, and will for example always go to\nslow path for an invoke-super when there\u0027s no verified method.\n\nAlso fix GenerateInvokeVirtual in the presence of intrinsics.\n\nNext change will address some of the TODOs in sharpening.cc.\n\nChange-Id: I2b0e543ee9b9bebcadb2d26de29e850c59ad58b9\n"
    },
    {
      "commit": "8626b741716390a0119ffeb88b5b9fcf08e13010",
      "tree": "28d261dbb8fa3018cba8a5d829319604508ea0a1",
      "parents": [
        "0c32fdeaeda2a1e388e280da12662d1d18c834a2"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Nov 25 16:28:08 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Nov 25 16:28:08 2015 +0000"
      },
      "message": "ARM64: Use the shifter operands.\n\nThis introduces architecture-specific instruction simplification.\nOn ARM64 we try to merge shifts and sign-extension operations into\narithmetic and logical instructions.\n\nFor example for the Java code\n\n    int res \u003d a + (b \u003c\u003c 5);\n\nwe would generate\n\n    lsl w3, w2, #5\n    add w0, w1, w3\n\nand we now generate\n\n    add w0, w1, w2, lsl #5\n\nChange-Id: Ic03bdff44a1c12e21ddff1b0513bd32a730742b7\n"
    },
    {
      "commit": "418318f4d50e0cfc2d54330d7623ee030d4d727d",
      "tree": "46afabf57409a5208be4eebf31e1dcbf63dc8fde",
      "parents": [
        "60c4c6ad2b892bb00a6016a147b1cc089ba6bcb5"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:55:47 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:55:47 2015 +0000"
      },
      "message": "ARM64: Add support for multiply-accumulate.\n\nChange-Id: I88dc313df520480f3fd16bbabda27f9435d25368\n"
    },
    {
      "commit": "33a9a16a7fe21d37125853e888634d9de0b71a98",
      "tree": "f5dbcdd61cb70f1c61c700e90264868b3dedb477",
      "parents": [
        "34053d1f5a9a3d98b5e45d395ed95ba66b518d4d",
        "b2d38fdb968c818e53a4f82ce0a513cbd3bfa299"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:46:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 17:46:50 2015 +0000"
      },
      "message": "Merge \"Allow NullConstant to be untyped in GraphVisualiser.\""
    },
    {
      "commit": "b2d38fdb968c818e53a4f82ce0a513cbd3bfa299",
      "tree": "7f605ad4cef6b95d01380d778680d9dfc217265d",
      "parents": [
        "9231730cd0e285373afd73331168b289309ebee4"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Nov 16 12:21:53 2015 -0500"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:46:00 2015 +0000"
      },
      "message": "Allow NullConstant to be untyped in GraphVisualiser.\n\nThe NullConstant may be added to the graph during other passes that\nhappen between ReferenceTypePropagation and Inliner (e.g.\nInstructionSimplifier). If the inliner doesn\u0027t run or doesn\u0027t inline\nanything, the NullConstant remains untyped.\n\nThe infrastructure to properly type NullConstants everywhere is to\ncomplex to add for the benefits\n\nBug: 25786318\n\nChange-Id: I904a3e605b57f8cac9936e82f19a4994c7b1a82a\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "fbb184a1c6df22d9302b32b55206396c8278edcf",
      "tree": "c1a952cec4b5c15e30728f83da0cc5ac20c0bad9",
      "parents": [
        "2f49b0a90720fe9f4cab040c376aab5f387967e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 14:47:00 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 19 11:58:41 2015 +0000"
      },
      "message": "Fix ClinitCheck pruning.\n\nMake sure we merge the ClinitCheck only with LoadClass and\nHInvokeStaticOrDirect that is a part of the very same dex\ninstruction. This fixes incorrect stack traces from class\ninitializers (wrong dex pcs).\n\nRewrite the pruning to do all the ClinitCheck merging when\nwe see the ClinitCheck, instead of merging ClinitCheck into\nLoadClass and then LoadClass into HInvokeStaticOrDirect.\nWhen we later see an HInvokeStaticOrDirect with an explicit\ncheck (i.e. not merged), we know that some other instruction\nis doing the check and the invoke doesn\u0027t need to, so we\nmark it as not requiring the check at all. (Previously it\nwould have been marked as having an implicit check.)\n\nRemove the restriction on merging with inlined invoke static\nas this is not necessary anymore. This was a workaround for\n    X.test():\n       invoke-static C.foo() [1]\n    C.foo():\n       invoke-static C.bar() [2]\nAfter inlining and GVN we have\n    X.test():\n       LoadClass C (from [1])\n       ClinitCheck C (from [1], to be merged to LoadClass)\n       InvokeStaticOrDirect C.bar() (from [2])\nand the LoadClass must not be merged into the invoke as this\nwould cause the resolution trampoline to see an inlined\nframe from the not-yet-loaded class C during the stack walk\nand try to load the class. However, we\u0027re not allowed to\nload new classes at that point, so an attempt to do so leads\nto an assertion failure. With this CL, LoadClass is not\nmerged when it comes from a different instruction, so we can\nguarantee that all inlined frames seen by the stack walk in\nthe resolution trampoline belong to already loaded classes.\n\nChange-Id: I2b8da8d4f295355dce17141f0fab2dace126684d\n"
    },
    {
      "commit": "cdfed3dc422d0e1a9a0a948863308e58c39d01ba",
      "tree": "8c9ff8a3afd88ffb64a70e8c44869a41806661a0",
      "parents": [
        "ea30daef253f4b616ec7c9d4c7e134f33454d19d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 14:05:01 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 11 12:50:15 2015 +0000"
      },
      "message": "Revert \"Revert \"Run type propagation after inliner only when needed.\"\"\n\nThis reverts commit 271743601650308c7ac5c7a3ec35025d8130a298.\n\nChange-Id: I173e27a0a4d7d54f90ca459eb48d280d1d40ab70\n"
    },
    {
      "commit": "d26a411adee1e71b3f09dd604ab9b23018037138",
      "tree": "7e9267d50fb0a9bcd6b14a97653c8e0baf91a575",
      "parents": [
        "8a6463a7052ec69e7c0b94a65b26807f570e6359"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 10 11:07:31 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 10 18:28:21 2015 +0000"
      },
      "message": "ART: Refactor iteration over normal/exceptional successors\n\nAdd helper methods on HBasicBlock which return ArrayRef with the\nsuitable sub-array of the `successors_` list.\n\nChange-Id: I66c83bb56f2984d7550bf77c48110af4087515a8\n"
    },
    {
      "commit": "271743601650308c7ac5c7a3ec35025d8130a298",
      "tree": "cd75b95462144f35835a64e442541e778ea24fe7",
      "parents": [
        "4e5dd521063beae1706410419f19c7e224db50fe"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:38:43 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 26 12:38:43 2015 +0000"
      },
      "message": "Revert \"Run type propagation after inliner only when needed.\"\n\nThis reverts commit 4e5dd521063beae1706410419f19c7e224db50fe.\n\nChange-Id: I0de261d14dd3f71abe05f9bc71744820cf23b937\n"
    },
    {
      "commit": "4e5dd521063beae1706410419f19c7e224db50fe",
      "tree": "734842d330aca6b97ec2e042d54d32ac004288a3",
      "parents": [
        "9926d886573d13ab3f97befae4c526b936de8a53"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 19 16:19:23 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 23 17:18:35 2015 +0100"
      },
      "message": "Run type propagation after inliner only when needed.\n\nCurrently we run a type propagation pass unconditionally after the\ninliner. This change looks at the returned value (if any) and runs a\nminimal type propagation only if its type has changed.\n\nChange-Id: I0dd72bd481219081e8a978d2632426afc980d73a\n"
    },
    {
      "commit": "359f77c44dafef7ebed027180422ee75eef1467c",
      "tree": "b4b7fd4f8bf646dcd106351aaf2f5c1e6d719911",
      "parents": [
        "64d8d93aa9359b1126513dba92e27dbe184bfe3a",
        "ec7802a102d49ab5c17495118d4fe0bcc7287beb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 15:47:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 08 15:47:08 2015 +0000"
      },
      "message": "Merge \"Add DCHECKs to ArenaVector and ScopedArenaVector.\""
    },
    {
      "commit": "386062d13ce20d036555a9e24b73a67b4156b5cb",
      "tree": "6003846384f7aa5a8f6d8819926482034b70efb5",
      "parents": [
        "e53fb5582f8f6ece5d0ce3b9c0d5b1cdb654b254"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 07 18:55:43 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Oct 08 14:18:39 2015 +0100"
      },
      "message": "Make sure classes with different access checks are not GVN-ed\n\nChange-Id: I89f72fef3be35a4dd9585d97d03a3150386e0891\n"
    },
    {
      "commit": "ec7802a102d49ab5c17495118d4fe0bcc7287beb",
      "tree": "08649609604b9c96bc48ca071c48b0af5abb1a3f",
      "parents": [
        "b2e436ffcda1d7a87e7bf9133d8ed878388c73c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 20:57:57 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 11:10:18 2015 +0100"
      },
      "message": "Add DCHECKs to ArenaVector and ScopedArenaVector.\n\nImplement dchecked_vector\u003c\u003e template that DCHECK()s element\naccess and insert()/emplace()/erase() positions. Change the\nArenaVector\u003c\u003e and ScopedArenaVector\u003c\u003e aliases to use the new\ntemplate instead of std::vector\u003c\u003e. Remove DCHECK()s that\nhave now become unnecessary from the Optimizing compiler.\n\nChange-Id: Ib8506bd30d223f68f52bd4476c76d9991acacadc\n"
    },
    {
      "commit": "98893e146b0ff0e1fd1d7c29252f1d1e75a163f2",
      "tree": "a14bb10d039fcee10a7e0cacb494bb60d08b2039",
      "parents": [
        "7b5c395e9a50f988ca2275a429df17b6abbcc475"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 21:05:03 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 13:42:55 2015 +0100"
      },
      "message": "Add support for unresolved classes in optimizing.\n\nChange-Id: I0e299a81e560eb9cb0737ec46125dffc99333b54\n"
    },
    {
      "commit": "e460d1df1f789c7c8bb97024a8efbd713ac175e9",
      "tree": "3511036fb18828dd0ee140d33a8bcd0535ebeab6",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 29 04:52:17 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:18 2015 +0100"
      },
      "message": "Revert \"Revert \"Support unresolved fields in optimizing\"\n\nThe CL also changes the calling convetion for 64bit static field set\nto use kArg2 instead of kArg1. This allows optimizing to keep\nthe asumptions:\n- arm pairs are always of form (even_reg, odd_reg)\n- ecx_edx is not used as a register on x86.\n\nThis reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1.\n\nChange-Id: I93159917565824084abc96775f31be1a4249f2f3\n"
    },
    {
      "commit": "6e7455e90411c77088af5fcbf828219842bd2182",
      "tree": "739174a530e18aebcc9ebedba906c1de4e541234",
      "parents": [
        "85e5207ef094f99081539333bd868ce721c6fd73"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 28 16:25:37 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 10:01:07 2015 +0100"
      },
      "message": "Use dominance information for null optimization in write barrier.\n\nChange-Id: I8b57dafcd321c9afa1bbfc6a0674cbea15cbf10c\n"
    },
    {
      "commit": "e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1",
      "tree": "6a5f45136832f73138ced75fcd3c6110b74116ea",
      "parents": [
        "23a8e35481face09183a24b9d11e505597c75ebb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:04:33 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:04:33 2015 +0000"
      },
      "message": "Revert \"Support unresolved fields in optimizing\"\nbreaks debuggable tests.\n\nThis reverts commit 23a8e35481face09183a24b9d11e505597c75ebb.\n\nChange-Id: I8e60b5c8f48525975f25d19e5e8066c1c94bd2e5\n"
    },
    {
      "commit": "23a8e35481face09183a24b9d11e505597c75ebb",
      "tree": "bcaafb6ea001349acbf160c2cc89334fab4a38dc",
      "parents": [
        "175dc732c80e6f2afd83209348124df349290ba8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 08 19:56:31 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:29:59 2015 +0100"
      },
      "message": "Support unresolved fields in optimizing\n\nChange-Id: I9941fa5fcb6ef0a7a253c7a0b479a44a0210aad4\n"
    },
    {
      "commit": "175dc732c80e6f2afd83209348124df349290ba8",
      "tree": "6a5f45136832f73138ced75fcd3c6110b74116ea",
      "parents": [
        "5d01db1aa7634a012109d43e6403451b76de1daa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 25 15:42:32 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:29:51 2015 +0100"
      },
      "message": "Support unresolved methods in Optimizing\n\nChange-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1\n"
    },
    {
      "commit": "fa6b93c4b69e6d7ddfa2a4ed0aff01b0608c5a3a",
      "tree": "3528c88e104dac8e58ae5370ab066b8b1dd0218f",
      "parents": [
        "e295be4a95d7861f6ec179edf6565f58cad747cc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 15 10:15:55 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 16 13:21:33 2015 +0100"
      },
      "message": "Optimizing: Tag arena allocations in HGraph.\n\nReplace GrowableArray with ArenaVector in HGraph and related\nclasses HEnvironment, HLoopInformation, HInvoke and HPhi,\nand tag allocations with new arena allocation types.\n\nChange-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d\n"
    },
    {
      "commit": "6058455d486219994921b63a2d774dc9908415a2",
      "tree": "3d205227f3ff54cd3a50bc5c0e7cb3ad6c175b86",
      "parents": [
        "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:35:12 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 18:09:49 2015 +0100"
      },
      "message": "Optimizing: Tag basic block allocations with their source.\n\nReplace GrowableArray with ArenaVector in HBasicBlock and,\nto track the source of allocations, assign one new and two\nQuick\u0027s arena allocation types to these vectors. Rename\nkArenaAllocSuccessor to kArenaAllocSuccessors.\n\nBug: 23736311\nChange-Id: Ib52e51698890675bde61f007fe6039338cf1a025\n"
    },
    {
      "commit": "145acc5361deb769eed998f057bc23abaef6e116",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "91e11c0c840193c6822e66846020b6647de243d5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:33:25 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:33:25 2015 +0000"
      },
      "message": "Revert \"Optimizing: Tag basic block allocations with their source.\"\n\nReverting so that we can have more discussion about the STL API.\n\nThis reverts commit 91e11c0c840193c6822e66846020b6647de243d5.\n\nChange-Id: I187fe52f2c16b6e7c5c9d49c42921eb6c7063dba\n"
    },
    {
      "commit": "91e11c0c840193c6822e66846020b6647de243d5",
      "tree": "0c5398ef59c464c1848afd0113c74b6aeb75cf42",
      "parents": [
        "f9f6441c665b5ff9004d3ed55014f46d416fb1bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 17:03:22 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:09:37 2015 +0100"
      },
      "message": "Optimizing: Tag basic block allocations with their source.\n\nReplace GrowableArray with ArenaVector in HBasicBlock and,\nto track the source of allocations, assign one new and two\nQuick\u0027s arena allocation types to these vectors. Rename\nkArenaAllocSuccessor to kArenaAllocSuccessors.\n\nBug: 23736311\nChange-Id: I984aef6e615ae2380a532f5c6726af21015f43f5\n"
    },
    {
      "commit": "8c4113b81eda9b2eab3761583f0d9e678b0e6bdd",
      "tree": "c8626df63bdbb61ce244b70941b8955c31c5b000",
      "parents": [
        "3dac766eda0002ec020decee9270afe46ba17047",
        "2e76830f0b3f23825677436c0633714402715099"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 16:09:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 29 16:09:38 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Use the object class as top in reference type propagation\"\"\"\"\""
    },
    {
      "commit": "3dac766eda0002ec020decee9270afe46ba17047",
      "tree": "a13ff67686a6bc71e63b151a05581b8f47cd70d6",
      "parents": [
        "0f8c6daf1083d578574e13044aee2d5ea4d9933e",
        "a5ae3c3f468ffe3a317b498d7fde1f8e9325346a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 16:09:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 29 16:09:29 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\"\"\""
    },
    {
      "commit": "2e76830f0b3f23825677436c0633714402715099",
      "tree": "71bd6bd7d327ff3ef8a46af2a7514c5434adb5fd",
      "parents": [
        "a5ae3c3f468ffe3a317b498d7fde1f8e9325346a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 14:41:11 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 17:08:28 2015 +0100"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Use the object class as top in reference type propagation\"\"\"\"\n\nThis reverts commit b734808d0c93af98ec4e3539fdb0a8c0787263b0.\n\nChange-Id: Ifd925f166761bcb9be2268ff0fc9fa3a72f00c6f\n"
    },
    {
      "commit": "d60a1af565566c4a466f389b8fff0716340fc3b1",
      "tree": "85dac7a5b3504f5781906de84f32df2dc0859b3a",
      "parents": [
        "0fae2f5851dd79c4100134a92f997b2e7a520083"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Wed Jul 22 14:32:44 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Wed Jul 29 10:57:23 2015 +0100"
      },
      "message": "Run intrinsics on inlined code.\n\nFixes any prior intrinsics recognition being lost if the containing code\nblock is inlined.\n\nChange-Id: I6c89973545af97a4fe2444a9bd6efcc12d0d1b10\n"
    },
    {
      "commit": "a5ae3c3f468ffe3a317b498d7fde1f8e9325346a",
      "tree": "0b4252128815c8520128a3dbc2dacac698634ba0",
      "parents": [
        "6df1d46a5d0d4d8f90ee94921657f5bd1420301e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 14:40:50 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 15:42:08 2015 +0100"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\"\"\n\nThis reverts commit e344a8070d4549d513413c06767abf8a2c5e9709.\n\nChange-Id: I400fab0e02ce3c11376cc1f3ae9c7cf2c82ffcc1\n"
    },
    {
      "commit": "e344a8070d4549d513413c06767abf8a2c5e9709",
      "tree": "69543b9e11746fe1e390651a972c1045864ad549",
      "parents": [
        "00e3b38be4b280d6d7a7e843cd336ffbd2ba4365"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 11:52:23 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 28 11:52:23 2015 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\"\n\nThis reverts commit 00e3b38be4b280d6d7a7e843cd336ffbd2ba4365.\n\nChange-Id: I4dbadb2d7312a410f1c56283f063dd82156cf702\n"
    },
    {
      "commit": "00e3b38be4b280d6d7a7e843cd336ffbd2ba4365",
      "tree": "a9a0a67143d5af9c375dbb9db9d874b61586f7e1",
      "parents": [
        "f7efc9ef90c38212f8c4fbece99080f784a53181"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 15 14:41:29 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jul 27 19:50:04 2015 +0100"
      },
      "message": "Revert \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\"\n\nThis reverts commit 9b0096ba77e7e61bc2dcbbf954831dcae54a6c27.\n\nChange-Id: I824f16e800ca32e646577d5e1e0d593887ccead1\n"
    },
    {
      "commit": "c5bee2a133f6505b8004075288b19efb99e24b4f",
      "tree": "5d02e757bb0de3ceceec5979f8ae80712679799c",
      "parents": [
        "32d7806b34efda2af0f5a0eaaa384c781565d364",
        "9b0096ba77e7e61bc2dcbbf954831dcae54a6c27"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:20:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 22 17:20:08 2015 +0000"
      },
      "message": "Merge \"Revert \"Fixes and improvements in ReferenceTypePropagation\"\""
    },
    {
      "commit": "32d7806b34efda2af0f5a0eaaa384c781565d364",
      "tree": "365d25bc21b5af5ec6dfab828de2d28acbdb8b26",
      "parents": [
        "d77aa00c583cc72f96bc4522d02d2070dcd72f1c",
        "7733bd644ac71f86d4b30a319624b23343882e53"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:19:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 22 17:19:20 2015 +0000"
      },
      "message": "Merge \"Revert \"Use the object class as top in reference type propagation\"\""
    },
    {
      "commit": "7733bd644ac71f86d4b30a319624b23343882e53",
      "tree": "7f897d8b0545e43da6b6059718685a8e396b3b70",
      "parents": [
        "3fabec7a25d151b26ba7de13615bbead0dd615a6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:14:50 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:14:50 2015 +0000"
      },
      "message": "Revert \"Use the object class as top in reference type propagation\"\n\nThis reverts commit 3fabec7a25d151b26ba7de13615bbead0dd615a6.\n\nChange-Id: Id8614f6b6e3e0e4c9caeb9f771e4c145d9fec64f\n"
    },
    {
      "commit": "9b0096ba77e7e61bc2dcbbf954831dcae54a6c27",
      "tree": "1d46845e8c5734683077357bf18743d5eec466e2",
      "parents": [
        "b0d5fc0ac139da4aaa1440263416b9bde05630b0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:14:32 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 17:14:32 2015 +0000"
      },
      "message": "Revert \"Fixes and improvements in ReferenceTypePropagation\"\n\nThis reverts commit b0d5fc0ac139da4aaa1440263416b9bde05630b0.\n\nChange-Id: Iea8adfc0bd4cb7ee2b292278b8bac80a259acbd1\n"
    },
    {
      "commit": "e6e38ce021ef5e0d326d76172307c000e0e6fab3",
      "tree": "c7478d676ab6f0c229f154ab06fbce56f7ae507b",
      "parents": [
        "a3073e24e00274d2957771518be5ecfa74591744",
        "3fabec7a25d151b26ba7de13615bbead0dd615a6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 11:20:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 22 11:20:14 2015 +0000"
      },
      "message": "Merge \"Use the object class as top in reference type propagation\""
    },
    {
      "commit": "a3073e24e00274d2957771518be5ecfa74591744",
      "tree": "0b07b7c0b70bb9e3c89b9b7c1ea58b59079be9c3",
      "parents": [
        "236d0a3c35a369da99bb1f0c617a29f23b2f4df8",
        "b0d5fc0ac139da4aaa1440263416b9bde05630b0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 22 11:20:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 22 11:20:01 2015 +0000"
      },
      "message": "Merge \"Fixes and improvements in ReferenceTypePropagation\""
    },
    {
      "commit": "3fabec7a25d151b26ba7de13615bbead0dd615a6",
      "tree": "a73af9489665d5b033e961d1aafe7e0935c8af85",
      "parents": [
        "b0d5fc0ac139da4aaa1440263416b9bde05630b0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 16 16:51:30 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 21 14:33:42 2015 +0100"
      },
      "message": "Use the object class as top in reference type propagation\n\nThis properly types all instructions, making it safe to query the type\nat any time.\n\nThis also moves a few functions from class.h to class-inl.h to please\ngcc linker when compiling for target.\n\nChange-Id: I6b7ce965c10834c994b95529ab65a548515b4406\n"
    },
    {
      "commit": "b0d5fc0ac139da4aaa1440263416b9bde05630b0",
      "tree": "7f897d8b0545e43da6b6059718685a8e396b3b70",
      "parents": [
        "d1665b7a689086ec5b33a69a05313c46ea1a95e4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 15 14:41:29 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 21 14:33:33 2015 +0100"
      },
      "message": "Fixes and improvements in ReferenceTypePropagation\n\n- Bound object types after a CheckCast. This increases the precision of\n(inlining) generic operations.\n- Make sure that the BoundType is exact when the class is final.\n- Make sure that we don\u0027t duplicate BoundTypes when we run the analysis\nmore than once.\n\nChange-Id: Ic22b610766fae101f942c0d753ddcac32ac1844a\n"
    },
    {
      "commit": "ffee3d33f3ea39aa6031c3d2ff29c4806c8dcc51",
      "tree": "9b990552fbf7e0ba91954758b07e2a51d95da9cd",
      "parents": [
        "045da88bd0230ddf48aaf037b3d6c16fbb97ba65"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jul 06 11:48:53 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 15 17:20:30 2015 +0200"
      },
      "message": "ART: Build SSA form when try/catch is present\n\nThis patch implements support for try/catch in the SsaBuilder.\nValues of locals are propagated from throwing sites inside try\nblocks to their respective catch blocks and phis (\"catch phis\")\nare created when necessary.\n\nChange-Id: I0736565c2c4ff3f9f0924b6e3a785a50023f875a\n"
    },
    {
      "commit": "bff7503625400b610a43678c6930354146ce5f92",
      "tree": "9b1c98a1a1d041fa464cddb074fca677708b5151",
      "parents": [
        "98bea9fdab2c5f964a95f9e76620b0b35c050a8a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 17:26:51 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 18:33:31 2015 +0100"
      },
      "message": "Revert \"Revert \"ART: Ignore try blocks with no throwing instructions\"\"\n\nThe original CL broke libcore tests because monitor-exit instructions\ndid not have any side-effects and got removed by DCE once not labelled\nthrowing any more.\n\nThis reverts commit efe374d7c25c1d48945a9198d96469de99e0c1bd.\n\nChange-Id: I624c0f91676d9baaada6f33be9d7091f68d57535\n"
    },
    {
      "commit": "efe374d7c25c1d48945a9198d96469de99e0c1bd",
      "tree": "5bcba0fdbdb056c1d33c5a33c581192bdf26d315",
      "parents": [
        "8f8ee680bec71a28d9d7b7538e8c7ca100a18184"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:58:07 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:58:07 2015 +0000"
      },
      "message": "Revert \"ART: Ignore try blocks with no throwing instructions\"\n\nTurns out monitor-exit *can* throw... Need to investigate\n\nThis reverts commit 8f8ee680bec71a28d9d7b7538e8c7ca100a18184.\n\nChange-Id: I8b42690918833c917b6a7fc3ceea932b7c1a6f15\n"
    },
    {
      "commit": "8f8ee680bec71a28d9d7b7538e8c7ca100a18184",
      "tree": "ac955c2a57563dfbeb09ec2fee5cc33ae2a926a4",
      "parents": [
        "3e18a8958d2caa4980c4cee4e537313a61adf3d8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 12:11:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:22:05 2015 +0100"
      },
      "message": "ART: Ignore try blocks with no throwing instructions\n\nIn order to avoid complex removal of redundant exceptional edges in\nthe SSA builder, this patch modified the graph builder to consider\nblocks without throwing instructions as not in a try block, even if\ncovered by a TryItem.\n\nIn some corner cases, this may generate more TryBoundaries than\nnecessary, but those can be removed once the SSA form is built.\n\nChange-Id: I158c4542b2c1964a8dd532f82e921b9cb1997e1e\n"
    },
    {
      "commit": "242febb3a4de1565cf33110e287819e6ba34e140",
      "tree": "1cb78b15c856312a951d5581ec316aa95f5ad09f",
      "parents": [
        "8922e0b575742aaabbb4168b8703f7c1a4cb346c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 16:10:44 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 16:11:07 2015 +0100"
      },
      "message": "Don\u0027t print signatures to avoid spaces.\n\nChange-Id: I64340fbd08282acb0eb4142d17d37e69bba507cf\n"
    },
    {
      "commit": "8922e0b575742aaabbb4168b8703f7c1a4cb346c",
      "tree": "90273cf0c055f58b8734603fc9d13193f9c030d2",
      "parents": [
        "312f1bfcfd8f655e635c941dda147377d8bff814",
        "56e1accf3966ae92e151567abf4561ef3f6466f4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 01 13:54:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 01 13:54:33 2015 +0000"
      },
      "message": "Merge \"ART: Changes to try-catch in GraphBuilder\""
    },
    {
      "commit": "56e1accf3966ae92e151567abf4561ef3f6466f4",
      "tree": "7dc23852fe89290f1e01626342dc2a2d5a7de492",
      "parents": [
        "3b0667c1d68ba88c71b031757b757dca659afd69"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 30 15:41:36 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 01 14:51:21 2015 +0100"
      },
      "message": "ART: Changes to try-catch in GraphBuilder\n\nThis patch adds an additional case into the insertion algorithm for\nHTryBoundary inside HGraphBuilder in order to better handle catch\nblocks covered by a TryItem.\n\nBuilding SSA form also required to stop combining HTryBoundaries for\nneighbouring TryItems because it was not clear which exception\nhandlers belong to which try block.\n\nChange-Id: Ic68bd6ef98fee784609fa593cb08dca1f00a15e0\n"
    },
    {
      "commit": "842acd492f8916eb56dedd17bf812107b3ffc9db",
      "tree": "6d8b998c95e868695bb6c9ec87c9acf84a194838",
      "parents": [
        "3b0667c1d68ba88c71b031757b757dca659afd69"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 13:00:15 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 13:00:15 2015 +0100"
      },
      "message": "Emit method name at invokes in the graph visualizer.\n\nChange-Id: I832f823463569724fca9c38cd70d9dd552f15b3a\n"
    },
    {
      "commit": "f9a199571417b5a5a62d94d05a064077e14dd2c4",
      "tree": "f2fb9f91e1d29f15c168e7966a1d23bfa92a9dec",
      "parents": [
        "2e232ce8c7e7accc1b9654f111266d28fe45b08d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 29 13:43:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 29 13:45:31 2015 +0100"
      },
      "message": "Revert \"Revert \"Do not update the type of something we already know.\"\"\n\nThis reverts commit 63107a804ce17db9789051e1fe310d99d1dae1cb.\n\nbug:22116987\nChange-Id: I49a376a5bd2073a69babe122ec0d26e5d2f82461\n"
    },
    {
      "commit": "63107a804ce17db9789051e1fe310d99d1dae1cb",
      "tree": "6c63aac8871de4143ee37f2a513023f1247b2117",
      "parents": [
        "30eb58c548bee08468f68eb140a74a51dd7d9b43"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 29 11:43:16 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 29 11:43:16 2015 +0000"
      },
      "message": "Revert \"Do not update the type of something we already know.\"\n\nThis reverts commit 30eb58c548bee08468f68eb140a74a51dd7d9b43.\n\nChange-Id: Icd959e868160fc3ee7031dd2927554ac5b21d40f\n"
    },
    {
      "commit": "30eb58c548bee08468f68eb140a74a51dd7d9b43",
      "tree": "28412484547b9bfb4a4773df103cef5f485c3a67",
      "parents": [
        "8d1a8c00b89775a251ac5e26a557f81ac1491a44"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 29 10:56:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 29 10:59:19 2015 +0100"
      },
      "message": "Do not update the type of something we already know.\n\nThis is both an optimization to avoid unneeded nodes,\nand correctness to avoid replacing the second input\nof `HInstanceOf` and `HCheckCast` to something that is\nnot `HLoadClass`.\n\nbug:22116987\n\nChange-Id: I4907197a9002883d7cae8265a9642512b6201396\n"
    },
    {
      "commit": "fc6a86ab2b70781e72b807c1798b83829ca7f931",
      "tree": "90201491e811cf7be0e0469d7a06a828f4384cad",
      "parents": [
        "d3eaade87ac079accca30473ef0a3b38ab600828"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jun 26 10:33:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jun 26 13:49:50 2015 +0100"
      },
      "message": "Revert \"Revert \"ART: Implement try/catch blocks in Builder\"\"\n\nThis patch enables the GraphBuilder to generate blocks and edges which\nrepresent the exceptional control flow when try/catch blocks are\npresent in the code. Actual compilation is still delegated to Quick\nand Baseline ignores the additional code.\n\nTo represent the relationship between try and catch blocks, Builder\nsplits the edges which enter/exit a try block and links the newly\ncreated blocks to the corresponding exception handlers. This layout\nwill later enable the SsaBuilder to correctly infer the dominators of\nthe catch blocks and to produce the appropriate reverse post ordering.\nIt will not, however, allow for building the complete SSA form of the\ncatch blocks and consequently optimizing such blocks.\n\nTo this end, a new TryBoundary control-flow instruction is introduced.\nCodegen treats it the same as a Goto but it allows for additional\nsuccessors (the handlers).\n\nThis reverts commit 3e18738bd338e9f8363b26bc895f38c0ec682824.\n\nChange-Id: I4f5ea961848a0b83d8db3673763861633e9bfcfb\n"
    },
    {
      "commit": "3e18738bd338e9f8363b26bc895f38c0ec682824",
      "tree": "708013ef06cfb524f040b2b5c494f7f3cb84ac2c",
      "parents": [
        "0b5c7d1994b76090afcc825e737f2b8c546da2f8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jun 26 09:59:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jun 26 09:59:52 2015 +0000"
      },
      "message": "Revert \"ART: Implement try/catch blocks in Builder\"\n\nCauses OutOfMemory issues, need to investigate.\n\nThis reverts commit 0b5c7d1994b76090afcc825e737f2b8c546da2f8.\n\nChange-Id: I263e6cc4df5f9a56ad2ce44e18932ca51d7e349f\n"
    },
    {
      "commit": "0b5c7d1994b76090afcc825e737f2b8c546da2f8",
      "tree": "057eddf8830b1991f02af3c3ce1b63dee90dd2ad",
      "parents": [
        "1dd3136d9f6b1c7d551897a2d96c8314e40f7324"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 11 11:17:49 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 25 16:58:08 2015 +0100"
      },
      "message": "ART: Implement try/catch blocks in Builder\n\nThis patch enables the GraphBuilder to generate blocks and edges which\nrepresent the exceptional control flow when try/catch blocks are\npresent in the code. Actual compilation is still delegated to Quick\nand Baseline ignores the additional code.\n\nTo represent the relationship between try and catch blocks, Builder\nsplits the edges which enter/exit a try block and links the newly\ncreated blocks to the corresponding exception handlers. This layout\nwill later enable the SsaBuilder to correctly infer the dominators of\nthe catch blocks and to produce the appropriate reverse post ordering.\nIt will not, however, allow for building the complete SSA form of the\ncatch blocks and consequently optimizing such blocks.\n\nTo this end, a new TryBoundary control-flow instruction is introduced.\nCodegen treats it the same as a Goto but it allows for additional\nsuccessors (the handlers).\n\nChange-Id: I415b985596d5bebb7b1bb358a46e08b7b04bb53a\n"
    },
    {
      "commit": "3a690be14f70cf1040d5492530b73c97317897e6",
      "tree": "9cfa99a92e0326d7fd0aa63381be5f010482e9f4",
      "parents": [
        "da0e224d79262b11fbac9e7b1fdc11c4df31b77f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 23 10:22:38 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 23 10:24:05 2015 +0100"
      },
      "message": "ART: Fix GraphVisualizer dlopen crash\n\nThe HGraphVisualizer used to crash if it failed to dlopen the\nlibart(d)-disassembler.so. This patch fixes that.\n\nBug: 22001285\nChange-Id: Ibe9b9af17a77e22e3571c886f77918e9491b7827\n"
    },
    {
      "commit": "eb7b7399dbdb5e471b8ae00a567bf4f19edd3907",
      "tree": "a0a488040883c14cc6cbec3186654137459d44ff",
      "parents": [
        "8ec0e20347e13592539a8c0786b1db1735149800"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Jun 19 14:47:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 22 11:57:36 2015 +0100"
      },
      "message": "Opt compiler: Add disassembly to the \u0027.cfg\u0027 output.\n\nThis is automatically added to the \u0027.cfg\u0027 output when using the usual\n`--dump-cfg` option.\n\nChange-Id: I864bfc3a8299c042e72e451cc7730ad8271e4deb\n"
    },
    {
      "commit": "66389fbeb41c981648bb2e1e7e2f43089f095591",
      "tree": "f6de19a8521f2e33d5c75771867bcf569e6d2ef4",
      "parents": [
        "822c00d0fe3b70d1f1fe5bac03713674d45f8173"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 19 10:35:42 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 19 10:37:59 2015 +0100"
      },
      "message": "Verifier: check an aput, even if we know it will fail.\n\nbug:21867457\nChange-Id: I01e333d858995d0e1e083a50cf8d460a86381f2c\n"
    },
    {
      "commit": "7cb499b1af1575c854860b0d6a103c4a2a59a569",
      "tree": "53de01908990954cdf0f46168cb437d5c12ebf2e",
      "parents": [
        "4b9a93e7774d6650f6f3b637d018109d6fe97546"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 11:35:11 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 11:35:11 2015 +0100"
      },
      "message": "Fix bug in optimizing around instanceof.\n\nWe were too aggressive when removing instanceof. We should\nnot remove it when there is one of the two static types that\nis an interface.\n\nChange-Id: I1fd80915b99b094f7b4393e7adb2b160201b30d5\n"
    },
    {
      "commit": "d23eeef3492b53102eb8093524cf37e2b4c296db",
      "tree": "57d3e9ab2853d5b8092568bb3d29bc850c113315",
      "parents": [
        "a15c78d3cc28f514a482ffd792a767e97fe53c95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 22:31:29 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:15:04 2015 +0100"
      },
      "message": "Support for inlining methods that call/throw.\n\nMostly fixes here and there to make it working.\n\nChange-Id: I1b535e895105d78b65634636d675b818551f783e\n"
    },
    {
      "commit": "9099ef709240f3b039f521f344c778e846840e8f",
      "tree": "fe8d64c9251c3f38e3e55d647484c105ea69c09c",
      "parents": [
        "0ba218df92d2130295eccd2c564f8fdd2efc3a71"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed May 20 15:19:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 17:15:04 2015 +0100"
      },
      "message": "Add tests for InstanceOf\u0027s and CheckCast\u0027s MustDoNullCheck\n\nChange-Id: I6a2b9293d91d27193625f5c61b0b64733a0c0d82\n"
    },
    {
      "commit": "0ba218df92d2130295eccd2c564f8fdd2efc3a71",
      "tree": "83f36639c262d3e37c9894178c2e9aa21e75140c",
      "parents": [
        "9ba4e65148feec589fece0c991695ba1049785bf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 19 18:46:01 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 17:10:18 2015 +0100"
      },
      "message": "Remove unnecessary clinit checks\n\nBug: 20852802\nChange-Id: Ia6db8017ac22d45456845704a69ddffcc6917f4e\n"
    },
    {
      "commit": "9ba4e65148feec589fece0c991695ba1049785bf",
      "tree": "85cae510b2103fe6685982b74f44a7cafb7428e4",
      "parents": [
        "713c59e813daa92da3f1678add6c4c7e16dcff11",
        "2b79984e04a661cf0cecf85978ccd832fe97a985"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 14:14:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 20 14:14:44 2015 +0000"
      },
      "message": "Merge \"Revert \"Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1\"\""
    },
    {
      "commit": "2b79984e04a661cf0cecf85978ccd832fe97a985",
      "tree": "43db7a41da814d78316fa02a519f89b4f83278a4",
      "parents": [
        "0f675d8d70934762a5ed70f0734bd19eecfe9680"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 14:14:18 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 14:14:18 2015 +0000"
      },
      "message": "Revert \"Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1\"\n\nThis reverts commit 0f675d8d70934762a5ed70f0734bd19eecfe9680.\n\nThe test name is too long...\n\nChange-Id: I4496501e73dcf6424e9c58b331e3d3b241aa7917\n"
    },
    {
      "commit": "713c59e813daa92da3f1678add6c4c7e16dcff11",
      "tree": "20d8dfaa990b26e8c67a384d3de5cda8b41a0680",
      "parents": [
        "099d3750d59719cecffdf49284f2633308b9c221",
        "0f675d8d70934762a5ed70f0734bd19eecfe9680"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 20 13:29:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 20 13:29:02 2015 +0000"
      },
      "message": "Merge \"Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1\""
    },
    {
      "commit": "0f675d8d70934762a5ed70f0734bd19eecfe9680",
      "tree": "5a2daed28099d34c5649bf0e00cb17534ddec9ce",
      "parents": [
        "06675720cc274eb9d91a4ecd3fb1eef94a2d88f0"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Tue May 19 20:34:09 2015 +0100"
      },
      "committer": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed May 20 14:01:47 2015 +0100"
      },
      "message": "Add test for Change-Id: Ied0412a01922b40a3f5d89bed49707498582abc1\n\nChange-Id: I3e9cbd0f5ba55f9044ddc7c7bec67b5193b90e75\n"
    },
    {
      "commit": "f1a9ff73da241c231480a9ab84311a822584017d",
      "tree": "a41e461a7514b322f2fd16318101ed4441f05673",
      "parents": [
        "468137a73b35b3ed1c457983937fb4979d6b69c9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 16:04:53 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 16:04:53 2015 +0100"
      },
      "message": "ART: Mark constructor \u0027explicit\u0027\n\nFixes a cpp-lint error.\n\nChange-Id: Ibd2c84a6f171a5ddb9aa1a3b9e23c1e5a30537f0\n"
    },
    {
      "commit": "c7a24854a09bf2b2f6678f111baea2ecc3641980",
      "tree": "4b62f3425e909c789319080bd7b47afcef2918ad",
      "parents": [
        "4b49a861e69580206988024e6987029340667628"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 16:44:05 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 15:12:23 2015 +0100"
      },
      "message": "ART: Revert change to LiveRange::Dump\n\nChanges back the LiveRange printing format to \"[start,end)\" for better\nclarity. However, it removes the space after comma due to b/1189305\nand prints the \"ranges\" attribute with curly brackets to improve\nreadability.\n\nThis is a resubmission of CL Ic83025fa78d6f1edb5e0e39d66160182b0198ab8\nwhich fixes a compilation issue on target.\n\nBug: 21189305\nChange-Id: Ic232c02ba19a710ead67793a039f99c0345353c7\n"
    },
    {
      "commit": "7fe79ff31358d00a47bb9ac1205c6e8fb1d71b72",
      "tree": "52c00a20bd620cce4df94d297cb001dd7e7e62ce",
      "parents": [
        "294a0509cf811061b8009ade61e76a1f94e248b2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 13:57:11 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 13:57:11 2015 +0000"
      },
      "message": "Revert \"ART: Revert change to LiveRange::Dump\"\n\nThis reverts commit 294a0509cf811061b8009ade61e76a1f94e248b2.\n\nNeed to investigate a compilation error.\n\nChange-Id: I62020f6e546c9faf5f4a2ed6cc1f7e1499c2fa30\n"
    },
    {
      "commit": "294a0509cf811061b8009ade61e76a1f94e248b2",
      "tree": "72e160cd689cc4fd786616e502571d54fddb8215",
      "parents": [
        "17f1bc531ea2f8c1a6fac3def13dee1b901949dd"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 16:44:05 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 14:33:27 2015 +0100"
      },
      "message": "ART: Revert change to LiveRange::Dump\n\nChanges back the LiveRange printing format to \"[start,end)\" for better\nclarity. However, it removes the space after comma due to b/1189305\nand prints the \"ranges\" attribute with curly brackets to improve\nreadability.\n\nBug: 21189305\nChange-Id: Ic83025fa78d6f1edb5e0e39d66160182b0198ab8\n"
    },
    {
      "commit": "c57397b2b87c7e6f28f4eee3c996d091e7dc0b01",
      "tree": "51ef8e6126cb41174f6103700c5f5442a38bbfe5",
      "parents": [
        "06675720cc274eb9d91a4ecd3fb1eef94a2d88f0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 16:01:59 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 16:50:23 2015 +0100"
      },
      "message": "ART: Print C1vis lists as [v1,...,vN]\n\nChecker interprets whitespace as a don\u0027t-care placeholder, making it\neasier to write assertions which test only parts of the output (e.g.\n\"//CHECK: Add liveness:44\" does not test the inputs or any other\nattributes apart from \"liveness\").\n\nHowever, since the GraphVisualizer prints lists with elements\nseparated by spaces (\"[ v1 ... vN ]\"), this allows for false positives\ncaused by an occurrence elsewhere in the output. For example, the\nassertion: \"//CHECK: [ x y ]\" will match \"[ x y ]\" but also\n\"[ x a y b ]\" or even \"[ x ] abc [ y ]\".\n\nSwitching to comma-separated lists works around this issue.\n\nThis patch updates all test files, fixes one false positive that this\nchange revealed (test 442, line 337) and two occurrences of a wrong\nmatch (test 462, lines 121, 149).\n\nBug: 21189305\nChange-Id: I3b22503be3d92529dac0b13f66bccbcfabea6721\n"
    },
    {
      "commit": "9f99d92e9f85aeafb0cdc63ca672a6bd4f3b2d5c",
      "tree": "43db7a41da814d78316fa02a519f89b4f83278a4",
      "parents": [
        "590d5767104757399c956400df9c5edc3a2c379e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 15:15:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 15:15:43 2015 +0100"
      },
      "message": "ART: Fix a minor lint error\n\nChange-Id: I956656fa4c36f20d80ef885c03487970f707be8e\n"
    },
    {
      "commit": "c74652867cd9293e86232324e5e057cd73c48e74",
      "tree": "2670fa4ee6ff86e7c7a6d7ffa07f7a58df45dfb5",
      "parents": [
        "70d3d1433ee3d33dfdc9f687c94383d527871455"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 13 17:50:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 14:04:08 2015 +0100"
      },
      "message": "ART: Refactor GraphVisualizer attribute printing\n\nThis patch unifies the way GraphVisualizer prints instruction\nattributes in preparation of changes to the Checker syntax.\n\nChange-Id: I44e91e36c660985ddfe039a9f410fedc48b496ec\n"
    },
    {
      "commit": "a4b8c21dae70ae34aee13628632c39a675c06022",
      "tree": "3a72a4fcb64d61b7913f6ee3599a46b3248437b6",
      "parents": [
        "faf935eb3a8565de98d9ec1f79c8c43c5c6eb2a7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 07 09:59:30 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 12 11:37:53 2015 +0100"
      },
      "message": "ART: Rediscover loops after deleting blocks in DCE\n\nThe way DCE currently updates loop information does not cover all\ncases. This patch removes the logic, resets loop information of live\nblocks to pre-SSA state and reanalyzes the affected loops.\n\nChange-Id: I0b996a70235b95a8db0de9a23a03f71db57a21b8\n"
    },
    {
      "commit": "0a23d74dc2751440822960eab218be4cb8843647",
      "tree": "39d69de5d812826c4065d0acd38a58cd983f21f0",
      "parents": [
        "cdeb0b5fede4c06488f43a212591e661d946bc78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 07 11:57:35 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 11 14:17:22 2015 +0100"
      },
      "message": "Add a parent environment to HEnvironment.\n\nThis code has no functionality change. It adds a placeholder\nfor chaining inlined frames.\n\nChange-Id: I5ec57335af76ee406052345b947aad98a6a4423a\n"
    },
    {
      "commit": "27df758e2e7baebb6e3f393f9732fd0d064420c8",
      "tree": "261207281fd574deffb4dc1c1bc6bea8f150993e",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 17 19:12:31 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 14:02:51 2015 +0100"
      },
      "message": "[optimizing] Add memory barriers in constructors when needed\n\nIf a class has final fields we must add a memory barrier before\nreturning from constructor. This makes sure the fields are visible to\nother threads.\n\nBug: 19851497\nChange-Id: If8c485092fc512efb9636cd568cb0543fb27688e\n"
    },
    {
      "commit": "62e074f0d1a18f0f5aa6716f000825704f55e81b",
      "tree": "bad5f57aad20c4303c717240f2dc879d14c19453",
      "parents": [
        "1b8e8cac2c96f6d2af8e7217f997a30e11c098b5"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 07 18:09:37 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 07 18:22:40 2015 +0100"
      },
      "message": "ART: Print C1vis header only if visualizer enabled\n\nSetting kStringFilter currently suppresses graph dumps of non-matching\nmethods but their headers are still printed. This fixes the issue.\n\nChange-Id: Ib33fb20fcca2bf409534a824e7f76f1feb85724d\n"
    },
    {
      "commit": "09ed1a3125849ec6ac07cb886e3c502e1dcfada2",
      "tree": "d86be714298806cfcd6a16be674573369474e8f7",
      "parents": [
        "03910065cd025ecb07781b85c2240be69c202d75"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Mar 25 08:30:06 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Mar 26 21:28:33 2015 -0400"
      },
      "message": "[optimizing] Implement X86 intrinsic support\n\nImplement the supported intrinsics for X86.\n\nEnhance the graph visualizer to print \u003cU\u003e for unallocated locations, to\nallow calling the graph dumper from within register allocation for\ndebugging purposes.\n\nChange-Id: I3b0319eb70a9a4ea228f67065b4c52d13a1ae775\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "7c3952f423b8213083d60596a5f0bf4237ca3f7b",
      "tree": "40cbc6d30e02ab5edd8598d0f811b62f5c6045ba",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 19 18:21:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 15:57:15 2015 -0800"
      },
      "message": "ART: Add -Wunused\n\nUntil the global CFLAGS are fixed, add Wunused. Fix declarations\nin the optimizing compiler.\n\nChange-Id: Ic4553f08e809dc54f3d82af57ac592622c98e000\n"
    },
    {
      "commit": "d6138ef1ea13d07ae555542f8898b30d89e9ac9a",
      "tree": "a8ffd5fd966512fd280bc1b3214f4e57a9e1805f",
      "parents": [
        "92095533ac28879ddd8b44b559d700527ca12b8a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 18 14:48:53 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 19 14:01:18 2015 +0000"
      },
      "message": "Ensure the graph is correctly typed.\n\nWe used to be forgiving because of HIntConstant(0) also being\nused for null. We now create a special HNullConstant for such uses.\n\nAlso, we need to run the dead phi elimination twice during ssa\nbuilding to ensure the correctness.\n\nChange-Id: If479efa3680d3358800aebb1cca692fa2d94f6e5\n"
    },
    {
      "commit": "bb7a28a9275239f4e6d5f7863d8256ae036a9d5e",
      "tree": "f785aabc67616bb9882a1039ca8b998cb1cf7cf7",
      "parents": [
        "c2024144da54504d819869dc928ce4ac975634d4"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Jan 09 14:40:47 2015 +0800"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 04 14:01:17 2015 +0000"
      },
      "message": "ART: Dump environment to cfg file.\n\nEnvironment shows additional dependency and instructions with environment\nshould usually be a safepoint as well.\n\nChange-Id: I04606624e6ea212ab1dc7502cdb87b5d5d0e3ac2\n"
    },
    {
      "commit": "5e8b137d28c840b128e2488f954cccee3e86db14",
      "tree": "c56e4c709ce07d605ab4b754e89f7739264feb73",
      "parents": [
        "f9af19413333c271192c3b11425f865bd8054c0c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 23 14:39:08 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 04 13:47:49 2015 +0000"
      },
      "message": "Create HGraph outside Builder, print timings\n\nThis patch refactors the way HGraph objects are created, moving the\ninstantiation out of the Builder class and creating the CodeGenerator\nearlier. The patch uses this to build a single interface for printing\ntimings info and dumping the CFG.\n\nChange-Id: I2eb63eabf28e2d0f5cdc7affaa690c3a4b1bdd21\n"
    },
    {
      "commit": "82091dad38f3e5bfaf3b6984c9ab73069fb68310",
      "tree": "f66bd397f64a13ee102e45e0b6267c5d55e77505",
      "parents": [
        "28acb6feb50951645c37c077bd3897ea760ca322"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 10:02:45 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 30 09:34:25 2015 +0000"
      },
      "message": "Implement LICM in optimizing compiler.\n\nChange-Id: I9c8afb0a58ef45e568576015473cbfd5f011c242\n"
    },
    {
      "commit": "ea55b934cff1280318f5514039549799227cfa3d",
      "tree": "835aec3eab728ecc8afe1d5a96858aca272e2250",
      "parents": [
        "8c776cd9186e68c23b0983415ae14798e5ea5ab3"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 27 17:12:29 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 27 17:12:29 2015 +0000"
      },
      "message": "ART: Further refactor use lists\n\nChange-Id: I9e3219575a508ca5141d851bfcaf848302480c32\n"
    },
    {
      "commit": "ed59619b370ef23ffbb25d1d01f615e60a9262b6",
      "tree": "6c93bb6ceff95f7aaf232825e050eecc05c7282d",
      "parents": [
        "f90eec005997f98c1a9f874fbbf68414e5f9c766"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 23 10:39:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 26 16:13:57 2015 +0000"
      },
      "message": "Optimizing: Speed up HEnvironment use removal\n\nRemoval of use records from HEnvironment vregs involved iterating over\npotentially large linked lists which made compilation of huge methods\nvery slow. This patch turns use lists into doubly-linked lists, stores\npointers to the relevant nodes inside HEnvironment and subsequently\nturns the removals into constant-time operations.\n\nChange-Id: I0e1d4d782fd624e7b8075af75d4adf0a0634a1ee\n"
    },
    {
      "commit": "9dec5a74014e96d41f84373990b4d4ac83206a88",
      "tree": "3aacf08f959a3d2558b9dc5985b6a3069506f4c8",
      "parents": [
        "b6b114c02b8bacd3b5d64e646fdaefa03c069c61",
        "0ada95d8de4b04b5f201b4b7e9c3c2fd2cc321ae"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 21 17:36:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 21 17:36:33 2015 +0000"
      },
      "message": "Merge \"ART: Replace NULL to nullptr in the optimizing compiler\""
    },
    {
      "commit": "0ada95d8de4b04b5f201b4b7e9c3c2fd2cc321ae",
      "tree": "97231800ac31c9ae1ce6351ca94d1d35dfc8caf8",
      "parents": [
        "03c45ccf104fade857cb01a2b760b08fad5e304a"
      ],
      "author": {
        "name": "Jean Christophe Beyler",
        "email": "jean.christophe.beyler@intel.com",
        "time": "Thu Dec 04 11:20:20 2014 -0800"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 21 17:33:12 2015 +0000"
      },
      "message": "ART: Replace NULL to nullptr in the optimizing compiler\n\nReplace macro NULL to the nullptr variation for C++.\n\nChange-Id: Ib6e48dd4bb3c254343383011b67372622578ca76\nSigned-off-by: Jean Christophe Beyler \u003cjean.christophe.beyler@intel.com\u003e\n"
    }
  ],
  "next": "6c2dff8ff8e1440fa4d9e1b2ba2a44d036882801"
}
