)]}'
{
  "log": [
    {
      "commit": "3e3d73349a2de81d14e2279f60ffbd9ab3f3ac28",
      "tree": "69ad3378263c9a4b967cb7e27de0027264c12eb6",
      "parents": [
        "a0ee862288b702468f8c2b6d0ad0f1c61be0b483"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 11:00:54 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 11:00:54 2015 +0100"
      },
      "message": "Have HInvoke instructions know their number of actual arguments.\n\nAdd an art::HInvoke::GetNumberOfArguments routine so that\nart::HInvoke and its subclasses can return the number of\nactual arguments of the called method.  Use it in code\ngenerators and intrinsics handlers.\n\nConsequently, no longer remove a clinit check as last input\nof a static invoke if it is still present during baseline\ncode generation, but ensure that static invokes have no such\ncheck as last input in optimized compilations.\n\nChange-Id: Iaf9e07d1057a3b15b83d9638538c02b70211e476\n"
    },
    {
      "commit": "a0ee862288b702468f8c2b6d0ad0f1c61be0b483",
      "tree": "9917112ec01e4b734900cde975e465cf3bb2b670",
      "parents": [
        "0fbfe6f92a2481daf914043262b5854e65d8c3cc",
        "f213e05cef6d38166cfe0cce8f3b0a53225a1b39"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 27 14:12:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 27 14:12:25 2015 +0000"
      },
      "message": "Merge \"Add support for caching float and double constants.\""
    },
    {
      "commit": "f213e05cef6d38166cfe0cce8f3b0a53225a1b39",
      "tree": "2fd9573056062ae085f84f1b63b8ec3298927da1",
      "parents": [
        "76bf84a196576f902a76a1165516a49dac15856f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 27 08:53:46 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 27 15:05:20 2015 +0100"
      },
      "message": "Add support for caching float and double constants.\n\nChange-Id: Ib5205bad1006bc5e3c9cc86bc82a6b4b1ce9bef9\n"
    },
    {
      "commit": "c7508e93fa3df3a3890f6b62550cbd5e35bdd8df",
      "tree": "85795f0df38a741ab14c34e0403ba4bc3c317371",
      "parents": [
        "76bf84a196576f902a76a1165516a49dac15856f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 13:28:57 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 13:40:06 2015 +0100"
      },
      "message": "ART: Fix removing a Phi with RemoveInstruction\n\nBoolean simplifier might attempt to remove a Phi from the Instruction\nlist.\n\nChange-Id: I698cc616549bd88dac96395cb2e5d09b5433d157\n"
    },
    {
      "commit": "9d750efd66ae7f4b790af3c1ff8de972bbe826d9",
      "tree": "0166fe675ff0322941ed03674bde500f5bf39510",
      "parents": [
        "f382eff130a5d90c34b3f09c4c61cb50cacd4c54"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:15:30 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:22:33 2015 -0700"
      },
      "message": "BCE: don\u0027t add deoptimization if the loop has early exit.\n\nAlso make the way to detect loop_body_successor to be\nmore accurate.\n\nChange-Id: I29680f93396383c478a8f40ad28735e4f3f07c1b\n"
    },
    {
      "commit": "f382eff130a5d90c34b3f09c4c61cb50cacd4c54",
      "tree": "07dd1b8e0cdf5c078776d6b64aa3813a80182bb6",
      "parents": [
        "adf15974e0a0a2b0e6dc311ff5701b87ca15964a",
        "206d6fd6cae5ba8c4d5f0e230111fe77b9d5c0a5"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:23:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 18:23:02 2015 +0000"
      },
      "message": "Merge \"Deoptimization-based BCE for unknown loop bounds.\""
    },
    {
      "commit": "206d6fd6cae5ba8c4d5f0e230111fe77b9d5c0a5",
      "tree": "0684e7dd7ca2768991a839a5ddbe78f20bf1e4bf",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Apr 13 16:46:28 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 10:47:01 2015 -0700"
      },
      "message": "Deoptimization-based BCE for unknown loop bounds.\n\nFor loop like:\n  for (int i \u003d start; i \u003c end; i++) {\n    array[i] \u003d 1;\n  }\nWe add the following to the loop pre-header:\n  if (start \u003c 0) deoptimize();\n  if (end \u003e array.length) deoptimize();\nThen we can eliminate bounds-check of array[i] inside the loop.\n\nWe also take care of indexing with induction variable plus some offsets,\nlike array[i - 1]/array[i + 1] inside the loop, and adjust the condition\nfor deoptimization accordingly.\n\nChange-Id: I9e24c6b5e134ff95eff5b5605ff8f95d6546616f\n"
    },
    {
      "commit": "adf15974e0a0a2b0e6dc311ff5701b87ca15964a",
      "tree": "65cc0394a15ea82df9ccb680b1ec6b3be72a1a87",
      "parents": [
        "5ff903a589af282f516bbcf6844ff2656ce76b02",
        "067cae2c86627d2edcf01b918ee601774bc76aeb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 16:43:19 2015 +0000"
      },
      "message": "Merge \"Revert \"[optimizing] Replace FP divide by power of 2\"\""
    },
    {
      "commit": "067cae2c86627d2edcf01b918ee601774bc76aeb",
      "tree": "170607d1194943f4eff92e70170da36e06b68a9c",
      "parents": [
        "b0bd8915cb257cdaf46ba663c450a6543bca75af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:00 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:00 2015 +0000"
      },
      "message": "Revert \"[optimizing] Replace FP divide by power of 2\"\n\nFails compiling docs.\n\nThis reverts commit b0bd8915cb257cdaf46ba663c450a6543bca75af.\n\nChange-Id: I47d32525c83a73118e2163eb58c68bbb7a28bb38\n"
    },
    {
      "commit": "5ff903a589af282f516bbcf6844ff2656ce76b02",
      "tree": "853e7f348c7299f32021a7f0f60ca95ef4f04b24",
      "parents": [
        "2c31b5ac1d45f2f96932c8ff0d299abb2dbde862",
        "b0bd8915cb257cdaf46ba663c450a6543bca75af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 15:05:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 15:05:29 2015 +0000"
      },
      "message": "Merge \"[optimizing] Replace FP divide by power of 2\""
    },
    {
      "commit": "940c65d6757130d2e9f864d4c2220838f0312bea",
      "tree": "c62ba17fb96bdd15dd61b0193c5047c91015e0b6",
      "parents": [
        "808db5276827c909818d5595a5600e64b97f66e0",
        "1152c926076a760490085c4497c3f117fa8da891"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 03:38:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 03:38:15 2015 +0000"
      },
      "message": "Merge \"[optimizing] Rename HasArrayAccesses and check it\""
    },
    {
      "commit": "808db5276827c909818d5595a5600e64b97f66e0",
      "tree": "7098009ac994bb77a40d07390610f63d767a0dec",
      "parents": [
        "c435e014f7c0c93b0459a0d04e3f7e893d6ce9c6",
        "99dbd6883f5dab7743d5fb5d0ad2e82c75a7011e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 03:25:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 03:25:43 2015 +0000"
      },
      "message": "Merge \"[optimizing] Handle x86 const length BoundsCheck\""
    },
    {
      "commit": "99dbd6883f5dab7743d5fb5d0ad2e82c75a7011e",
      "tree": "21b307f551ec645aeefb848c7fb2d8b7f41c6e67",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Apr 22 16:18:52 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 24 19:53:16 2015 -0400"
      },
      "message": "[optimizing] Handle x86 const length BoundsCheck\n\nAllow a constant length for BoundsCheck.\n\nChange-Id: I2c7adc6e733cf8ce6997aba76aa763d0835bd2d6\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "1152c926076a760490085c4497c3f117fa8da891",
      "tree": "215d3f45a946f51ae680ec50239ebc48f929aed7",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 24 17:06:35 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 24 19:25:51 2015 -0400"
      },
      "message": "[optimizing] Rename HasArrayAccesses and check it\n\nSince the flag is only used to see if there is a HBoundsCheck, rename\nHasArrayAccesses() to HasBoundsChecks().\n\nAdd a check in graph_checker to see that the flag is set if we see a\nHBoundsCheck instruction.\n\nChange-Id: I10fe92897374fb247082152dd75c3611cc40ff30\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "93cf23f9966cdbe88650b822ad8471284a21bacb",
      "tree": "f4350840bf7515a26ef8101db8de4be2ad950b7a",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a",
        "0379f82393237798616d485ad99952e73e480e12"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 22:35:49 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 22:35:50 2015 +0000"
      },
      "message": "Merge \"Fix DCHECKs about clinit checks in Optimizing\u0027s code generators.\""
    },
    {
      "commit": "0379f82393237798616d485ad99952e73e480e12",
      "tree": "87f5ccd1fd0f4fa8156c31191040b7433c9ec907",
      "parents": [
        "3507b795c034617e1c94fc9544a208d6c6f75735"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 23:01:24 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 23:29:06 2015 +0100"
      },
      "message": "Fix DCHECKs about clinit checks in Optimizing\u0027s code generators.\n\nThese assertions are not true for the baseline compiler.  As\na temporary workaround, remove a clinit check as last input\nof a static invoke if it is still present at the stage of\ncode generation.\n\nChange-Id: I5655f4a0873e2e7ee7790b6a341c18b4b7b52af1\n"
    },
    {
      "commit": "76f1413492c228bfa710e1eaa4c60370eaffbb8a",
      "tree": "24fc73f101c9c9ad7a76984a770f0a8f1a8e75fe",
      "parents": [
        "3507b795c034617e1c94fc9544a208d6c6f75735",
        "20e8d43ab82b28f16b1630d5081d75a922d3f67a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 20:18:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 20:18:53 2015 +0000"
      },
      "message": "Merge \"[optimizing] Ensure FillNewArray sets array access\""
    },
    {
      "commit": "20e8d43ab82b28f16b1630d5081d75a922d3f67a",
      "tree": "aa5aa67ab9161cba08eb0eebf5dae5b5fa1cfb07",
      "parents": [
        "83134ec5f26979cbb9131dccaf849a72cdd752f6"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 24 14:39:42 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 24 14:39:42 2015 -0400"
      },
      "message": "[optimizing] Ensure FillNewArray sets array access\n\nA method that only used filled new like \u0027int[]{0,0}\u0027 didn\u0027t have the\narray access flag set, so BCE didn\u0027t remove the checks.\n\nChange-Id: Iedec50daf0d25b1cc3872eb1a4cfc7b8bb31e6bf\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "5f02c6caf9f38be49e655f8bdeeeb99b6faf9383",
      "tree": "e0675b7691662a452a2bb48ebbf5410ceac51c85",
      "parents": [
        "eb5459ca861b58ee8a9907789f11400dcdddb87b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 19:14:22 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 19:18:27 2015 +0100"
      },
      "message": "Reduce the number of explicit clinit checks for static invokes.\n\nDo not generate explicit clinit checks for static invokes\nwhen the class of the called method is a super class of the\ncaller method\u0027s class (referrer class).\n\nChange-Id: I86ba18facef261fbb71f7ed20867756630ed3c53\n"
    },
    {
      "commit": "eb5459ca861b58ee8a9907789f11400dcdddb87b",
      "tree": "36c1f328c48f0ec111ee31702cc4a82ddb2ad784",
      "parents": [
        "ae803f6efbe8378b5423c51ee3c5564cae0e6e59",
        "4c0eb42259d790fddcd9978b66328dbb3ab65615"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 18:17:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 18:17:41 2015 +0000"
      },
      "message": "Merge \"Ensure inlined static calls perform clinit checks in Optimizing.\""
    },
    {
      "commit": "83134ec5f26979cbb9131dccaf849a72cdd752f6",
      "tree": "c5b523a0e7939a2eff809d5f619802b1c1eb0ac1",
      "parents": [
        "52b63e20eaef3abfda928833101f67ff581140ad",
        "5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 24 16:21:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 16:21:36 2015 +0000"
      },
      "message": "Merge \"Remove ArtMethod* parameter from dex cache entry points.\""
    },
    {
      "commit": "52b63e20eaef3abfda928833101f67ff581140ad",
      "tree": "fdbfa15ad7720c819ae9074984a93d6391b341ac",
      "parents": [
        "7bf9bc7854f5c8ccc2cb2ef4be4f728c5fbd3236",
        "1c533c17baff841e383a539fdd3c0a65135181b0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 16:09:15 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 16:09:15 2015 +0000"
      },
      "message": "Merge \"ART: Fix gtests broken by dead block elimination\""
    },
    {
      "commit": "1c533c17baff841e383a539fdd3c0a65135181b0",
      "tree": "8205b23a4914b58d4cdac6d33e08d85a6c2585aa",
      "parents": [
        "2d7352ba5311b8f57427b91b7a891e61497373c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 17:04:38 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 17:08:39 2015 +0100"
      },
      "message": "ART: Fix gtests broken by dead block elimination\n\nChange-Id: If5de97f928f9e214d64871eabfbfb3f2d15451b7\n"
    },
    {
      "commit": "7bf9bc7854f5c8ccc2cb2ef4be4f728c5fbd3236",
      "tree": "f4a4caeb5c0682b15e68b4f47020ea0239987cb9",
      "parents": [
        "f16d7b3824b2777b95fb509c1d2a95bef89f65a4",
        "b2a58477e14e1b15cb9848d16015a49a854ee32c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "message": "Merge \"Minor improvements to 458-checker-instruction-simplification.\""
    },
    {
      "commit": "4c0eb42259d790fddcd9978b66328dbb3ab65615",
      "tree": "9d1ac505dfd4d0225f479d860b72a58747c8f6ce",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 16:43:49 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 16:43:49 2015 +0100"
      },
      "message": "Ensure inlined static calls perform clinit checks in Optimizing.\n\nCalls to static methods have implicit class initialization\n(clinit) checks of the method\u0027s declaring class in\nOptimizing.  However, when such a static call is inlined,\nthe implicit clinit check vanishes, possibly leading to an\nincorrect behavior.\n\nTo ensure that inlining static methods does not change the\nbehavior of a program, add explicit class initialization\nchecks (art::HClinitCheck) as well as load class\ninstructions (art::HLoadClass) as last input of static\ncalls (art::HInvokeStaticOrDirect) in Optimizing\u0027 control\nflow graphs, when the declaring class is reachable and not\nknown to be already initialized.  Then when considering the\ninlining of a static method call, proceed only if the method\nhas no implicit clinit check requirement.\n\nThe added explicit clinit checks are already removed by the\nart::PrepareForRegisterAllocation visitor.  This CL also\nextends this visitor to turn explicit clinit checks from\nstatic invokes into implicit ones after the inlining step,\nby removing the added art::HLoadClass nodes mentioned\nhereinbefore.\n\nChange-Id: I9ba452b8bd09ae1fdd9a3797ef556e3e7e19c651\n"
    },
    {
      "commit": "2d7352ba5311b8f57427b91b7a891e61497373c1",
      "tree": "3f3426f4f30663ee252ebc1f02ecd0eb114bad85",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 14:52:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 16:19:31 2015 +0100"
      },
      "message": "ART: Dead block removal\n\nAdds a new pass which finds all unreachable blocks, typically due to\nsimplifying an if-condition to a constant, and removes them from the\ngraph. The patch also slightly generalizes the graph-transforming\noperations.\n\nChange-Id: Iff7c97f1d10b52886f3cd7401689ebe1bfdbf456\n"
    },
    {
      "commit": "5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92",
      "tree": "27b3f1c148744452b26bd4841f0dabe0549c3d86",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 20 20:11:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 24 11:08:46 2015 +0100"
      },
      "message": "Remove ArtMethod* parameter from dex cache entry points.\n\nLoad the ArtMethod* using an optimized stack walk instead.\nThis reduces the size of the generated code.\n\nThree of the entry points are called only from a slow-path\nand the fourth (InitializeTypeAndVerifyAccess) is rare and\nalready slow enough that the one or two extra loads\n(depending on whether we already have the ArtMethod* in a\nregister) are insignificant. And as we\u0027re starting to use\nPC-relative addressing of the dex cache arrays (already\ndone by Quick for the boot image), having the ArtMethod* in\na register becomes less likely anyway.\n\nChange-Id: Ib19b9d204e355e13bf386662a8b158178bf8ad28\n"
    },
    {
      "commit": "c5cb691ca6a746a193bfbe3525aafa7cbb281d40",
      "tree": "61ac0c8c0f3842539c27558dacbcf70a0013f4a7",
      "parents": [
        "021190bf584662e75b269ef47cd48e2044e34fe4",
        "4f46ac5179967dda5966f2dcecf2cf08977951ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 24 07:52:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 07:52:34 2015 +0000"
      },
      "message": "Merge \"Cleanup and improve stack map stream\""
    },
    {
      "commit": "4f46ac5179967dda5966f2dcecf2cf08977951ef",
      "tree": "4c9ea50d9a135767c6e9a4abcf9b9c401a033414",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 18:47:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 19:58:22 2015 +0100"
      },
      "message": "Cleanup and improve stack map stream\n\n- transform AddStackMapEntry into BeginStackMapEntry/EndStackMapEntry.\nThis allows for nicer code and less assumptions when searching for equal\ndex register maps.\n- store the components sizes and their start positions as fields to\navoid re-computation.\n- store the current stack map entry as a field to avoid the copy\nsemantic when updating its value in the stack maps array.\n- remove redundant methods and fix visibility for the remaining ones.\n\nChange-Id: Ica2d2969d7e15993bdbf8bc41d9df083cddafd24\n"
    },
    {
      "commit": "360475aba293267398a17184b5330fd857f9b296",
      "tree": "4e7d206323f519e877fdf3a08443c1e9a604c8e1",
      "parents": [
        "322b389a74177c9d938f1f73d53110623dfc61b6",
        "8cbab3c4de3328b576454ce702d7748f56c44346"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 23 17:28:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 17:28:36 2015 +0000"
      },
      "message": "Merge \"Linear scan: split at better  positions.\""
    },
    {
      "commit": "8cbab3c4de3328b576454ce702d7748f56c44346",
      "tree": "8d95b5f6d451983350839a2b294b4bc869bd852a",
      "parents": [
        "b4186df6c48a88ad8028fcf9e1dac5ce6c391de2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 23 15:14:36 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 23 18:27:05 2015 +0100"
      },
      "message": "Linear scan: split at better  positions.\n\n- Split at block entry to piggy back on control flow resolution.\n- Split at the loop header, if the split position is within a loop.\n\nChange-Id: I718299a58c02ee02a1b22bda589607c69a35f0e8\n"
    },
    {
      "commit": "322b389a74177c9d938f1f73d53110623dfc61b6",
      "tree": "b2437d4cdce399ce462d587d9c9c47a8fceb8953",
      "parents": [
        "272bf7e60add5f741fb9a2589eaa71945257afcc",
        "af88835231c2508509eb19aa2d21b92879351962"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 17:19:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 17:19:34 2015 +0000"
      },
      "message": "Merge \"Remove unnecessary null checks in CheckCast and InstanceOf\""
    },
    {
      "commit": "af88835231c2508509eb19aa2d21b92879351962",
      "tree": "4ef1c8fb3c5b78175767999a888b0c2cb1ea6485",
      "parents": [
        "da93333d568f3c5bd8eeb58341d10a332e1d42bf"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Mon Apr 20 14:41:30 2015 +0100"
      },
      "committer": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Thu Apr 23 17:53:17 2015 +0100"
      },
      "message": "Remove unnecessary null checks in CheckCast and InstanceOf\n\nChange-Id: I6fd81cabd8673be360f369e6318df0de8b18b634\n"
    },
    {
      "commit": "917f9ab1eaaafdab25b4fd24ca1f49a76182a794",
      "tree": "63f9ba9a84c1a94251346e4602626da9433daebb",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 15:13:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 23 17:46:36 2015 +0100"
      },
      "message": "ART: Run BooleanSimplifier after inlining\n\nInlined methods are currently not simplified.\n\nChange-Id: I075130c9df55e2f55032a2c81b08d42cb2cc01f6\n"
    },
    {
      "commit": "4ceed922d44b68c3fa7cbe670014c9e2e003b92b",
      "tree": "9297ed3e808eaa74a956099d1036c6f527179285",
      "parents": [
        "b19c1e666e44a455c955275a967cbf04f397e9d9",
        "c416d3359179b0ec6152104db8240f4d11c54bc7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 15:32:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 15:32:13 2015 +0000"
      },
      "message": "Merge \"Move stack map stream implementation to its own cc file.\""
    },
    {
      "commit": "c416d3359179b0ec6152104db8240f4d11c54bc7",
      "tree": "82bdb3eb5bb3ebeba82647f8c8a3e3786bebe1b0",
      "parents": [
        "edad8add1f1216850cb3f179ba6f57b0d885b016"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 16:01:43 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 16:03:05 2015 +0100"
      },
      "message": "Move stack map stream implementation to its own cc file.\n\nIt\u0027s big enough now to separate the implementation from the header.\n\nIt also enables faster compilation time for experiments.\n\nChange-Id: Ica0c72994d5e461c62c32628010f46f9e5c46b57\n"
    },
    {
      "commit": "c1b829b8d52affb1b6789550d2ffcc6689389209",
      "tree": "95de716149b02afa0011c4e3c200917b3874ba97",
      "parents": [
        "84c5f9986dfaab881d4c66b2f3cb214e6152e9f7",
        "edad8add1f1216850cb3f179ba6f57b0d885b016"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 13:39:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 23 13:39:19 2015 +0000"
      },
      "message": "Merge \"Remove ActAsNullConstant\""
    },
    {
      "commit": "edad8add1f1216850cb3f179ba6f57b0d885b016",
      "tree": "0467b99624818ead8a86a192d05c7a28dad18311",
      "parents": [
        "be52c68dca2f146a571ffa65624acf2e6c7adeb2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 14:34:33 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 14:38:07 2015 +0100"
      },
      "message": "Remove ActAsNullConstant\n\nWe now properly type null constants during ssa builder so this is not\nneeded anymore.\n\nBug: 20322006\nChange-Id: Ic060a52d4fa2d4f00755dd6427f822d368392d7b\n"
    },
    {
      "commit": "538491967d1514a263e99d78379d743fcc896eef",
      "tree": "f07290c03789f7b1d7851bc94ebe77b8060eb9a0",
      "parents": [
        "9d4d13f38398e880e610323242fe73d609bac40d"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 14:22:27 2015 +0600"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 23 12:53:47 2015 +0100"
      },
      "message": "Mul simplification should expect zero operand\n\nIt is possible that zero constant can appear due to\nsimplification of other instructions, so we cannot expect\nzero handling from constant optimizations.\n\nChange-Id: I084126fd0c106ac2683c4f10a451960d9807f4f6\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "f456ce1d602044e96deef30297b16bfb44f6663a",
      "tree": "415fbd05d95758765fd46ba313effc3f81e835f4",
      "parents": [
        "0edd36bc24e7086277f3f1fbadcdcce288a7ebe5",
        "943136fd031f4fe18f6e8a956c72171d7cf78da0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 14:24:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 22 14:24:57 2015 +0000"
      },
      "message": "Merge \"Remove warning when we do too many simplifications\""
    },
    {
      "commit": "943136fd031f4fe18f6e8a956c72171d7cf78da0",
      "tree": "4f437e4fb89642e14bcad0e2fbdd4da39db4b3c2",
      "parents": [
        "862aaefdd63d8058b54a7d956a0229eec9dcbde6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 15:19:51 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 15:24:38 2015 +0100"
      },
      "message": "Remove warning when we do too many simplifications\n\nThis happens pretty often and pollutes the logs.\n\nChange-Id: I074783d3cf3519a5186d2dd81c821d97071302e7\n"
    },
    {
      "commit": "0edd36bc24e7086277f3f1fbadcdcce288a7ebe5",
      "tree": "e9395f53ceef482bd70bebb892c10056dd77c1d1",
      "parents": [
        "83fca401adc11ae50a05db7172f6d48d136b240a",
        "c3d743fa2a26effcb35627d8a1338029c86e582a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 22 13:54:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 22 13:54:22 2015 +0000"
      },
      "message": "Merge \"ART: Update last_instruction when adding Phis\""
    },
    {
      "commit": "c3d743fa2a26effcb35627d8a1338029c86e582a",
      "tree": "cf883e9b7f707ac2e6c2a6627e462b20e634c17c",
      "parents": [
        "8d1ba74fe48703fc2b5a5920dd5eea0c65db5b15"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 22 13:40:50 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 22 14:43:19 2015 +0100"
      },
      "message": "ART: Update last_instruction when adding Phis\n\nHBasicBlock::InsertPhiAfter would not update the last_instruction\npointer when adding at the end of the list. This could cause problems\nwhen iterating over phis backwards. Fortunately, we don\u0027t do that\nanywhere in the existing code.\n\nChange-Id: I4487265bf2cf3d3819623fafd7ce7c359bac190e\n"
    },
    {
      "commit": "83fca401adc11ae50a05db7172f6d48d136b240a",
      "tree": "bdb5616c4fa165864534192f0a30d438dd84c005",
      "parents": [
        "eb0c401408e414dae8ff1b2da47fd3f712925a6d",
        "40741f394b2737e503f2c08be0ae9dd490fb106b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 22 13:28:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 22 13:28:09 2015 +0000"
      },
      "message": "Merge \"[optimizing] Use more X86_64 addressing modes\""
    },
    {
      "commit": "862aaefdd63d8058b54a7d956a0229eec9dcbde6",
      "tree": "6d579c0563c9a62f42ae8b34e79fd4ba3e7c7dbe",
      "parents": [
        "8f20bdb9d3b7516e75a7845e610105d87ce25ae6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 13:31:47 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 13:35:53 2015 +0100"
      },
      "message": "[optimizing] Name the last DCE pass.\n\nThis will allow Checker to differentiate between them.\n\nChange-Id: I972d452a64f1c19d370567b9ef3d620f9b835a9a\n"
    },
    {
      "commit": "8f20bdb9d3b7516e75a7845e610105d87ce25ae6",
      "tree": "b55e5b7695e482dc66dda6a0175bb56251294baf",
      "parents": [
        "641547a5f18ca2ea54469cceadcfef64f132e5e0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:07:50 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 12:13:44 2015 +0100"
      },
      "message": "Run DCE again after all the other optimizations have run.\n\nOn docs this doubles the amount of instructions removed.\n"
    },
    {
      "commit": "641547a5f18ca2ea54469cceadcfef64f132e5e0",
      "tree": "441e325fc9bea377c549101756d9e8dc68f95779",
      "parents": [
        "296c6cc2e5e90a81bdfc5f5486eae6b64d80e595"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 22:08:51 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 11:40:25 2015 +0100"
      },
      "message": "[optimizing] Fix a bug in moving the null check to the user.\n\nWhen taking the decision to move a null check to the user we did not\nverify if the next instruction checks the same object.\n\nChange-Id: I2f4533a4bb18aa4b0b6d5e419f37dcccd60354d2\n"
    },
    {
      "commit": "40741f394b2737e503f2c08be0ae9dd490fb106b",
      "tree": "d5d9e6d51168e36154de408e2b5d77371bd8c86d",
      "parents": [
        "dac1a694e4fd79fd5d5ba95319197a1e42f9f054"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 20 22:10:34 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Apr 21 16:23:15 2015 -0400"
      },
      "message": "[optimizing] Use more X86_64 addressing modes\n\nAllow constant and memory addresses to more X86_64 instructions.\n\nAdd memory formats to X86_64 instructions to match.\n\nFix a bug in cmpq(CpuRegister, const Address\u0026).\n\nAllow mov \u003caddr\u003e,immediate (instruction 0xC7) to be a valid faulting\ninstruction.\n\nChange-Id: I5b8a409444426633920cd08e09f687a7afc88a39\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "296c6cc2e5e90a81bdfc5f5486eae6b64d80e595",
      "tree": "b05729b027ee516eb55b9f3cc6d0931a72700b43",
      "parents": [
        "0746453bdf87c4d76b646c5bdcea49b7cce0a47e",
        "b29ea8ca08fb6074f1af503f76751120626d6c1e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 17:06:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 17:06:34 2015 +0000"
      },
      "message": "Merge \"Revert \"fix optimizing gtests\"\""
    },
    {
      "commit": "b29ea8ca08fb6074f1af503f76751120626d6c1e",
      "tree": "9323e6b4c6a3391f279d1b4837647fcaedc3218f",
      "parents": [
        "69dcf64251d70f616ae6c435d4788545130d42f0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 17:06:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 17:06:17 2015 +0000"
      },
      "message": "Revert \"fix optimizing gtests\"\n\nThis reverts commit 69dcf64251d70f616ae6c435d4788545130d42f0.\n\nChange-Id: I1e01c17a3aa8b001ad5659260802e5f5073bf14e\n"
    },
    {
      "commit": "0746453bdf87c4d76b646c5bdcea49b7cce0a47e",
      "tree": "7841ad7f0afe7f5a3f422fd3f16d6c40e82f88d8",
      "parents": [
        "4bb014fd8e0aa45b012d56bc4813f18fa295d2b0",
        "7d275379bf490a87805852129e3fe2e8afe961e7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 16:21:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 16:21:33 2015 +0000"
      },
      "message": "Merge \"ART: Update loop info of all nested loops when inlining\""
    },
    {
      "commit": "7d275379bf490a87805852129e3fe2e8afe961e7",
      "tree": "d0bbe856872c92773931c62e6881b0305a916236",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 16:36:35 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 17:17:11 2015 +0100"
      },
      "message": "ART: Update loop info of all nested loops when inlining\n\nWhen inlining into a nested loop, the inliner would only add the new\nblocks into the innermost loop info object. This patch fixes that and\nmodifies SsaChecker to verify the property.\n\nChange-Id: I21d343a6f7d972f5b7420701f816c65ab3f20566\n"
    },
    {
      "commit": "4bb014fd8e0aa45b012d56bc4813f18fa295d2b0",
      "tree": "ba5fa5beef6e2c4a91ec5bbe7b0ed81b168b4958",
      "parents": [
        "d677de20906067061f262bdd434536a02e7f0dd0",
        "232ade0b9401404ad4b61b1003551b58b96195a8"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 21 16:09:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 16:09:30 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\"\""
    },
    {
      "commit": "d677de20906067061f262bdd434536a02e7f0dd0",
      "tree": "44319d6bafebb1f98854eef4b6383a709945d574",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956",
        "0cdf6d31b6e8b39b56deba92336383f43fba9c0f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 16:04:49 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 16:04:49 2015 +0000"
      },
      "message": "Merge \"Revert \"Run DCE again after all the other optimizations have run.\"\""
    },
    {
      "commit": "0cdf6d31b6e8b39b56deba92336383f43fba9c0f",
      "tree": "21bea01160e2470609405a72e8df8b186456a13d",
      "parents": [
        "7a9c885684c965fe84f91d8ad74f54f869e2a448"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 16:04:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 16:04:32 2015 +0000"
      },
      "message": "Revert \"Run DCE again after all the other optimizations have run.\"\n\nReverting because of libcore failures.\n\nThis reverts commit 7a9c885684c965fe84f91d8ad74f54f869e2a448.\n\nChange-Id: Iafe59b02fe7617243d81533d66e609a3528e7a58\n"
    },
    {
      "commit": "223f2f5b2a20ca8246da1523494900a2424d5956",
      "tree": "8217f5fdeb41dea987ae4a9b0607f34e6254939e",
      "parents": [
        "b4314b3aa80f0e6d3a55da7865e80658a150f1e8",
        "339dfc209ad93482269eea1386e79973abc313cf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 21 15:26:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 15:26:13 2015 +0000"
      },
      "message": "Merge \"Incorrect transformation of (sub,neg) to (sub) for fp\""
    },
    {
      "commit": "1c28591571c035dfdd76f28d17151b3a6eba4aac",
      "tree": "b6b7a2a85faf4f1c530db6d5de5b31dbdb7b7c6c",
      "parents": [
        "af1ff6a96cdff3ea7e49ebc904e7329b3c3c525b",
        "69dcf64251d70f616ae6c435d4788545130d42f0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 15:13:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 15:13:30 2015 +0000"
      },
      "message": "Merge \"fix optimizing gtests\""
    },
    {
      "commit": "69dcf64251d70f616ae6c435d4788545130d42f0",
      "tree": "498bf36f7d604bc2c0d2dca74ce94cb32fa9198f",
      "parents": [
        "7a9c885684c965fe84f91d8ad74f54f869e2a448"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 16:12:55 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 16:12:55 2015 +0100"
      },
      "message": "fix optimizing gtests\n\nChange-Id: I207398d8a65482650fba87db12a3b51e8b114694\n"
    },
    {
      "commit": "af1ff6a96cdff3ea7e49ebc904e7329b3c3c525b",
      "tree": "4fec08ae03664c7f9131747d8d85c8ded7661ad9",
      "parents": [
        "dac1a694e4fd79fd5d5ba95319197a1e42f9f054",
        "7a9c885684c965fe84f91d8ad74f54f869e2a448"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:46:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 14:46:58 2015 +0000"
      },
      "message": "Merge \"Run DCE again after all the other optimizations have run.\""
    },
    {
      "commit": "7a9c885684c965fe84f91d8ad74f54f869e2a448",
      "tree": "9323e6b4c6a3391f279d1b4837647fcaedc3218f",
      "parents": [
        "2be39e05ea8c4475278fe6a6573c3c8f04e075d4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:07:50 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 15:44:29 2015 +0100"
      },
      "message": "Run DCE again after all the other optimizations have run.\n\nOn docs this doubles the amount of instructions removed.\n\nChange-Id: I1712a92c0c0b3b32b111d194b64d8ea81d652822\n"
    },
    {
      "commit": "dac1a694e4fd79fd5d5ba95319197a1e42f9f054",
      "tree": "6cf588eb5812b0c3a28b9e8222f9034ca8766186",
      "parents": [
        "2b25ba3ca9452415cdce88478726272aeec3f77c",
        "2be39e05ea8c4475278fe6a6573c3c8f04e075d4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:11:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 13:11:22 2015 +0000"
      },
      "message": "Merge \"Use --dump-stats to dump optimizing compiler stats.\""
    },
    {
      "commit": "2be39e05ea8c4475278fe6a6573c3c8f04e075d4",
      "tree": "21bea01160e2470609405a72e8df8b186456a13d",
      "parents": [
        "b3306642f42d47ddb4d021a2f48ce9b1bd235857"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:56:34 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 14:10:35 2015 +0100"
      },
      "message": "Use --dump-stats to dump optimizing compiler stats.\n\nVLOG(compiler) produces too much output and it takes a long time if you\nonly need to see how an analysis performs.\n\nChange-Id: Ic17c2b2b5fec431d356cecd37289fb96985d4d7f\n"
    },
    {
      "commit": "2b25ba3ca9452415cdce88478726272aeec3f77c",
      "tree": "7ccf54417f44f4442a9e41fd6d18d8a716d9b8d4",
      "parents": [
        "c2ea806908e205a808182b2255b6ef5433695375",
        "b3306642f42d47ddb4d021a2f48ce9b1bd235857"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:00:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 13:00:25 2015 +0000"
      },
      "message": "Merge \"[optimzing] Fix codegen bug and improve type propagation\""
    },
    {
      "commit": "b3306642f42d47ddb4d021a2f48ce9b1bd235857",
      "tree": "5b997bad1c6021c1ab777c2250816f1c22e930db",
      "parents": [
        "b9791aa606834160b085dec7c5b32ccbeaf9a186"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 18:30:42 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:59:33 2015 +0100"
      },
      "message": "[optimzing] Fix codegen bug and improve type propagation\n\n- don\u0027t bound the type if there are no relevant uses\n- insert the bound type in the bounded block (this allows for condition\nmaterialization without changing the logic there).\n- add more comments\n- add tests for BoundType generation\n- fix GenerateTestAndBranch\n\nChange-Id: I5c1fdda104da4a46775d207270220d410234a472\n"
    },
    {
      "commit": "c2ea806908e205a808182b2255b6ef5433695375",
      "tree": "0bf39dc59d0c43c1649aba6703112e779e1d40a9",
      "parents": [
        "769f2d32e4b04758e4dd6ce967f779cbfa74dbcb",
        "97833a0d26e265c5885e27af4b8e8969ccb9612a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 21 11:24:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 11:24:52 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Minor object store optimizations for ARM64.\""
    },
    {
      "commit": "769f2d32e4b04758e4dd6ce967f779cbfa74dbcb",
      "tree": "b0c764ec60cf2f6d7e06babad59e8d8bb32dd98d",
      "parents": [
        "3d052ba48f84901e89b5ea94c133093dc80bad06",
        "1ba1981ee9d28f87f594b157566d09e973fa5bce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 10:19:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 10:19:21 2015 +0000"
      },
      "message": "Merge \"Linear scan: Use FirstUse instead of FirstRegisterUse.\""
    },
    {
      "commit": "1ba1981ee9d28f87f594b157566d09e973fa5bce",
      "tree": "f131757efaab85fb2a1efbac786c968a1f4a0283",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 09:12:40 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 10:48:57 2015 +0100"
      },
      "message": "Linear scan: Use FirstUse instead of FirstRegisterUse.\n\nThis is in preparation for introducing synthesized used at back edges.\n\nChange-Id: Ie28d6725d2dde982cf2137f2110daabcbab9f789\n"
    },
    {
      "commit": "d9b92403254225dd5ff84559886b93680ba0ed64",
      "tree": "14b1eb164dd7145bb895eea7a88a7ed02b2a4179",
      "parents": [
        "2fb1639a4bd836f6426cc0d4b8d21c59d2648527"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 10:02:22 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 10:02:22 2015 +0100"
      },
      "message": "Fix another mistyped location.\n\nChange-Id: I52d5a8d34ddc882595da2b53bca0f7eb78d4b3a1\n"
    },
    {
      "commit": "b0bd8915cb257cdaf46ba663c450a6543bca75af",
      "tree": "0af66cce65abb2958d03579bd7fb660ffdda929b",
      "parents": [
        "b9791aa606834160b085dec7c5b32ccbeaf9a186"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Apr 15 19:57:22 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 20 14:26:10 2015 -0400"
      },
      "message": "[optimizing] Replace FP divide by power of 2\n\nReplace a floating point division by a power of two by a multiplication\nof the reciprocal.  This is guarenteed to have the exact same result as\nit is exactly representable.\n\nAdd routines to allow generation of float and double constants after the\nSSA Builder.  I was unsure if float and double caches should be\nimplemented.  Under the assumption that there is probably not a lot of\nrepetition of FP values.  Please let me know.\n\nChange-Id: I3a6c3847b49b4e747a7e7e8843ca32bb174b1584\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "339dfc209ad93482269eea1386e79973abc313cf",
      "tree": "cd0173a02590ead4fe7064a9b8f6ebf12a341ec5",
      "parents": [
        "f5091eee4abe73c64959e53bda684bd689569643"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 12:29:32 2015 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 23:47:16 2015 +0600"
      },
      "message": "Incorrect transformation of (sub,neg) to (sub) for fp\n\nA pair (sub,neg) should not be transformed to (sub) for\nfloating point operations, otherwise we can lose the sign of\nzero for instructions like this:\n  - (A - B) !\u003d B - A if B \u003d\u003d A\n\nChange-Id: I4d612612d4dc0a067fac5721ad206f74168bcd36\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "349eded3bc542c9e6ffb10b6222c6ce372bda9b7",
      "tree": "c1aa758e8975b80b305a860364e9557efb2ccfe5",
      "parents": [
        "6149f962cd0815c61c134a7554036ca88d0abef1",
        "0d13fee6f4330cc9cb100c43135490a34c11d7a5"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 17:12:53 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 17:12:53 2015 +0000"
      },
      "message": "Merge \"ART: Simplify more bool operations\""
    },
    {
      "commit": "0d13fee6f4330cc9cb100c43135490a34c11d7a5",
      "tree": "e96f089c1e384772bebdd8d8701c95d73569f29c",
      "parents": [
        "27eac12a66a73eb38b5ccb45b62350cf341299d0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 14:52:19 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 18:11:39 2015 +0100"
      },
      "message": "ART: Simplify more bool operations\n\nNow that we have the HBooleanNot instruction, the instruction\nsimplifier can optimize out more conditions comparing a boolean\nagainst a constant, as well as sequences of Boolean negations.\n\nChange-Id: I7f634f6428a3984dd97b27b3d6362491346f1ff6\n"
    },
    {
      "commit": "6149f962cd0815c61c134a7554036ca88d0abef1",
      "tree": "d41a91d6d43caaf6efd117ad482c7d558790471f",
      "parents": [
        "9fab1eea3b9dc7a284dd74487ac603d9ffbb79fb",
        "8693fe1eda2e37ad162d792e9e793827bfa1c236"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Apr 20 17:11:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 17:11:33 2015 +0000"
      },
      "message": "Merge \"RecordPcInfo() in GenerateStaticOrDirectCall() is misplaced on x86.\""
    },
    {
      "commit": "97833a0d26e265c5885e27af4b8e8969ccb9612a",
      "tree": "e5529452a170d4819159b0b08a435b3078dcb082",
      "parents": [
        "d921d64c09b9222b8422f78da6b34b0a61e305c9"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Apr 16 15:07:12 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 15:54:04 2015 +0000"
      },
      "message": "Opt compiler: Minor object store optimizations for ARM64.\n\nThis is an adaptation of af07bc121121d7bd7e8329c55dfe24782207b561 for\nARM64.\n\nChange-Id: I5f4984ac86ede89cdf7c915f4bbf8d091059a0eb\n"
    },
    {
      "commit": "27eac12a66a73eb38b5ccb45b62350cf341299d0",
      "tree": "7cc7eea6dd543720da2921c11f68296f5df37b07",
      "parents": [
        "e40d82ffe388458c2674ec051f1dd897362692eb",
        "ad4450e5c3ffaa9566216cc6fafbf5c11186c467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 15:20:15 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 15:20:15 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Implement parallel move resolver without using swap.\""
    },
    {
      "commit": "e40d82ffe388458c2674ec051f1dd897362692eb",
      "tree": "bd4ebb602abc6bb7c8d5792f34c8c7eb1ba36fb1",
      "parents": [
        "90078eec8b676d363a8116f487df3596c9f23ea8",
        "d921d64c09b9222b8422f78da6b34b0a61e305c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 20 15:13:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 15:13:08 2015 +0000"
      },
      "message": "Merge changes Ib9648605,I34a3bd17\n\n* changes:\n  Opt compiler: ARM64: Block VIXLpools when recording the pc.\n  Opt compiler: ARM64: Follow other archs for a few codegen stubs.\n"
    },
    {
      "commit": "232ade0b9401404ad4b61b1003551b58b96195a8",
      "tree": "54fe7cc37674246dead84f883a4c8be2123e7d26",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 20 15:14:36 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 20 15:53:12 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\"\n\nThis reverts commit 386ce406f150645158d6067c4e0a36565aefc44f.\n\nBug: 20413424\nChange-Id: I6e93ff132907f2653f1ae12d6676ff2298f62ca1\n"
    },
    {
      "commit": "90078eec8b676d363a8116f487df3596c9f23ea8",
      "tree": "2cbe0de6aebea186e7c1a73ff29fd4dfc960b56f",
      "parents": [
        "36aafd94af64d6f1ba603392f66959998f2a93a2",
        "0c25d1048154495ae0523ba2f5063385eb15aa5f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 13:50:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 13:50:50 2015 +0000"
      },
      "message": "Merge \"optimizing: fix gtests\""
    },
    {
      "commit": "0c25d1048154495ae0523ba2f5063385eb15aa5f",
      "tree": "28f34fec11f70ea72dd929e3a98130c257cb37aa",
      "parents": [
        "27df758e2e7baebb6e3f393f9732fd0d064420c8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 14:49:09 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 14:49:21 2015 +0100"
      },
      "message": "optimizing: fix gtests\n\nby taking into account that the compilation unit is null during tests.\n\nChange-Id: I01a28ce8f03c927ff679b84bcdf2464fa97e0924\n"
    },
    {
      "commit": "b2a58477e14e1b15cb9848d16015a49a854ee32c",
      "tree": "4d99998bb80bbe373a3b5627edad24e0be35ddbe",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Apr 17 14:35:18 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 14:46:22 2015 +0100"
      },
      "message": "Minor improvements to 458-checker-instruction-simplification.\n\nThis follows earlier comments from Roland:\nhttps://android-review.googlesource.com/#/c/140446\n  /2/test/458-checker-instruction-simplification/src/Main.java@337\n  /2/test/458-checker-instruction-simplification/src/Main.java@465\n\nChange-Id: I255ab74b8885dd8e86bb2c11bba4075fa0eaa183\n"
    },
    {
      "commit": "d921d64c09b9222b8422f78da6b34b0a61e305c9",
      "tree": "7009b178312c6f96ca56d01082ff8000cb47873c",
      "parents": [
        "09a99965bb27649f5b1d373f76bfbec6a2500c9e"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Apr 16 15:07:16 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 14:45:15 2015 +0100"
      },
      "message": "Opt compiler: ARM64: Block VIXLpools when recording the pc.\n\nVIXL automatically handles and generate literal and veneer pools when\nusing the MacroAssembler. In general, the pools can be emitted\nanywhere. Helpers are provided to forbid VIXL from emitting pools\nlocally.\n\nSo when writing the pseudo-code\n\n    __ Fmov(d0, 1.2345);\n    __ Ldr(dst, MemOperand(src, offset));\n    FunctionRecordingCurrentPC();\n    __ Add(x0, x1, x2);\n\nVIXL might generate code looking like\n\n    0x00: ldr s0, [pc, 0xc]\n    0x04: ldr dst, [src, offset]\n    0x08: b #0x10\n    0x0c: \u003cliteral 1.2345\u003e\n    0x10: add x0, x1, x2\n\nand the program counter recorded by the helper will point after the\nliteral pool.\nSo we explicitly stop VIXL from emitting pools when dealing with code\nwhere we care about the program counter.\n\nChange-Id: Ib964860539bdb10f5704c290bdf74e5db149e462\n"
    },
    {
      "commit": "09a99965bb27649f5b1d373f76bfbec6a2500c9e",
      "tree": "a1584b26a5b6f3dee692d0b21373de27734c965f",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Wed Apr 15 11:47:56 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 14:45:01 2015 +0100"
      },
      "message": "Opt compiler: ARM64: Follow other archs for a few codegen stubs.\n\nCode generation for HInstanceFieldGet, HInstanceFieldSet,\nHStaticFieldGet, and HStaticFieldSet are refactored to follow the\nstructure used for other backends.\n\nChange-Id: I34a3bd17effa042238c6bf199848cbc2ec26ac5d\n"
    },
    {
      "commit": "36aafd94af64d6f1ba603392f66959998f2a93a2",
      "tree": "13de8641b36380015b80dac1a231b58d08b3de29",
      "parents": [
        "aff3f0a0a2a080e313ae80c9b0216aa26a668623",
        "27df758e2e7baebb6e3f393f9732fd0d064420c8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 13:03:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 13:03:14 2015 +0000"
      },
      "message": "Merge \"[optimizing] Add memory barriers in constructors when needed\""
    },
    {
      "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": "aff3f0a0a2a080e313ae80c9b0216aa26a668623",
      "tree": "2ad3c87a0d3d6b389a4550f38ef8c75a75012eed",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64",
        "2fa194bf16678e9e8f9e2653e47cb703dbbc9738"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 12:58:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 12:58:56 2015 +0000"
      },
      "message": "Merge \"ART: Extend list of instructions accepted as boolean inputs\""
    },
    {
      "commit": "2fa194bf16678e9e8f9e2653e47cb703dbbc9738",
      "tree": "6421285a359953e0290785d94987965e0660cb23",
      "parents": [
        "f5091eee4abe73c64959e53bda684bd689569643"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 10:14:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 13:51:46 2015 +0100"
      },
      "message": "ART: Extend list of instructions accepted as boolean inputs\n\nPrevious change allowed integer Phis as inputs of instructions\nexpecting a boolean type. This list, however, was not exhaustive as\nbinary operations And, Or and Xor are also valid inputs. This patch\nextends the list in SSAChecker.\n\nChange-Id: I5b5c9e7a17992cc4987e3a078ee23ea80028ecfc\n"
    },
    {
      "commit": "acc0b8e3c7bad818edc9b777b89e97003b1eb4eb",
      "tree": "04bfc7b09eda25cb6584c503063bcf9463fda104",
      "parents": [
        "ae267a22e14f3485ecb2191bd5cf50fcc1e4540d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 12:39:57 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 12:39:57 2015 +0100"
      },
      "message": "Fix lint error.\n\nChange-Id: Id956c0e8c864a14c05d291f6b890df4877652306\n"
    },
    {
      "commit": "ae267a22e14f3485ecb2191bd5cf50fcc1e4540d",
      "tree": "8c36cb913fdcb1c3d6891127d4ddacb6bd7a5d62",
      "parents": [
        "0ca64e926f9e55cd369e1afb520d7e05452a6aa6",
        "88c13cddc3a4184908662b0f3de796565d348c76"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 11:24:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 11:24:01 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Correctly require register or FPU register.\""
    },
    {
      "commit": "88c13cddc3a4184908662b0f3de796565d348c76",
      "tree": "6986849099ff7afc042eac31a3e53df0c468962b",
      "parents": [
        "f458ba7d9c04bc8d499532b5470af28db18e4149"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Tue Apr 14 17:35:39 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 11:35:44 2015 +0100"
      },
      "message": "Opt compiler: Correctly require register or FPU register.\n\nAlso add a check that location summary are correctly typed\nwith the HInstruction.\n\nChange-Id: I699762ff4e8f4e321c7db01ea005236ea1934af9\n"
    },
    {
      "commit": "5da2180e684ae6afcb55d787f6a69bc97489bb83",
      "tree": "8a487fd3c41b1a501b4f77fca7d7a76a783680c4",
      "parents": [
        "f5091eee4abe73c64959e53bda684bd689569643"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 09:29:18 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 09:40:48 2015 +0100"
      },
      "message": "Fix codegen_test for long multiplication.\n\nIt seems like clang (that we use on the host) was *very* forgiving\nwith this broken test: the code generated for for MulLong used ebx\nbut this is a callee-save register in C but not ART. Also, the test\nwas not properly written for handling longs, so it was taking\nunitialized stack entries.\n\nGCC on target is not as forgiving.\n\nChange-Id: I5d7a962f8a72b3ce407dce50ca50b4ffc690c99e\n"
    },
    {
      "commit": "8693fe1eda2e37ad162d792e9e793827bfa1c236",
      "tree": "25477a6397692e3c46eb75b8b6bee8b6c1c0cce9",
      "parents": [
        "33259fdfcd350793d10f67f2ea7dfc6051a8afa2"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Apr 17 16:51:08 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Apr 17 17:09:12 2015 -0700"
      },
      "message": "RecordPcInfo() in GenerateStaticOrDirectCall() is misplaced on x86.\n\nGenerateStaticOrDirectCall() is invoked in intrinsics_x86.cc and\nRecordPcInfo() is already taken care of there. It should be moved\nto VisitInvokeStaticOrDirect() as done in other archs.\n\nChange-Id: Id08d84c9046e55dea9d8a8452c979294c4183150\n"
    },
    {
      "commit": "b73f887f7e9a6794159d8ae646e9b1d18797125c",
      "tree": "eeca980738c913caa5add5505664d45e9c11577f",
      "parents": [
        "adf87b0c8cd68ed365e01aec620d016493357cec",
        "c9d185d2b4ac045840586d3a890eab61c922379f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 17:32:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 17 17:32:28 2015 +0000"
      },
      "message": "Merge \"Fix undefined behavior in hash calculation.\""
    },
    {
      "commit": "c9d185d2b4ac045840586d3a890eab61c922379f",
      "tree": "fcd621ffa8bd526ab6eddc372d951102aa4a1ec0",
      "parents": [
        "e50dffa29fb6c67eba44e267aa890d35712de9dd"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Apr 16 11:54:24 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Apr 17 10:23:55 2015 -0700"
      },
      "message": "Fix undefined behavior in hash calculation.\n\ndex_register might be \u003e\u003d the width of the map hash. Shifting by that\nvalue would be undefined behavior. Constrain the value to within the\nvalid range.\n\nChange-Id: I9037c5c7ec554850ba3385585aca96fde1d50387\n"
    },
    {
      "commit": "f4eb9ae9436d72d1406286528331a52c1b3afa1d",
      "tree": "febb69106adc5625e11e71c88aa8ee6fbe5412d7",
      "parents": [
        "41de22394e0108f6216a56193b579a199fc37649"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 18:19:30 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 18:20:46 2015 +0100"
      },
      "message": "ART: Fix a failing gtest\n\nStricter assumptions about the state of linear scan caused a reg alloc\ngtest to fail.\n\nChange-Id: I0c568bf996ce6adefe4f000524b38acd3967421e\n"
    },
    {
      "commit": "3fc992f9dfe8f49ff350132323cc635f102b7b62",
      "tree": "d5fdfaed3d79b435dc0b674d60565f1719b2a416",
      "parents": [
        "81b13f6b5244b664000d4bcad16920aadf3b7e29"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 18:31:55 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 17:13:57 2015 +0100"
      },
      "message": "ART: Improve range search caching in LiveInterval\n\nRegister allocator spends too long in LiveInterval queries. This patch\nbuilds on previously introduced caching of range search results to\nfurther speed up LiveInterval\u0027s Covers and FindIntersectionWith.\nOnly calls which are guaranteed to query the current-\u003eGetStart()\nposition are cached. Other calls are replaced with CoversSlow which\nsearches through the entire list of ranges.\n\nChange-Id: I84d92b526e174caa70d6477497a06afd85016c4a\n"
    },
    {
      "commit": "c08675c3e6502f69ee4d1f62998f658ccd152414",
      "tree": "06a2edd119148674efefbf65fde24d9d5840b03f",
      "parents": [
        "dd2cf0c7a5dc7f2c89b8ac217f16b7529461e509"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 15:49:51 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 15:49:51 2015 +0100"
      },
      "message": "ART: Fix incorrect last range when adding high interval\n\nAdding a high interval clones live ranges but assigns last_range from\nthe low interval. This should not cause any problems as last_range\nis only used for constant-time GetEnd which will return the same\nvalue for both low/high intervals.\n\nChange-Id: Iaf242183436c8ac2f78c0aeea22cd07cd4beacc0\n"
    },
    {
      "commit": "ad4450e5c3ffaa9566216cc6fafbf5c11186c467",
      "tree": "eecf36e8e9d8112e765ad8840eb2d27f8d0415ab",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Apr 17 18:48:56 2015 +0800"
      },
      "committer": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Apr 17 18:54:08 2015 +0800"
      },
      "message": "Opt compiler: Implement parallel move resolver without using swap.\n\nThe algorithm of ParallelMoveResolverNoSwap() is almost the same with\nParallelMoveResolverWithSwap(), except the way we resolve the circular\ndependency. NoSwap() uses additional scratch register to resolve the\ncircular dependency. For example, (0-\u003e1) (1-\u003e2) (2-\u003e0) will be performed\nas (2-\u003escratch) (1-\u003e2) (0-\u003e1) (scratch-\u003e0).\n\nOn architectures without swap register support, NoSwap() can reduce the\nnumber of moves from 3x(N-1) to (N+1) when there is circular dependency\nwith N moves.\n\nAnd also, NoSwap() algorithm does not depend on architecture register\nlayout information, which means it can support register pairs on arm32\nand X/W, D/S registers on arm64 without additional modification.\n\nChange-Id: Idf56bd5469bb78c0e339e43ab16387428a082318\n"
    },
    {
      "commit": "3192540155d51a42b340de7afebe83a5eaf23b03",
      "tree": "eccb77f011b88a3df1f3a4789d4192d509a7c6a9",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 17 10:36:57 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 17 10:36:57 2015 +0100"
      },
      "message": "Cleanup unnecessary test conditions in ssa builder.\n\nChange-Id: Ic36e535aec3f977ebe36bfe20bc54a1033de62c6\n"
    },
    {
      "commit": "50a4d671268cff5041fb09dcb9f64515dd809e4a",
      "tree": "633291b7a22eb9c879d5841c79cfa0d5ab07f10e",
      "parents": [
        "f458ba7d9c04bc8d499532b5470af28db18e4149",
        "241a486267bdb59b32fe4c8db370eb936068fb39"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 17:22:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 17:22:20 2015 +0000"
      },
      "message": "Merge \"ART: Replace expensive calls to Covers in reg alloc\""
    }
  ],
  "next": "241a486267bdb59b32fe4c8db370eb936068fb39"
}
