)]}'
{
  "log": [
    {
      "commit": "eb7b7399dbdb5e471b8ae00a567bf4f19edd3907",
      "tree": "a0a488040883c14cc6cbec3186654137459d44ff",
      "parents": [
        "8ec0e20347e13592539a8c0786b1db1735149800"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Jun 19 14:47:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 22 11:57:36 2015 +0100"
      },
      "message": "Opt compiler: Add disassembly to the \u0027.cfg\u0027 output.\n\nThis is automatically added to the \u0027.cfg\u0027 output when using the usual\n`--dump-cfg` option.\n\nChange-Id: I864bfc3a8299c042e72e451cc7730ad8271e4deb\n"
    },
    {
      "commit": "9931f319cf86c56c2855d800339a3410697633a6",
      "tree": "94e98f4a670d9bded4ed3fbc194c31e4c733d198",
      "parents": [
        "edb83c606e034d76bed1331f34cdc435df47bb95"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Jun 19 14:47:01 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Jun 19 14:47:01 2015 +0100"
      },
      "message": "Opt compiler: Add a description to slow paths.\n\nChange-Id: I22160d90de3fe0ab3e6a2acc440bda8daa00e0f0\n"
    },
    {
      "commit": "cf93a5cd9c978f59113d42f9f642fab5e2cc8877",
      "tree": "55162627fcbf2cb7913a735c7ed89e8e4b5e84d7",
      "parents": [
        "db40ea768bd914125c3754dacb9b6f534a2e2399"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 16 11:33:24 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 17 09:43:51 2015 +0100"
      },
      "message": "Revert \"Revert \"ART: Implement literal pool for arm, fix branch fixup.\"\"\n\nThis reverts commit fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98.\n\nAdjust block label positions. Bad catch block labels were the\nreason for the revert.\n\nChange-Id: Ia6950d639d46b9da6b07f3ade63ab46d03d63310\n"
    },
    {
      "commit": "db40ea768bd914125c3754dacb9b6f534a2e2399",
      "tree": "af87ccb86c7e0622912bf088a464716166ea450a",
      "parents": [
        "e4394f7de28ae0b517daa033749979e46ff676ab",
        "fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 16 11:32:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 16 11:32:25 2015 +0000"
      },
      "message": "Merge \"Revert \"ART: Implement literal pool for arm, fix branch fixup.\"\""
    },
    {
      "commit": "fbeb4aede0ddc5b1e6a5a3a40cc6266fe8518c98",
      "tree": "76ab28cf259def4dccec529df217fd760f27d2aa",
      "parents": [
        "f38caa68cce551fb153dff37d01db518e58ed00f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 16 11:32:01 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 16 11:32:01 2015 +0000"
      },
      "message": "Revert \"ART: Implement literal pool for arm, fix branch fixup.\"\n\nThis reverts commit f38caa68cce551fb153dff37d01db518e58ed00f.\n\nChange-Id: Id88b82cc949d288cfcdb3c401b96f884b777fc40\nReason: broke the tests.\n"
    },
    {
      "commit": "e4394f7de28ae0b517daa033749979e46ff676ab",
      "tree": "320596587f320a0becda91cfe4fa72c8052fb90a",
      "parents": [
        "f6c77d7632bdfe564c2ba61690fecc65f10ea9f6",
        "f38caa68cce551fb153dff37d01db518e58ed00f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 16 09:06:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 16 09:07:00 2015 +0000"
      },
      "message": "Merge \"ART: Implement literal pool for arm, fix branch fixup.\""
    },
    {
      "commit": "f38caa68cce551fb153dff37d01db518e58ed00f",
      "tree": "723612f20666f429b7c67321f0353d57425b1c63",
      "parents": [
        "bd8c725e465cc7f44062745a6f2b73248f5159ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 29 15:50:18 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 15 15:13:28 2015 +0100"
      },
      "message": "ART: Implement literal pool for arm, fix branch fixup.\n\nChange-Id: Iecc91418bb4ee1c957f42fefb737d0ee2ba960e7\n"
    },
    {
      "commit": "69aa60163989c33a008115205d39732a76ecc1dc",
      "tree": "058392dc104a8e7b3594a548239dca2d3ec06cce",
      "parents": [
        "aa77f6e5839b2ad3bf8ca2c06a44ec92e2667af1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 10:34:25 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 16:01:49 2015 +0100"
      },
      "message": "Revert \"Revert \"Pass current method to HNewInstance and HNewArray.\"\"\n\nProblem exposed by this change was fixed in:\nhttps://android-review.googlesource.com/#/c/154031/\n\nThis reverts commit 7b0e353b49ac3f464c662f20e20e240f0231afff.\n\nChange-Id: I680c13dc9db9ba223ab11c7af255222860b4e6d2\n"
    },
    {
      "commit": "ae71a0539451a8350bdd9d46c76ddab7b763f209",
      "tree": "a7f7040991d89bc787ed38864ab09f0bcbf84576",
      "parents": [
        "7c5e26b3ea5262c0aea3374148750e81340a4bf9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 14:12:28 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 15:03:47 2015 +0100"
      },
      "message": "Fix a crash in optimizing compiler with the current method.\n\nCrash was due to overwriting the location of the current method\nin the slow path of an intrinsic.\n\nChange-Id: I6ca58ef5b3cea19925e60b9500aef543bc5f71ef\n"
    },
    {
      "commit": "7b0e353b49ac3f464c662f20e20e240f0231afff",
      "tree": "b5c936df891b08521176065ccaddb1f9e27c9f46",
      "parents": [
        "e21aa42e1341d34250742abafdd83311ad9fa737"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 09:25:50 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 09:25:50 2015 +0000"
      },
      "message": "Revert \"Pass current method to HNewInstance and HNewArray.\"\n\n082-inline-execute fails on x86.\n\nThis reverts commit e21aa42e1341d34250742abafdd83311ad9fa737.\n\nChange-Id: Ib3fd25faee2e0128001e40d3d51a74f959bc4449\n"
    },
    {
      "commit": "e21aa42e1341d34250742abafdd83311ad9fa737",
      "tree": "d2c9f8530e59876588d32f04b4effc25ebc0fa89",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 08 15:35:07 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 08 15:36:27 2015 +0100"
      },
      "message": "Pass current method to HNewInstance and HNewArray.\n\nAlso remove unsed CodeGenerator::LoadCurrentMethod.\n\nChange-Id: I4b8d3f2a30b8e2c76b6b329a72555483c993cb73\n"
    },
    {
      "commit": "6a1c92f1e4a455d802ab0d0ac47504cdd7c12f0f",
      "tree": "4804c678aecf7be4e77b4fa4adaddebe421095f3",
      "parents": [
        "8a9fba9154310ddc8024150ca8cd5a7c4b76b71b",
        "c345f141f11faad177aa9635a78088d00cf66086"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 17:17:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 04 17:17:45 2015 +0000"
      },
      "message": "Merge \"Revert \"Use HCurrentMethod in HInvokeStaticOrDirect.\"\""
    },
    {
      "commit": "c345f141f11faad177aa9635a78088d00cf66086",
      "tree": "0a9fbb0f1f90dfe273d94659f077cc1e6b84966c",
      "parents": [
        "38207af82afb6f99c687f64b15601ed20d82220a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 17:17:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 17:17:32 2015 +0000"
      },
      "message": "Revert \"Use HCurrentMethod in HInvokeStaticOrDirect.\"\n\nFails on baseline/x86.\n\nThis reverts commit 38207af82afb6f99c687f64b15601ed20d82220a.\n\nChange-Id: Ib71018367eb7c6046965494a7e996c22af3de403\n"
    },
    {
      "commit": "4c1ac208673c677951502552cadc38ae64fe1580",
      "tree": "ed082e970338e540d86ab58925c2cd329c6f2543",
      "parents": [
        "732358201f5c319efe9119c2f61116ec85ad4187",
        "38207af82afb6f99c687f64b15601ed20d82220a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 15:49:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 04 15:49:22 2015 +0000"
      },
      "message": "Merge \"Use HCurrentMethod in HInvokeStaticOrDirect.\""
    },
    {
      "commit": "38207af82afb6f99c687f64b15601ed20d82220a",
      "tree": "f9360949b92e5b6b01c5828c03ac67d01adffe1d",
      "parents": [
        "6a0d5e7fe6dc0c9d3dd941ab991203f2d5d1c354"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 01 15:46:22 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 04 14:39:06 2015 +0100"
      },
      "message": "Use HCurrentMethod in HInvokeStaticOrDirect.\n\nChange-Id: I0d15244b6b44c8b10079398c55da5071a3e3af66\n"
    },
    {
      "commit": "1710bf308c1465d2130547c0aa9066d28d57648b",
      "tree": "a481a80d4d1580041e8eb732abeb8fca6d54bb13",
      "parents": [
        "ffbf83b6e9ff4e3dd12a99cb607d4d3a6630d7bc",
        "1d8199d8215a6ee7b1904edc47372d83fcdee5a3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jun 03 19:15:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 03 19:15:06 2015 +0000"
      },
      "message": "Merge \"Tidy up spelling\""
    },
    {
      "commit": "682393c4b1995c209e2cf71780b0fb9023150213",
      "tree": "48ec13295adcabdd8de203ce6081034e19e12ee2",
      "parents": [
        "6a0d5e7fe6dc0c9d3dd941ab991203f2d5d1c354"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 14 15:57:52 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 03 12:37:13 2015 +0100"
      },
      "message": "Improve the performance of long-to-double conversions on ARM.\n\nUse a VMLA instruction instead of VADD \u0026 VMUL instructions\nin long-to-double conversions on ARM.  This change reduces\ncode size and improves execution times (but does not alter\nprecision).  It trades one temporary FPU register for two\ntemporary core registers.\n\nChange-Id: I1dc35bef6c12be8f305e5b46da98c2421686b60d\n"
    },
    {
      "commit": "0d1652e1e3768b30e4d80f31d59db580312581d8",
      "tree": "87e6f760f5ce74830f6aad9cf389e60c065c78b8",
      "parents": [
        "e499f8a75c6c9632f5b1f1921e9471d52348e2f4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 12:12:19 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 12:12:19 2015 +0100"
      },
      "message": "Fix compilation errors with gcc.\n\nChange-Id: If88d4f639658db2d6d71f5abcad563211138fc4a\n"
    },
    {
      "commit": "99c2abcb085d254b17a870442ca188fa09ab58de",
      "tree": "88347471e73c0d5374eafafa35181d6bb7b729f0",
      "parents": [
        "2d48b49436c12b649efebe8d40b625777d98a9de",
        "fd88f16100cceafbfde1b4f095f17e89444d6fa8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 10:56:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 03 10:56:36 2015 +0000"
      },
      "message": "Merge \"Factorize code for common LocationSummary of HInvoke.\""
    },
    {
      "commit": "fd88f16100cceafbfde1b4f095f17e89444d6fa8",
      "tree": "fdb6d0520ca419acef9e953e74dcbd7d908bc4dd",
      "parents": [
        "1aebdae18678403bdac078cbbe1f7dd4243c44f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 11:23:52 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 03 11:23:52 2015 +0100"
      },
      "message": "Factorize code for common LocationSummary of HInvoke.\n\nThis is one step forward, we could factorize more, but\nI wanted to get this out of the way first.\n\nChange-Id: I6ae411a737eebaecb64974f47af507ce0cfbae85\n"
    },
    {
      "commit": "1d8199d8215a6ee7b1904edc47372d83fcdee5a3",
      "tree": "db860e447157f5b005fad2c71bedc63ad5d79050",
      "parents": [
        "637be5cefe1462b8d0bd5e065bd64a10f01647ac"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jun 02 11:01:10 2015 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jun 02 11:01:16 2015 -0700"
      },
      "message": "Tidy up spelling\n\nChange-Id: I65fba9d8310ff3759322cec3345235e6472f4cfb\n"
    },
    {
      "commit": "5b3ee56cd63ee9e3c70c0412d044b81ab9c94513",
      "tree": "b57f056c5e4ad18ba7c89034bbbb51b90820e648",
      "parents": [
        "122addc3962207badd364b00a75a58639e76b10c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 14 16:02:41 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 02 17:37:40 2015 +0100"
      },
      "message": "Delegate long-to-float type conversions to the runtime on ARM.\n\nOn ARM, translate long-to-float type conversions (from both\nQuick and Optimizing) as calls to the runtime routine\nart_l2f, instead of generating ad hoc code, so as to improve\nthe precision of the conversions.\n\nBug: 20413424\nChange-Id: I8c414ee1c6f4ff1f32ee78f75734cfd3cf579f71\n"
    },
    {
      "commit": "62a46b2b4ac066a740fb22e58a246c18501fa909",
      "tree": "d5ba9ea5378bd9db5bbf24be287ee6a09282f047",
      "parents": [
        "c2ec62874804f341439455fb00a128010139d0fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 01 18:24:13 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 01 18:24:13 2015 +0100"
      },
      "message": "Use down_cast instead of reinterpret_cast in Optimizing codegens.\n\nChange-Id: Ifa23023ffaca631a4f6b5745dd7492c39521a26f\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "fbdaa30a448029d75422c76f29087a4e39630f4a",
      "tree": "e28784ff44d740884a7949f11745706e2831c873",
      "parents": [
        "b4e2fbbed28c3bcdb8fd0fee5a201ba78e1edf28"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 12:06:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 12:06:56 2015 +0100"
      },
      "message": "Use the new HCurrentMethod in HLoadString.\n\nChange-Id: I23d27e5e10736d127519eb3238ff8f25df3843a2\n"
    },
    {
      "commit": "b4e2fbbed28c3bcdb8fd0fee5a201ba78e1edf28",
      "tree": "2da8c563cca7c9e7e125819ba3022915dca18ca9",
      "parents": [
        "31db3432157caac55584a59827c69b303ba09d13",
        "76b1e1799a713a19218de26b171b0aef48a59e98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 28 10:10:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 28 10:10:24 2015 +0000"
      },
      "message": "Merge \"Add a HCurrentMethod node.\""
    },
    {
      "commit": "76b1e1799a713a19218de26b171b0aef48a59e98",
      "tree": "897d0d22d246367eb09d8b825b43c384074083f4",
      "parents": [
        "382f5c24eb663ca8fa39a94a038349138a00272a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 17:18:33 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 28 10:44:36 2015 +0100"
      },
      "message": "Add a HCurrentMethod node.\n\nThis enables register allocation for the current method, so\nthat users of it don\u0027t always load it from the stack.\n\nCurrently only used by HLoadClass. Will make follow-up\nCLs for the other users.\n\nChange-Id: If73324d85643102faba47fabbbd2755eb258c59c\n"
    },
    {
      "commit": "0d37cd0a895cedb1653cf9897d9f9058855e2aee",
      "tree": "51a4e8310601cc4b5910eee15413d2c70fca3078",
      "parents": [
        "6c70104dc3ecd66b46f56cae068a14e12021c9f2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 16:39:19 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 16:48:45 2015 +0100"
      },
      "message": "Rename VisitCondition\u0027s argument in code generators.\n\nThis argument is a condition instruction, not a comparison.\n\nChange-Id: I026f799d2161df58b0c8a84600eb8fffd6f7b998\n"
    },
    {
      "commit": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "d56376cce54e7df976780ecbd03228f60d276433",
      "tree": "5a523ff4a1589a4462207f4c75fad921870a62a2",
      "parents": [
        "aa49c23d47e5fdfcf51380550ee864e9d30d082b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:32:34 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 15:06:45 2015 +0100"
      },
      "message": "Revert \"Revert \"Introduce a NearLabel in thumb2.\"\"\n\nThis reverts commit 1f277e3cef6c33cd35e91123978491d83338d2ad.\n\n- Fix CompareAndBranch to not use cbz/cbnz with high registers.\n- Add a test for CompareAndBranch with the *inc file, as the\n  other assembler test infrastructure does not handle labels.\n\nChange-Id: If552bf1112b96caa3b9bb6c73c4b40bb90a33db7\n"
    },
    {
      "commit": "1f277e3cef6c33cd35e91123978491d83338d2ad",
      "tree": "85cae510b2103fe6685982b74f44a7cafb7428e4",
      "parents": [
        "db0bbab279534974dca507946c66cff2d05dc9f9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:26:31 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:26:31 2015 +0000"
      },
      "message": "Revert \"Introduce a NearLabel in thumb2.\"\n\nFails some benchmarks and libcore tests.\n\nThis reverts commit db0bbab279534974dca507946c66cff2d05dc9f9.\n\nChange-Id: I5d1afef5ede87e65d61f49529027c5c2f35b17fb\n"
    },
    {
      "commit": "db0bbab279534974dca507946c66cff2d05dc9f9",
      "tree": "190c7ace8cfb404202a342bef51aa967592c8d6b",
      "parents": [
        "099d3750d59719cecffdf49284f2633308b9c221"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 12:31:08 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 18:44:51 2015 +0100"
      },
      "message": "Introduce a NearLabel in thumb2.\n\nThis tells the assembler that the user knows the encoding\ncan be in 16bits.\n\nChange-Id: Idf36c38beb1e07a69862c972484aeb08326a0499\n"
    },
    {
      "commit": "d126ba19a2a3352fedbe43ed628ab60ccd401424",
      "tree": "79059b8060b33c3955cda9d5001dbf337e1b1f58",
      "parents": [
        "3e736b12d62ea539b71bd9e6ce953347c0f09a3e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 11:25:27 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 11:25:27 2015 +0100"
      },
      "message": "[Optimizing] Thumb2 assembler: use 16bits branches when we can.\n\nWe cannot relocate branches, but we can at least encode branches\non 16bits when the target is known.\n\nChange-Id: Icb6116ed974fc97e03622ac80d914c2c06f4cba2\n"
    },
    {
      "commit": "07276db28d654594e0e86e9e467cad393f752e6e",
      "tree": "6450e07d64045f0c0949b3423501316b672641c7",
      "parents": [
        "17f1bc531ea2f8c1a6fac3def13dee1b901949dd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 14:22:09 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 19:15:52 2015 +0100"
      },
      "message": "Don\u0027t do a null test in MarkGCCard if the value cannot be null.\n\nChange-Id: I45687f6d3505178e2fc3689eac9cb6ab1b2c1e29\n"
    },
    {
      "commit": "99df2b150039fa2a3e1132a8cd5e35201ae97aee",
      "tree": "0655eab6859a292faca4cde2d9ec4d3373c4ec0e",
      "parents": [
        "06675720cc274eb9d91a4ecd3fb1eef94a2d88f0",
        "c66671076b12a0ee8b9d1ae782732cc91beacb73"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 15 15:24:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 15 15:24:01 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Speedup div/rem by constants on arm32 and arm64.\""
    },
    {
      "commit": "c66671076b12a0ee8b9d1ae782732cc91beacb73",
      "tree": "e8007c01f0bce06dcd3b0d6e2db9e7079fc4dd04",
      "parents": [
        "ef4366a159ecdd357c98e577583bbe224d065128"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri May 15 16:08:45 2015 +0800"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 15 16:10:29 2015 +0100"
      },
      "message": "Opt compiler: Speedup div/rem by constants on arm32 and arm64.\n\nThis patch also includes:\n1. Add java test for div/rem negative constants.\n2. Fix a thumb2 encoding issue where the last operand is\n   \"reg, shift #amount\" in some instructions.\n3. Support a simple filter in arm32 assembler test to filter out\n   unsupported cases, such as \"smull r0, r0, r1, r2\".\n4. Add smull arm32 assembler test.\n5. Add smull/umull thumb2 test.\n6. Add test for the thumb2 encoding issue which is fixed in this\n   patch.\n\nChange-Id: I1601bc9c38f70f11909f2816fe3ec105a158951e\n"
    },
    {
      "commit": "c74652867cd9293e86232324e5e057cd73c48e74",
      "tree": "2670fa4ee6ff86e7c7a6d7ffa07f7a58df45dfb5",
      "parents": [
        "70d3d1433ee3d33dfdc9f687c94383d527871455"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 13 17:50:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 14:04:08 2015 +0100"
      },
      "message": "ART: Refactor GraphVisualizer attribute printing\n\nThis patch unifies the way GraphVisualizer prints instruction\nattributes in preparation of changes to the Checker syntax.\n\nChange-Id: I44e91e36c660985ddfe039a9f410fedc48b496ec\n"
    },
    {
      "commit": "db216f4d49ea1561a74261c29f1264952232728a",
      "tree": "8b7914435ad1ba519a3d88b5cca7f0f6e842cd4f",
      "parents": [
        "bc3b93eadd155342b6124d2d5ef3806ecec5dfd6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 05 17:02:20 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 07 09:54:09 2015 +0100"
      },
      "message": "Relax the only one back-edge restriction.\n\nThe rule is in the way for better register allocation, as\nit creates an artificial join point between multiple paths.\n\nChange-Id: Ia4392890f95bcea56d143138f28ddce6c572ad58\n"
    },
    {
      "commit": "2d27c8e338af7262dbd4aaa66127bb8fa1758b86",
      "tree": "e01e0bc57359df0bdf00c3da694c5403fb7fc9e6",
      "parents": [
        "3adfc4bbe6c42d574bd2069d8e38a13d5ad98ccf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 15:48:45 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 29 14:09:17 2015 +0100"
      },
      "message": "Refactor InvokeDexCallingConventionVisitor in Optimizing.\n\nChange-Id: I7ede0f59d5109644887bf5d39201d4e1bf043f34\n"
    },
    {
      "commit": "80613ffd5699e6207d6b1264d600a0fc168074ce",
      "tree": "dbe8971e367e2529586821f3caa223fd22c28ce3",
      "parents": [
        "a94fb1f99ee3390bca9531b2512f8fc65f13ceee",
        "3e3d73349a2de81d14e2279f60ffbd9ab3f3ac28"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 10:31:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 10:31:38 2015 +0000"
      },
      "message": "Merge \"Have HInvoke instructions know their number of actual arguments.\""
    },
    {
      "commit": "3e3d73349a2de81d14e2279f60ffbd9ab3f3ac28",
      "tree": "69ad3378263c9a4b967cb7e27de0027264c12eb6",
      "parents": [
        "a0ee862288b702468f8c2b6d0ad0f1c61be0b483"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 11:00:54 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 11:00:54 2015 +0100"
      },
      "message": "Have HInvoke instructions know their number of actual arguments.\n\nAdd an art::HInvoke::GetNumberOfArguments routine so that\nart::HInvoke and its subclasses can return the number of\nactual arguments of the called method.  Use it in code\ngenerators and intrinsics handlers.\n\nConsequently, no longer remove a clinit check as last input\nof a static invoke if it is still present during baseline\ncode generation, but ensure that static invokes have no such\ncheck as last input in optimized compilations.\n\nChange-Id: Iaf9e07d1057a3b15b83d9638538c02b70211e476\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "0379f82393237798616d485ad99952e73e480e12",
      "tree": "87f5ccd1fd0f4fa8156c31191040b7433c9ec907",
      "parents": [
        "3507b795c034617e1c94fc9544a208d6c6f75735"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 23:01:24 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 23:29:06 2015 +0100"
      },
      "message": "Fix DCHECKs about clinit checks in Optimizing\u0027s code generators.\n\nThese assertions are not true for the baseline compiler.  As\na temporary workaround, remove a clinit check as last input\nof a static invoke if it is still present at the stage of\ncode generation.\n\nChange-Id: I5655f4a0873e2e7ee7790b6a341c18b4b7b52af1\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "c6b4dd8980350aaf250f0185f73e9c42ec17cd57",
      "tree": "ef8d73e37abc04aecb430072a8bc463c73398fee",
      "parents": [
        "dd97393aca1a3ff2abec4dc4f78d7724300971bc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 07 20:32:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 16:47:50 2015 +0100"
      },
      "message": "Implement CFI for Optimizing.\n\nCFI is necessary for stack unwinding in gdb, lldb, and libunwind.\n\nChange-Id: I1a3480e3a4a99f48bf7e6e63c4e83a80cfee40a2\n"
    },
    {
      "commit": "65b798ea10dd716c1bb3dda029f9bf255435af72",
      "tree": "774e9901b6917989a63f07f927c3b4d8b921a013",
      "parents": [
        "c411c6cc327d3f2b3b4d1987b07dd442205d9454"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 09:35:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:05:07 2015 -0700"
      },
      "message": "ART: Enable more Clang warnings\n\nChange-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c\n"
    },
    {
      "commit": "d43b3ac88cd46b8815890188c9c2b9a3f1564648",
      "tree": "6c599c3f40d57e92786bd7f41c0541d9eaa2643b",
      "parents": [
        "a109632b240f3c9355ca95500f6f48e4478e3c51"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:03:04 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:05:13 2015 -0700"
      },
      "message": "Revert \"Revert \"Deoptimization-based bce.\"\"\n\nThis reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.\n\nChange-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006\n"
    },
    {
      "commit": "b51cdb32acd8b056752375e5f01d243033ec360c",
      "tree": "c7221ede22a2f7fe6191f34eceb42df63bbd35db",
      "parents": [
        "a3d40d5f764adfde8fa40d826cd93ba36cd15437"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 29 17:32:48 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 30 08:00:37 2015 -0700"
      },
      "message": "ART: Arm32 optimizing compiler backend should honor sdiv\n\nWe still support architectures that do not have sdiv.\n\nIssue: https://code.google.com/p/android/issues/detail?id\u003d162257\nChange-Id: I6d43620b7599f70a630668791a796a1703b62912\n"
    },
    {
      "commit": "d75948ac93a4a317feaf136cae78823071234ba5",
      "tree": "7593fb8c1ba2b67decdaa967b6348501f58d8b9d",
      "parents": [
        "b3665e3dfdd23cc7a2f17a0b53bb16205bf4151f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 27 09:53:16 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 27 12:01:40 2015 +0000"
      },
      "message": "Intrinsify String.compareTo.\n\nChange-Id: Ia540df98755ac493fe61bd63f0bd94f6d97fbb57\n"
    },
    {
      "commit": "39b4bf99a1167cd9d5e5454059dd360e67f1eac1",
      "tree": "1536a13873faa1031901d003fb987522598c381f",
      "parents": [
        "3679a47027b40290018d0ccc50b996a15645dfef",
        "ab4a2f5995b79c2b5b28c91b419a2c91cb88e377"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 25 17:15:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 25 17:15:22 2015 +0000"
      },
      "message": "Merge changes I4b3b4d90,I70e0d78f,I2848636f\n\n* changes:\n  Forbid the use of shifts in ShifterOperand in Thumb2\n  Make subs and adds alter flags when rn is an immediate\n  Inline long shift code\n"
    },
    {
      "commit": "b2bd1c5f9171f35fa5b71ada42d1a9e11189428d",
      "tree": "db9165b3daa18d1d430b690b78c2d125bade3021",
      "parents": [
        "11e99b19f48576f1bb6d0993635b34b6e09c9832"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 25 11:17:37 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 25 12:30:26 2015 +0000"
      },
      "message": "ART: Formatting and comments in BooleanSimplifier\n\nChange-Id: I9a5aa3f2aa8b0a29d7b0f1e5e247397cf8e9e379\n"
    },
    {
      "commit": "fd18f5ac060365286616cce773f8702d6246e4ca",
      "tree": "23f63ca2dddadd2da573b027d6a7b632235a3b7f",
      "parents": [
        "72fad8dd9653c4c79b8a43f4c1d466282ec80cc6"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 11 14:57:40 2015 +0000"
      },
      "committer": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 25 10:19:26 2015 +0000"
      },
      "message": "Inline long shift code\n\nChange-Id: I2848636f892e276507d04f4313987b9f4c80686b\n"
    },
    {
      "commit": "46e2a3915aa68c77426b71e95b9f3658250646b7",
      "tree": "2b0a4470b05291894db73c631fe94f0fdff8c46b",
      "parents": [
        "bce0855ca1dbb1fa226c5b6a81760272ce0b64ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 16 17:31:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 17:28:37 2015 +0000"
      },
      "message": "ART: Boolean simplifier\n\nThe optimization recognizes the negation pattern generated by \u0027javac\u0027\nand replaces it with a single condition. To this end, boolean values\nare now consistently assumed to be represented by an integer.\n\nThis is a first optimization which deletes blocks from the HGraph and\ndoes so by replacing the corresponding entries with null. Hence,\nexisting code can continue indexing the list of blocks with the block\nID, but must check for null when iterating over the list.\n\nChange-Id: I7779da69cfa925c6521938ad0bcc11bc52335583\n"
    },
    {
      "commit": "0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "e295e6ec5beaea31be5d7d3c996cd8cfa2053129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "message": "Revert \"Deoptimization-based bce.\"\n\nThis breaks compiling the core image:\n\n Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.\n\nThis reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.\n\nChange-Id: Ieeb48797d451836ed506ccb940872f1443942e4e\n"
    },
    {
      "commit": "e295e6ec5beaea31be5d7d3c996cd8cfa2053129",
      "tree": "4d8a657d23d511743ce35bee596544d7f652efdb",
      "parents": [
        "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sat Mar 07 06:37:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 23 16:39:37 2015 -0700"
      },
      "message": "Deoptimization-based bce.\n\nA mechanism is introduced that a runtime method can be called\nfrom code compiled with optimizing compiler to deoptimize into\ninterpreter. This can be used to establish invariants in the managed code\nIf the invariant does not hold at runtime, we will deoptimize and continue\nexecution in the interpreter. This allows to optimize the managed code as\nif the invariant was proven during compile time. However, the exception\nwill be thrown according to the semantics demanded by the spec.\n\nThe invariant and optimization included in this patch are based on the\nlength of an array. Given a set of array accesses with constant indices\n{c1, ..., cn}, we can optimize away all bounds checks iff all 0 \u003c\u003d min(ci) and\nmax(ci) \u003c array-length. The first can be proven statically. The second can be\nestablished with a deoptimization-based invariant. This replaces n bounds\nchecks with one invariant check (plus slow-path code).\n\nChange-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569\n"
    },
    {
      "commit": "202d164d97c1e0322188706c222911f8370dd194",
      "tree": "b1f0e65127e4a9ca87f4843490a1993dd250e148",
      "parents": [
        "cadf090da2dc91a3d6b842324e85f12ea6fef2ef",
        "f3b4aebd0f5ce6c82bfd6284919a5c5e91955124"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:18:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 21:18:08 2015 +0000"
      },
      "message": "Merge \"Revert \"Inline long shift code\"\""
    },
    {
      "commit": "f3b4aebd0f5ce6c82bfd6284919a5c5e91955124",
      "tree": "ea27dd630728cfa994ce2c5da522538744a7a8a9",
      "parents": [
        "09895ebf2d98783e65930a820e9288703bb1a50b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:16:38 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 21:16:38 2015 +0000"
      },
      "message": "Revert \"Inline long shift code\"\n\nThis reverts commit 09895ebf2d98783e65930a820e9288703bb1a50b.\n\nChange-Id: I7544022d896ef4353bc2cdf4b036403ed20c956d\n"
    },
    {
      "commit": "cadf090da2dc91a3d6b842324e85f12ea6fef2ef",
      "tree": "60cd1c1c8982b6c10074e6c7385e55d9ab042657",
      "parents": [
        "1d2868c081f6d523d4fe2d88fe321074e53f68e5",
        "09895ebf2d98783e65930a820e9288703bb1a50b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 17 18:50:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 18:50:55 2015 +0000"
      },
      "message": "Merge \"Inline long shift code\""
    },
    {
      "commit": "09895ebf2d98783e65930a820e9288703bb1a50b",
      "tree": "5fa8d5baf27ac8f18b80291a47ca62d19fa2dd7d",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Guillaume \"Vermeille\" Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Wed Mar 11 14:57:40 2015 +0000"
      },
      "committer": {
        "name": "Guillaume Sanchez",
        "email": "guillaumesa@google.com",
        "time": "Tue Mar 17 18:49:53 2015 +0000"
      },
      "message": "Inline long shift code\n\nChange-Id: I96887c295eb9a23dad4c9cc05d0a0e3ba17f674d\n"
    },
    {
      "commit": "68e15009173f92fe717546a621b56413d5e9fba1",
      "tree": "460f18693f53bcbcc6f79b03f8a211f271c973a7",
      "parents": [
        "1311ef7226f6147f2ef8c491321972a79d73914a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 16:16:49 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 17 16:23:17 2015 +0000"
      },
      "message": "PREOPT compiles using dex2oatd so don\u0027t emit debug instructions.\n\nChange-Id: I8d2ab8d956ad0ce313928918c658d49f490ad081\n"
    },
    {
      "commit": "eeefa1276e83776f08704a3db4237423b0627e20",
      "tree": "d7c647ca77703f3712f567704f40b00d59a125de",
      "parents": [
        "02c0bac34c246c1bd974dbb86d292d4b52ba98e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 18:52:59 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 16 10:48:21 2015 +0000"
      },
      "message": "Update locations of registers after slow paths spilling.\n\nChange-Id: Id9aafcc13c1a085c17ce65d704c67b73f9de695d\n"
    },
    {
      "commit": "a8ac9130b872c080299afacf5dcaab513d13ea87",
      "tree": "2bd0a2a88cbb6e7a3ae79dff84c466bed9189eb5",
      "parents": [
        "cc22e3946baf035c8732e9417ab132bfe663aa45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 16:36:36 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 16:47:44 2015 +0000"
      },
      "message": "Refactor code in preparation of correct stack maps in slow path.\n\nMove the logic of saving/restoring live registers in slow path\nin the SlowPathCode method. Also add a RecordPcInfo helper to\nSlowPathCode, that will act as the placeholder of saving correct\nstack maps.\n\nChange-Id: I25c2bc7a642ef854bbc8a3eb570e5c8c8d2d030c\n"
    },
    {
      "commit": "dc5ac731f6369b53b42f1cee3404f3b3384cec34",
      "tree": "72a90f1da01185014551628078b98a79e5d5230e",
      "parents": [
        "0e5e728a4a4f042f157e1897cc8bbc2b0bb110b1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Feb 25 11:28:05 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Mar 03 13:24:03 2015 -0800"
      },
      "message": "Opt compiler: enhance gvn for commutative ops.\n\nChange-Id: I415b50d58b30cab4ec38077be22373eb9598ec40\n"
    },
    {
      "commit": "d8ef2e991a1a65f47a26a1eb8c6b34c92b775d6b",
      "tree": "d3aa88b42db86584724a2566da304aff70be5613",
      "parents": [
        "a48c573d2351177d878e36e003f0cdf4d7f9328f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 16:02:06 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 16:04:07 2015 +0000"
      },
      "message": "not-int can also take non-int (byte and short) instructions.\n\nSo we should use the result-type instead if the input type\nfor knowning what instruction to use.\n\nBug: 19454010\nChange-Id: I88782ad27ae8c8e1b7868afede5057d26f14685a\n"
    },
    {
      "commit": "b1498f67b444c897fa8f1530777ef118e05aa631",
      "tree": "7ff4709329b0ba752a6111103a76fcea896a3adb",
      "parents": [
        "acf735c13998ad2a175f5a17e7bfce220073279d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 16 13:13:29 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 20 14:26:08 2015 +0000"
      },
      "message": "Improve type propagation with if-contexts\n\nThis works by adding a new instruction (HBoundType) after each `if (a\ninstanceof ClassA) {}` to bound the type that `a` can take in the True-\ndominated blocks.\n\nChange-Id: Iae6a150b353486d4509b0d9b092164675732b90c\n"
    },
    {
      "commit": "d6138ef1ea13d07ae555542f8898b30d89e9ac9a",
      "tree": "a8ffd5fd966512fd280bc1b3214f4e57a9e1805f",
      "parents": [
        "92095533ac28879ddd8b44b559d700527ca12b8a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 18 14:48:53 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 19 14:01:18 2015 +0000"
      },
      "message": "Ensure the graph is correctly typed.\n\nWe used to be forgiving because of HIntConstant(0) also being\nused for null. We now create a special HNullConstant for such uses.\n\nAlso, we need to run the dead phi elimination twice during ssa\nbuilding to ensure the correctness.\n\nChange-Id: If479efa3680d3358800aebb1cca692fa2d94f6e5\n"
    },
    {
      "commit": "ffe8a577a4c644a2c5387f1e8efe92fb0efac43f",
      "tree": "f750bf49bd7c618ddf124cbfac0cc9e91be34cf9",
      "parents": [
        "aa874e0bbfb21aec0661b93cb1c2ce065bc20302"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 11 01:10:39 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 13 15:36:28 2015 +0000"
      },
      "message": "Optimize double/float immediate loading on arm.\n\nAlso reserve a D register for temp.\n\nChange-Id: I6584d9005b0f5685c3afcd8e9153b4c87b56aa8e\n"
    },
    {
      "commit": "1d6957f0b9d560c75a1901a83a45b4f3510a1015",
      "tree": "36a174d4b12ef46744c5f3e80f8afeb46809a2e6",
      "parents": [
        "0525d6aa15cb9db70e26c01f7e7a695bae377268",
        "f7a0c4e421b5edaad5b7a15bfff687da28d0b287"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 10 19:33:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 10 19:33:23 2015 +0000"
      },
      "message": "Merge \"Improve ParallelMoveResolver to work with pairs.\""
    },
    {
      "commit": "f7a0c4e421b5edaad5b7a15bfff687da28d0b287",
      "tree": "5423a2357661b80d75cb2e3a2b5395a3fe3cd9b5",
      "parents": [
        "0f2433bfcb02a662fe739e8e2b068abc2958e4c1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 10 17:08:47 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 10 19:12:59 2015 +0000"
      },
      "message": "Improve ParallelMoveResolver to work with pairs.\n\nChange-Id: Ie2a540ffdb78f7f15d69c16a08ca2d3e794f65b9\n"
    },
    {
      "commit": "391b87ee8d939b60385fde9c48fda8a334ab9ae3",
      "tree": "c3880480f452cc85cad1b3cc4443ca83f67a248a",
      "parents": [
        "0aac867161c4207aace8ae0d0b2abe02bfb8c3d9",
        "2bcf9bf784a0021630d8fe63d7230d46d6891780"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 09 21:09:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 09 21:09:42 2015 +0000"
      },
      "message": "Merge \"ART: Arm intrinsics for Optimizing compiler\""
    },
    {
      "commit": "2bcf9bf784a0021630d8fe63d7230d46d6891780",
      "tree": "167d773b796c5e63d84c205a8ae9a2fe3585d06a",
      "parents": [
        "61fdf5bca503c30ba1e4dcaf333a8d3299f3bde6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 29 09:56:07 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 09 13:08:39 2015 -0800"
      },
      "message": "ART: Arm intrinsics for Optimizing compiler\n\nAdd arm32 intrinsics to the optimizing compiler.\n\nChange-Id: If4aeedbf560862074d8ee08ca4484b666d6b9bf0\n"
    },
    {
      "commit": "c0572a451944f78397619dec34a38c36c11e9d2a",
      "tree": "2cc6f3c6f5ad45b4b85fb62627e797fe7e7734e1",
      "parents": [
        "0f2433bfcb02a662fe739e8e2b068abc2958e4c1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 06 14:35:25 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 06 17:37:57 2015 +0000"
      },
      "message": "Optimize leaf methods.\n\nAvoid suspend checks and stack changes when not needed.\n\nChange-Id: I0fdb31e8c631e99091b818874a558c9aa04b1628\n"
    },
    {
      "commit": "829280cc90b7a84db42864589b4bafb4c94a79d9",
      "tree": "8c6f0235011e046bc711ebf795678f6d1a2fedda",
      "parents": [
        "69d69ea40fe64ff2e70daffc365a2fffe5964fcc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 28 10:20:37 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 04 09:11:40 2015 +0000"
      },
      "message": "Finally implement Location::kNoOutputOverlap.\n\nThe [i, i + 1) interval scheme we chose for representing\nlifetime positions is not optimal for doing this optimization.\nIt however doesn\u0027t prevent recognizing a non-split interval\nduring the TryAllocateFreeReg phase, and try to re-use\nits inputs\u0027 registers.\n\nChange-Id: I80a2823b0048d3310becfc5f5fb7b1230dfd8201\n"
    },
    {
      "commit": "cb1b00aedd94785e7599f18065a0b97b314e64f6",
      "tree": "fdde101b239c66325243bcc60d3d94f07ff56492",
      "parents": [
        "9544368685b4aa65e746332e602491a3e8e5b247"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 28 14:50:01 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 30 17:43:16 2015 +0000"
      },
      "message": "Use the non access check entrypoint when possible.\n\nChange-Id: I0b53d63141395e26816d5d2ce3fa6a297bb39b54\n"
    },
    {
      "commit": "1cf95287364948689f6a1a320567acd7728e94a3",
      "tree": "70a8b60c768894d635cf63b0a480baa5073d2bed",
      "parents": [
        "4a50662eeaa0b1a26be66e7584fb765151dabc59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 12 19:22:03 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 29 10:52:14 2015 +0000"
      },
      "message": "Small optimization for recursive calls: avoid dex cache.\n\nChange-Id: I044757a2f06e535cdc1480c4fc8182b89635baf6\n"
    },
    {
      "commit": "a0bb2bd5b6a049ad806c223f00672d1f0210db67",
      "tree": "206723aac52d4ccdf692f1d6a3c82c059f1cf6a1",
      "parents": [
        "2dadc9df0ffb822870a150f81257792b83241c77"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 12:49:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 26 12:52:16 2015 +0000"
      },
      "message": "Fix codegen_test.\n\nNative and ART do not have the same calling convention for ART,\nso we need to adjust blocked and allocated registers.\n\nChange-Id: I606b2620c0e5a54bd60d6100a137c06616ad40b4\n"
    },
    {
      "commit": "4dee636d21d9ce54386cdfbb824e5eb2a9c1af0d",
      "tree": "ee8650cc14ec18ce0d7abf089c7d2e0dfc9e079d",
      "parents": [
        "336247fa6deba2948f5ede1df806f48cf67c790a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 23 18:23:14 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 24 14:34:01 2015 +0000"
      },
      "message": "Support callee-save registers on ARM.\n\nChange-Id: I7c519b7a828c9891b1141a8e51e12d6a8bc84118\n"
    },
    {
      "commit": "d97dc40d186aec46bfd318b6a2026a98241d7e9c",
      "tree": "5cf0257eda25e2722a1adafb9de22690c06a56d8",
      "parents": [
        "c698b78a17043d8898deb817098181595fbe734e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 22 13:50:01 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 23 09:20:42 2015 +0000"
      },
      "message": "Support callee save floating point registers on x64.\n\n- Share the computation of core_spill_mask and fpu_spill_mask\n  between backends.\n- Remove explicit stack overflow check support: we need to adjust\n  them and since they are not tested, they will easily bitrot.\n\nChange-Id: I0b619b8de4e1bdb169ea1ae7c6ede8df0d65837a\n"
    },
    {
      "commit": "988939683c26c0b1c8808fc206add6337319509a",
      "tree": "876e94428276547a29c27ccf17509a42dfe7cda1",
      "parents": [
        "59add47cabce3735ccd470cd3b5dac8b112e09ab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 12:32:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 18:50:25 2015 +0000"
      },
      "message": "Enable core callee-save on x64.\n\nWill work on other architectures and FP support in other CLs.\n\nChange-Id: I8cef0343eedc7202d206f5217fdf0349035f0e4d\n"
    },
    {
      "commit": "b6b114c02b8bacd3b5d64e646fdaefa03c069c61",
      "tree": "cd702f32a9241c94d9e0d12828f3bcb0291b087b",
      "parents": [
        "73d8fe409fbf2cb9665779690660ccc852d60431",
        "fa93b504b324784dd9a96e28e6e8f3f1b1ac456a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 17:33:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 21 17:33:43 2015 +0000"
      },
      "message": "Merge \"Do not use HNot for creating !bool.\""
    },
    {
      "commit": "fa93b504b324784dd9a96e28e6e8f3f1b1ac456a",
      "tree": "8a3e691268657db75a69c8d644e5a963abee66d6",
      "parents": [
        "1147eeed2ffc82ac9b1405f9fb0a6cbc8560c42b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 15:44:16 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 17:03:29 2015 +0000"
      },
      "message": "Do not use HNot for creating !bool.\n\nHNot folds to ~, not !.\n\nChange-Id: I681f968449a2ade7110b2f316146ad16ba5da74c\n"
    },
    {
      "commit": "6c2dff8ff8e1440fa4d9e1b2ba2a44d036882801",
      "tree": "da2d48b3d84733ac6b29194cb2f624693a643d48",
      "parents": [
        "22c9285142169691eb2a9e2d4a49751fc7e57c2a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 14:56:54 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 15:19:06 2015 +0000"
      },
      "message": "Revert \"Revert \"Fully support pairs in the register allocator.\"\"\n\nThis reverts commit c399fdc442db82dfda66e6c25518872ab0f1d24f.\n\nChange-Id: I19f8215c4b98f2f0827e04bf7806c3ca439794e5\n"
    },
    {
      "commit": "77520bca97ec44e3758510cebd0f20e3bb4584ea",
      "tree": "2e3be6fdc182e5cf5ae390019457af5e9c1ed242",
      "parents": [
        "4d2c611bf17ff309abfa152e56c0b98a21ec8787"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 12 18:45:46 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 21 14:26:35 2015 +0000"
      },
      "message": "Record implicit null checks at the actual invoke time.\n\nImplicitNullChecks are recorded only for instructions directly (see NB\nbelow) preceeded by NullChecks in the graph. This way we avoid recording\nredundant safepoints and minimize the code size increase.\n\nNB: ParallalelMoves might be inserted by the register allocator between\nthe NullChecks and their uses. These modify the environment and the\ncorrect action would be to reverse their modification. This will be\naddressed in a follow-up CL.\n\nChange-Id: Ie50006e5a4bd22932dcf11348f5a655d253cd898\n"
    },
    {
      "commit": "c399fdc442db82dfda66e6c25518872ab0f1d24f",
      "tree": "6f0841ad5e8e80b09e34e084ae8eac336bce73a2",
      "parents": [
        "41aedbb684ccef76ff8373f39aba606ce4cb3194"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 12:42:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 12:42:57 2015 +0000"
      },
      "message": "Revert \"Fully support pairs in the register allocator.\"\n\nLibcore tests fail.\n\nThis reverts commit 41aedbb684ccef76ff8373f39aba606ce4cb3194.\n\nChange-Id: I2572f120d4bbaeb7a4d4cbfd47ab00c9ea39ac6c\n"
    }
  ],
  "next": "41aedbb684ccef76ff8373f39aba606ce4cb3194"
}
