)]}'
{
  "log": [
    {
      "commit": "87f3fcbd0db352157fc59148e94647ef21b73bce",
      "tree": "5bdeabb246f5de86704333b3fcbccc6e9146d246",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 15:52:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 15:17:38 2016 +0100"
      },
      "message": "Replace String.charAt() with HIR.\n\nReplace String.charAt() with HArrayLength, HBoundsCheck and\nHArrayGet. This allows GVN on the HArrayLength and BCE on\nthe HBoundsCheck as well as using the infrastructure for\nHArrayGet, i.e. better handling of constant indexes than\nthe old intrinsic and using the HArm64IntermediateAddress.\n\nBug: 28330359\nChange-Id: I32bf1da7eeafe82537a60416abf6ac412baa80dc\n"
    },
    {
      "commit": "d5aa626b286b61efba49067c5fd6f75957c7969e",
      "tree": "93e48121cb0ba9ed978e6d4c8e5e24b71a848481",
      "parents": [
        "30564fd3c9e4d4a8ef2e82da3fe9c9da1b7ccd01",
        "3fdab77aa9949e18aee2734a9eac271f36dedefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 17 12:02:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 17 12:02:41 2016 +0000"
      },
      "message": "Merge \"ARM: Improve String.getCharsNoCheck intrinsic.\""
    },
    {
      "commit": "3fdab77aa9949e18aee2734a9eac271f36dedefb",
      "tree": "d37a864b177222eb116491a4740119016fa7d32c",
      "parents": [
        "453134813e9ba2b91622550d76ddff44a1ab48ab"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Apr 25 11:32:37 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Jun 17 09:16:33 2016 +0100"
      },
      "message": "ARM: Improve String.getCharsNoCheck intrinsic.\n\n- Optimize for short retrievals.\n- Improve performance of longer retrievals with unrolled LDR/STR.\n\nChange-Id: I24ec52067104b2f68799c04aebb61d20fff94020\n"
    },
    {
      "commit": "8a0b9bf88aa055b2669825048dff6353dd04aafb",
      "tree": "51ed6b7a5436f191acea09f42def0c44c2ee6bd3",
      "parents": [
        "edbcf54199cab8557f93ef3d136e4c2f335b915e",
        "50706437d8216e41f0fea1e413cda7891324d397"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 16 00:28:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 16 00:28:15 2016 +0000"
      },
      "message": "Merge \"Refactor GetIMTIndex\""
    },
    {
      "commit": "abdda2fb52eb7e9a6916899a913f78251d8ed277",
      "tree": "165a31831ae077827b1e7b973bd5602125b5b142",
      "parents": [
        "2b87a47c09823031c4fe336dcef0867605debfd7",
        "badee9820fcf5dca5f8c46c3215ae1779ee7736e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 15 17:44:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 15 17:44:14 2016 +0000"
      },
      "message": "Merge \"Optimize IMT\""
    },
    {
      "commit": "50706437d8216e41f0fea1e413cda7891324d397",
      "tree": "23c7c5d1198b8cdde6261198626cfe443eab59ba",
      "parents": [
        "badee9820fcf5dca5f8c46c3215ae1779ee7736e"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 11:31:04 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Wed Jun 15 09:08:35 2016 -0700"
      },
      "message": "Refactor GetIMTIndex\n\nThis allows us to more easily maintain and experiment with\ninterface method table indexing and hashing.\n\nChange-Id: I719920fae7490dcedcda7c1c36db225c2b8b16df\n"
    },
    {
      "commit": "badee9820fcf5dca5f8c46c3215ae1779ee7736e",
      "tree": "982948a67a88a1f9a734c935f919f8d307969f48",
      "parents": [
        "614968198625a6693666bdc1e5609e2f663f5638"
      ],
      "author": {
        "name": "Nelli Kim",
        "email": "nelli.kim@samsung.com",
        "time": "Fri May 13 13:08:53 2016 +0300"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Tue Jun 14 10:05:47 2016 -0700"
      },
      "message": "Optimize IMT\n\n* Remove IMT for classes which do not implement interfaces\n* Remove IMT for array classes\n* Share same IMT\n\nSaved memory (measured on hammerhead):\nboot.art:\nTotal number of classes: 3854\nNumber of affected classes: 1637\nSaved memory: 409kB\n\nChrome (excluding classes in boot.art):\nTotal number of classes: 2409\nNumber of affected classes: 1259\nSaved memory: 314kB\n\nGoogle Maps (excluding classes in boot.art):\nTotal number of classes: 6988\nNumber of affected classes: 2574\nSaved memory: 643kB\n\nPerformance regression on benchmarks/InvokeInterface.java benchmark\n(measured timeCall10Interface)\n1st launch: 9.6%\n2nd launch: 6.8%\n\nChange-Id: If07e45390014a6ee8f3c1c4ca095b43046f0871f\n"
    },
    {
      "commit": "63e0a7d057adbe17ba0d34624d83f1120cb1162f",
      "tree": "48e74e115ce02a27cbe8b72d22b1dab041b01278",
      "parents": [
        "294ce238cb0cdd9cd9854994df2c9b23b8c6ce76",
        "df109d9cb1fd4544e464fa7f7798f04268eb436e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 14 09:06:24 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 14 09:06:25 2016 +0000"
      },
      "message": "Merge \"ARM64: Improve String.getCharsNoCheck intrinsic.\""
    },
    {
      "commit": "880f119810869ae8dad3803dfd4d3a02c94a8711",
      "tree": "df2328d07e0ebde211e64cc0add062a97e2139b5",
      "parents": [
        "cace1ba2ab3a28c335005c73d160d9c0401a0e4e"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Mon Jun 13 16:04:50 2016 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Mon Jun 13 16:04:50 2016 +0100"
      },
      "message": "ARM64: Use VIXL\u0027s conditional select helper.\n\nChange-Id: Id6bb880e2fffb54cf1f480191fc734eaaf4cd293"
    },
    {
      "commit": "df109d9cb1fd4544e464fa7f7798f04268eb436e",
      "tree": "705593edcaaa9844d8c25372d8f075546bf82bc3",
      "parents": [
        "834f4445e70543bfdbcdd6435ccceb7a6dd82c4d"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Apr 22 11:35:56 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Jun 13 15:00:36 2016 +0100"
      },
      "message": "ARM64: Improve String.getCharsNoCheck intrinsic.\n\n- Optimize for \u003c 8 characters.\n- Improve performance of longer retrievals with LDP/STP.\n\nChange-Id: Ib9a9507ae652a439c7fdcab5cc916e1930722228\n"
    },
    {
      "commit": "206fbf51ccd2dbbcf106e480cc6c5bb96fc7befb",
      "tree": "38c57afab97083c1d805a381c1dfa0764605fec6",
      "parents": [
        "834f4445e70543bfdbcdd6435ccceb7a6dd82c4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 10 16:06:34 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 13 14:14:43 2016 +0100"
      },
      "message": "Remove too aggressive DCHECKs.\n\nA class can move from a state greater or equal than resolved\nto erroneous concurrently to the verifier or the compiler.\n\nbug:29239283\nChange-Id: I89f3fe1c1d9556c6c99b8e005b3ec02de7f01b85\n(cherry picked from commit f7d994622aabcc689f62253a9253e0c67d9e787e)\n"
    },
    {
      "commit": "296fbb4c3a629ec99149e512ddb66d7b4d7854fe",
      "tree": "efdf1998a9bd2aa55a0962d01300412c366c0042",
      "parents": [
        "88b970c24162c0b223f724e664a6da08ae6bfc5c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 07 13:49:12 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 08 09:41:33 2016 -0700"
      },
      "message": "Do not place null check on unresolved method calls.\n\nRationale:\nThese invokes drop through the runtime anyway where various\nchecks are done, including null check. A few of these\nchecks need to occur before the null check.\n\nWith fail-before/pass-after smali test.\n\nBUG\u003d29068831\n\nChange-Id: I260715e742365433a323598d97f7fdab321e8512\n"
    },
    {
      "commit": "88b970c24162c0b223f724e664a6da08ae6bfc5c",
      "tree": "68cadc43e2c0bb665511a247339964ec51e6f764",
      "parents": [
        "83968f1a0949972e728d2302a26f9ae98dff34b2",
        "31883646547a036f58b9fa0894eb0fac0bcf05a1"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 07 18:16:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 07 18:16:06 2016 +0000"
      },
      "message": "Merge \"Do not hide instance field hard failure with soft failure\""
    },
    {
      "commit": "31883646547a036f58b9fa0894eb0fac0bcf05a1",
      "tree": "2b78c3b85254464f9f73826c26054ccefddd44e4",
      "parents": [
        "6b631dc9662d39ca0f89ee4653d911f1f5291913"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 06 15:02:44 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 07 10:09:26 2016 -0700"
      },
      "message": "Do not hide instance field hard failure with soft failure\n\nRationale:\nYet another verifier inaccuracy found with fuzz testing.\nInstance field verification should proceed testing instance\nfield access after soft failures in cases where hard failures\ncould still follow. Failure to do so resulted in a compiler\ncrash (now made bit friendly with DCHECK as well).\n\nWith crash-before/pass-after test.\n\nBUG\u003d29126870\n\nChange-Id: I8674d6171158eaa2aeb0492b35dfafea76416cac\n"
    },
    {
      "commit": "83968f1a0949972e728d2302a26f9ae98dff34b2",
      "tree": "84d7b664e0a01948227ec9697510e3f9339f7a65",
      "parents": [
        "4fb652a5ca96cdefa6dca6fe739f1ea89d1bb3e4",
        "3aaf9645639ff56fbfe49a981242cbda01d6796e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 07 16:26:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 07 16:26:48 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\"\""
    },
    {
      "commit": "4fb652a5ca96cdefa6dca6fe739f1ea89d1bb3e4",
      "tree": "705141366b8df041b655f154437641031f25343c",
      "parents": [
        "97b1e6633be800827145c4ffeded1c834082730f",
        "d6c205eb9b04bcfa072cd5ffdd93deef167ec340"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 07 15:39:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 07 15:39:45 2016 +0000"
      },
      "message": "Merge \"ART: Remove redundant MoveInstructionBefore method\""
    },
    {
      "commit": "3aaf9645639ff56fbfe49a981242cbda01d6796e",
      "tree": "822de2f62ddeb8576ab6567e5cab723b5731dadf",
      "parents": [
        "97b1e6633be800827145c4ffeded1c834082730f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 14:14:37 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 16:12:59 2016 +0100"
      },
      "message": "Revert \"Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\"\n\nbug:29089267\nbug:27521545\n\nWe were hitting a compiler DCHECK that a class would never require to\ndo access checks on itself. The reason was that the compiler driver\nwas not trying to resolve a type, but instead relied on the verifier\nfor pre-populating the dex cache. However, the verifier doesn\u0027t\nnecessarily run in JIT mode.\n\nThis reverts commit 12abcbd950bd0ff4528e2e0d27ca5e881c7b0467.\n\nChange-Id: I59204c16927084f6605a2a3f999ca529f949e1ad\n"
    },
    {
      "commit": "d6c205eb9b04bcfa072cd5ffdd93deef167ec340",
      "tree": "ba2d71a03b266e317fe7278d1136098cb890dfee",
      "parents": [
        "f1c25cf31d29c70b5102b249344bea76c374ecd8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 07 14:20:52 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 07 14:49:18 2016 +0100"
      },
      "message": "ART: Remove redundant MoveInstructionBefore method\n\nChange-Id: If53d7011197cc6b9c1702a3d98ef11b59eb76f0c\n"
    },
    {
      "commit": "97b1e6633be800827145c4ffeded1c834082730f",
      "tree": "051f4647f1617cea3bf91662c760e66e04b4ee9e",
      "parents": [
        "f1c25cf31d29c70b5102b249344bea76c374ecd8",
        "73296a7c547e97ec4ea4a7e7622ed0cf49870462"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 07 10:00:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 07 10:00:00 2016 +0000"
      },
      "message": "Merge \"MIPS32: Improve method entry/exit code\""
    },
    {
      "commit": "6b631dc9662d39ca0f89ee4653d911f1f5291913",
      "tree": "076ece82cfbbd0b859a8e36cf1c4226dc122a801",
      "parents": [
        "d1be2a34836fc32d938225c08eae722f50bbb175",
        "f89381fed12faf96c45a83a989ae2fff82c05f3b"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 06 20:56:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 06 20:56:49 2016 +0000"
      },
      "message": "Merge \"ART: ArrayGet hoisting restriction added.\""
    },
    {
      "commit": "f89381fed12faf96c45a83a989ae2fff82c05f3b",
      "tree": "fafdf6e995bbea12c62220e9e8cda6a7d22fc139",
      "parents": [
        "2e1c66e37db7eaa713459e15b115d5c217d6e414"
      ],
      "author": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Mon May 16 16:44:13 2016 +0600"
      },
      "committer": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Tue Jun 07 01:11:44 2016 +0600"
      },
      "message": "ART: ArrayGet hoisting restriction added.\n\nCurrently if we hoist ArrayGet from loop there is no guarantee\nthat insn will be executed at runtime. Because of that we could\nface issues like crashes in generated code.\n\nThis patch introduces restriction for ArrayGet hoisting. We say\nthat ArrayGet execution is guaranteed at least one time if its bb\ndominates all exit blocks.\n\nChange-Id: I9f72c0f4c33b358341109238bea46cb5a82f490f\nSigned-off-by: Anton Shamin \u003canton.shamin@intel.com\u003e\n"
    },
    {
      "commit": "12abcbd950bd0ff4528e2e0d27ca5e881c7b0467",
      "tree": "2788e5aec7b022694f7e7d41c1e40c205e46596e",
      "parents": [
        "808067335b228d7b50ad84123d3c8ecb7aeeb200"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "message": "Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\n\nbug:29089267\nbug:27521545\n\nFails some DHECKs.\n\nThis reverts commit 808067335b228d7b50ad84123d3c8ecb7aeeb200.\n\nChange-Id: I0e768ce85be593e3f50fd02abc29aa34f2be3562\n"
    },
    {
      "commit": "808067335b228d7b50ad84123d3c8ecb7aeeb200",
      "tree": "8642091a7775c18ac03a079f1befea3261805346",
      "parents": [
        "4b53f5795a289b40aa81b9c42ede5c896ea0e4ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 02 15:55:48 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 11:29:47 2016 +0100"
      },
      "message": "Fix ArtMethod::GetInvokeType for static methods on interfaces.\n\nAnd avoid calling ResolveMethod in the JIT, since it already\nknows that method.\n\nbug:29089267\nbug:27521545\n\n(cherry picked from commit 2dc77ecf375882f51ff7c09712c05b80e58abb6b)\n\nChange-Id: I36084b1f207317452c42fdfc8ffa4d8c721d2f76\n"
    },
    {
      "commit": "73296a7c547e97ec4ea4a7e7622ed0cf49870462",
      "tree": "6b5e588aa7e611d1c41b8cb65c2bc61532aff631",
      "parents": [
        "d27fd40d5353141660c033156492efd639c4d048"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Fri Jun 03 22:51:46 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Jun 04 02:31:23 2016 -0700"
      },
      "message": "MIPS32: Improve method entry/exit code\n\nImprovements:\n- the stack frame is (de)allocated in one step instead of two\n- callee-saved FPU registers are 8-byte aligned within the frame,\n  allowing a single ldc1/sdc1 instruction to load/store an FPU\n  register without causing exceptions due to misaligned accesses\n- the return address register, RA, is restored early for better\n  instruction scheduling\n\nChange-Id: I556b139c62839490a9fdbce8c5e6e3e2d1cc7bb7\n"
    },
    {
      "commit": "99b6ed6d377722db52d042a9b81a36a2707ef2ce",
      "tree": "cc6a163e31314c696c768f79368937e48e1e08b1",
      "parents": [
        "d9df0d5281d1a3cf86de9088cd55cea1000da37b",
        "1415413bddb3a9cd9432de3381ef27e5181e58cc"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 03 22:54:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 22:54:18 2016 +0000"
      },
      "message": "Merge \"Do not place null check from unresolved field access.\""
    },
    {
      "commit": "1415413bddb3a9cd9432de3381ef27e5181e58cc",
      "tree": "c3f6e6593cbd93ee4f04683548bcf7e014ee1dcc",
      "parents": [
        "3f432d5a7c184b7580bd5aba27158c1455c328ff"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jun 02 17:53:58 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jun 03 14:32:49 2016 -0700"
      },
      "message": "Do not place null check from unresolved field access.\n\nRationale:\nThese accesses go though the runtime anyway where various\nchecks are done, including null check. Since particular\nchecks, like access checks, need to occur prior to the\nnull check (to ensure link errors are not masked by\na null reference), the explicit null check should not\noccur in the HIR.\n\nBUG\u003d29068831\n\nChange-Id: I30fc9cb8cf4993e4176e235ceba3a38aef98d503\n"
    },
    {
      "commit": "4248fc46289f9940aa13d22e4f89abed5e74b169",
      "tree": "aa72b1443c7ed4ff86eb96468c56071df30c89b8",
      "parents": [
        "f3349b5cc7baa06bdc82d3f55e8e57a7e266b809",
        "372f10e5b0b34e2bb6e2b79aeba6c441e14afd1f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 03 12:34:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 12:34:23 2016 +0000"
      },
      "message": "Merge \"Refactor handling of input records.\""
    },
    {
      "commit": "372f10e5b0b34e2bb6e2b79aeba6c441e14afd1f",
      "tree": "1f29c2467c8909ef0e0147f37f176caa1bcd2ccc",
      "parents": [
        "1b66fdf3f33c72dfdda4d31f6f17b6a0d8607402"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 17 16:30:10 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 02 19:04:20 2016 +0100"
      },
      "message": "Refactor handling of input records.\n\nIntroduce HInstruction::GetInputRecords(), a new virtual\nfunction that returns an ArrayRef\u003c\u003e to all input records.\nImplement all other functions dealing with input records as\nwrappers around GetInputRecords(). Rewrite functions that\npreviously used multiple virtual calls to deal with input\nrecords, especially in loops, to prefetch the ArrayRef\u003c\u003e\nonly once for each instruction.  Besides avoiding all the\nextra calls, this also allows the compiler (clang++) to\nperform additional optimizations.\n\nThis speeds up the Nexus 5 boot image compilation by ~0.5s\n(4% of \"Compile Dex File\", 2% of dex2oat time) on AOSP ToT.\n\nChange-Id: Id8ebe0fb9405e38d918972a11bd724146e4ca578\n"
    },
    {
      "commit": "a90d489ab101891bbac7276b8748125e6b4fa0c2",
      "tree": "af4f714004fc835da966a5497e3152035b8826fd",
      "parents": [
        "0844e03ba790531599d29a9bb031517a165e941f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 01 16:30:20 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 02 11:12:46 2016 +0100"
      },
      "message": "Fix a bug in reference type propagation.\n\nThe upper bound of a bound type is always exact, so we should\nnot use it for setting the type of the bound type.\n\nbug:28730986\nChange-Id: I214b8c3493838c22805555f88e8dc87cf9221376\n"
    },
    {
      "commit": "c5809c3c31814e80a19c71adca306378281f2ab4",
      "tree": "2712109d35b5c91542af4c2b72af9c0e69395462",
      "parents": [
        "a21decf759af7dc29f64ff7ee02a758397578cd3"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed May 25 15:01:06 2016 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Jun 01 09:14:44 2016 +0100"
      },
      "message": "Add missing calls to `RecordSimplification()`.\n\nNote that not all transformations in the instruction simplifier call\nthis helper. It is used to track a loosely defined category of\ntransformations for which we may benefit from re-running the\nsimplifier.\n\nChange-Id: I14dd841a30c526065cff337627c9156abe3d7c0a\n"
    },
    {
      "commit": "68b6380096581019c5a0067bafb879f4481cf3dd",
      "tree": "265887ab3bb4814e5254510d523337e215e6cc20",
      "parents": [
        "7ebb7aed1c10a83a24a66475f886e77645bf29c4",
        "53b52005ddae649e6f1cf475de7c259bc6885e6d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 25 11:39:28 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 25 11:39:28 2016 +0000"
      },
      "message": "Merge \"Apply String.equals() optimizations on arm, arm64 and x86-64.\""
    },
    {
      "commit": "53b52005ddae649e6f1cf475de7c259bc6885e6d",
      "tree": "6d0a2618fda946fa26e3cdb27825f03834e3529b",
      "parents": [
        "db9fcb30402a2726564905c206fa23ee86e146c3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 24 19:30:45 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 25 11:48:53 2016 +0100"
      },
      "message": "Apply String.equals() optimizations on arm, arm64 and x86-64.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/174192\n\nChange-Id: Ie71197df22548d6eb0ca773de6f19fcbb975f065\n"
    },
    {
      "commit": "3c7787fb2e197934a0e87329644384445b1d062f",
      "tree": "5942b3faa6b23abdccb98a2f9b9a13fa75ca6d36",
      "parents": [
        "80fd43eead361bd3b61d646e5c8efcdd0720304d",
        "fba39972d99701c80bf3beb7451aca508d67593c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "message": "Merge \"Fix misc-macro-parentheses warnings.\""
    },
    {
      "commit": "96c6ad804369b20f3b9c3693df539d905ae475c2",
      "tree": "a09093da75747fe523436f26ff314b19804ffa23",
      "parents": [
        "df92503d788cc0340dcf296525416535cc34d7c9",
        "c25cbf14595799265d3d1b5bafb8dd00b91dbbc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 20 13:55:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 20 13:55:13 2016 +0000"
      },
      "message": "Merge \"ARM: Add new String.compareTo intrinsic.\""
    },
    {
      "commit": "c25cbf14595799265d3d1b5bafb8dd00b91dbbc1",
      "tree": "3bb842edbcff3de90246eed1672c0cd1069ff17b",
      "parents": [
        "a741785dddab1f4b79253514287860d11c5800c6"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Apr 18 09:00:11 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri May 20 11:56:14 2016 +0100"
      },
      "message": "ARM: Add new String.compareTo intrinsic.\n\nBenchmarked on Nexus6P big, little, and all cores. The new intrinsic is\nfaster than pStringCompareTo for compare lengths on [1,512], so the\nruntime call is no longer needed.\n\nChange-Id: If853b592dfc5e561ea3389b51729f37a2c89c18e\n"
    },
    {
      "commit": "e5ed20bd8c8a287f816dc4a5e80a68f3c0b648cd",
      "tree": "0322ade045ec14a051c65dd38adeb9f576108d3c",
      "parents": [
        "ca87756577d97bc9c4258f13a06bb53be26507b1"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri May 20 10:41:38 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri May 20 10:41:38 2016 +0100"
      },
      "message": "ARM64: Move BIC after branch in StringCompareTo intrinsic.\n\nChange-Id: Ic785dd93daab73b4b37917097c8c8ea2de797ed2\n"
    },
    {
      "commit": "4020ecd536601213b3262b2a6a8bb922d594b994",
      "tree": "fed5aaa53f80f368872bfcc963047ada5b12ab0b",
      "parents": [
        "2f710e0b26049557ad52fdbfde49999e4f36d6c2",
        "f09d532a5eeda4b8c629c3d7aa207ac63c4a9070"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 19 17:25:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 17:25:26 2016 +0000"
      },
      "message": "Merge \"MIPS32: java.lang.Math.round(float)\""
    },
    {
      "commit": "85a19d8eca6ffb51cb6859a29eb5c36ac94ba648",
      "tree": "d2d2b31bcb7858b4a3766242d5b67ea514ae3786",
      "parents": [
        "6c313600e995ac81a6e68e84b64761a10fb1311c",
        "288c7a8664e516d7486ab85267050e676e84cc39"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 19 17:11:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 17:11:23 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\"\""
    },
    {
      "commit": "a741785dddab1f4b79253514287860d11c5800c6",
      "tree": "af42e90f9965d204708ee14a18e421c244854ea2",
      "parents": [
        "0d1d412c1c4075d750f527ed7317f8c55599408f",
        "fcb503cba92133b72e29ab48af1c7e92be91e609"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 18 12:50:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 18 12:50:03 2016 +0000"
      },
      "message": "Merge \"Mark concrete HIR instructions as FINAL.\""
    },
    {
      "commit": "fcb503cba92133b72e29ab48af1c7e92be91e609",
      "tree": "4a16a0f1e1b798692664bb1b347de060b3042170",
      "parents": [
        "bd274fec102dc9652b6c3b7aef2e2401d27bb15b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 18 12:48:17 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 18 12:48:17 2016 +0100"
      },
      "message": "Mark concrete HIR instructions as FINAL.\n\nThis allows the compiler to apply more optimizations.\n\nChange-Id: Ic7d8a457ea4e7d5853195cc4b56482703a1176d5\n"
    },
    {
      "commit": "da05108b17b020b28555a8d5db5caa42e4435981",
      "tree": "05b4d4d019f52c28f77e3bc0feb43c3e35d1fa01",
      "parents": [
        "bd274fec102dc9652b6c3b7aef2e2401d27bb15b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 17 16:10:20 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 17 16:31:06 2016 +0100"
      },
      "message": "Clean up String.indexOf() intrinsics.\n\nAdditional cleanup after\n    https://android-review.googlesource.com/223260\n\nBug: 28330359\nChange-Id: I88def196babec70123896ef581ec8d61bb1b9a9a\n"
    },
    {
      "commit": "288c7a8664e516d7486ab85267050e676e84cc39",
      "tree": "8c117fcb348daf29477e1eb1338de9bc3c1dc706",
      "parents": [
        "fbb0323d801cd14fb04eb4af7e88792d7cca8de3"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon May 16 11:53:15 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon May 16 13:32:43 2016 +0600"
      },
      "message": "Revert \"Revert \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\"\n\nThis reverts commit 0997d24e67d78f2146ebae2888eda0d7d254789a.\n\nART_HEAP_POISONING\u003dtrue mode is fixed.\n\nChange-Id: I83f6d5c101ea6a86802753f81b3e4348a263fb21\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "fba39972d99701c80bf3beb7451aca508d67593c",
      "tree": "0d80ecb6997290140503926b08a72e7418915526",
      "parents": [
        "718d4e269810c17d03df909c84b2f7bbd4f61fb9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 11 11:26:48 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 13 10:38:56 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\n* Add parentheses to fix warnings.\n* Use NOLINT to suppress wrong clang-tidy warnings.\n\nBug: 28705665\nChange-Id: Icc8bc9b59583dee0ea17ab83e0ff0383b8599c3e\n"
    },
    {
      "commit": "628f2017fcc64352a2297a802c10ea7100fbd74b",
      "tree": "982bf345d7b937755bd9f82ff66d139c1cce79ba",
      "parents": [
        "893a1d36aec93fabb85ea4a6d4f45019046a6b74",
        "0997d24e67d78f2146ebae2888eda0d7d254789a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 13 09:30:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 13 09:30:18 2016 +0000"
      },
      "message": "Merge \"Revert \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\""
    },
    {
      "commit": "0997d24e67d78f2146ebae2888eda0d7d254789a",
      "tree": "8b521397c856259c9049b52d86e40bfd2c84f0f4",
      "parents": [
        "afdc97ebcb4e58afb7cf54d846d30314e6499d83"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 13 09:29:01 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 13 09:29:01 2016 +0000"
      },
      "message": "Revert \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\n\nFails heap poisoning configuration.\n\nThis reverts commit afdc97ebcb4e58afb7cf54d846d30314e6499d83.\n\nChange-Id: I50e53756a2b85059b89cfb8950f8c9e2b032743c\n"
    },
    {
      "commit": "893a1d36aec93fabb85ea4a6d4f45019046a6b74",
      "tree": "8c858628f4bda1608f4fd821bba9a9c966b57665",
      "parents": [
        "812927748d9d017fdbd2d1741c37f3028f72e1de",
        "d3059e77818a058513ed92557160bdb6d5102b67"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 12 18:53:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 12 18:53:33 2016 +0000"
      },
      "message": "Merge \"Fix oatdump crash on arm64/arm code. Also adds 16 bit literal information.\""
    },
    {
      "commit": "d3059e77818a058513ed92557160bdb6d5102b67",
      "tree": "cff82528de3dd71104d9b3fa4e1a57f2c9fc81dc",
      "parents": [
        "b0fca360a081eff1a44c6f055c628e2dba44c003"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 11 10:30:47 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 12 10:01:08 2016 -0700"
      },
      "message": "Fix oatdump crash on arm64/arm code.\nAlso adds 16 bit literal information.\n\nRationale:\nWhen \"run-away\" instructions are disassembled, the literal\naddresses may go out of range, causing oatdump to crash.\nThis CL guards memory access against the full memory range\nallocated to assembly instructions and data (it is possible\nbut not really necessary to refine this a bit). Out of range\narguments are now displayed as (?) to denote the issue, which\nis a lot nicer than crashing.\n\nBUG\u003d28670871\n\nChange-Id: I51e9b6a6a99162546fe31059f14278e8980451c2\n"
    },
    {
      "commit": "4478ae4fcb3337f094815d40273ec0ba32a2d7af",
      "tree": "0ace818ca85307a33e439b42e362ed180b54178f",
      "parents": [
        "af4bcdf49e014ededa9e71e425dac761697dac8d",
        "afdc97ebcb4e58afb7cf54d846d30314e6499d83"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 12 15:28:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 12 15:28:38 2016 +0000"
      },
      "message": "Merge \"ART: Reference.getReferent intrinsic for x86 and x86_64\""
    },
    {
      "commit": "d7c2fdc939bb7efb3e7204d62e54c6a3f7d77f9b",
      "tree": "692eb754d2cf5fdb81809529f02a50f2e4747a62",
      "parents": [
        "b2b55596e605bef315b615cb89e4515f360548f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 10 14:35:34 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 12 08:58:12 2016 +0100"
      },
      "message": "Fix another case of live_in at irreducible loop entry.\n\nGVN was implicitly extending the liveness of an instruction across\nan irreducible loop.\n\nFix this problem by clearing the value set at loop entries that contain\nan irreducible loop.\n\nbug:28252896\n\n(cherry picked from commit 77ce6430af2709432b22344ed656edd8ec80581b)\n\nChange-Id: Ie0121e83b2dfe47bcd184b90a69c0194d13fce54\n"
    },
    {
      "commit": "36a94ab70d4ae1ce239022a5841abf3ffe1196e3",
      "tree": "c7f7cf4fffc082280d194117af52ebc6620f36be",
      "parents": [
        "450a6796beba9aced022e1a917390f9b910e6cb7",
        "dce016eab87302f02b0bd903dd2cd86ae512df2d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 10 14:30:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 14:30:06 2016 +0000"
      },
      "message": "Merge \"Intrinsify String.length() and String.isEmpty() as HIR.\""
    },
    {
      "commit": "c9ef168bfabd118d112a054dffe2c27d4d4db4fc",
      "tree": "ed200763fc41291a9898f00e9bbe38cedb1f0d34",
      "parents": [
        "d8cd1c83f9fe7637494f7a65807289041d2fb7d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 10 13:31:23 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 10 14:00:42 2016 +0100"
      },
      "message": "Reduce memory usage of SSA Phi elimination and make it faster.\n\nUse an ArenaBitVector instead of an ArenaSet\u003c\u003e that leaks\nits allocated memory on clear(). We were also erroneously\nusing the O(n) helper ContainsElement() for the ArenaSet\u003c\u003e\ninstead of the O(log n) ArenaSet\u003c\u003e::find() which made the\nmethods with large number of processed Phis also very slow\nto compile in addition to the enormous memory usage.\n\nBug: 28684584\nChange-Id: Idc7604e51cfae643debd0378baf828a1430ec14c\n"
    },
    {
      "commit": "d6f5b7659ef823336f50cd7aa4b9cbab681cf67f",
      "tree": "41d858603e0f288c9f6996e6029395da885ed410",
      "parents": [
        "a8d06f0a77fcacada77ec70cbcc19751b886fc44",
        "3ea5a97d27468cec846d958c38d0d706ef7ec67e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 10 08:55:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 08:55:58 2016 +0000"
      },
      "message": "Merge \"Attribute arena allocations previously marked as STL.\""
    },
    {
      "commit": "a8d06f0a77fcacada77ec70cbcc19751b886fc44",
      "tree": "c4d831111af475aa7110deeb747821dbd5d55ffd",
      "parents": [
        "cdd55c2cf61dd77f8b8c797e2bd53750f88ffff2",
        "f663e341c550d1aa6f8f587d0ae0dbf7d254ff55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 10 08:13:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 08:13:28 2016 +0000"
      },
      "message": "Merge \"Workaround invokesuper underspecified behavior.\""
    },
    {
      "commit": "cdd55c2cf61dd77f8b8c797e2bd53750f88ffff2",
      "tree": "83f5648387db0d4142efc1742bbe1dfbeb9f9970",
      "parents": [
        "50107e014b7d392ff024eeb4e00469b1e37d79f0",
        "65fef30952bb92acec7ed36f7f431d93f7ce88b3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 10 08:12:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 08:12:41 2016 +0000"
      },
      "message": "Merge \"Relax the DCHECK in load store elimination.\""
    },
    {
      "commit": "afdc97ebcb4e58afb7cf54d846d30314e6499d83",
      "tree": "bd7db3f73405d3d302f9f5021ffe2d424a7e8153",
      "parents": [
        "3b62593ba55f6bdb37ca84f64930654ff4f09464"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Thu May 05 13:42:59 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue May 10 11:35:08 2016 +0600"
      },
      "message": "ART: Reference.getReferent intrinsic for x86 and x86_64\n\nChange-Id: I7a7ac9244847dd80d9fa4e4b5ebc5bf451c628ff\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "dce016eab87302f02b0bd903dd2cd86ae512df2d",
      "tree": "3af3c0e6b9d845e611b560484882e6b438ef439a",
      "parents": [
        "a246510965fc57ec51d1b202649304535adfe9f3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 13:10:02 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 09 20:40:32 2016 +0100"
      },
      "message": "Intrinsify String.length() and String.isEmpty() as HIR.\n\nUse HArrayLength for String.length() in anticipation of\nchanging the String.charAt() to HBoundsCheck+HArrayGet to\nallow the existing BCE to seamlessly work for strings.\nUse HArrayLength+HEqual for String.isEmpty().\n\nWe previously relied on inlining but we now want to apply\nthe new intrinsics even when we do not inline, i.e. when\ncompiling debuggable (as is currently the case for boot\nimage) or when we hit inlining limits, i.e. depth, size,\nor the number of accumulated dex registers.\n\nBug: 28330359\nChange-Id: Iab9d2f6d2967bdd930a72eb461f27efe8f37c103\n"
    },
    {
      "commit": "3ea5a97d27468cec846d958c38d0d706ef7ec67e",
      "tree": "8895f0adeaff161be3a7101d7f11fa744ff739c6",
      "parents": [
        "60be30a353aa8515c72aa5240508128bb3ad9829"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 09 20:23:34 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 09 20:33:31 2016 +0100"
      },
      "message": "Attribute arena allocations previously marked as STL.\n\nBug: 28603175\nChange-Id: I488e39b23afb86f3ff5a2df16d2df59eb3adaa0f\n"
    },
    {
      "commit": "e0b2e604b968bc202910db5b8a619a93910bcc3f",
      "tree": "c17068ddaea672e8e8628bfcc8048f549f68d38a",
      "parents": [
        "b8c34eadcf1f008bb5275e84e6c794b614bbc0d9",
        "fb6c90a1d7c8333c74c09f64f7eb2f402c3ea002"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 09 14:59:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 09 14:59:20 2016 +0000"
      },
      "message": "Merge \"Improve String.indexOf() intrinsics.\""
    },
    {
      "commit": "fb6c90a1d7c8333c74c09f64f7eb2f402c3ea002",
      "tree": "2691bce9968c15b2db5357448a96ec975c04a1b6",
      "parents": [
        "af3ec0a7d3428d02492dd41ecf19bc33e6807828"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 06 15:52:12 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 06 16:44:21 2016 +0100"
      },
      "message": "Improve String.indexOf() intrinsics.\n\nIf the code point input is a char, we don\u0027t need the slow\npath. Also improve the slow-path check (if we do need it)\non arm and arm64 to avoid loading 0xffff into a register.\n\nBug: 28330359\nChange-Id: Ie6514c16126717bb0b11e3c7ab2b60eaa70fed4c\n"
    },
    {
      "commit": "5bcbdd59c066f46642f6ddf5833d58ce4170c1e0",
      "tree": "aa50b637f192f96e9a3afe562e03ebfaf13e8ccc",
      "parents": [
        "af3ec0a7d3428d02492dd41ecf19bc33e6807828",
        "ace7a000a433ce4ecf94f30adea39c01a76fa936"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 06 14:46:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 06 14:46:47 2016 +0000"
      },
      "message": "Merge \"Optimizing: LoadString may not have any side effects.\""
    },
    {
      "commit": "af3ec0a7d3428d02492dd41ecf19bc33e6807828",
      "tree": "49704c702114598e6e78203a33a38d90dd7b4fb4",
      "parents": [
        "9858f04577d2ca7400660dba9b3abe8b33bab96c",
        "3f4a522cc39f5c651e7c718196e989bc81d8c6ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 06 13:45:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 06 13:45:50 2016 +0000"
      },
      "message": "Merge \"ART: Fix dominance for irreducible loops\""
    },
    {
      "commit": "f663e341c550d1aa6f8f587d0ae0dbf7d254ff55",
      "tree": "cc919e9fb060ff73bbe5bdee8fdac6fc926a52ae",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 04 17:28:59 2016 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 06 13:53:29 2016 +0100"
      },
      "message": "Workaround invokesuper underspecified behavior.\n\nThe verifier allows invokesuper on a class unrelated\nto the referring class. However, the runtime uses the vtable of\nthe super class of the referring class to lookup the ArtMethod.\nSince the receiver has no relation to the referring class, this lead\nto either jumping to a wrong method, or \"luckily\" throw a\nNoSuchMethodError if the vtable index is out of bounds of the super\nclass of the referring class.\n\nThis changes the runtime behavior to always throw NoSuchMethodError\nwhen hitting such invokesuper.\n\nAlso, we make the verifier consistent with the runtime by treating\nsuch calls unresolved.\n\nbug\u003d27627004\n\nChange-Id: I68486501a9625f91679078c5a980b39974ddbf1c\n"
    },
    {
      "commit": "3f4a522cc39f5c651e7c718196e989bc81d8c6ef",
      "tree": "37820ae22c0e96817f6278ebe71f4588f26eab15",
      "parents": [
        "bc177b3f3461f1db013d5511344ebe52270e136f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 06 12:46:21 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 06 13:10:16 2016 +0100"
      },
      "message": "ART: Fix dominance for irreducible loops\n\nComputation of dominance was broken in the presence of irreducible\nloops because the algorithm assumed that back edges are always\ndominated by their respective headers and a fix-point iteration is\ntherefore unnecessary.\n\nThis is not true for irreducible loops, forcing us to revisit their\nloop headers and all dependent blocks. This patch adds a fix-point\niteration if a back edge not dominated by its header is found.\n\nBug: 28611485\nChange-Id: If84044e49d5b9c682949648033d2861628d7fe05\n"
    },
    {
      "commit": "5a620590e5cf6d6817693edffd661371555de88b",
      "tree": "16f93fac9b5ec42bd8574acb6535ddd1dcc9f61f",
      "parents": [
        "a69ae8ab13d07fb3b03596a9b9049b3292dd0b20"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 05 11:27:03 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 05 16:44:29 2016 +0100"
      },
      "message": "Stop populating irreducible loop at header\n\nRecent CL modified the (previously exponential) algorithm for\npopulating irreducible loops so as to not visit blocks multiple times.\nHowever, the new condition for an early exit did not take into account\nthat it is not necessary to visit predecessors of the loop header.\n\nThe algorithm remains correct but does unnecessary work.\n\nBug: 27856014\nChange-Id: If72f8be82e79838f0dd9678082a3bbaabb51e43b\n"
    },
    {
      "commit": "65fef30952bb92acec7ed36f7f431d93f7ce88b3",
      "tree": "31e893a43b6753e225f58bae4e75055faeaf2daf",
      "parents": [
        "43aa3318f9ada1d2f3b99aa6a659685a99fc9c45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 04 14:00:12 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 05 10:45:30 2016 +0100"
      },
      "message": "Relax the DCHECK in load store elimination.\n\nThe DCHECK was too strong, as we could come from a field or array\nget on null, instead of null directly.\n\nbug:27831001\n\nChange-Id: I24b6a0b3c92467aff81aaeaa22402743e9014d97\n"
    },
    {
      "commit": "a210689f1a0e7839f5b3589fd57583e6ae20ded0",
      "tree": "9b07a9a999c0fff883163b06e4eb0a92ede376fd",
      "parents": [
        "f5d1fbe2893803b22d57121ce80a7f44f484a438"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 04 14:00:55 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 04 14:40:41 2016 -0700"
      },
      "message": "Exploit NE/EQ tests on array length in BCE.\n\nBUG\u003d28585870\n\nChange-Id: I382ffaf80dfb861f66eb0bfb6508e7d946a07e14\n"
    },
    {
      "commit": "b8154f8f36e2811b2524929a7ef31cb4edab44b8",
      "tree": "b93d3da8e227888173f6605e17099a76ba56374e",
      "parents": [
        "43aa3318f9ada1d2f3b99aa6a659685a99fc9c45",
        "05b3fa02ed8ef62841a92cd96526ba3a06bf1f63"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 04 12:59:07 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 04 12:59:08 2016 +0000"
      },
      "message": "Merge \"Do not look at dead phis during SsaRedundantPhiElimination.\""
    },
    {
      "commit": "05b3fa02ed8ef62841a92cd96526ba3a06bf1f63",
      "tree": "0107006b45bdf69894a053507d600d826881fb9a",
      "parents": [
        "a6513729ae2ad0d2f9dd21d77ea6cf9ed9fa6eef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 04 12:05:56 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 04 12:47:41 2016 +0100"
      },
      "message": "Do not look at dead phis during SsaRedundantPhiElimination.\n\nOtherwise, we may replace a dead loop phi with its incoming input.\nThis broke an assumption during liveness analysis in the presence\nof irreducible loops.\n\nbug:28256552\nChange-Id: Ia9e82026555e6b7f6a2cd37df4b765cd3684079d\n"
    },
    {
      "commit": "c5818f6e388781cb52551c48b6d9bd941b66e942",
      "tree": "126184d1a314b11e135dccf0984aaade6265d562",
      "parents": [
        "fbcf46e35eea33fa11ade68a66c5773ab16ae2e2",
        "1f36f411e8f51969f0af95fa60b9809656403c0a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 04 09:34:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 04 09:34:37 2016 +0000"
      },
      "message": "Merge \"ARM64: Add new String.compareTo intrinsic.\""
    },
    {
      "commit": "40d3061ea1a2a07a1aede662318257aa0fa5fe4b",
      "tree": "4e93ff1f0b0624b1d0901f5662badefb6342a79c",
      "parents": [
        "9f45e826df313af13f5204210eebf12b2867c6b7",
        "a3ffea207c7f7a5a1a6467ba154c0c88f118aa34"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 03 20:08:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 03 20:08:10 2016 +0000"
      },
      "message": "Merge \"ARM(64): Implement the isInfinite intrinsics\""
    },
    {
      "commit": "1f36f411e8f51969f0af95fa60b9809656403c0a",
      "tree": "74518592cea0038ac518a4eac93b4315baf3c63c",
      "parents": [
        "b324635492bb7d205beddf1a86f3f7a31e905fca"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Thu Apr 21 11:13:45 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Tue May 03 12:07:41 2016 +0100"
      },
      "message": "ARM64: Add new String.compareTo intrinsic.\n\nBenchmarked on Nexus6P big, little, and all cores. The new intrinsic\nis faster than pStringCompareTo for compare lengths on [1,512], so the\nruntime call is no longer needed.\n\nChange-Id: If94bfe24d9bf4dddcca648cc0b563709fc407b34\n"
    },
    {
      "commit": "0f35e0b26d8c7738ca7b284357afa9dafb659d47",
      "tree": "b84167d8b952ab19287f9d87edbdb4272149d28f",
      "parents": [
        "fa288cff8689f882aa99696bc1c9b2e826730736",
        "1be7cbd532a41981019f1e89c8ecf404bc9af809"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 29 13:57:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 29 13:57:19 2016 +0000"
      },
      "message": "Merge \"Remove invoke after inlining.\""
    },
    {
      "commit": "1be7cbd532a41981019f1e89c8ecf404bc9af809",
      "tree": "f027ec1b2835a47abf64faff263b79772e186b35",
      "parents": [
        "945dc321df3e69bb59c834f6399d34bbfd624e5c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 29 13:56:01 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 29 13:56:01 2016 +0100"
      },
      "message": "Remove invoke after inlining.\n\nbug:28460178\nChange-Id: I0ce00667aab1e02bab9e04a4cea7ee5d278f6a71\n"
    },
    {
      "commit": "ffc87076dda9878cb2cc098149bae441d38b9268",
      "tree": "e587208d6a8e62532792add3e1ace6b4e6d73e0f",
      "parents": [
        "97cbc9206e9adc473a90650ebdb5d620f517ff04"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 20 14:22:09 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 28 16:15:04 2016 +0100"
      },
      "message": "Split profile recording from jit compilation\n\nWe still use ProfileInfo objects to record profile information. That\ngives us the flexibility to add the inline caches in the future and the\nconvenience of the already implemented GC.\n\nIf UseJIT is false and SaveProfilingInfo true, we will only record the\nProfileInfo and never launch compilation tasks.\n\nBug: 27916886\n\n(cherry picked from commit e5de54cfab5f14ba0b8ff25d8d60901c7021943f)\n\nChange-Id: I68afc181d71447895fb12346c1806e99bcab1de2\n"
    },
    {
      "commit": "da9394689b5362f699c05ba26072659d47827fee",
      "tree": "c0c524e80a9fa5c7a9b382c2a246620a33b665b6",
      "parents": [
        "387dd9b53fe01f53b0deb40311f24af019766b10",
        "07b35109c64fc449a14723b259df17806fd0b16e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 27 15:41:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 27 15:41:58 2016 +0000"
      },
      "message": "Merge \"ART: Disable back edge uses for irreducible loops\""
    },
    {
      "commit": "07b35109c64fc449a14723b259df17806fd0b16e",
      "tree": "8731b077f3df183f1f3f577ecc37df433dd01e32",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 27 15:33:22 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 27 15:33:22 2016 +0100"
      },
      "message": "ART: Disable back edge uses for irreducible loops\n\nAlgorithm adding back edge uses in liveness analysis makes assumptions\nabout the linear order which are not met in the presence of irreducible\nloops. Disable back edges uses when the graph contains them.\n\nThis partially reverts CL I63632e8819ea3644d5c6fdfea00b66128bf22c24.\n\nBug: 28252747\nBug: 27615840\nBug: 27624868\nChange-Id: I7ecdde0ed8a8831f7513b8e43cf7d84599b830a7\n"
    },
    {
      "commit": "f2cb389d1c69c8d1dd1578235bbcf6902b860462",
      "tree": "62ee3b90a73ce5b253cd7a8f8754d3e152a10c92",
      "parents": [
        "2da04e13120b656b4d0d22652d50bc143eeec348",
        "9d944d143c2065272ac3f8e1ce6688377042e295"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 27 12:47:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 27 12:47:45 2016 +0000"
      },
      "message": "Merge \"ART: Eliminate unlikely code from hot path in x86 div/rem\""
    },
    {
      "commit": "e30ee0a74f7ab723e81591e8a9c6c3be7260c08b",
      "tree": "5ec317b236ddf293f3604ea2ad2ffee44de09880",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb",
        "93a18c5d4160f632ecdb92af099574e9c7098c49"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 27 11:31:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 27 11:31:23 2016 +0000"
      },
      "message": "Merge \"Forbid HDeoptimize instructions in OSR methods.\""
    },
    {
      "commit": "93a18c5d4160f632ecdb92af099574e9c7098c49",
      "tree": "328e28e160fe894fb9487a625cbbfc4ab94c093c",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 22 13:16:14 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 27 10:18:48 2016 +0100"
      },
      "message": "Forbid HDeoptimize instructions in OSR methods.\n\nOtherwise dominated instructions will assume something that\nisn\u0027t necessarily correct if coming from the interpreter.\n\nbug:28335959\nbug:28249238\nbug:28348878\nbug:28080135\n\nChange-Id: I842bd1c6a919aff48cf6048d2ea51cf2d40f3c1d\n"
    },
    {
      "commit": "f09d532a5eeda4b8c629c3d7aa207ac63c4a9070",
      "tree": "7194c02dfbe75a1336a08b499ab94b0b590ff519",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Fri Apr 22 12:06:34 2016 -0700"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Tue Apr 26 16:51:59 2016 -0700"
      },
      "message": "MIPS32: java.lang.Math.round(float)\n\nBUG\u003d26327751\n\nChange-Id: I9ec0d600bbbbcf9e1ed07fbfc0ce9187a2ae5727\n"
    },
    {
      "commit": "5e67a6a26e12d79e7ab788d4496240ac2fc2be73",
      "tree": "e354c44970f183b7074af3bf064f9589f773b4f4",
      "parents": [
        "e6d96771a2c9934c8ba6efe1689a1d1b5c54a6f7",
        "f417ff44d1eb111854d7a213f106912b3dd9e3d4"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 26 17:04:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 26 17:04:53 2016 +0000"
      },
      "message": "Merge \"Test component type for errors too. With regression test.\""
    },
    {
      "commit": "9d944d143c2065272ac3f8e1ce6688377042e295",
      "tree": "4a4e9652c16edfc1b02d1af70a92b952a3f71f29",
      "parents": [
        "e6d96771a2c9934c8ba6efe1689a1d1b5c54a6f7"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Fri Apr 15 16:50:25 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Apr 26 18:21:35 2016 +0600"
      },
      "message": "ART: Eliminate unlikely code from hot path in x86 div/rem\n\nDivision and Remainder when numerator is zero is not\nusual case so remove the check for this case from hot path.\n\nChange-Id: Ie575af0fedb5045d4ed74292a61a8378f82d39ae\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "f417ff44d1eb111854d7a213f106912b3dd9e3d4",
      "tree": "be69b00348b8d296a5bae7dd2c17d9f9a2b8ba0e",
      "parents": [
        "dbea8b4eacb62b357bce1bc299c8442788b288a1"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 25 12:51:37 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 25 16:21:34 2016 -0700"
      },
      "message": "Test component type for errors too.\nWith regression test.\n\nRationale:\nMoved erroneous check in convenience method, so we\nput all the same logic in one place. When testing\nfor erroneous T[], check both the array type\nas well at the component type T for errors\n(it is possible T[] is not marked erroneous\neven though T is eventually).\n\nBUG\u003d28358598\n\nChange-Id: I11339a976dc83e0493a99e6bb97f3a058ca3f796\n"
    },
    {
      "commit": "2712a078c74050f787900765830f7f33d8bd75e6",
      "tree": "3ae00949f6778b8539b43ea90f64ae20a844a55a",
      "parents": [
        "dbea8b4eacb62b357bce1bc299c8442788b288a1",
        "393fdb8b4822d80bbbd6347b088e28c03a72289e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 25 17:43:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 25 17:43:47 2016 +0000"
      },
      "message": "Merge \"Make sure the referring class is in the dex cache.\""
    },
    {
      "commit": "393fdb8b4822d80bbbd6347b088e28c03a72289e",
      "tree": "134955e86b08514fb88ecd0e5a037adfbf738fd6",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 25 14:58:06 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 25 16:56:56 2016 +0000"
      },
      "message": "Make sure the referring class is in the dex cache.\n\nThe method CanAccessResolvedMethod expects the referring class\nin the dex file is already in the dex cache, which is true during AOT,\nbut not necessarilly during JIT.\n\nbug:28295348\nChange-Id: I58739903f0dff3867b920a7444f53b99ecf86e85\n"
    },
    {
      "commit": "a3ffea207c7f7a5a1a6467ba154c0c88f118aa34",
      "tree": "fd57187c92dfecfcc71ea035ef05b129c56bfa3b",
      "parents": [
        "27983255b19b633e91cf62883035b8af02b94eb0"
      ],
      "author": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Thu Apr 07 17:02:37 2016 +0100"
      },
      "committer": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Mon Apr 25 17:23:32 2016 +0100"
      },
      "message": "ARM(64): Implement the isInfinite intrinsics\n\nThe initial implementation replaced the HInvoke node in the graph\nwith several other HIRs based on the fact that the difference of\ninfinities of opposite signs is a NaN value, i.e. the nodes were\nequivalent to the expression (x - x !\u003d x - x) \u0026\u0026 (x \u003d\u003d x) (which\nperforms mostly floating-point operations). It was subsequently\nabandoned in favor of another HIR implementation using the same\nalgorithm as the current assembly code (with mostly integer\noperations), since it was faster in some simple microbenchmarks\n(isInfinite() in a loop).\n\nWhile the HIR approach had some significant advantages, such as\nbeing architecture-neutral (so all architectures supported by the\ncompiler benefitted from the changes) and potentially enabling\nfurther optimizations, it also had several limitations, the most\nimportant being that it still needed a HInvoke node, which\ndefeated its purpose. The reason is that the algorithm requires a\nraw conversion to an integer that preserves the bit representation\nof the value, which seems not to be expressible in another way -\nin particular, HTypeConversion does something entirely different.\n\nAnother major problem is that MIPS release 6 has specialized\nfloating-point classification instructions that are used in the\nintrinsic implementation, and which the compiler is unable to use\nin the general case (e.g. by recognizing a pattern in the graph),\nso the HIR approach resulted in a regression. This could be solved\nby doing architecture-specific optimizations earlier, but that\nchange is beyond the scope of this patch.\n\nThere were several other minor issues with the generated code\nsuch as left shifts not being merged into comparisons on ARM64.\nMore importantly, on ARM Double.isInfinite() resulted in a\nsequence of 14 instructions (compared to 6 in the current\nimplementation) due to the fact that a long is stored in a register\npair, so operations such as left shifts have to be done with two\ninstructions. This could be worked around by changing the HIR\nrepresentation at the cost of increased code complexity.\n\nGiven all these issues, the final decision was to implement the\nintrinsics using the standard architecture-specific approach.\n\nChange-Id: I7d575b794dce298faf09cb5f65e41794fa334f19\n"
    },
    {
      "commit": "88b891534b7b9218faa7f021e5b0768a7b519ae3",
      "tree": "71eb536865b26d91fbdb3a5bcf7e473f4af247b9",
      "parents": [
        "6583646a6b65ce16a03b41466eddd385234eb7eb",
        "bb661c0f0cb72d4bbfc2e251f6ded6949a713292"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 25 13:03:01 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 25 13:03:01 2016 +0000"
      },
      "message": "Merge \"Refactor use of __ANDROID__ macro\""
    },
    {
      "commit": "ee3e2be667df36b0f0956bbfad4455f8d39d1f5d",
      "tree": "b5e9ea8075b8a5f8f5cbd662866681ffa2375131",
      "parents": [
        "37da253e5112cc74a9c00a9778961454fd01eb54",
        "250a378d5a2152662e0fa820f2b38f794ddd3596"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 25 08:30:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 25 08:30:32 2016 +0000"
      },
      "message": "Merge \"Add flag to ArtMethod to skip compilation.\""
    },
    {
      "commit": "250a378d5a2152662e0fa820f2b38f794ddd3596",
      "tree": "51896bf755c3f7afd1e0616a9a54071bda6dccc0",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 20 16:27:53 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 25 09:29:21 2016 +0100"
      },
      "message": "Add flag to ArtMethod to skip compilation.\n\nTo ensure even the JIT will not try to compile methods with\nsoft failures a runtime_throw.\n\nbug:28293819\nbug:28313047\n\nChange-Id: Ie3fd71ded0b77de8dab1c3c825b867cb321b8873\n"
    },
    {
      "commit": "f6e6331180c16c3b2d626af3179f9aa03ae511c8",
      "tree": "13c7717871f52da5a445f932762c33ae5be6e1e0",
      "parents": [
        "c0a419e89ce7991ffc6a960a0f5a123ea04456c5",
        "7fda7854ed734c4cdc786e46fcfdaa71ec600ecf"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 22 18:26:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 22 18:26:21 2016 +0000"
      },
      "message": "Merge \"MIPS64: Implement bitCount intrinsics.\""
    },
    {
      "commit": "4f4a6c47ef269c68bc136f0805e5e99512d970b7",
      "tree": "449a665d50f98dc75f53f820581f0b0d1673426d",
      "parents": [
        "4b55b52e2dca085365157bc52626630803ce259e",
        "c120bbe26fe116d3c9d8322f44bb9e330e07f745"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 22 16:52:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 22 16:52:19 2016 +0000"
      },
      "message": "Merge \"ART: Naive NullCheck elimination in InstructionBuilder\""
    },
    {
      "commit": "c120bbe26fe116d3c9d8322f44bb9e330e07f745",
      "tree": "63e503da272d0be6d6dc243c29d4e7b184705710",
      "parents": [
        "121c8a6494f2224830ed0ca33df5af0d8c077647"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 22 16:57:00 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 22 16:57:00 2016 +0100"
      },
      "message": "ART: Naive NullCheck elimination in InstructionBuilder\n\nSave a little bit of memory by not generating trivially redundant\nHNullCheck instructions. This patch builds on the fact that the\nInstructionBuilder now directly generates SSA form and looks at the\ninput of the NullCheck. For obvious cases, such as NewInstance/Array\nor `this`, the NullCheck generation is completely avoided.\n\nBug: 28173563\nChange-Id: I1fdf3b096c7a939f7b8586c02a2a6b44dfa43443\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "7fda7854ed734c4cdc786e46fcfdaa71ec600ecf",
      "tree": "fb8580dbd8bd13f527f3c57e10885a6e280f799e",
      "parents": [
        "7424025c8566bf560815c75659f30edff7e0df41"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Thu Apr 21 16:00:36 2016 -0700"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Thu Apr 21 16:00:36 2016 -0700"
      },
      "message": "MIPS64: Implement bitCount intrinsics.\n\n- int java.lang.Integer.bitCount(int)\n- int java.lang.Long.bitCount(long)\n\nChange-Id: If2390beeb5b900e8680ead1927e0455b35f1948a\n"
    },
    {
      "commit": "2efce70e4204e1a52769c63dac43c9d4af105751",
      "tree": "d812f91e3ca3d64c42d7e0d876b4559e62616406",
      "parents": [
        "70c0f4e15797902e248e8b7aa0e013fe6d426c71",
        "7aa04a145e2e0d2949a1a1c7fd4c72d08d698587"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Apr 21 19:36:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 21 19:36:24 2016 +0000"
      },
      "message": "Merge \"X86/X86_64: Switch to locked add from mfence\""
    },
    {
      "commit": "94408d3144061bd6efc74b3d884d38169969c63f",
      "tree": "549d01e5c1514d6cc63e427c9b0bd13a648a2b39",
      "parents": [
        "0d399c71cb176b0a31d6d51f950c7c32a43668ef"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 21 14:00:15 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 21 15:43:12 2016 +0100"
      },
      "message": "ART: Address late comments on a GVN memory-saving CL\n\nAdded extra comments and removed redundant code as requested.\n\nBug: 28173563\nBug: 28287086\n\nChange-Id: If6aff68c4c30427a86a27ffba5df1ae135edd294\n"
    },
    {
      "commit": "cc857cfbe4a179dfa7935b7334f1efbb21f2ac76",
      "tree": "ba71a0603c98f09d31fa9b63d91544b8d0927ccf",
      "parents": [
        "9d7c524c9bd603b1df9e88132f7ea4d59dab44a3"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 20 14:24:12 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 21 09:23:04 2016 +0100"
      },
      "message": "Reduce memory usage in GVN\n\nImplement recycling of ValueSet data structures which the GVN\nalgorithm will not access any more.\n\nSavings depend on the shape of the graph, but can be as high as 93%.\nPeak memory usage for GSA drops from 32MB to 26MB, compile times seem\nunaffected.\n\nBug: 28173563\nBug: 28287086\n\nChange-Id: If227177449bc90ad24fa68c37b0c2615924af1ed\n"
    },
    {
      "commit": "c6b5627c25ff5653e97ccff8c5ccf6ac967b6f83",
      "tree": "8cec0d66bdd5e5a9be14bbb881eb36d09868ab39",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 18:45:25 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 19:40:35 2016 +0100"
      },
      "message": "Fix HInstruction::ReplaceInput(), allow no-op.\n\nAllow HInstruction::ReplaceInput() to be called with\na `replacement` being the same as the old input and\ndo nothing in that case.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/216923\nwhere I erroneously assumed that it never happens.\n\nAlso adhere to the standard C++ std::forward_list\u003c\u003e\nsemantics in the single-element overload of\n`IntrusiveForwardList\u003c\u003e::splice_after()`.\n\nBug: 28173563\nChange-Id: I5cea14c212b1083f90ffe6b5b53324ad663d57d8\n"
    },
    {
      "commit": "a584db5460a31198bf621cdacf5bc304a984efa4",
      "tree": "6e69fc19450495147151f326d16ca00cc3a6d81c",
      "parents": [
        "2bdf84219d96c6414b9eee210f0b634687b78a3c",
        "62977ff198deb673a6990202a2fb8b993217c57c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 14:43:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 20 14:43:55 2016 +0000"
      },
      "message": "Merge \"Fix RTP to hold mutator lock while using raw mirror pointers.\""
    },
    {
      "commit": "62977ff198deb673a6990202a2fb8b993217c57c",
      "tree": "a935f37990e67d5deb3ce238484c5d60f2c8fc41",
      "parents": [
        "ac6d660672c21a0ace14276e9c356906218b4412"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 15:06:31 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 15:20:20 2016 +0100"
      },
      "message": "Fix RTP to hold mutator lock while using raw mirror pointers.\n\nReferenceTypePropagation::RTPVisitor::SetClassAsTypeInfo()\nis taking a raw mirror::Class* parameter, so it must be\nmarked with SHARED_REQUIRES(Locks::mutator_lock_). The\nomission of this annotation allowed\n    https://android-review.googlesource.com/216926\nto compile despite using GC-unsafe raw mirror pointers in\nUpdateFieldAccessTypeInfo(). This led to test failures in\nthe debug-GC mode.\n\nChange-Id: I2a743070c642e7a611480e5d495af44f0945e43f\n"
    }
  ],
  "next": "5eda02cee993c71087e3bb18dcb3d44cba55898f"
}
