)]}'
{
  "log": [
    {
      "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": "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\""
    },
    {
      "commit": "241a486267bdb59b32fe4c8db370eb936068fb39",
      "tree": "ea8edc6b55285340ae58bc00f283e8fcaaff3c22",
      "parents": [
        "f90b8548e91392dfc24e8b0f7d3000f4f121c19d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 17:59:03 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 18:13:01 2015 +0100"
      },
      "message": "ART: Replace expensive calls to Covers in reg alloc\n\nLiveInterval::Covers is implemented as a linear-time search over\nliveness ranges and can therefore be rather expensive and should be\navoided unless necessary. This patch replaces calls to Covers when\nsearching for a sibling with the cheaper IsDefinedAt call.\n\nChange-Id: I93fc73529c15a518335f4cbdc3a0def52d9501e5\n"
    },
    {
      "commit": "e7bee3b7d307508243f4a00b5cf8a8867fcaaff5",
      "tree": "b9d350a3d1432d7546e5feab77e25807d328300a",
      "parents": [
        "59bb47675b1f1bafbcababadb4a6ba1c345fec1a",
        "a4f8831d6533e4fe5aed18433099e1130d95a877"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 15:53:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:53:23 2015 +0000"
      },
      "message": "Merge \"Remove duplicates phis created during SSA transformation\""
    },
    {
      "commit": "a4f8831d6533e4fe5aed18433099e1130d95a877",
      "tree": "914c97dd322f59b282f01ca5659a960609e0aa0b",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 12:57:19 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 16:48:25 2015 +0100"
      },
      "message": "Remove duplicates phis created during SSA transformation\n\nWhen creating equivalent phis we copy the inputs of the original phi\nwhich may be improperly typed. This will be fixed during the type\npropagation but as a result we may have two equivalent phis with the\nsame type for the same dex register. This is correct but generates more\ncode and prevent some optimizations.\n\nThis CL adds another step in the SSA builder to remove the extra Phi\nnodes created due to equality operators.\n\nThe graph checker verifies that for a given dex register not two phis\nhave the same type.\n\nAlso, replace zero int constant with null constant when we compare a\nreference against null.\n\nChange-Id: Id37cc11a016ea767c7e351575e003d822a9d2e60\n"
    },
    {
      "commit": "8aec061f5e58876bcc892d8c0309bc13b5349f5c",
      "tree": "468528f9081cc33299317a3fa62cfc6d84c224e8",
      "parents": [
        "f90b8548e91392dfc24e8b0f7d3000f4f121c19d",
        "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 15:41:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:41:03 2015 +0000"
      },
      "message": "Merge \"Fallback to quick in case of soft verification errors\""
    },
    {
      "commit": "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872",
      "tree": "45ad9f5bb52eb0db3857e344ab67b5aab2309472",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 18:42:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 16:28:11 2015 +0100"
      },
      "message": "Fallback to quick in case of soft verification errors\n\nAdd a regression test: using uninitialized values triggers a soft\nverification error and optimizing should not crash.\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.\n\nBug: 19988704\nChange-Id: I67174538eed853baff735694b3ae8eb34afe2a39\n"
    },
    {
      "commit": "e316f57b7449b2e4183ff5ef26130efedcaa0a79",
      "tree": "cbb0eb5933a443ac16ec4612f3d46c4406737742",
      "parents": [
        "a2b78fc83354e1dcdcd6f4715688926d37ac3219",
        "05144f4322eed049f4878015bf1f0381d419b785"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 14:25:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 14:25:55 2015 +0000"
      },
      "message": "Merge \"ART: Hot fix for an inliner issue\""
    },
    {
      "commit": "05144f4322eed049f4878015bf1f0381d419b785",
      "tree": "1608d15ead8f9f897b954560779b30232956b25d",
      "parents": [
        "3e6f1c41220c84f31479a88aa37882307244110b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 15:18:00 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 15:20:34 2015 +0100"
      },
      "message": "ART: Hot fix for an inliner issue\n\nChange 147130 caused a problem with duplicit instruction ids when\ninlining methods with constants. This is a hot fix to unblock build.\n\nChange-Id: Ieddadcd94135930a1f29ad64ad57349a384da07f\n"
    },
    {
      "commit": "43af728a3ccecb5f0eacef85f44d70df3d4c40f9",
      "tree": "3273730f5995659ecb8cdba626fa4fa10e0986ef",
      "parents": [
        "3e6f1c41220c84f31479a88aa37882307244110b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 16 13:01:01 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 16 13:01:01 2015 +0100"
      },
      "message": "Split safepoint positions to avoid calling Covers.\n\nThis is also in preparation for caller/callee save based\nregister allocation.\n\nChange-Id: I63954bdae5ea7870568fd93b4d11e1c9dcd6de6f\n"
    },
    {
      "commit": "13b4718ecd52a674b25eac106e654d8e89872750",
      "tree": "34d6efd2cda3ceb233118e4d135c4a897f02ea12",
      "parents": [
        "da93333d568f3c5bd8eeb58341d10a332e1d42bf"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 15 16:29:32 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 11:09:55 2015 +0100"
      },
      "message": "ART: Remove DCHECKs for boolean type\n\nSince bool and int are interchangeable types, checking whether an\ninput is kPrimBoolean can fail when replaced with 0/1 constant or\na phi. This patch removes the problematic DCHECKs, adds a best-effort\nverification into SSAChecker but leaves the phi case empty until a\nsuitable analysis is implemented.\n\nChange-Id: I31e8daf27dd33d2fd74049b82bed1cb7c240c8c6\n"
    },
    {
      "commit": "da93333d568f3c5bd8eeb58341d10a332e1d42bf",
      "tree": "ce6aba4bb0214f733707c58634fa98e73a03563b",
      "parents": [
        "669d8a1edbb2a78e08731a9cd6d8e815b0ec49db",
        "4a3faecbe4157225a3fe83a9ef7f4992dfc9c19d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 09:49:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 09:49:56 2015 +0000"
      },
      "message": "Merge \"ART: Don\u0027t duplicate null/int/long constants when inlining\""
    },
    {
      "commit": "4a3faecbe4157225a3fe83a9ef7f4992dfc9c19d",
      "tree": "90cd60a8f7e39f6d160c3e24598fc898cdac3d7e",
      "parents": [
        "8e8bb8aab6f19ccb5b5869a632d9bc882891e17e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 10:38:44 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 10:40:53 2015 +0100"
      },
      "message": "ART: Don\u0027t duplicate null/int/long constants when inlining\n\nChange-Id: I7e6a3393fcbbcf76b4ba2000915ba6bbbfb7c70e\n"
    },
    {
      "commit": "669d8a1edbb2a78e08731a9cd6d8e815b0ec49db",
      "tree": "240d26edb4af28ccd7fa65a9fecc39f718d3d603",
      "parents": [
        "ee2da343bb2a54d9d77e29226e0317ccc913c8c1",
        "e14590bdfed24df30e6b7545fc819ba03ff8bba1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 09:40:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 09:40:39 2015 +0000"
      },
      "message": "Merge \"Revert \"[optimizing] Improve x86 parallel moves/swaps\"\""
    },
    {
      "commit": "ee2da343bb2a54d9d77e29226e0317ccc913c8c1",
      "tree": "1bac4253382eb605c3904f3bc00807dd85e15424",
      "parents": [
        "8e8bb8aab6f19ccb5b5869a632d9bc882891e17e",
        "f776b92a0d52bb522043812dacb9c21ac11858e2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 16 08:00:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 08:00:08 2015 +0000"
      },
      "message": "Merge \"Remove dead blocks for the blocks_ array.\""
    },
    {
      "commit": "f776b92a0d52bb522043812dacb9c21ac11858e2",
      "tree": "619ae49853b201fc4ea9d0ac4b113c6226e3c339",
      "parents": [
        "acf9b7b7616a9b104e6f2146051d8e14d9cb9030"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 18:22:45 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 21:51:12 2015 +0100"
      },
      "message": "Remove dead blocks for the blocks_ array.\n\nThis prevents crashing because of structurally incorrect\nblocks. Also we now don\u0027t need to remove its instructions.\n\nTest case courtesy of Serguei I Katkov.\n\nChange-Id: Ia3ef9580549fc3546e8cd5f346079b1f0ceb2a61\n"
    },
    {
      "commit": "e14590bdfed24df30e6b7545fc819ba03ff8bba1",
      "tree": "1fe89a424c91dae7adc07ebd620dce8297a0854e",
      "parents": [
        "a5c19ce8d200d68a528f2ce0ebff989106c4a933"
      ],
      "author": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Apr 15 18:57:27 2015 +0000"
      },
      "committer": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Apr 15 18:57:27 2015 +0000"
      },
      "message": "Revert \"[optimizing] Improve x86 parallel moves/swaps\"\n\nThis reverts commit a5c19ce8d200d68a528f2ce0ebff989106c4a933.\n\nThis commit introduces a performance regression on CaffeineLogic of 30%.\n\nChange-Id: I917e206e249d44e1748537bc1b2d31054ea4959d\n"
    },
    {
      "commit": "a76a08fed88bd081bcc4d240f1ba3472a2acbbab",
      "tree": "cd016bb007c3757ab2a6df28bc1a65d6a8e78e44",
      "parents": [
        "acf9b7b7616a9b104e6f2146051d8e14d9cb9030",
        "9021825d1e73998b99c81e89c73796f6f2845471"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 14:10:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 14:10:29 2015 +0000"
      },
      "message": "Merge \"Type MoveOperands.\""
    },
    {
      "commit": "acf9b7b7616a9b104e6f2146051d8e14d9cb9030",
      "tree": "14ce120d10571c187a2c6bdc87b350cb9a7e3ad6",
      "parents": [
        "e1d0b80eef04606e426377f30e7e862b3337e2c6",
        "0d9f17de8f21a10702de1510b73e89d07b3b9bbf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 13:29:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 13:29:03 2015 +0000"
      },
      "message": "Merge \"Move the linear order to the HGraph.\""
    },
    {
      "commit": "0d9f17de8f21a10702de1510b73e89d07b3b9bbf",
      "tree": "3d58a2a165ee2bc5af0e813b1ffa893fba72ed6d",
      "parents": [
        "9bb3e8e10d7d9230a323511094a9e260062a1473"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 14:17:44 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 14:17:44 2015 +0100"
      },
      "message": "Move the linear order to the HGraph.\n\nBug found by Zheng Xu: SsaLivenessAnalysis being a stack allocated\nobject, we should not refer to it in later phases of the compiler.\nSpecifically, the code generator was using the linear order, which\nwas stored in the liveness analysis object.\n\nChange-Id: I574641f522b7b86fc43f3914166108efc72edb3b\n"
    },
    {
      "commit": "9021825d1e73998b99c81e89c73796f6f2845471",
      "tree": "13e1038931cbb8bf8b8d0f4e3f51553ba1bfa983",
      "parents": [
        "858d28ca2e73a785977f53141e775a7d4841b89d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 11:56:51 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 12:53:42 2015 +0100"
      },
      "message": "Type MoveOperands.\n\nThe ParallelMoveResolver implementation needs to know if a move\nis for 64bits or not, to handle swaps correctly.\n\nBug found, and test case courtesy of Serguei I. Katkov.\n\nChange-Id: I9a0917a1cfed398c07e57ad6251aea8c9b0b8506\n"
    }
  ],
  "next": "e1d0b80eef04606e426377f30e7e862b3337e2c6"
}
