)]}'
{
  "log": [
    {
      "commit": "937e6cd515bbe7ff2f255c8fcd40bf1a575a9a16",
      "tree": "90660b3d679cfbd87327e9cda5c783128f1b9a92",
      "parents": [
        "1153282aa91292b740289ab7612a481e5c6bc167"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 11:54:37 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 11:54:37 2016 +0000"
      },
      "message": "Tighten art::HNeg type constraints on its input.\n\nEnsure art::HNeg is only passed a type having the kind of\nits input.  For a boolean, byte, short, or char input, it\nmeans HNeg\u0027s type should be int.\n\nBug: 27684275\nChange-Id: Ic8442c62090a8ab65590754874a14a0deb7acd8d\n"
    },
    {
      "commit": "22c4922c6b31e154a6814c4abe9015d9ba156911",
      "tree": "8e871f67e327322d24d0c2e4588b165005414077",
      "parents": [
        "0205b58a0d7a9ce5832393857c19c086c78996e9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 14:04:28 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 14:04:28 2016 +0000"
      },
      "message": "Ensure art::HRor support boolean, byte, short and char inputs.\n\nAlso extend tests covering the IntegerRotateLeft,\nLongRotateLeft, IntegerRotateRight and LongRotateRight\nintrinsics and their translation into an art::HRor\ninstruction.\n\nBug: 27682579\nChange-Id: I89f6ea6a7315659a172482bf09875cfb7e7422a1\n"
    },
    {
      "commit": "a5c4a4060edd03eda017abebc85f24cffb083ba7",
      "tree": "85f69512d33c19d82e172a490a241f3a17d66560",
      "parents": [
        "713c519db15aaa8d6f33b744fd28adddb97a07c2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 15:02:50 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 16 16:49:36 2016 +0000"
      },
      "message": "Make art::HCompare support boolean, byte, short and char inputs.\n\nAlso extend tests covering the IntegerSignum, LongSignum,\nIntegerCompare and LongCompare intrinsics and their\ntranslation into an art::HCompare instruction.\n\nBug: 27629913\nChange-Id: I0afc75ee6e82602b01ec348bbb36a08e8abb8bb8\n"
    },
    {
      "commit": "3e906819c33d19c9586ecd9441f0ffb8433f2bad",
      "tree": "77b91c120c37cb149fa4740b6f677194c2706605",
      "parents": [
        "d9ebad9b52605ed785222a86c84e58fa7cb66686",
        "1693a1f9c83a0bf5a29fa18ddc2d87e04e049233"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 16 10:12:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 16 10:12:39 2016 +0000"
      },
      "message": "Merge \"Make art::HCompare side effect free.\""
    },
    {
      "commit": "949e54dec11582cb9bb96f0d68e6485dd20336f1",
      "tree": "24e65c8fb3907d7e9c4d2effadb67c0ed2ea0a29",
      "parents": [
        "51b7e2d08f2bcf528eeec48b42c178b5550f6635"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 15 16:23:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 15 16:23:04 2016 +0000"
      },
      "message": "Fix HDoubleConstant::IsZero and HFloatConstant::IsZero.\n\nbug:27639313\nChange-Id: I2f30a65a07662dfce0a6d6f4ed356a8a0b3dcdef\n"
    },
    {
      "commit": "1693a1f9c83a0bf5a29fa18ddc2d87e04e049233",
      "tree": "ab8d99220352e3f6ce2501963ba81943089f0df5",
      "parents": [
        "51b7e2d08f2bcf528eeec48b42c178b5550f6635"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 14:57:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 14:57:31 2016 +0000"
      },
      "message": "Make art::HCompare side effect free.\n\nAll our back ends implement all comparisons without making a\nruntime call, so we can mark art::HCompare as a side effect\nfree instruction unconditionally.\n\nChange-Id: I9a9e7c09156c642edb6af1fe84408f887e762f2e\n"
    },
    {
      "commit": "95f931eefd6a694a27548c3503ca56559a2b868b",
      "tree": "ec7b0d6edee087c13810be515c7dbb67aec98544",
      "parents": [
        "cdd3991f821f027c9ac6674057603ba4ad9c2bb0",
        "7fc6350f6f1ab04b52b9cd7542e0790528296cbe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 11 19:48:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 19:48:08 2016 +0000"
      },
      "message": "Merge \"Integrate BitwiseNegated into shared framework.\""
    },
    {
      "commit": "a9e68021a88566f31b0ba1a997ac3c61d3081c40",
      "tree": "03816b2c31f05f6d32fbb5458eac6a9bfc554bfb",
      "parents": [
        "62a9841469f99810b2b39b0748cb113af0e8913a",
        "bdd7935c2adc3ad190ee87958e714a36f33cedae"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 16:37:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 16:37:23 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\"\""
    },
    {
      "commit": "18401b748a3180f52e42547ede22d1b184fe8c43",
      "tree": "aebee923635cc2563c74033b00ffc90ceadafed4",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 13:35:51 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 13:36:19 2016 +0000"
      },
      "message": "Fix invariant in reference type propagation.\n\nAlso some cleanups.\n\nChange-Id: I7f0ec7d06b4bab10dbfa230c757447d311658f93\n"
    },
    {
      "commit": "7fc6350f6f1ab04b52b9cd7542e0790528296cbe",
      "tree": "26a33ef7bb2e49a9b7c7d9436194a92cb447b317",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Feb 09 17:15:29 2016 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Mar 11 12:49:27 2016 +0000"
      },
      "message": "Integrate BitwiseNegated into shared framework.\n\nShare implementation between arm and arm64.\n\nChange-Id: I0dd12e772cb23b4c181fd0b1e2a447470b1d8702\n"
    },
    {
      "commit": "bdd7935c2adc3ad190ee87958e714a36f33cedae",
      "tree": "64563d52d699d63c22574dbc97e6d5410df94ac3",
      "parents": [
        "2af7213a4e0d395fe22dcdce6ec10a3bd131023d"
      ],
      "author": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Mon Feb 15 12:48:36 2016 +0600"
      },
      "committer": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Fri Mar 11 18:28:55 2016 +0600"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\"\n\nThis reverts commit d4aee949b3dd976295201b5310f13aa2df40afa1.\n\nChange-Id: I505b8c9863c310a3a708f580b00d425b750c9541\n"
    },
    {
      "commit": "7c9c31ca3b94a8e0828d2d8f9747fd579ca40305",
      "tree": "dcb9ddfa56a1bed0f52cc7da9321441e94b0e60f",
      "parents": [
        "6e1564cfdf4f6b332ee6d156de6ff9712655fff6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 08 16:00:41 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 08 16:00:41 2016 -0800"
      },
      "message": "ART: Fix missing include\n\nThe SwitchTable needs a function from an inl file.\n\nChange-Id: I624d71e0c0efc0c87150d7ef3be71e0b4506c75a\n"
    },
    {
      "commit": "3f52306b259caed1c654c4b3fd5b594d5ec8d46c",
      "tree": "8a94e537ee9c17ce8591e1775fb232ee1af09425",
      "parents": [
        "757701fc80dfe35ff9677c858b3d85e946e1ae36"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 29 16:53:33 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 01 22:54:29 2016 +0000"
      },
      "message": "ART: Fix overlapping instruction IDs in inliner\n\nInliner creates the inner graph so that it generates instruction IDs\nhigher than the outer graph. This was broken because the inliner\nwould create instructions in the outer graph before the inner graph\nis inlined.\n\nThe bug cannot be triggered because the offending instruction would\nshare the same ID as the first inner HLocal, which is removed before\nthe inner graph is inlined. The added DCHECKs reveal the hidden problem\nand make it safe for HLocals to be removed in the future.\n\nChange-Id: I486eb0f3987e20c50cbec0fb06332229e07fbae9\n"
    },
    {
      "commit": "a1d8ddfaf09545f99bc326dff97ab604d4574eb6",
      "tree": "c4a9893ac195928397c91a84223e2e011cd059bd",
      "parents": [
        "a48224f32797b234f07d78fbbede5edbb212ceab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 11:46:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 12:17:52 2016 +0000"
      },
      "message": "Bug fix for polymorphic inlining.\n\nThe code used to wrongly propagate try/catch information to\nnew blocks. Since it has the same logic as Hraph::InlineInto,\nextract the code that updates loop and try/catch information\nto blocks to a shared method.\n\nbug:27330865\nbug:27372101\nbug:27360329\n\nChange-Id: I4386f724d8d412bde5bcc04fda6955bc3bacf5a9\n"
    },
    {
      "commit": "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c",
      "tree": "45d5c735386d3253e65a986b15e3eab9b9bf75cd",
      "parents": [
        "af86c4e44184bd17411de330d48aad7784d569d4",
        "a1de9188a05afdecca8cd04ecc4fefbac8b9880f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:39:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 26 16:39:57 2016 +0000"
      },
      "message": "Merge \"Optimizing: Reduce memory usage of HInstructions.\""
    },
    {
      "commit": "a1de9188a05afdecca8cd04ecc4fefbac8b9880f",
      "tree": "a671c8aef814ccf194e5c3950a551f2711516c53",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 11:37:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:01:59 2016 +0000"
      },
      "message": "Optimizing: Reduce memory usage of HInstructions.\n\nPack narrow fields and flags into a single 32-bit field.\n\nChange-Id: Ib2f7abf987caee0339018d21f0d498f8db63542d\n"
    },
    {
      "commit": "9ff0d205fd60cba6753a91f613b198ca2d67f04d",
      "tree": "86689672064d66d2c473045f934f948211ba0389",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Mon Jan 11 13:43:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 25 16:26:13 2016 +0000"
      },
      "message": "Optimizing: ARM64 negated bitwise operations simplification\n\nUse negated instructions on ARM64 to replace [bitwise operation + not]\npatterns, that is:\na \u0026 ~b (BIC)\na | ~b (ORN)\na ^ ~b (EON)\n\nThe simplification only happens if the Not is only used by the bitwise\noperation. It does not happen if both inputs are Not\u0027s (this should be\nhandled by a generic simplification applying De Morgan\u0027s laws).\n\nChange-Id: I0e112b23fd8b8e10f09bfeff5994508a8ff96e9c\n"
    },
    {
      "commit": "1de3bb289ba5e8a249840c634ad5eb108b827d69",
      "tree": "d8faf2243c92442f0322c873555e3c695a254452",
      "parents": [
        "dcedaaa4dc6d05b6044ecef50f2d9bb95575d49c",
        "4a0dad67867f389e01a5a6c0fe381d210f687c0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 15:37:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 25 15:37:05 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ARM/ARM64: Extend support of instruction combining.\"\"\""
    },
    {
      "commit": "4a0dad67867f389e01a5a6c0fe381d210f687c0d",
      "tree": "91f1e70f4a2d0bd32aa7eb51e546f5330d72f772",
      "parents": [
        "d15ede2df7d157ea5480614fd18c2bf0d37a6c2a"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Jan 26 12:28:31 2016 +0300"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 10:14:30 2016 +0000"
      },
      "message": "Revert \"Revert \"ARM/ARM64: Extend support of instruction combining.\"\"\n\nThis reverts commit 6b5afdd144d2bb3bf994240797834b5666b2cf98.\n\nChange-Id: Ic27a10f02e21109503edd64e6d73d1bb0c6a8ac6\n"
    },
    {
      "commit": "e53bd8160ad2892f33849108d3b1099992a311fd",
      "tree": "2e2c33e50fa871174273799d09689d669f4c0561",
      "parents": [
        "d15ede2df7d157ea5480614fd18c2bf0d37a6c2a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 24 14:54:18 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 24 14:54:45 2016 +0000"
      },
      "message": "Remove unreachable code paths in constant folding.\n\nChange-Id: I7ffb361711c87f6b1b98d172d2cfdf9b2ba65607\n"
    },
    {
      "commit": "1d01ef7f0f79b032449c35203ca9543fb8a0b22f",
      "tree": "78e44decc10d0155ddec585bba5500451e2daacb",
      "parents": [
        "afe84004583488ded7f99bb703ed4c1a601ff034",
        "e4084a5eb46dc6b99c0e0b74bcdecccaceb28fe7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 16:33:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 18 16:33:37 2016 +0000"
      },
      "message": "Merge \"Small inlining improvements.\""
    },
    {
      "commit": "f8a08735f6c60ddee2bb5646dcad561361cce079",
      "tree": "36111e04c122c0c4f58dc1ea24a327c9069f72d6",
      "parents": [
        "99da8cd8818e015b21d1c2af73ac40749698c930",
        "916cc1d504f10a24f43b384e035fdecbe6a74b4c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 15:56:59 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 18 15:56:59 2016 +0000"
      },
      "message": "Merge \"Implement polymorphic inlining.\""
    },
    {
      "commit": "e4084a5eb46dc6b99c0e0b74bcdecccaceb28fe7",
      "tree": "d47f5a4ff9faae1736fc065e82d39110b9261e61",
      "parents": [
        "a1f65135cd2315159ac302f904ba0c5ba0d7fd0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:43:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 15:14:30 2016 +0000"
      },
      "message": "Small inlining improvements.\n\n- Use the type_index in the current dex file for classes not\n  defined in the current dex file.\n- Make the loading of the vtable field of a class have no side effects\n  to enable gvn\u0027ing it.\n\nNote that those improvements only affect the JIT, where we don\u0027t have\nchecker support.\n\nChange-Id: I519f52bd8270f2b828f0920a1214da33cf788f41\n"
    },
    {
      "commit": "916cc1d504f10a24f43b384e035fdecbe6a74b4c",
      "tree": "a68f7276cba6cd75bc0b200337edde8eafccccc7",
      "parents": [
        "442643920a6c539e98aad76594e99b932b5631ba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 11:12:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:41:25 2016 +0000"
      },
      "message": "Implement polymorphic inlining.\n\nFor example, before:\nHInvokeVirtual\n\nAfter:\nIf (receiver \u003d\u003d Foo) {\n  // inlined code.\n} else if (receiver \u003d\u003d Bar) {\n  // inlined code\n} else {\n  // HInvokeVirtual or HDeoptimize(receiver !\u003d Baz)\n}\n\nChange-Id: I5ce305aef8f39f8294bf2b2bcfe60e0dddcfdbec\n"
    },
    {
      "commit": "31dd3d60491148d345c1edae1ccd090a1b67dd2b",
      "tree": "57e6fc0663a39dd5abd6284adc822e8782c4bdf0",
      "parents": [
        "88f38e9b4e9ba0aca3d6fd4823be3a7226c87f33"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 16 12:21:02 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 17 13:52:33 2016 +0000"
      },
      "message": "Extend constant folding to float and double operations.\n\nChange-Id: I2837064b2ceea587bc171fc520507f13355292c6\n"
    },
    {
      "commit": "4a69a30120ecba9431246938e124d56213447137",
      "tree": "3201099fae198e4d90305a0a9168019c1a7b9f60",
      "parents": [
        "ce053b20e87f33b4417b8f21bb6f2ec4feb3104e",
        "55bd749991f9a0a73f612696e1a93e739380546b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 16:54:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 16 16:54:19 2016 +0000"
      },
      "message": "Merge \"Refactor the inliner.\""
    },
    {
      "commit": "55bd749991f9a0a73f612696e1a93e739380546b",
      "tree": "7bfe5a6565e728468fa67cb9ce7c62907d9ce0f8",
      "parents": [
        "7dc277b171b4d8294c4d152d8a6020995dc95f98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:37:12 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 16:05:11 2016 +0000"
      },
      "message": "Refactor the inliner.\n\nIn preparation for more polymorphic inlining, refactor the inliner\na bit.\n\nChange-Id: Ie3fd6c1ef205f1089989c67a527e6f57ff3c8b5d\n"
    },
    {
      "commit": "9779307ce8f2dd40c429abb0f0cafc1415f70648",
      "tree": "c3963fb789d54a81459166f38176c6be6eb328e8",
      "parents": [
        "7eca244e79480f2ecea341598524a53273959c2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:33:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:36:16 2016 +0000"
      },
      "message": "HInvokeStaticOrDirect may not have a special input.\n\nFor irreducible loops, we disable the generation of\nHX86ComputeBaseMethodAddress, so intrinsics code should not assume\nit\u0027s there.\n\nbug:27149923\n\nChange-Id: I78ba0ca7aefa4033227c77ba438b6eaca53dadd9\n"
    },
    {
      "commit": "b01e0e2e931b9670690a9eeffdbee73db588715d",
      "tree": "cde0cb9e1d26fe11c730ed8580f507a58cf8006a",
      "parents": [
        "9b8beaa5d04afcab0e3ddb6306ed610c0d11da8d",
        "badd826664896d4a9628a5a89b78016894aa414b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 16:12:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 15 16:12:32 2016 +0000"
      },
      "message": "Merge \"ART: Run SsaBuilder from HGraphBuilder\""
    },
    {
      "commit": "c0b601b5e4c1add5eefd45f2f4d2c376a20ba4d4",
      "tree": "5afda879812dd7984f2d5970d4ff4ab3bc22a7d0",
      "parents": [
        "b3ba4ec3fac34f0a45aa654ef88033b2f34c3640"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 08 14:20:45 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 13:11:04 2016 +0000"
      },
      "message": "ART: Implement HSelect with CSEL/FCSEL on arm64\n\nChange-Id: I549af0cba3c5048066a2d1206b78a70b496d349e\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": "6e332529c33be4d7dae5dad3609a839f4c0d3bfc",
      "tree": "cedd2e1beb170fd5821136fe974e3f34adfcddc2",
      "parents": [
        "d3caabd4f85f86dd744da432993e12935d843a83"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:15:27 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 12 15:17:50 2016 +0000"
      },
      "message": "ART: Remove HTemporary\n\nChange-Id: I21b984224370a9ce7a4a13a9652503cfb03c5f03\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": "9fba3f67a0792ad5eeb495e489d11a87211c318f",
      "tree": "7204ab0951b14fa2536fe33d974e413a3cbe87a5",
      "parents": [
        "0f638c64686c03256c949051331b0838c9888a2a",
        "b331febbab8e916680faba722cc84b66b84218a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:25:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 17:25:17 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\""
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "11aa3f5c5efd5ce8e761dfd76378a91d9f8dc42b",
      "tree": "746ab81bbc05e03fb918ca32cc8d5b296d083113",
      "parents": [
        "7ac9aeb501520089334c7b9e0deca1e089945bc8",
        "bd89a5c556324062b7d841843b039392e84cfaf4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:47:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 15:47:16 2016 +0000"
      },
      "message": "Merge \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\""
    },
    {
      "commit": "bd89a5c556324062b7d841843b039392e84cfaf4",
      "tree": "185a1604d29d715aa3ac8e0284343bf8d538ef3e",
      "parents": [
        "891bc286963892ed96134ca1adb7822737af9710"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:46:42 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:46:42 2016 +0000"
      },
      "message": "Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\n\nDCHECK whether loop headers are covered fails.\n\nThis reverts commit 891bc286963892ed96134ca1adb7822737af9710.\n\nChange-Id: I0f9a90630b014b16d20ba1dfba31ce63e6648021\n"
    },
    {
      "commit": "7ac9aeb501520089334c7b9e0deca1e089945bc8",
      "tree": "2654ef827f6f15ac92f224c2b0460a3d3645fe2d",
      "parents": [
        "c8d2b0c174dc45c931eecf45a5fdd45fdf4be311",
        "891bc286963892ed96134ca1adb7822737af9710"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 14:39:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 14:39:18 2016 +0000"
      },
      "message": "Merge \"Implement on-stack replacement for arm/arm64/x86/x86_64.\""
    },
    {
      "commit": "891bc286963892ed96134ca1adb7822737af9710",
      "tree": "596055109b4eed1a41ae61dbec76ad9d5a1d78df",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 12:40:13 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 11:48:04 2016 +0000"
      },
      "message": "Implement on-stack replacement for arm/arm64/x86/x86_64.\n\nHigh-level overview:\n- osr_method_threshold is used to know when to compile a method\n  in osr mode (-\u003e treat all loops as irreducible).\n- branch instructions in the compiler query whether they can\n  jump to an osr method.\n- An osr entry point is found through the stack maps: if a stack\n  map is duplicated in the CodeInfo, it is an osr entry point.\n\nChange-Id: Ifb39338cd281e2c7eccce67f4e18d46428be71e4\n"
    },
    {
      "commit": "2f10a5fb8c236a6786928f0323bd312c3ee9a4cc",
      "tree": "0dc51717b1f5d9b2c20898c5283467d4feb220e2",
      "parents": [
        "a20748aceb63396c5e09366968bbc71308f745df"
      ],
      "author": {
        "name": "Mark P Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Jan 25 14:47:50 2016 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Feb 04 12:59:22 2016 -0500"
      },
      "message": "Revert \"Revert \"X86: Use the constant area for more operations.\"\"\n\nThis reverts commit cf8d1bb97e193e02b430d707d3b669565fababb4.\n\nHandle the case of an intrinsic where CurrentMethod is still an input.\nThis will be the case when there are unresolved classes in the\nhierarchy.\n\nAdd a test case to confirm that we don\u0027t crash when handling Math.abs,\nwhich wants to add a pointer to the constant area for the bitmask to be\nused to remove the sign bit.\n\nEnhance 565-checker-condition-liveness to check for the case of deeply\nnested EmitAtUseSite chains.\n\nChange-Id: I022e8b96a32f5bf464331d0c318c56b9d0ac3c9a\n"
    },
    {
      "commit": "03196cfae4e8a91ce37d257b315f78a965a79829",
      "tree": "b4cd8397a53e8c0a38ff6211f0ea84841a085602",
      "parents": [
        "7f1551d28b3674799a4bb2b198bf6b16f32082af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 12:23:22 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 12:25:24 2016 +0000"
      },
      "message": "Be on the safe side: emit an environment for runtime calls.\n\nEven if those runtime calls don\u0027t throw, they may be interrupted\nand be asked to dump their stack. Since dumping a stack also dumps\nlocked Java objects, we need a DexRegisterMap at these locations\nto know the location of those objects.\n\nAdds 0.05% to boot image code size.\n\nbug:26168076\nChange-Id: I7c3975addea9ddf3123183b07108b0701bb26fc8\n"
    },
    {
      "commit": "9ff1de06d6ed1da36f7e976224a2d13e5e9882bf",
      "tree": "9121c384f3e0375fccfa4ca9f71c7d86baf38904",
      "parents": [
        "bee600ff66e3e233274faa1391890ff424a8244e",
        "a42363f79832a6e14f348514664dc6dc3edf9da2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "message": "Merge \"Implement first kind of polymorphic inlining.\""
    },
    {
      "commit": "a42363f79832a6e14f348514664dc6dc3edf9da2",
      "tree": "bcd43acdf9903a704b566af00b5c740786284b7b",
      "parents": [
        "9cea9139033a4d04437ebc5542e9466fd67137fe"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 14:57:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 15:55:46 2016 +0000"
      },
      "message": "Implement first kind of polymorphic inlining.\n\nAdd HClassTableGet to fetch an ArtMethod from the vtable or imt,\nand compare it to the only method the profiling saw.\n\nChange-Id: I76afd3689178f10e3be048aa3ac9a97c6f63295d\n"
    },
    {
      "commit": "74eb1b264691c4eb399d0858015a7fc13c476ac6",
      "tree": "0b6fc4f3003d50bf6c388601013cdfc606e53859",
      "parents": [
        "75fd2a8ab9b4aff59308034da26eb4986d10fa9e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 11:44:01 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 28 15:50:27 2016 +0000"
      },
      "message": "ART: Implement HSelect\n\nThis patch adds a new HIR instruction to Optimizing. HSelect returns\none of two inputs based on the outcome of a condition.\n\nThis is only initial implementation which:\n - defines the new instruction,\n - repurposes BooleanSimplifier to emit it,\n - extends InstructionSimplifier to statically resolve it,\n - updates existing code and tests accordingly.\n\nCode generators currently emit fallback if/then/else code and will be\nupdated in follow-up CLs to use platform-specific conditional moves\nwhen possible.\n\nChange-Id: Ib61b17146487ebe6b55350c2b589f0b971dcaaee\n"
    },
    {
      "commit": "b3e773eea39a156b3eacf915ba84e3af1a5c14fa",
      "tree": "6c0d3a748d7b445a0d776ed306c7add43a0e1dd3",
      "parents": [
        "05aeb408f292d8d94af1646a94bc69faf77f0b46"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 26 11:28:37 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 28 15:48:00 2016 +0000"
      },
      "message": "ART: Implement support for instruction inlining\n\nOptimizing HIR contains \u0027non-materialized\u0027 instructions which are\nemitted at their use sites rather than their defining sites. This\nwas not properly handled by the liveness analysis which did not\nadjust the use positions of the inputs of such instructions.\nDespite the analysis being incorrect, the current use cases never\nproduce incorrect code.\n\nThis patch generalizes the concept of inlined instructions and\nupdates liveness analysis to set the compute use positions correctly.\n\nChange-Id: Id703c154b20ab861241ae5c715a150385d3ff621\n"
    },
    {
      "commit": "f39745e663f8f2634fc8858e427b77da98f8f2b4",
      "tree": "b8cd5abd22e0252511166930ac6326a2f38e6980",
      "parents": [
        "36867b43efadc637ab74b1bacb1caecea2c5413d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "message": "ART: Remove some unnecessary mutator lock annotations.\n\nThe StackReference\u003c\u003e pointer held by a Handle\u003c\u003e can be used\nwithout holding the mutator lock. We already do that when\nwe copy Handle\u003c\u003es around. Only accessing the actual content\nof the pointed-to StackReference\u003c\u003e needs to be done while\nholding the mutator lock.\n\nChange-Id: I5f93bd7e277383192f1f16dff6883ecb26387414\n"
    },
    {
      "commit": "cf8d1bb97e193e02b430d707d3b669565fababb4",
      "tree": "dcdf5e9baaa89b82515652d5abffa2712bc9b3ca",
      "parents": [
        "dc00454f0b9a134f01f79b419200f4044c2af5c6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 25 09:43:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 25 09:43:30 2016 +0000"
      },
      "message": "Revert \"X86: Use the constant area for more operations.\"\n\nHits a DCHECK:\n\ndex2oatd F 19461 20411 art/compiler/optimizing/pc_relative_fixups_x86.cc:196] Check failed: !invoke_static_or_direct-\u003eHasCurrentMethodInput() \n\n\nThis reverts commit dc00454f0b9a134f01f79b419200f4044c2af5c6.\n\nChange-Id: Idfcacf12eb9e1dd7e68d95e880fda0f76f90e9ed\n"
    },
    {
      "commit": "dc00454f0b9a134f01f79b419200f4044c2af5c6",
      "tree": "49a787e2b617ce5bc69aa2dc4b71653c68ee0375",
      "parents": [
        "2d0582b6c96cf16e18df50158494e32eeede0a95"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Oct 30 09:45:03 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Jan 22 14:54:15 2016 -0500"
      },
      "message": "X86: Use the constant area for more operations.\n\nAllow FP HNeg to use the constant area to hold the constant to flip the\nsign bit.\n\nEnhance some math intrinsics to allow the use of the constant\narea: Abs{Float,Double}, {Min,Max}{FloatFloat,DoubleDouble}.\n\nAllow compares of floats/doubles to constants using the constant area.\n\nThese eliminate almost all uses of loading constants from the stack.\n\nChange-Id: Ic4b831565825cbe9f0801b1b53c1013be7c87ae4\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "87f7dfc3ad523441f607d116042638a02b2286a6",
      "tree": "6902b45f5e661722cee59a4db1828ddef7bdbd7d",
      "parents": [
        "d30de5b7667843889e38370ec3b8f523e5a128d0",
        "788f2f05c3e5b0e5bda247b00e34f0094585546f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 13:35:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 13:35:19 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Inline methods with loops.\"\"\""
    },
    {
      "commit": "788f2f05c3e5b0e5bda247b00e34f0094585546f",
      "tree": "7e8b578b60bed6e550b62767f1fbc43651755798",
      "parents": [
        "c24b8df48be848af1f4cb54e9caef2b7d6afe680"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:41:38 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 13:33:57 2016 +0000"
      },
      "message": "Revert \"Revert \"Inline methods with loops.\"\"\n\nBug: 26689526\n\nThis reverts commit 451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d.\n\nChange-Id: If484fe4c0744254dd7568fd5006e574d621a1855\n"
    },
    {
      "commit": "d30de5b7667843889e38370ec3b8f523e5a128d0",
      "tree": "6aa3ee28f89a3ec812339b19c003c0d404624aa6",
      "parents": [
        "34513835220e9473662ed1780291c680a5716fd0",
        "d4aee949b3dd976295201b5310f13aa2df40afa1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:36:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 12:36:39 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\""
    },
    {
      "commit": "d4aee949b3dd976295201b5310f13aa2df40afa1",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "884e54c8a45e49b58cb1127c8ed890f79f382601"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:35:26 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:35:26 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\n\nFails two checker tests:\n\n458-checker-instruction-simplification\n537-checker-jump-over-jump\n\nThis reverts commit 884e54c8a45e49b58cb1127c8ed890f79f382601.\n\nChange-Id: I22553e4e77662736b8b453d911a2f4e601f3a27e\n"
    },
    {
      "commit": "45ec0967f1ac09d223e94267c0004dc08670792e",
      "tree": "bba7deec82b9f7808eff253e2c1177818f9dd918",
      "parents": [
        "c54ec90cc3c7570be2a5a64717cd10c817e246c7",
        "884e54c8a45e49b58cb1127c8ed890f79f382601"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 10:44:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 10:44:39 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\""
    },
    {
      "commit": "6b5afdd144d2bb3bf994240797834b5666b2cf98",
      "tree": "d536cd7b3aaf55c563e82c2c522521a91b2bb953",
      "parents": [
        "debeb98aaa8950caf1a19df490f2ac9bf563075b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "message": "Revert \"ARM/ARM64: Extend support of instruction combining.\"\n\nThe test fails its checker parts.\n\nThis reverts commit debeb98aaa8950caf1a19df490f2ac9bf563075b.\n\nChange-Id: I49929e15950c7814da6c411ecd2b640d12de80df\n"
    },
    {
      "commit": "884e54c8a45e49b58cb1127c8ed890f79f382601",
      "tree": "0be051a729b2f2674c3148d8734e5520713ad546",
      "parents": [
        "a05cacc11fa075246c38497c01b949745fadc54b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:59:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:59:04 2016 +0000"
      },
      "message": "Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\n\nThis reverts commit a05cacc11fa075246c38497c01b949745fadc54b.\n\nChange-Id: Ifdc261fd4dfb2c538017fe1d69af723aafd4afef\n"
    },
    {
      "commit": "debeb98aaa8950caf1a19df490f2ac9bf563075b",
      "tree": "b2a7a7cc6fb2f56d4bcc6cecaa80035668f38dc4",
      "parents": [
        "6aadaef35ea52506db61e463910c2520b702ca5e"
      ],
      "author": {
        "name": "Ilmir Usmanov",
        "email": "i.usmanov@samsung.com",
        "time": "Fri Dec 11 11:39:44 2015 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jan 21 11:07:38 2016 +0300"
      },
      "message": "ARM/ARM64: Extend support of instruction combining.\n\nCombine multiply instructions in the following way:\nARM64:\nMUL/NEG -\u003e MNEG\nARM32 (32-bit integers only):\nMUL/ADD -\u003e MLA\nMUL/SUB -\u003e MLS\n\nChange-Id: If20f2d8fb060145ab6fbceeb5a8f1a3d02e0ecdb\n"
    },
    {
      "commit": "3ac099bd8e881b2c3e9096877c646c5dcba6d36a",
      "tree": "0cd87f47db0353afb7ee4d108092cfc52873ecad",
      "parents": [
        "6c2574c8879fff57ffc611ab7214daa97cf6f51d",
        "451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:24:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 20 21:24:20 2016 +0000"
      },
      "message": "Merge \"Revert \"Inline methods with loops.\"\""
    },
    {
      "commit": "451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d",
      "tree": "4a1bb8da95ff9b971f2ef9f3941b645bcaf211d3",
      "parents": [
        "82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:23:30 2016 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:23:30 2016 +0000"
      },
      "message": "Revert \"Inline methods with loops.\"\n\nThis reverts commit 82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869.\n\nLoop inlining exposes issues with BCE.\n\nBug: 26689526\nChange-Id: Id9983d7f9d3c5579d91e56e4699d4d939517b2dc\n"
    },
    {
      "commit": "440ef2cbc76d7e2bc76cf5f15b69fc0478d7e853",
      "tree": "b2c457e09b6ebff0e1c7504d4bb1bf4bcfe1b8e6",
      "parents": [
        "5b98e3c84ab634ff259a94fe6148f10533b467da",
        "bc9ab1630a198efbbf730275541291321ac3d2d4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 16:48:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 20 16:48:30 2016 +0000"
      },
      "message": "Merge \"ART: Cannot assume String.\u003cinit\u003e called on NewInstance\""
    },
    {
      "commit": "bc9ab1630a198efbbf730275541291321ac3d2d4",
      "tree": "68551c86f225e15bbeba00f52236492a4c8fe576",
      "parents": [
        "c4004042ca028a3c7898f0032dcee08cddea303b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 14:50:19 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 16:35:08 2016 +0000"
      },
      "message": "ART: Cannot assume String.\u003cinit\u003e called on NewInstance\n\nIrreducible loops create uneliminatable phis for all live vregs. This\nbreaks the StringFactory optimization which assumes that the first\ninput is always a NewInstance instruction.\n\nBug: 26676472\n\nChange-Id: Ib7dfdadbafbbfef89e1f5b1a80eb75ecf792621a\n"
    },
    {
      "commit": "82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869",
      "tree": "3a22cf5bb2e0012723ecdc7640e4db0dd5be2f0a",
      "parents": [
        "17ccfff2de292fd2b4a78aef87d79b662381f920"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 14:08:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 20 16:28:39 2016 +0000"
      },
      "message": "Inline methods with loops.\n\nCompiling Gms/Fb/Framework/Docs:\n- Overall compilation-time increase: 2.2%\n- Overall code size increase: 1.1%\n\nPerformance improvements:\n- Richards with jit: +6%\n- Takl: +11%\n\nChange-Id: I0a6fcf2a360e5ad193cd95b5c4fe92227ac6bd96\n"
    },
    {
      "commit": "09aa147f0891ef28a95d89e8ad61c429f82ddd5b",
      "tree": "dbf7ee48d5aa06dc4ba1ca88702e5e667e17a9db",
      "parents": [
        "a65ff5e0576ace8ffeb1a6dc8784a61cd2498fba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:52:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 13:24:07 2016 +0000"
      },
      "message": "Disable DCE when there are irreducible loops.\n\nAlso ensure an instruction that requires an environment\ndoes have one.\n\nChange-Id: I41a8460e05ef320f872197d3be7847e7ffaa6ee8\n"
    },
    {
      "commit": "28943466954ca5d6f586bb5496f7f3f0f85fe87a",
      "tree": "56a4f7427addf50aba847ea944ec24396c7e848f",
      "parents": [
        "68c56ae9ccdb6e348501456e374ae65e74f6270c",
        "6de1938e562b0d06e462512dd806166e754035ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 15 09:19:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 09:19:12 2016 +0000"
      },
      "message": "Merge \"ART: Remove incorrect HFakeString optimization\""
    },
    {
      "commit": "947cb4f5582d1f57270b48d3c47ea95e7f9085b5",
      "tree": "6f6aed8f8cca3177b06521a8db6ca845d18623ad",
      "parents": [
        "7b4199a5fa9f151fbf3af2a34f26d04215a1016c",
        "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "message": "Merge \"Implement irreducible loop support in optimizing.\""
    },
    {
      "commit": "6de1938e562b0d06e462512dd806166e754035ea",
      "tree": "f9df086a73860c20768d17ff7bc5be4139567941",
      "parents": [
        "f5b84ee14a3bc578f799a39dca1ae512b49356ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 08 17:37:10 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 14 16:22:13 2016 +0000"
      },
      "message": "ART: Remove incorrect HFakeString optimization\n\nSimplification of HFakeString assumes that it cannot be used until\nString.\u003cinit\u003e is called which is not true and causes different\nbehaviour between the compiler and the interpreter. This patch\nremoves the optimization together with the HFakeString instruction.\n\nInstead, HNewInstance is generated and an empty String allocated\nuntil it is replaced with the result of the StringFactory call. This\nis consistent with the behaviour of the interpreter but is too\nconservative. A follow-up CL will attempt to optimize out the initial\nallocation when possible.\n\nBug: 26457745\nBug: 26486014\n\nChange-Id: I7139e37ed00a880715bfc234896a930fde670c44\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": "780aeced2a8ef918901d8f450864de934f79c555",
      "tree": "0e91880137f2a5cffad2ead46d1b917bd523ae47",
      "parents": [
        "a38e418fb2d9b817309c54b54ca85039907c2bbb"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Jan 13 14:34:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:00:44 2016 +0000"
      },
      "message": "Update `ValidateInvokeRuntime()` and HDivZeroCheck.\n\nChange-Id: I35beab2777a8c83bd508d56966afa1ceff9ee24f\n"
    },
    {
      "commit": "1cde05849f2057b11e3a149144a1d02245d22060",
      "tree": "6ee7b558c082124c5fb45048e33ae18b8c13d790",
      "parents": [
        "185be57ccf1ffe059fc7a0d5acca81446b732411"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 13:56:20 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 13:56:20 2016 +0000"
      },
      "message": "HDeoptimize can also trigger GC.\n\nbug:26532563\nChange-Id: Idaa294fb500ab820c7b45e37747e96f0b455f663\n"
    },
    {
      "commit": "1af564e2d3b560fb9a076eb35ea20471aed0dc92",
      "tree": "1a369a546a6319fd866c241d5c92f3a241d314af",
      "parents": [
        "922698ded1e80cad1ecce4c2172a88c76a216373"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 12:09:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 12:38:52 2016 +0000"
      },
      "message": "Set side effects to HNullCheck and HBoundsCheck.\n\nBoth can trigger GC, as they will call NullPointerException or\nIndexOutOfBoundsException constructors.\n\nbug:26532563\nChange-Id: Id9e42f0450caaaf365630989e1b36e98add46c89\n"
    },
    {
      "commit": "a3eca2d7300f35c66cf4b696d788a8b7ba74eb99",
      "tree": "18ea775d51bfc71d90407bd801e8b56fb5309868",
      "parents": [
        "3da15f8b1097905e06a59149c3a4a9658cbb7d5e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 16:03:16 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 16:05:38 2016 +0000"
      },
      "message": "Do not leave intermediate addresses across Java calls.\n\nbug:26472446\nChange-Id: Ie4a9b5fe6f1d61a76c71eceaa2299fe55512c612\n"
    },
    {
      "commit": "a05cacc11fa075246c38497c01b949745fadc54b",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "f9f196c55f3b25c3b09350cd8ed5d7ead31f1757"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:00:24 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:00:24 2016 +0000"
      },
      "message": "Revert \"Change condition to opposite if lhs is constant\"\n\nBreaks arm64\n\nThis reverts commit f9f196c55f3b25c3b09350cd8ed5d7ead31f1757.\n\nChange-Id: Ie1027a218154b8ded6c1c8f0007720f5be68780d\n"
    },
    {
      "commit": "f9f196c55f3b25c3b09350cd8ed5d7ead31f1757",
      "tree": "0be051a729b2f2674c3148d8734e5520713ad546",
      "parents": [
        "c3ba07ef76549129705af28173070b88a1c39531"
      ],
      "author": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Tue Sep 08 17:33:16 2015 +0600"
      },
      "committer": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Tue Jan 12 13:07:06 2016 +0000"
      },
      "message": "Change condition to opposite if lhs is constant\n\nSwap operands if lhs is constant. Handeled unsigned comparison\nin insruction simplifier. Fixed NaN comparison: no matter what\nbias is set result of Equal and NotEqual operations should not\ndepend on it. Added checker tests.\n\nChange-Id: I5a9ac25fb10f2705127a52534867cee43368ed1b\nSigned-off-by: Anton Shamin \u003canton.shamin@intel.com\u003e\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "c928591f5b2c544751bb3fb26dc614d3c2e67bef",
      "tree": "b6c8a5e08c4d4c7a66a70f4d91e209ededf22334",
      "parents": [
        "5ee288c9dd99614e3a238f5efceeec6456e3499d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 10:38:42 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jan 08 12:55:31 2016 +0000"
      },
      "message": "ARM Baker\u0027s read barrier fast path implementation.\n\nIntroduce an ARM fast path implementation in Optimizing for\nBaker\u0027s read barriers (for both heap reference loads and GC\nroot loads).  The marking phase of the read barrier is\nperformed by a slow path, invoking the runtime entry point\nartReadBarrierMark.\n\nOther read barrier algorithms continue to use the original\nslow path based implementation, which has been renamed as\nGenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.\n\nBug: 12687968\nChange-Id: Ie7ee85b1b4c0564148270cebdd3cbd4c3da51b3a\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": "f555258861aea7df8af9c2241ab761227fd2f66a",
      "tree": "1317545f50f78eb7c9e4dd44ebfb256bdff0af11",
      "parents": [
        "c917d195d8d8d05f90796b1e0842883fc608346d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Dec 27 13:36:12 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 10:33:30 2016 +0000"
      },
      "message": "ART: Create BoundType for CheckCast early\n\nReferenceTypePropagation creates a BoundType for each CheckCast and\nreplaces all dominated uses of the casted object with it. This does\nnot include Phi uses on the boundary of the dominated scope, reducing\ntyping precision. This patch creates the BoundType in Builder, causing\nSsaBuilder to replace uses of the object automatically.\n\nBug: 26081304\n\nChange-Id: I083979155cccb348071ff58cb9060a896ed7d2ac\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": "5d75afe333f57546786686d9bee16b52f1bbe971",
      "tree": "ee203dd8ff8c4c6257b6c1ae1db1a432a8a8682f",
      "parents": [
        "1e65a78577ed71f5e3d79edaa0e6735ea4a3371b"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Dec 14 11:57:01 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 30 10:52:51 2015 -0800"
      },
      "message": "Improved side-effects/can-throw information on intrinsics.\n\nRationale: improved side effect and exception analysis gives\n           many more opportunities for GVN/LICM/BCE.\n\nChange-Id: I8aa9b757d77c7bd9d58271204a657c2c525195b5\n"
    },
    {
      "commit": "0cf4493166ff28518c8eafa2d0463f6e817cce75",
      "tree": "6d207db3fb655bbd692f2b01fa963c603619bd0e",
      "parents": [
        "d674bf7ba2a209790cea8ef8d935480ef515c9e1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 09 14:09:59 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 23 13:19:16 2015 +0000"
      },
      "message": "Generate more stack maps during native debugging.\n\nGenerate extra stack map at the start of each java statement.\nThe stack maps are later translated to DWARF which allows\nLLDB to set breakpoints and view local variables.\n\nChange-Id: If00ab875513308e4a1399d1e12e0fe8934a6f0c3\n"
    },
    {
      "commit": "5f7b58ea1adfc0639dd605b65f59198d3763f801",
      "tree": "04556e673cdd3967cc967ff79931eab49e523956",
      "parents": [
        "1201804d1813d7db0accead9721d67c40b3de564"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 19:49:34 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 09:59:07 2015 +0000"
      },
      "message": "Rewrite HInstruction::Is/As\u003ctype\u003e().\n\nMake Is\u003ctype\u003e() and As\u003ctype\u003e() non-virtual for concrete\ninstruction types, relying on GetKind(), and mark GetKind()\nas PURE to improve optimization opportunities. This reduces\nthe number of relocations in libart-compiler.so\u0027s .rel.dyn\nsection by ~4K, or ~44%, and in .data.rel.ro by ~18K, or\n~65%. The file is 96KiB smaller for Nexus 5, including 8KiB\nreduction of the .text section.\n\nUnfortunately, the g++/clang++ __attribute__((pure)) is not\nstrong enough to avoid duplicated virtual calls and we would\nneed the C++ [[pure]] attribute proposed in n3744 instead.\nTo work around this deficiency, we introduce an extra\nnon-virtual indirection for GetKind(), so that the compiler\ncan optimize common expressions such as\n    instruction-\u003eIsAdd() || instruction-\u003eIsSub()\nor\n    instruction-\u003eIsAdd() \u0026\u0026 instruction-\u003eAsAdd()-\u003e...\nwhich contain two virtual calls to GetKind() after inlining.\n\nChange-Id: I83787de0671a5cb9f5b0a5f4a536cef239d5b401\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": "58dcb021c3bd45718d0103844f4e6d55754e6501",
      "tree": "b5ca917081eff52a98331b1234335069ead8bede",
      "parents": [
        "66278646b5b332142d1474703ac7d945dfbf7c78",
        "40a04bf64e5837fa48aceaffe970c9984c94084a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:14:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 16:14:56 2015 +0000"
      },
      "message": "Merge \"Replace rotate patterns and invokes with HRor IR.\""
    },
    {
      "commit": "40a04bf64e5837fa48aceaffe970c9984c94084a",
      "tree": "27aeff3b9492b396050155734d81aba3c57ffbb7",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Dec 11 09:50:36 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:13:44 2015 +0000"
      },
      "message": "Replace rotate patterns and invokes with HRor IR.\n\nReplace constant and register version bitfield rotate patterns, and\nrotateRight/Left intrinsic invokes, with new HRor IR.\n\nWhere k is constant and r is a register, with the UShr and Shl on\neither side of a |, +, or ^, the following patterns are replaced:\n\n  x \u003e\u003e\u003e #k OP x \u003c\u003c #(reg_size - k)\n  x \u003e\u003e\u003e #k OP x \u003c\u003c #-k\n\n  x \u003e\u003e\u003e r OP x \u003c\u003c (#reg_size - r)\n  x \u003e\u003e\u003e (#reg_size - r) OP x \u003c\u003c r\n\n  x \u003e\u003e\u003e r OP x \u003c\u003c -r\n  x \u003e\u003e\u003e -r OP x \u003c\u003c r\n\nImplemented for ARM/ARM64 \u0026 X86/X86_64.\n\nTests changed to not be inlined to prevent optimization from folding\nthem out. Additional tests added for constant rotate amounts.\n\nChange-Id: I5847d104c0a0348e5792be6c5072ce5090ca2c34\n"
    },
    {
      "commit": "917d01680714b2295f109f8fea0aa06764a30b70",
      "tree": "1da1b936fcc2318dced0d0aa9d2f987af1a05169",
      "parents": [
        "d48015603a54b820d287d92709825765159615f0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 18:25:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 16:48:06 2015 +0000"
      },
      "message": "Don\u0027t generate a slow path for strings in the dex cache.\n\nChange-Id: I1d258f1a89bf0ec7c7ddd134be9215d480f0b09a\n"
    },
    {
      "commit": "4b467ed97bc5886fb800209c0ee94df10163b88d",
      "tree": "13b2d0b144c65e91243f3aa50ce9514276e52c64",
      "parents": [
        "eb5ddd7b02ce2d25d4f28f85a13aac628526e1c1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Nov 19 17:04:22 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Dec 08 17:02:15 2015 -0800"
      },
      "message": "Simplify and rename IsLoopInvariant() test.\n\nSimplify IsLoopInvariant() test. Also rename it to IsDefinedOutOfTheLoop()\nso there is no ambiguity for example whether a instruction after the loop counts\nas a loop invariant. It\u0027s up to the caller to make the interpretation.\n\nChange-Id: I999139032b0e4d815dd1e2276f2bd428cf558686\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\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": "1cfe7fd885fc21292dfe74b554c38b07304cb10e",
      "tree": "5a809d58debfe5265bb40c2ae71f67a0532dd974",
      "parents": [
        "8b3609b4daacfd6d823fe9d9052955db2202aa0f",
        "c88ef3a10c474045a3476a02ae75d07ddd3230b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 16:28:28 2015 +0000"
      },
      "message": "Merge \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\""
    },
    {
      "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": "753e8c43e1e68cade83e42f8111745d5c6f14f90",
      "tree": "8ed2ef769ee068f0c7620fc03b8d0b39cedee84a",
      "parents": [
        "b1aa617639c01c0dffaafd1641e0304ad179b6a2",
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:24:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 14:24:03 2015 +0000"
      },
      "message": "Merge \"Don\u0027t use the compiler driver for method resolution.\""
    },
    {
      "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": "b1aa617639c01c0dffaafd1641e0304ad179b6a2",
      "tree": "cae80877a94ad82e3fdecb5ff32a9d99d21c6edc",
      "parents": [
        "1965328f598854bfdf2d41cea582460d11aeba48",
        "fb337ea53d1e6fe68b24217a9ea95e9f544ef697"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 14:15:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 14:15:52 2015 +0000"
      },
      "message": "Merge \"Move PC-relative addressing bases to a better position.\""
    },
    {
      "commit": "1965328f598854bfdf2d41cea582460d11aeba48",
      "tree": "e4a10de3e17c21d79209dc9adcd3c3f90b2df59d",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af",
        "b4536b7de576b20c74c612406c5d3132998075ef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "message": "Merge \"Optimizing/ARM: Implement kDexCachePcRelative dispatch.\""
    },
    {
      "commit": "fb337ea53d1e6fe68b24217a9ea95e9f544ef697",
      "tree": "b1d6f4225473c613b1df7f179d0146e7d208c297",
      "parents": [
        "b4536b7de576b20c74c612406c5d3132998075ef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 25 15:25:10 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 11:38:59 2015 +0000"
      },
      "message": "Move PC-relative addressing bases to a better position.\n\nMove the platform-specific HX86ComputeBaseMethodAddress and\nHArmDexCacheArraysBase to the latest dominator of their uses\noutside any loop. This brings the base closer to the first\nuse (previously, it was in the entry block) and relieves\nsome pressure on the register allocator while avoiding\nrecalculation of the base in a loop.\n\nChange-Id: I231aa81eb5b4de9af2d0167054d06b65eb18a636\n"
    },
    {
      "commit": "b4536b7de576b20c74c612406c5d3132998075ef",
      "tree": "5265c07b51b4d79b2fd64c63d9b78d38b7601a8f",
      "parents": [
        "883ef45b5d5a2e4005914c7b339881900976b6e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 13:45:23 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 11:38:03 2015 +0000"
      },
      "message": "Optimizing/ARM: Implement kDexCachePcRelative dispatch.\n\nChange-Id: I0fe2da50a30a3f62bec8ea01688dd1fec84b1831\n"
    },
    {
      "commit": "3a581b45605b77fb40654d5d331d54df429cd2bd",
      "tree": "02853c17d6bef9576dd3bcff5f5ef18e92299803",
      "parents": [
        "319362870b67f1bf19c432ff24d5bcc328e65994",
        "8626b741716390a0119ffeb88b5b9fcf08e13010"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 26 09:55:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 26 09:55:07 2015 +0000"
      },
      "message": "Merge \"ARM64: Use the shifter operands.\""
    },
    {
      "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": "42e372e5a34d0fef88007bc5f40dd0fc7c03b58b",
      "tree": "434618ad8deec85313335b6ca63c6519639b4959",
      "parents": [
        "95f7bbcd991fbfaead438a2866354714eb32af38"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:48:56 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 17:57:26 2015 +0000"
      },
      "message": "Optimize HLoadClass when we know the class is in the cache.\n\nChange-Id: Iaa74591eed0f2eabc9ba9f9988681d9582faa320\n"
    }
  ],
  "next": "67e0ad6df9db9193fb1fb7115c249a39b1be6033"
}
