)]}'
{
  "log": [
    {
      "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": "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": "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"
    },
    {
      "commit": "e1d0b80eef04606e426377f30e7e862b3337e2c6",
      "tree": "0799cd859304fd6f4a393698c1adc34e3b961b75",
      "parents": [
        "858d28ca2e73a785977f53141e775a7d4841b89d",
        "66d126ea06ce3f507d86ca5f0d1f752170ac9be1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 15 11:53:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 11:53:08 2015 +0000"
      },
      "message": "Merge \"ART: Implement HBooleanNot instruction\""
    },
    {
      "commit": "66d126ea06ce3f507d86ca5f0d1f752170ac9be1",
      "tree": "8e247db17ef085b55725b21c64d292414fd00b32",
      "parents": [
        "9bb3e8e10d7d9230a323511094a9e260062a1473"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 03 16:02:44 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 15 12:51:49 2015 +0100"
      },
      "message": "ART: Implement HBooleanNot instruction\n\nOptimizations simplifying operations on boolean values (boolean\nsimplifier, instruction simplifier) can benefit from having a special\nHInstruction for negating booleans in order to perform more transforms\nand produce faster machine code.\n\nThis patch implements HBooleanNot as \u0027x xor 1\u0027, assuming that booleans\nare 1-bit integers and allowing for a single-instruction negation on\nall supported platforms.\n\nChange-Id: I33a2649c1821255b18a86ca68ed16416063c739f\n"
    },
    {
      "commit": "3b75943bfdd22adf4833d148aed89856879c01c6",
      "tree": "7cf97d885e5d2a615aa084bdc951ab95d0068ce7",
      "parents": [
        "9bb3e8e10d7d9230a323511094a9e260062a1473",
        "a978d43fc40984e0cef0c4d42076263f5a20b5b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 10:08:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 10:08:07 2015 +0000"
      },
      "message": "Merge \"Revert \"Add a check in the location summary.\"\""
    },
    {
      "commit": "a978d43fc40984e0cef0c4d42076263f5a20b5b5",
      "tree": "792a11dfdd9f943017b575e99557da36e5bc43bd",
      "parents": [
        "95bf7547986e68d4ac93b0a529aaa8eb3c998c1f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 10:07:52 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 10:07:52 2015 +0000"
      },
      "message": "Revert \"Add a check in the location summary.\"\n\nMy assumption was wrong. We actually can use same as first input with any, *only if* the generate code does not clobber the first input. We use this for, e.g. DivZeroCheck, NullCheck.\n\nThis reverts commit 95bf7547986e68d4ac93b0a529aaa8eb3c998c1f.\n\nChange-Id: Ib72d73fe580f5bc707b41c651f2c8936bd4e2407\n"
    },
    {
      "commit": "9bb3e8e10d7d9230a323511094a9e260062a1473",
      "tree": "a942557fa165d52cb5e22ba6699d922735dadac5",
      "parents": [
        "40676e7d4f59d9010f51d4ccd6def61d8b203941",
        "95bf7547986e68d4ac93b0a529aaa8eb3c998c1f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 09:17:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 09:17:20 2015 +0000"
      },
      "message": "Merge \"Add a check in the location summary.\""
    },
    {
      "commit": "40676e7d4f59d9010f51d4ccd6def61d8b203941",
      "tree": "7cf97d885e5d2a615aa084bdc951ab95d0068ce7",
      "parents": [
        "cd5bc14b1aa77c4c1e84b5edd800a577411992aa",
        "5588e588144fffc978845a2c9c915a0044565a03"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 09:17:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 09:17:03 2015 +0000"
      },
      "message": "Merge \"Refactor safepoints in register allocator.\""
    },
    {
      "commit": "5588e588144fffc978845a2c9c915a0044565a03",
      "tree": "b4346bb9e3a6fb93ed9a76f7caa1b9f72e4c9746",
      "parents": [
        "6fea0097be6aefb0a1faf9eaf24cfbadda0959a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 14:10:59 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 10:16:07 2015 +0100"
      },
      "message": "Refactor safepoints in register allocator.\n\nThis is in preparation for adding logic around callee/caller\nsaved in the register allocator.\n\nChange-Id: I4204169f0a6a01074880538833144be7b0810882\n"
    },
    {
      "commit": "95bf7547986e68d4ac93b0a529aaa8eb3c998c1f",
      "tree": "7865118be29c02ccbfdb893277a40f1a2557918f",
      "parents": [
        "85806723695120d183e85e9d12d52340b839b781"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 17:05:16 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 09:37:01 2015 +0100"
      },
      "message": "Add a check in the location summary.\n\nHaving SameAsFirstInput for out, and first input Any does not\nmake sense currently. If it\u0027s stack, we are going to overwrite\nit, potentially clobbering another local. And constant does not\nmake sense.\n\nChange-Id: I0ce357137487ed3dcecf4efd9922a039a2a1a29d\n"
    },
    {
      "commit": "cd5bc14b1aa77c4c1e84b5edd800a577411992aa",
      "tree": "596640bd9066d6f218665dd0adce897bf9d5855e",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18",
        "69a503050fb8a7b3a79b2cd2cdc2d8fbc594575d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 15 08:28:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 15 08:28:59 2015 +0000"
      },
      "message": "Merge \"ARM64: Remove suspend register.\""
    },
    {
      "commit": "8d20011a9de7cd94bee59db3ae8c0cbbf55911d9",
      "tree": "e8f0656ae879c27175c7287086ee8fd70c24b93a",
      "parents": [
        "85806723695120d183e85e9d12d52340b839b781",
        "760d8efd535764e54500bf65a944ed3f2a54c123"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 14 16:34:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 16:34:45 2015 +0000"
      },
      "message": "Merge \"Opt Compiler: ARM64 goodness\""
    },
    {
      "commit": "69a503050fb8a7b3a79b2cd2cdc2d8fbc594575d",
      "tree": "b7f99172f921d7100959ab48210097906794d043",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Tue Apr 14 20:04:41 2015 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 14 17:29:08 2015 +0100"
      },
      "message": "ARM64: Remove suspend register.\n\nIt also clean up build/remove frame used by JNI compiler and generates\nstp/ldp instead of str/ldr. Also x19 has been unblocked in both quick and\noptimizing compiler.\n\nChange-Id: Idbeac0942265f493266b2ef9b7a65bb4054f0e2d\n"
    },
    {
      "commit": "5f4886aad49b48cdc6945e3094549145c0914fe8",
      "tree": "792a11dfdd9f943017b575e99557da36e5bc43bd",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 15:11:57 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 15:59:12 2015 +0100"
      },
      "message": "Fix a bug in type propagation.\n\nIf a phi requests its inputs to be of a certain type, the inputs need\nto propagate that type to their users, as those users might be\nphis.\n\nBug report and test courtesy of Serguei I Katkov.\n\nChange-Id: I79baac271566ec4fa684c1edf11a1b3383d896a9\n"
    },
    {
      "commit": "8dc7324da5bd0f2afd2ab558ab04882329a61fe8",
      "tree": "245ce4265cc31990fa6d2f6e792ccd9d44af1dc1",
      "parents": [
        "4af290af4e89cfbc3a4e1ada79909ccee353361a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 11:40:39 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 13 21:24:12 2015 +0100"
      },
      "message": "Add --include-cfi compiler option.\n\nDecouple generation of CFI from the rest of debug symbols.\nThis makes it possible to generate oat with CFI but without\nthe rest of debug symbols.\n\nThis is in line with intention of the .eh_frame section.\nThe section does not have the .debug_ prefix because it\nis considered somewhat different to the rest of debug symbols.\n\nChange-Id: I32816ecd4f30ac4e0dc69d69a4993e349c737f96\n"
    },
    {
      "commit": "daba9dff2ba0160332fe54ab14fc4283b8ea86fb",
      "tree": "0984e431727fe4dd8b56d2891a2d343882daebbf",
      "parents": [
        "c4542866d2e68dcdfa2c7efa5cddbb131003da81",
        "9d8606de5e274c00242ee73ffb693bc34589f184"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 13 20:00:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 20:00:40 2015 +0000"
      },
      "message": "Merge \"Whitespace cleanup in DWARFReg helper functions.\""
    },
    {
      "commit": "9d8606de5e274c00242ee73ffb693bc34589f184",
      "tree": "bc16051f6b9de2a69bdf0c7f6800d6534d10d005",
      "parents": [
        "58565098b2298041ccc97371a3cc486df88d51b3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 09:35:32 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 09:35:32 2015 +0100"
      },
      "message": "Whitespace cleanup in DWARFReg helper functions.\n\nChange-Id: Iedc05969b05be6d93e40467ff23287faaae08fb3\n"
    },
    {
      "commit": "c34dc9362b9ec624b3bdd97d36b6b2098814cd73",
      "tree": "c2049b2dc19d318e3917b52ef66608b985d7ac69",
      "parents": [
        "58565098b2298041ccc97371a3cc486df88d51b3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 09:27:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 09:30:57 2015 +0100"
      },
      "message": "Move \u0027ret\u0027 instruction generation inside GenerateFrameExit.\n\nChange-Id: I0c594d9a2356a006a5ce8dfd41d307cf7c3704ba\n"
    },
    {
      "commit": "1b743777e6b6cec3387b0ee347b6a8a03779c345",
      "tree": "036c42dbf10d8c75de1326e16406a12191c704ce",
      "parents": [
        "cf69f8163d700be29a1732e7e229101c67a51803",
        "f9aac1e9f442c2486cd54f045d43e15791601205"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 10 21:40:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 21:41:00 2015 +0000"
      },
      "message": "Merge \"Revert \"[optimizing] Improve x86 shifts\"\""
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "a29d93b380c9aeb8270e281aefbdd0c77a430d43",
      "tree": "22fb9344bd5495cf6a093913e9cf71967b42ab4f",
      "parents": [
        "1e7e85a40744ddd0c36b206d0960fc3cf24a7e62",
        "c2bcafe225d672611284ef247b777b9b19817c7d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 19:14:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 19:14:25 2015 +0000"
      },
      "message": "Merge \"ART: Refactor CompileOptimized\""
    },
    {
      "commit": "f9aac1e9f442c2486cd54f045d43e15791601205",
      "tree": "2f3aa65a881020beeb6f4b3313b3366733bbf3f5",
      "parents": [
        "222fcf96c9b73bbb739012575e7e413caf9348ec"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 18:12:48 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 18:12:48 2015 +0000"
      },
      "message": "Revert \"[optimizing] Improve x86 shifts\"\n\nThis reverts commit 222fcf96c9b73bbb739012575e7e413caf9348ec.\n\nReverting this CL as it is breaking a few tests (see http://build.chromium.org/p/client.art/builders/host-x86/builds/3251/steps/test%20optimizing/logs/stdio).  Will investigate ASAP.\n\nChange-Id: Iddd8363e83a24aa49fbdf0f0c9dc12e63b4848de\n"
    },
    {
      "commit": "c2bcafe225d672611284ef247b777b9b19817c7d",
      "tree": "c9414f0b526523df2e380bff2165e7f0cc1009ed",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 10:49:32 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 11:06:16 2015 -0700"
      },
      "message": "ART: Refactor CompileOptimized\n\nFactor out register allocation. Both Clang and GCC inline the\nfunction, but it changes how Clang stack-allocates enough so\nthat the resulting frame size is below our limit.\n\nBug: 20139216\nChange-Id: I2cf393aed70f2ce0556252b61ae639aacab6f3a7\n"
    },
    {
      "commit": "6977899440206c7b0a9a3e38650338fd052666f9",
      "tree": "f8275a45d82630449b0c9450853efe21d2026075",
      "parents": [
        "8e5fc53bd2f9ab5a46547959a176eba176ee115f",
        "3773cd046b1c34569f4711666788bf8a389c7857"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 16:47:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 16:47:49 2015 +0000"
      },
      "message": "Merge \"ART: Remove WriteElf from Compiler\""
    },
    {
      "commit": "3773cd046b1c34569f4711666788bf8a389c7857",
      "tree": "4fda463949679cfe434e0d5559919a5f01b4d1ac",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "message": "ART: Remove WriteElf from Compiler\n\nAs Portable is gone, we only have one elf_writer left. It also\nallows to put the decision for 32b vs 64b ELF into a central\npoint.\n\nChange-Id: Iae67d06df85268b3f0ee5725abc65edd23eb2499\n"
    },
    {
      "commit": "188d4316a880ae24aed315aa52dc503c4fcb1ec7",
      "tree": "a480bdc4a80f63d46abcde2ef7a36e1ad072d624",
      "parents": [
        "27ef3177fb164b5e1a3b8a6fd43d25f3074e586d"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Apr 09 18:30:21 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 16:19:55 2015 +0000"
      },
      "message": "Opt compiler: Instruction simplification for HAdd, HNeg, HNot, HSub.\n\nUnder assumptions for the \u0027cost\u0027 of each IR (eg. neither HAdd nor HSub\nare faster than the other), transformations are only applied if they\n(locally) cannot degrade the quality of the graph. The code could be\nextended to look at uses of the IRs and detect more opportunities for\noptimisations.  The optimisations in this patch do not look at other\nuses for their inputs.\n\nChange-Id: Ib60dab007af30f43421ef5bb55db2ec32fb8fc0c\n"
    },
    {
      "commit": "27ef3177fb164b5e1a3b8a6fd43d25f3074e586d",
      "tree": "3717202ea300f60f6df3aa29922b98579b7958d5",
      "parents": [
        "47317b430ee4f0094e58df45b557fe754b29b63b",
        "b19930c5cba3cf662dce5ee057fcc9829b4cbb9c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 10 16:15:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 16:15:07 2015 +0000"
      },
      "message": "Merge \"Follow up of \"div/rem on x86 and x86_64\", to tidy up the code a little.\""
    },
    {
      "commit": "a5c19ce8d200d68a528f2ce0ebff989106c4a933",
      "tree": "4638a8d8e5b1562ec5ed05967490fec1ef7f0d17",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Apr 01 12:51:05 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 10 12:08:31 2015 -0400"
      },
      "message": "[optimizing] Improve x86 parallel moves/swaps\n\nAdd a new constructor to ScratchRegisterScope that will supply a\nregister if there is a free one, but not spill to force one.  Use this\nto generated alternate code that doesn\u0027t use a temporary, as the\nspill/restore of a register generates extra instructions that aren\u0027t\nnecessary on x86.\n\nHere is the benefit for a 32 bit memory-to-memory exchange with no\nfree registers:\n\u003c        50    \t       push eax\n\u003c        53    \t       push ebx\n\u003c  8B44244C    \t       mov eax, [esp + 76]\n\u003c  8B5C246C    \t       mov ebx, [esp + 108]\n\u003c  8944246C    \t       mov [esp + 108], eax\n\u003c  895C244C    \t       mov [esp + 76], ebx\n\u003c        5B    \t       pop ebx\n\u003c        58    \t       pop eax\n---\n\u003e  FF742444    \t       push [esp + 68]\n\u003e  FF742468    \t       push [esp + 104]\n\u003e  8F44244C    \t       pop [esp + 72]\n\u003e  8F442468    \t       pop [esp + 100]\n\nAvoid using xchg instruction, as it is slow on smaller processors.\n\nChange-Id: Id29ee3abd998577baaee552d55d23e60ae0c7871\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "6d80318c382a3490ab605b46fa7cb22c5e823fec",
      "tree": "1fe89a424c91dae7adc07ebd620dce8297a0854e",
      "parents": [
        "07d1f0d6c15f78e107c7b77e993b4d4d08ae1ad8",
        "222fcf96c9b73bbb739012575e7e413caf9348ec"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 15:39:15 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 15:39:16 2015 +0000"
      },
      "message": "Merge \"[optimizing] Improve x86 shifts\""
    },
    {
      "commit": "07d1f0d6c15f78e107c7b77e993b4d4d08ae1ad8",
      "tree": "34a48e22719bec06356788bd904b425dbe84284e",
      "parents": [
        "4df30d988105f988dbcdb4f28263654e9ce20687",
        "55501ce0db57bccfa23b0226faffc964203701f9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 14:15:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 14:15:38 2015 +0000"
      },
      "message": "Merge \"Optimizing x86: Fix VisitArraySet for FP value\""
    },
    {
      "commit": "222fcf96c9b73bbb739012575e7e413caf9348ec",
      "tree": "e0441bc484cc8f441685de49c931a030730a3701",
      "parents": [
        "fcfea6324b2913621d5cb642d4315f22c4901368"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Mar 30 14:13:30 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 10 09:33:52 2015 -0400"
      },
      "message": "[optimizing] Improve x86 shifts\n\nSupport memory operands for integer shifts.  Generate better code for\nlong shifts by constants.\n\nChange-Id: Icc92fa1b59cc280d4894af6f054e19b01977d5ce\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "39dcf55a56da746e04f477f89e7b00ba1de03880",
      "tree": "97bbd68fa538cf76ac26cfeb7a101b5ceb330028",
      "parents": [
        "fcfea6324b2913621d5cb642d4315f22c4901368"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Apr 09 20:42:42 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 10 08:50:40 2015 -0400"
      },
      "message": "[optimizing] Address x86_64 RIP patch comments\n\nNicolas had some comments after the patch\nhttps://android-review.googlesource.com/#/c/144100 had merged.  Fix the\nproblems that he found.\n\nChange-Id: I40e8a4273997860db7511dc8f1986281b72bead2\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "b19930c5cba3cf662dce5ee057fcc9829b4cbb9c",
      "tree": "c226f8fffc4522b273072c516507083e2a77c505",
      "parents": [
        "0f88e87085b7cf6544dadff3f555773966a6853e"
      ],
      "author": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Thu Apr 09 21:12:15 2015 +0100"
      },
      "committer": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Fri Apr 10 10:28:02 2015 +0100"
      },
      "message": "Follow up of \"div/rem on x86 and x86_64\", to tidy up the code a little.\n\nChange-Id: Ibf39cbc8ac1d773599d70be2cb1e941674b60f1d\n"
    }
  ],
  "next": "55501ce0db57bccfa23b0226faffc964203701f9"
}
