)]}'
{
  "log": [
    {
      "commit": "40a04bf64e5837fa48aceaffe970c9984c94084a",
      "tree": "27aeff3b9492b396050155734d81aba3c57ffbb7",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Dec 11 09:50:36 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:13:44 2015 +0000"
      },
      "message": "Replace rotate patterns and invokes with HRor IR.\n\nReplace constant and register version bitfield rotate patterns, and\nrotateRight/Left intrinsic invokes, with new HRor IR.\n\nWhere k is constant and r is a register, with the UShr and Shl on\neither side of a |, +, or ^, the following patterns are replaced:\n\n  x \u003e\u003e\u003e #k OP x \u003c\u003c #(reg_size - k)\n  x \u003e\u003e\u003e #k OP x \u003c\u003c #-k\n\n  x \u003e\u003e\u003e r OP x \u003c\u003c (#reg_size - r)\n  x \u003e\u003e\u003e (#reg_size - r) OP x \u003c\u003c r\n\n  x \u003e\u003e\u003e r OP x \u003c\u003c -r\n  x \u003e\u003e\u003e -r OP x \u003c\u003c r\n\nImplemented for ARM/ARM64 \u0026 X86/X86_64.\n\nTests changed to not be inlined to prevent optimization from folding\nthem out. Additional tests added for constant rotate amounts.\n\nChange-Id: I5847d104c0a0348e5792be6c5072ce5090ca2c34\n"
    },
    {
      "commit": "8993caf6571863c8e5eec0b2ce4d72f6f1793f31",
      "tree": "2428835f78491fe76e795010ee77c95e0680b842",
      "parents": [
        "e8be90a673feb573d53277f42282955cbf7f58e9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 07 10:04:40 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 08 09:36:20 2015 +0000"
      },
      "message": "ART: Enable all optimizations except LSE under try/catch\n\nDynamic BCE now updates try/catch information during basic block\nmanipulation and can be enabled. The last missing optimization is LSE.\nThis patch removes all special-casing from optimizing_compiler.cc and\nbails inside LSE instead.\n\nChange-Id: Ie0c6fde7295880ea55d35571455a617fce2b7580\n"
    },
    {
      "commit": "bf84a3d2aa29c0975b4ac0f6f983d56724b2cc57",
      "tree": "4fc7691b6b0874168e16f531818863c2edaf1dd3",
      "parents": [
        "038f4f2f4de2def9a1d59a6f1b0162b1c2200c32"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 04 14:33:02 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Dec 07 10:24:22 2015 +0000"
      },
      "message": "Annotate Boolean literals more uniformly in Optimizing\u0027s intrinsics.\n\nChange-Id: Ida40309b4bc170a18b4e5db552b77f021a7b89df\n"
    },
    {
      "commit": "038f4f2f4de2def9a1d59a6f1b0162b1c2200c32",
      "tree": "9ad3f494c236a67a44b3959e83eb60867088b584",
      "parents": [
        "5bde68ff34aeb84a1fc84734bcd31471d9a9717c",
        "b9f811968606ca73c11a476db46ab04f25efd403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Dec 07 10:19:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 07 10:19:40 2015 +0000"
      },
      "message": "Merge \"Fix art::x86::IntrinsicLocationsBuilderX86::VisitUnsafeGetLong.\""
    },
    {
      "commit": "5bde68ff34aeb84a1fc84734bcd31471d9a9717c",
      "tree": "ec3e56c3853a785ddb0310c8c13f6bd2ccaed818",
      "parents": [
        "fdacff89f5b5c276254beb5643fda5df16ba7dd3",
        "e16ce5a52da4fcbb8c6b5d1ec696863fcf113409"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Dec 05 02:08:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 05 02:08:06 2015 +0000"
      },
      "message": "Merge \"MIPS32: Bit rotation intrinsics\""
    },
    {
      "commit": "fdacff89f5b5c276254beb5643fda5df16ba7dd3",
      "tree": "b0c33ad60b447f3385cd8fefb91c6b8f995fd1f0",
      "parents": [
        "e15f6e2d262c53ae616b70024a743604f21b7c42",
        "8682960da00c013f8955985b8e9bb6c55b3f3bac"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Dec 05 02:04:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 05 02:04:14 2015 +0000"
      },
      "message": "Merge \"MIPS32: int java.lang.*.numberOfTrailingZeros\""
    },
    {
      "commit": "e15f6e2d262c53ae616b70024a743604f21b7c42",
      "tree": "965d3d6b52bd4c2563215347c2cfc12bbfffb09d",
      "parents": [
        "bf0e73604f836e3b8f7d6481e83110c3426350b6",
        "e384547851a9d9e5d89ae5bb4c16bfd7d93cc12e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Dec 05 02:02:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 05 02:02:13 2015 +0000"
      },
      "message": "Merge \"MIPS32: int java.lang.*.numberOfLeadingZeros\""
    },
    {
      "commit": "d382994228e0f3eaba26af14393546bf7027cc2b",
      "tree": "1f8b114254a4ac5efb224b7b338b16185c7496ef",
      "parents": [
        "eddbfb74ae5de6b42be9f47da386cd9507eb3e53",
        "b738d4f477a9b6f4c4f69153f9077f1559d2bca1"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Dec 04 16:40:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 04 16:40:50 2015 +0000"
      },
      "message": "Merge \"Step-wise improvement of range analysis with outer loop induction.\""
    },
    {
      "commit": "eddbfb74ae5de6b42be9f47da386cd9507eb3e53",
      "tree": "fd10450987d8c314421e3c057ab1c162f4e57f5f",
      "parents": [
        "099f2713ce4ed284c94239cc22d3a8c8d9cfe868",
        "70014c8af8d3a20c2987c308788bc86671bc39e9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 04 16:28:11 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 04 16:28:11 2015 +0000"
      },
      "message": "Merge \"MIPS32: java.lang.*.reverse\""
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "b9f811968606ca73c11a476db46ab04f25efd403",
      "tree": "e6b0cb66eea07e43077d2023c1bebc51a89993ce",
      "parents": [
        "352c36e96e05d630aa3d570e66a4d9b645a96c37"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Dec 03 19:26:40 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 04 11:15:45 2015 +0000"
      },
      "message": "Fix art::x86::IntrinsicLocationsBuilderX86::VisitUnsafeGetLong.\n\nChange-Id: I7514a882ae73db53178f9ec00191619b871b77a6\n"
    },
    {
      "commit": "b738d4f477a9b6f4c4f69153f9077f1559d2bca1",
      "tree": "53c1100c03c33039e910e0e97ca4ef73d69bb15f",
      "parents": [
        "68cebffee2f44f0345bd7be7e4cbad0f10e64082"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 03 11:23:35 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 03 16:42:17 2015 -0800"
      },
      "message": "Step-wise improvement of range analysis with outer loop induction.\n\nRationale: Using a step-wise approach (rather than expanding all ranges\n           at once) increases the opportunities for statically removing\n           bound checks, as demonstrated by the new checker tests.\n\nChange-Id: Icbfd9406523a069e1fb7508546ea94f896e5a255\n"
    },
    {
      "commit": "47229aa5848df7d45578dbdd9285f57dfa9399a8",
      "tree": "9d90b04780b632d21c6b51a7ba473bfe5605bb3d",
      "parents": [
        "b5cdc5dfdbc68aa30625a1464c6378d43bb5941d",
        "e523423a053af5cb55837f07ceae9ff2fd581712"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 14:39:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 14:39:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\""
    },
    {
      "commit": "e523423a053af5cb55837f07ceae9ff2fd581712",
      "tree": "6c2d9c570bf0d9a0e2cd056e052c0be618b03fc5",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 09:06:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 13:01:25 2015 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\n\nThis reverts commit c88ef3a10c474045a3476a02ae75d07ddd3230b7.\n\nChange-Id: I0ed88a48b313a8d28bc39fae40631123aadb13ef\n"
    },
    {
      "commit": "b5cdc5dfdbc68aa30625a1464c6378d43bb5941d",
      "tree": "2bc81aadb29c1db0f585d9bec45b07c294e30b50",
      "parents": [
        "d585b2c891fbf559cef4b4a7076183f5c7dc6a18",
        "ad543383b5883d6e32993efaefc704eff3225ffe"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Dec 02 12:10:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 12:10:26 2015 +0000"
      },
      "message": "Merge \"Clean up optimizing compiler stats\""
    },
    {
      "commit": "d585b2c891fbf559cef4b4a7076183f5c7dc6a18",
      "tree": "5f6454844565d8c84df9f38695300538ccd263c5",
      "parents": [
        "874121e35863c1b166e3bb95009f392a569521f0",
        "fe86070bcbe938a5c8dec02b5a7d5efb632deed1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 12:04:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 12:04:18 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Do not eagerly type LoopPhi [null, ...]\"\"\""
    },
    {
      "commit": "fe86070bcbe938a5c8dec02b5a7d5efb632deed1",
      "tree": "d0e146ad38e701aa36e2570530af2bbe4da8fd47",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 09:06:57 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 12:01:37 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Do not eagerly type LoopPhi [null, ...]\"\"\n\nFixes one more place where RTP expected the parent to have valid RTI.\n\nThis reverts commit 5f3fb18e9705f7d0d594f665858bff2020409c6a.\n\nBug: 25899441\nChange-Id: I65c55a81617ffb82c2de2470eda562600b10d479\n"
    },
    {
      "commit": "874121e35863c1b166e3bb95009f392a569521f0",
      "tree": "71d0358bd838cd35ec59f657b37be91877ed0ae0",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075",
        "f64242a30c6e05a8e4302a64eab4bcc28297dc9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 11:37:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 11:37:04 2015 +0000"
      },
      "message": "Merge \"Optimizing: Add checker tests for sharpening.\""
    },
    {
      "commit": "f64242a30c6e05a8e4302a64eab4bcc28297dc9e",
      "tree": "98cbceab543c81f523c5bb676e10853ddfbc9881",
      "parents": [
        "b1aa617639c01c0dffaafd1641e0304ad179b6a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 14:58:23 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 10:48:16 2015 +0000"
      },
      "message": "Optimizing: Add checker tests for sharpening.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/184116 .\n\nChange-Id: Ib03c424fb673afc5ccce15d7d072b7572b47799a\n"
    },
    {
      "commit": "08a84acc7adb1bb076595eb961bd4667896e5075",
      "tree": "0e8f440499381765c97acaf5d3027fc26a0ca0d6",
      "parents": [
        "84e174e2de721b69ff6774e8e5c0b2e859e39953",
        "5f3fb18e9705f7d0d594f665858bff2020409c6a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 09:04:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 02 09:04:08 2015 +0000"
      },
      "message": "Merge \"Revert \"ART: Do not eagerly type LoopPhi [null, ...]\"\""
    },
    {
      "commit": "5f3fb18e9705f7d0d594f665858bff2020409c6a",
      "tree": "cd23e1e0a3cea10cc9a9ae8269a01f75ada8ef0e",
      "parents": [
        "3a738bfe9784b9ea0f2fccbe75f0c72ede536641"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 09:03:44 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 02 09:03:44 2015 +0000"
      },
      "message": "Revert \"ART: Do not eagerly type LoopPhi [null, ...]\"\n\nBreaks some libcore tests. Revert to unblock others while investigating.\n\nThis reverts commit 3a738bfe9784b9ea0f2fccbe75f0c72ede536641.\n\nChange-Id: I9f103c692199b8f9b6e7af469fc424512b57544a\n"
    },
    {
      "commit": "4a34277c55279ba57ab361f7580db846a201d9b1",
      "tree": "31d775a871a351357ecd5d6c76a3a827e20e6d07",
      "parents": [
        "f4c539395244ccfc14aebaf53fdc1122287f65a6"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Nov 30 10:17:46 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Dec 01 13:26:16 2015 -0800"
      },
      "message": "Dynamic BCE (based on induction range analysis)\n\nRationale:\nA rewritten dynamic BCE that uses induction variable analysis\nto generate the run-time tests before a loop in order to\neliminate bounds-checks from its body. This CL removes now\nobsoleted induction related code inside the BCE module.\nAlso, the dynamic test generation is placed more strategically,\nsince we missed a few cases where static analysis does better.\n\nMost significant performance improvements (filtering noise) is about:\n\nLinpack +20%\nLU    \u003e +10%\n\nChange-Id: I03d7631857154b6a131b132f26a2dc568af1b3a1\n"
    },
    {
      "commit": "1cfe7fd885fc21292dfe74b554c38b07304cb10e",
      "tree": "5a809d58debfe5265bb40c2ae71f67a0532dd974",
      "parents": [
        "8b3609b4daacfd6d823fe9d9052955db2202aa0f",
        "c88ef3a10c474045a3476a02ae75d07ddd3230b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 16:28:28 2015 +0000"
      },
      "message": "Merge \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\""
    },
    {
      "commit": "c88ef3a10c474045a3476a02ae75d07ddd3230b7",
      "tree": "cd23e1e0a3cea10cc9a9ae8269a01f75ada8ef0e",
      "parents": [
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "message": "Revert \"Don\u0027t use the compiler driver for method resolution.\"\n\nFails 425 in debuggable mode.\n\nThis reverts commit 4db0bf9c4db6a09716c3388b7d2f88d534470339.\n\nChange-Id: I346df8f75674564fc4fb241c60f23e250fc7f0a7\n"
    },
    {
      "commit": "8b3609b4daacfd6d823fe9d9052955db2202aa0f",
      "tree": "6618d8c27b38e9c020ccb9e61a9449da8e3fd753",
      "parents": [
        "dd5d8bd15d9486c2d596e768436895ce884576a0",
        "3a738bfe9784b9ea0f2fccbe75f0c72ede536641"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 01 15:17:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 15:17:21 2015 +0000"
      },
      "message": "Merge \"ART: Do not eagerly type LoopPhi [null, ...]\""
    },
    {
      "commit": "3a738bfe9784b9ea0f2fccbe75f0c72ede536641",
      "tree": "2a571fcd46f0e0d7c2dfa0d1a93b6c009bfd48b9",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 30 10:38:12 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Dec 01 15:11:37 2015 +0000"
      },
      "message": "ART: Do not eagerly type LoopPhi [null, ...]\n\nReferenceTypePropagation would eagerly set the type of each loop phi\nto the type of the first input prior to beginning the fix-point\niteration. While this does make the algorithm converge faster, it\nshould not be applied when the first input is a NullConstant becuase\nthat sets the type of the phi and all dependent instructions to Object.\n\nBug: 25899441\nChange-Id: Iff1ed26a63fe4332eaf88d9ca171e287f10ba1a6\n"
    },
    {
      "commit": "753e8c43e1e68cade83e42f8111745d5c6f14f90",
      "tree": "8ed2ef769ee068f0c7620fc03b8d0b39cedee84a",
      "parents": [
        "b1aa617639c01c0dffaafd1641e0304ad179b6a2",
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:24:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 14:24:03 2015 +0000"
      },
      "message": "Merge \"Don\u0027t use the compiler driver for method resolution.\""
    },
    {
      "commit": "4db0bf9c4db6a09716c3388b7d2f88d534470339",
      "tree": "71feab1b20d4d773f881e0afc26dfcd236c177d1",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:35:04 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:23:01 2015 +0000"
      },
      "message": "Don\u0027t use the compiler driver for method resolution.\n\nThe compiler driver makes assumptions that don\u0027t hold for\nthe optimizing compiler, and will for example always go to\nslow path for an invoke-super when there\u0027s no verified method.\n\nAlso fix GenerateInvokeVirtual in the presence of intrinsics.\n\nNext change will address some of the TODOs in sharpening.cc.\n\nChange-Id: I2b0e543ee9b9bebcadb2d26de29e850c59ad58b9\n"
    },
    {
      "commit": "b1aa617639c01c0dffaafd1641e0304ad179b6a2",
      "tree": "cae80877a94ad82e3fdecb5ff32a9d99d21c6edc",
      "parents": [
        "1965328f598854bfdf2d41cea582460d11aeba48",
        "fb337ea53d1e6fe68b24217a9ea95e9f544ef697"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 14:15:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 14:15:52 2015 +0000"
      },
      "message": "Merge \"Move PC-relative addressing bases to a better position.\""
    },
    {
      "commit": "ad543383b5883d6e32993efaefc704eff3225ffe",
      "tree": "a90a46d0f6c599c16c9349c6d7eefd6b7ac6a309",
      "parents": [
        "60c4c6ad2b892bb00a6016a147b1cc089ba6bcb5"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:26:29 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 01 13:08:46 2015 +0000"
      },
      "message": "Clean up optimizing compiler stats\n\n- removed unused stats.\n- add \u0027OptStat\u0027 prefix to the names of the printed\nstats to make them `grep` friendly.\n\nChange-Id: I189e98b5226465c88c4a00247cd0b9b2ddb6d66e\n"
    },
    {
      "commit": "1965328f598854bfdf2d41cea582460d11aeba48",
      "tree": "e4a10de3e17c21d79209dc9adcd3c3f90b2df59d",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af",
        "b4536b7de576b20c74c612406c5d3132998075ef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 01 12:57:09 2015 +0000"
      },
      "message": "Merge \"Optimizing/ARM: Implement kDexCachePcRelative dispatch.\""
    },
    {
      "commit": "fb337ea53d1e6fe68b24217a9ea95e9f544ef697",
      "tree": "b1d6f4225473c613b1df7f179d0146e7d208c297",
      "parents": [
        "b4536b7de576b20c74c612406c5d3132998075ef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 25 15:25:10 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 11:38:59 2015 +0000"
      },
      "message": "Move PC-relative addressing bases to a better position.\n\nMove the platform-specific HX86ComputeBaseMethodAddress and\nHArmDexCacheArraysBase to the latest dominator of their uses\noutside any loop. This brings the base closer to the first\nuse (previously, it was in the entry block) and relieves\nsome pressure on the register allocator while avoiding\nrecalculation of the base in a loop.\n\nChange-Id: I231aa81eb5b4de9af2d0167054d06b65eb18a636\n"
    },
    {
      "commit": "b4536b7de576b20c74c612406c5d3132998075ef",
      "tree": "5265c07b51b4d79b2fd64c63d9b78d38b7601a8f",
      "parents": [
        "883ef45b5d5a2e4005914c7b339881900976b6e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 13:45:23 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 11:38:03 2015 +0000"
      },
      "message": "Optimizing/ARM: Implement kDexCachePcRelative dispatch.\n\nChange-Id: I0fe2da50a30a3f62bec8ea01688dd1fec84b1831\n"
    },
    {
      "commit": "e16ce5a52da4fcbb8c6b5d1ec696863fcf113409",
      "tree": "89730bfb9928ff70391f57ac42377be20e9e5bba",
      "parents": [
        "8682960da00c013f8955985b8e9bb6c55b3f3bac"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Nov 18 12:30:20 2015 -0800"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Mon Nov 30 17:28:28 2015 -0800"
      },
      "message": "MIPS32: Bit rotation intrinsics\n\n- int java.lang.Integer.rotateLeft(int i, int distance)\n- int java.lang.Integer.rotateRight(int i, int distance)\n- long java.lang.Long.rotateLeft(long i, int distance)\n- long java.lang.Long.rotateRight(long i, int distance)\n\nChange-Id: I7620ee12562c0dd55476a1d54e225c5e624cfb5b\n"
    },
    {
      "commit": "8682960da00c013f8955985b8e9bb6c55b3f3bac",
      "tree": "6e8df8833656d27049b63e39248ac6aed0268e1c",
      "parents": [
        "e384547851a9d9e5d89ae5bb4c16bfd7d93cc12e"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Nov 18 12:27:52 2015 -0800"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Mon Nov 30 17:27:57 2015 -0800"
      },
      "message": "MIPS32: int java.lang.*.numberOfTrailingZeros\n\n- int java.lang.Integer.numberOfTrailingZeros(int)\n- int java.lang.Long.numberOfTrailingZeros(long)\n\nChange-Id: I3392cfad40b2a9f076912f8041cd0a60b6b680ea\n"
    },
    {
      "commit": "e384547851a9d9e5d89ae5bb4c16bfd7d93cc12e",
      "tree": "41ba461c62b6a89253b59117a68beae05df5006f",
      "parents": [
        "70014c8af8d3a20c2987c308788bc86671bc39e9"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Nov 18 12:27:15 2015 -0800"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Mon Nov 30 17:27:36 2015 -0800"
      },
      "message": "MIPS32: int java.lang.*.numberOfLeadingZeros\n\n- int java.lang.Integer.numberOfLeadingZeros(int)\n- int java.lang.Long.numberOfLeadingZeros(long)\n\nChange-Id: Icaf746cb807863f944ff4ebb5da6e6b2846eac58\n"
    },
    {
      "commit": "70014c8af8d3a20c2987c308788bc86671bc39e9",
      "tree": "bff8dd184ff7d753ee77802b973ac91fc8bff86b",
      "parents": [
        "1850cb43dbddbc655a6f990a7d475587fa9d6659"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Nov 18 12:26:08 2015 -0800"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Mon Nov 30 15:04:51 2015 -0800"
      },
      "message": "MIPS32: java.lang.*.reverse\n\n- int java.lang.Integer.reverse(int)\n- long java.lang.Long.reverse(long)\n\nChange-Id: I18d0f784b9e4bffdc1bda3604f4ed7d3c57b8d68\n"
    },
    {
      "commit": "584bc170492216c6e3117eb895a6a12bcc9dcf42",
      "tree": "4f69f42234cd5b0cd9edd8d47e4b6b6b51f957e8",
      "parents": [
        "d42dd1abbeba1bc93499026484f5f44f9dde1858",
        "3fc7f357170311689c4c31007a5e168ddea321d5"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Nov 30 17:28:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 30 17:28:16 2015 +0000"
      },
      "message": "Merge \"Accept synthetic phi nodes and general names for blocks.\""
    },
    {
      "commit": "3a581b45605b77fb40654d5d331d54df429cd2bd",
      "tree": "02853c17d6bef9576dd3bcff5f5ef18e92299803",
      "parents": [
        "319362870b67f1bf19c432ff24d5bcc328e65994",
        "8626b741716390a0119ffeb88b5b9fcf08e13010"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 26 09:55:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 26 09:55:07 2015 +0000"
      },
      "message": "Merge \"ARM64: Use the shifter operands.\""
    },
    {
      "commit": "92e997d1e6fc0774c177b490619f9acdf97a5bb7",
      "tree": "93279a55e4580eb093bd2caf132a8ba335e86029",
      "parents": [
        "e8bc4ec44a855b2e4174ba3e0efd9b59c52064e4",
        "22ccc3a93d32fa6991535eaebb17daf5abaf4ebf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Nov 25 17:05:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 25 17:05:40 2015 +0000"
      },
      "message": "Merge \"ARM64 read barrier support for concurrent GC in Optimizing.\""
    },
    {
      "commit": "8626b741716390a0119ffeb88b5b9fcf08e13010",
      "tree": "28d261dbb8fa3018cba8a5d829319604508ea0a1",
      "parents": [
        "0c32fdeaeda2a1e388e280da12662d1d18c834a2"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Nov 25 16:28:08 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Nov 25 16:28:08 2015 +0000"
      },
      "message": "ARM64: Use the shifter operands.\n\nThis introduces architecture-specific instruction simplification.\nOn ARM64 we try to merge shifts and sign-extension operations into\narithmetic and logical instructions.\n\nFor example for the Java code\n\n    int res \u003d a + (b \u003c\u003c 5);\n\nwe would generate\n\n    lsl w3, w2, #5\n    add w0, w1, w3\n\nand we now generate\n\n    add w0, w1, w2, lsl #5\n\nChange-Id: Ic03bdff44a1c12e21ddff1b0513bd32a730742b7\n"
    },
    {
      "commit": "42e372e5a34d0fef88007bc5f40dd0fc7c03b58b",
      "tree": "434618ad8deec85313335b6ca63c6519639b4959",
      "parents": [
        "95f7bbcd991fbfaead438a2866354714eb32af38"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:48:56 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 17:57:26 2015 +0000"
      },
      "message": "Optimize HLoadClass when we know the class is in the cache.\n\nChange-Id: Iaa74591eed0f2eabc9ba9f9988681d9582faa320\n"
    },
    {
      "commit": "95f7bbcd991fbfaead438a2866354714eb32af38",
      "tree": "5a7f28c0ac6c2842ae3b3234b444dec329c92a37",
      "parents": [
        "b110fd6f23ea16de5d0e891a345780df03dae260",
        "d9dc6f45c3f5fb0e5d279e6c038692258b27192b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:17:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 24 15:17:08 2015 +0000"
      },
      "message": "Merge \"A few more optimizations on avoiding HClinit.\""
    },
    {
      "commit": "d9dc6f45c3f5fb0e5d279e6c038692258b27192b",
      "tree": "2df718dcf9302147d90aa7e615ecc89f20af3844",
      "parents": [
        "51a354c747c8a76a4716a49a1f70bfd975d63787"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 14:06:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:16:32 2015 +0000"
      },
      "message": "A few more optimizations on avoiding HClinit.\n\nChange-Id: I622a98b620e9d261cb654e2f5ab578bd8b3484b1\n"
    },
    {
      "commit": "73a4265ed80f842d21b3bc91bea5d7105e9d3c6f",
      "tree": "a61cc7d2b5820e10b7f5e94fd4536df5960ae237",
      "parents": [
        "22c20ef131812a6e7ff01f8c57ffe1eb0942fc39"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Fri Nov 20 17:22:57 2015 +0100"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Nov 24 15:42:17 2015 +0100"
      },
      "message": "MIPS32: Record missing implicit null checks\n\nImplicitNullChecks are recorded for HandleFieldGet and HandleFieldSet\ninstructions for longs after accessing first word.\n\nThis fixes following CTS tests:\n* dot.junit.opcodes.iget_wide.JUnit_Test_iget_wide#testE2\n* dot.junit.opcodes.iput_wide.JUnit_Test_iput_wide#testE2\n\nChange-Id: I0a93370d4a78d36805a8d5a6c304ca0329da2363\n"
    },
    {
      "commit": "22ccc3a93d32fa6991535eaebb17daf5abaf4ebf",
      "tree": "974af8f7cf41d131234eeb60dc8a7c4831f4a97f",
      "parents": [
        "51a354c747c8a76a4716a49a1f70bfd975d63787"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 13:10:05 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 13:10:05 2015 +0000"
      },
      "message": "ARM64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: Icfb74f67bf23ae80e7723ee6a0c9ff34ba325d48\n"
    },
    {
      "commit": "888d067a67640e7d9fc349b0451dfe845acad562",
      "tree": "6fdbf0027e06b2f140ec9396b8a6d650a15c4e84",
      "parents": [
        "51a354c747c8a76a4716a49a1f70bfd975d63787"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 23 18:53:50 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 11:40:13 2015 +0000"
      },
      "message": "Revamp art::CheckEntrypointTypes uses.\n\nChange-Id: I6e13e594539e766ed94524ac3282cec292ba91da\n"
    },
    {
      "commit": "51a354c747c8a76a4716a49a1f70bfd975d63787",
      "tree": "37b82929ccc42f4b1b70b94baf64dbd9fd8b4c15",
      "parents": [
        "7f8275549fd503f82ac63d65800afacab85af09d",
        "a0e87b0a97fadd54540ec7e8331b61bebd82d378"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 24 10:34:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 24 10:34:22 2015 +0000"
      },
      "message": "Merge \"MIPS64: Support short and long branches\""
    },
    {
      "commit": "4f6b0b551ee549af12fce75c8379f5137fe4cfad",
      "tree": "0d6fb6de8fb262d6a1d4b8f802b59da59362d441",
      "parents": [
        "0c32fdeaeda2a1e388e280da12662d1d18c834a2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 23 19:29:22 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 23 19:29:22 2015 +0000"
      },
      "message": "Clean up read barrier related comments in Optimizing.\n\nBug: 12687968\nChange-Id: Idf2e371e01e10d9d32c95b150735e2c96244232e\n"
    },
    {
      "commit": "67e0ad6df9db9193fb1fb7115c249a39b1be6033",
      "tree": "0009e43936a25861848d909140accf26571c8cec",
      "parents": [
        "349106d96cc56399ab594aaee0beed223ee0b8f8",
        "418318f4d50e0cfc2d54330d7623ee030d4d727d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 17:35:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 17:35:55 2015 +0000"
      },
      "message": "Merge \"ARM64: Add support for multiply-accumulate.\""
    },
    {
      "commit": "349106d96cc56399ab594aaee0beed223ee0b8f8",
      "tree": "fb98234d843cff5d44dd7c69190afb05894f7200",
      "parents": [
        "eb4955b5aaa82639802147a861cf230ca5294d46",
        "809d70f5b268227dbd59432dc038c74d8351be29"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 23 14:17:53 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 14:17:53 2015 +0000"
      },
      "message": "Merge \"ART: Fix wide stores in Optimizing\""
    },
    {
      "commit": "0d1caa5df8d99320036888600190337bbe540731",
      "tree": "efc9f1c1c52b4aca3871e7122709e83d12cd1e7d",
      "parents": [
        "6d92d59fb0acc1f9fde1d736f80e6cb1a8541da9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 13:02:22 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 14:01:55 2015 +0000"
      },
      "message": "Optimizing: Avoid a PrettyMethod() call per compiled method.\n\nPrettyMethod() is expensive so avoid it unless it\u0027s actually\nneeded.\n\nChange-Id: I06ab29cc18e426b7dfb8c53b163757c88b53c27f\n"
    },
    {
      "commit": "809d70f5b268227dbd59432dc038c74d8351be29",
      "tree": "6482a9ce5a34c04fc14d5b5db77d5daec1ec5aad",
      "parents": [
        "dde8b8694954c0268eb12a7ccbddf07d9de262fd"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 19 10:29:39 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 23 13:49:46 2015 +0000"
      },
      "message": "ART: Fix wide stores in Optimizing\n\nSsaBuilder::VisitStoreLocal did not take into account the following:\n (a) when storing a wide value, the high vreg must be invalidated,\n (b) when storing into the high vreg of a wide value, the low vreg\n     must be invalidated.\n\nBoth situations cause overestimation of liveness but only (b) has\nimplications on correctness. CodeGenerator::EmitEnvironment will skip\nthe high vreg, causing deoptimizing and try/catch to load a wrong\nvalue for that vreg.\n\nIn order to fix this bug, several changes had to be made to the\nSsaBuilder:\n (1) phis need to be initialized with a type which matches its\n     inputs\u0027 size,\n (2) eagerly created loop header phis may end up being undefined\n     because of their corresponding vregs being invalidated inside\n     the loop; these are marked dead during input setting,\n (3) the entire SSA-building algorithm should never revive an\n     undefined loop header phi.\n\nBug: 25677992\nBug: https://code.google.com/p/android/issues/detail?id\u003d194022\n\nChange-Id: Id8a852e38c3f5ff1c2e608b1aafd6d5ac8311e32\n"
    },
    {
      "commit": "6d92d59fb0acc1f9fde1d736f80e6cb1a8541da9",
      "tree": "182079e5ab2802bd85470cd4fed614432c869df1",
      "parents": [
        "f180af0fc0d0bd981dd6356848df2ba237e1a227",
        "8e1ef53e3d551f11bb424ae4f29cc1f5eabbe6bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 12:11:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 12:11:46 2015 +0000"
      },
      "message": "Merge \"Do not change to the access check entrypoint when inlined.\""
    },
    {
      "commit": "8e1ef53e3d551f11bb424ae4f29cc1f5eabbe6bc",
      "tree": "7843cb5d19223e3bf4ac0714e23ee1312b5966e6",
      "parents": [
        "dde8b8694954c0268eb12a7ccbddf07d9de262fd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 12:04:37 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 12:09:51 2015 +0000"
      },
      "message": "Do not change to the access check entrypoint when inlined.\n\nThe allocation entrypoint that deals with access checks does\nnot work with inlined methods.\n\nFixes 542-unresolved-access-check in jit mode.\n\nChange-Id: I02290a8b2089fcf06e2216dabf8089920b529765\n"
    },
    {
      "commit": "f180af0fc0d0bd981dd6356848df2ba237e1a227",
      "tree": "bea248023c5823bbb28a1864655e3afce9226400",
      "parents": [
        "97cd5bb34ca97e7e87a030b2e1acec004fd26275",
        "f9d741e32c6f1629ce70eefc68d3363fa1cfd696"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 11:20:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 11:20:35 2015 +0000"
      },
      "message": "Merge \"Optimizing/ARM: Improve long shifts by 1.\""
    },
    {
      "commit": "dde8b8694954c0268eb12a7ccbddf07d9de262fd",
      "tree": "b33d613df66bf6eb693c7a84aeb1a2ccc889a4dc",
      "parents": [
        "911542ed69dbb8bc2fc1132c71261cc741b7afb3",
        "317f9cebedc0117ce89931a1f28a82e989057c31"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:51:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 09:51:01 2015 +0000"
      },
      "message": "Merge \"Fix lint error.\""
    },
    {
      "commit": "317f9cebedc0117ce89931a1f28a82e989057c31",
      "tree": "45180e4df2aae42d8b33a6c1c50c7dcfc72ebe6f",
      "parents": [
        "2171e2ab84baa41770489d01df9197a3ce871262"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:50:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:50:18 2015 +0000"
      },
      "message": "Fix lint error.\n\nChange-Id: I29632dc7e49f7ec63040455fa40fcf87e9282e5e\n"
    },
    {
      "commit": "5c0048565e78ff53fd2b3a2e446c72ea2fffe239",
      "tree": "f75c288d909fc7b86b005e6780113273249bd9e3",
      "parents": [
        "2171e2ab84baa41770489d01df9197a3ce871262"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 23 09:44:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 23 09:44:52 2015 +0000"
      },
      "message": "ART: Fix uninitialized variable\n\nChange-Id: I906de334b3c3cb1e36eff4944457f4598b7c174f\n"
    },
    {
      "commit": "2171e2ab84baa41770489d01df9197a3ce871262",
      "tree": "26521f783e65bda8c173011641a868beeb4b1da2",
      "parents": [
        "5d78a0f808b4bf65e7f42880b39f2d0f3942cee6",
        "f652917de5634b30c974c81d35a72871915b352a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Nov 23 09:16:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 09:16:02 2015 +0000"
      },
      "message": "Merge \"Simplify boolean condition compared to 0\""
    },
    {
      "commit": "5d78a0f808b4bf65e7f42880b39f2d0f3942cee6",
      "tree": "7774838293edd5e5eda890d36940000bc965ee8c",
      "parents": [
        "01b88a2c8903954ca72067bab93471b2c6aca135",
        "e34648dec914453f7e8b6c517dd272823319cd6d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:59:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 08:59:29 2015 +0000"
      },
      "message": "Merge \"Revert \"Add stats support for existing optimizations\"\""
    },
    {
      "commit": "e34648dec914453f7e8b6c517dd272823319cd6d",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "06241b1b07fb031b7d2cf55f4b78d3444d07cc2d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:59:07 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:59:07 2015 +0000"
      },
      "message": "Revert \"Add stats support for existing optimizations\"\n\nBreaks the build. Please ensure your changes build.\n\nThis reverts commit 06241b1b07fb031b7d2cf55f4b78d3444d07cc2d.\n\nChange-Id: I68b18f99a9882719bf6654d3313531a7965b8483\n"
    },
    {
      "commit": "01b88a2c8903954ca72067bab93471b2c6aca135",
      "tree": "0dbbc998527471123a96abb3f6b568c9329b1da2",
      "parents": [
        "be0c2d91027929682fa754ae21943f52b4e111b7",
        "729645a937eb9f04a311b3c22471dcf3ebe9bcec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 08:51:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 23 08:51:44 2015 +0000"
      },
      "message": "Merge \"Explicitly add HLoadClass/HClinitCheck for HNewInstance.\""
    },
    {
      "commit": "06241b1b07fb031b7d2cf55f4b78d3444d07cc2d",
      "tree": "6ea5ce36c3b1ff575f1f1c380b9cd2c5c73c2e21",
      "parents": [
        "d83b9042d67f2a7d5ca5a1f63819c97940033336"
      ],
      "author": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Thu Sep 03 17:28:38 2015 +0200"
      },
      "committer": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Sun Nov 22 16:33:40 2015 +0100"
      },
      "message": "Add stats support for existing optimizations\n\nThis patch adds support for the --dump-stats facility with existing\noptimizations.\n\nChange-Id: I68751b119a030952a11057cb651a3c63e87e73ea\nSigned-off-by: Jean-Philippe Halimi \u003cjean-philippe.halimi@intel.com\u003e\n"
    },
    {
      "commit": "a0e87b0a97fadd54540ec7e8331b61bebd82d378",
      "tree": "c1027e65fd859cf59f295ff3a5630404e3724db3",
      "parents": [
        "d83b9042d67f2a7d5ca5a1f63819c97940033336"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Sep 24 22:57:20 2015 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Nov 21 22:18:50 2015 -0800"
      },
      "message": "MIPS64: Support short and long branches\n\nChange-Id: I618c960bd211048166d9fde78d4106bd3ca42b3a\n"
    },
    {
      "commit": "3fc7f357170311689c4c31007a5e168ddea321d5",
      "tree": "c10753139e577cd0fecf9f600228730282bb201f",
      "parents": [
        "d83b9042d67f2a7d5ca5a1f63819c97940033336"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Nov 20 22:03:03 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Nov 20 22:03:03 2015 -0800"
      },
      "message": "Accept synthetic phi nodes and general names for blocks.\n\nRationale: these changes were already approved as part of the dynamic\n           bce changes, but I am now sending them out separately.\n\nChange-Id: I3564bac9f6a0b6a89466457836ff54ad09164faf\n"
    },
    {
      "commit": "d59c70627cc42878cc30b46bd29ff497b4483b22",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "0b5849be045c5683d4a6b6b6c306abadba5f0fcc"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Nov 21 05:21:52 2015 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Sat Nov 21 05:21:52 2015 +0000"
      },
      "message": "Revert \"Dynamic BCE (based on induction range analysis)\"\n\nThis reverts commit 0b5849be045c5683d4a6b6b6c306abadba5f0fcc.\n\n\nChange-Id: Id33f5da42bbdfb1aff7e2281417c8a7aa492df05\nRationale: so close :-( but bullhead-userdebug (linux) build in git_mnc-dr-dev-plus-aosp reported a breakage with a type inconsistency (long vs int in probably the codegen of dynamic bce); no time to investigate and fix this fully before my trip, so rolling back for now\n"
    },
    {
      "commit": "0b5849be045c5683d4a6b6b6c306abadba5f0fcc",
      "tree": "87245845c05ddef6fb53ac4c3774607a89fa5db4",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Oct 19 14:59:26 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Nov 20 17:00:04 2015 -0800"
      },
      "message": "Dynamic BCE (based on induction range analysis)\n\nRationale: A rewritten dynamic BCE that uses induction variable analysis\n           to generate the run-time tests before a loop in order to\n           eliminate bounds-checks from its body. This CL removes now\n           obsoleted induction related code inside the BCE module.\n           Also, the dynamic test generation is placed more strategically,\n           since we missed a few cases where static analysis does better.\n\nMost significant performance improvements (after filtering noise) is about:\n  Linpack +20%\n  LU    \u003e +10%\n\nChange-Id: I4e7b8bab0288beff6f98a14856e3536103d32742\n"
    },
    {
      "commit": "729645a937eb9f04a311b3c22471dcf3ebe9bcec",
      "tree": "100c5d843a4d436b166d52e7a463ef6b283abc8c",
      "parents": [
        "d846a2cc45aae5b1c84b5ac51cdd37a22b8447ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 19 13:29:02 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 20 22:19:02 2015 +0000"
      },
      "message": "Explicitly add HLoadClass/HClinitCheck for HNewInstance.\n\nbug:25735083\nbug:25173758\n\nChange-Id: Ie81cfa4fa9c47cc025edb291cdedd7af209a03db\n"
    },
    {
      "commit": "e3dbda2d7c6a9bb0ca9a38f049457382247ed639",
      "tree": "d3063bdd9901aa73c6d51f230566a833b534db8d",
      "parents": [
        "bfc9d5103b7764a6863d5bd944afeb6a7e520468",
        "3f8bf65f36e14650bb6eb6876a42d9344a9d64d9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 20 21:27:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 20 21:27:59 2015 +0000"
      },
      "message": "Merge \"MIPS32: Miscellaneous bit manipulations routines:\""
    },
    {
      "commit": "f652917de5634b30c974c81d35a72871915b352a",
      "tree": "c50bcaf37c246df633d42a166334c9b6332e5394",
      "parents": [
        "60c4c6ad2b892bb00a6016a147b1cc089ba6bcb5"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Nov 17 11:16:56 2015 -0500"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 20 16:48:04 2015 +0000"
      },
      "message": "Simplify boolean condition compared to 0\n\nCaffeineMarkRR Logic has some boolean flipping which can be helped by\nsome simplification.\n\nSimplify non-FP (A COND_OP B) !\u003d 0 to A OPPOSITE_COND_OP B.\nThis is better than the original code, which would use a HBooleanNot\nafter the condition.\n\nAlso simplify non-FP (A COND_OP B) \u003d\u003d 1 to A OPPOSITE_COND_OP B.\n\nMove GetOppositeCondition to nodes.h/nodes.cc to share with Boolean\nSimplification, renaming it to InsertOppositeCondition, as it inserts\nthe new HInstruction (unless it is a constant).\n\nChange-Id: I34ded7758836e375de0d6fdba9239d2d451928d0\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "f9d741e32c6f1629ce70eefc68d3363fa1cfd696",
      "tree": "409005e5b1d01d2830c20421f8466125e110d6af",
      "parents": [
        "beb709a2607a00b5df33f0235f22ccdd876cee22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 15:08:11 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 16:18:39 2015 +0000"
      },
      "message": "Optimizing/ARM: Improve long shifts by 1.\n\nImplement long\n    Shl(x,1) as LSLS+ADC,\n    Shr(x,1) as ASR+RRX and\n    UShr(x,1) as LSR+RRX.\n\nRemove the simplification substituting Shl(x,1) with\nADD(x,x) as it interferes with some other optimizations\ninstead of helping them. And since it didn\u0027t help 64-bit\narchitectures anyway, codegen is the correct place for it.\nThis is now implemented for ARM and x86, so only mips32 can\nbe improved.\n\nChange-Id: Idd14f23292198b2260189e1497ca5411b21743b3\n"
    },
    {
      "commit": "418318f4d50e0cfc2d54330d7623ee030d4d727d",
      "tree": "46afabf57409a5208be4eebf31e1dcbf63dc8fde",
      "parents": [
        "60c4c6ad2b892bb00a6016a147b1cc089ba6bcb5"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:55:47 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:55:47 2015 +0000"
      },
      "message": "ARM64: Add support for multiply-accumulate.\n\nChange-Id: I88dc313df520480f3fd16bbabda27f9435d25368\n"
    },
    {
      "commit": "38db785600757a832423e076b3cf0af3bee942d8",
      "tree": "420b802e0e8e8e02e6bea03808ef8f7aa7850719",
      "parents": [
        "53ced034cd81f35ea9b37ca977cf6634ddaa7cf9"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:02:45 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Nov 20 15:02:45 2015 +0000"
      },
      "message": "Opt compiler: More strength reduction for multiplications.\n\nWe transform code looking like\n\n   MUL dst, src, (2^n + 1)\n\ninto\n\n   SHL tmp, src, n\n   ADD dst, src, tmp\n\nand code looking like\n\n   MUL dst, src, (2^n - 1)\n\ninto\n\n   SHL tmp, src, n\n   SUB dst, tmp, src\n\nChange-Id: Ia620ab68758caa70a01530b88cd65dd0444376d7\n"
    },
    {
      "commit": "53ced034cd81f35ea9b37ca977cf6634ddaa7cf9",
      "tree": "500a05bed0019397a59ce0fc981d6644e8ccbebb",
      "parents": [
        "beb709a2607a00b5df33f0235f22ccdd876cee22",
        "c53c0797a78a89d637e4230503cc1feb27e855a8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 10:53:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 20 10:53:56 2015 +0000"
      },
      "message": "Merge \"Clean up the special input in HInvokeStaticOrDirect.\""
    },
    {
      "commit": "33a9a16a7fe21d37125853e888634d9de0b71a98",
      "tree": "f5dbcdd61cb70f1c61c700e90264868b3dedb477",
      "parents": [
        "34053d1f5a9a3d98b5e45d395ed95ba66b518d4d",
        "b2d38fdb968c818e53a4f82ce0a513cbd3bfa299"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:46:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 17:46:50 2015 +0000"
      },
      "message": "Merge \"Allow NullConstant to be untyped in GraphVisualiser.\""
    },
    {
      "commit": "b2d38fdb968c818e53a4f82ce0a513cbd3bfa299",
      "tree": "7f605ad4cef6b95d01380d778680d9dfc217265d",
      "parents": [
        "9231730cd0e285373afd73331168b289309ebee4"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Nov 16 12:21:53 2015 -0500"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Nov 19 17:46:00 2015 +0000"
      },
      "message": "Allow NullConstant to be untyped in GraphVisualiser.\n\nThe NullConstant may be added to the graph during other passes that\nhappen between ReferenceTypePropagation and Inliner (e.g.\nInstructionSimplifier). If the inliner doesn\u0027t run or doesn\u0027t inline\nanything, the NullConstant remains untyped.\n\nThe infrastructure to properly type NullConstants everywhere is to\ncomplex to add for the benefits\n\nBug: 25786318\n\nChange-Id: I904a3e605b57f8cac9936e82f19a4994c7b1a82a\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "34053d1f5a9a3d98b5e45d395ed95ba66b518d4d",
      "tree": "81c7dcdba15b55b98e6ce5d24dbf2a347dd3eda9",
      "parents": [
        "bc58b020c85d2bb66e21184b8969215d7ea817b0",
        "972d6d7b3b36c48ead6d95fa6a2a936390b868ac"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 19 16:12:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 16:12:57 2015 +0000"
      },
      "message": "Merge \"MIPS64: Add java.lang.String.equals intrinsic.\""
    },
    {
      "commit": "c53c0797a78a89d637e4230503cc1feb27e855a8",
      "tree": "194d9215590abf283d2b278adf39462d3b704c1b",
      "parents": [
        "ee7d4a3d574d8789fb0d1860eba284ae5099f10d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 19 15:48:33 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 19 16:08:12 2015 +0000"
      },
      "message": "Clean up the special input in HInvokeStaticOrDirect.\n\nChange-Id: I4042aefbdac1a8c236d00e2e7145349a64f6486b\n"
    },
    {
      "commit": "ee7d4a3d574d8789fb0d1860eba284ae5099f10d",
      "tree": "712c75a0997922bf5a6387b181afbeb853de10ad",
      "parents": [
        "d846a2cc45aae5b1c84b5ac51cdd37a22b8447ff",
        "3b359c71f2fb784589be113206932e76807787bb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Nov 19 14:01:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 14:01:37 2015 +0000"
      },
      "message": "Merge \"ARM read barrier support for concurrent GC in Optimizing.\""
    },
    {
      "commit": "d846a2cc45aae5b1c84b5ac51cdd37a22b8447ff",
      "tree": "36347c2c6d2b89d1d6347c6c259def427b0fc2a4",
      "parents": [
        "69edd0dbce97f786f71596d696e17be0f380f405",
        "fbb184a1c6df22d9302b32b55206396c8278edcf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 19 13:12:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 19 13:12:09 2015 +0000"
      },
      "message": "Merge \"Fix ClinitCheck pruning.\""
    },
    {
      "commit": "fbb184a1c6df22d9302b32b55206396c8278edcf",
      "tree": "c1a952cec4b5c15e30728f83da0cc5ac20c0bad9",
      "parents": [
        "2f49b0a90720fe9f4cab040c376aab5f387967e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 14:47:00 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 19 11:58:41 2015 +0000"
      },
      "message": "Fix ClinitCheck pruning.\n\nMake sure we merge the ClinitCheck only with LoadClass and\nHInvokeStaticOrDirect that is a part of the very same dex\ninstruction. This fixes incorrect stack traces from class\ninitializers (wrong dex pcs).\n\nRewrite the pruning to do all the ClinitCheck merging when\nwe see the ClinitCheck, instead of merging ClinitCheck into\nLoadClass and then LoadClass into HInvokeStaticOrDirect.\nWhen we later see an HInvokeStaticOrDirect with an explicit\ncheck (i.e. not merged), we know that some other instruction\nis doing the check and the invoke doesn\u0027t need to, so we\nmark it as not requiring the check at all. (Previously it\nwould have been marked as having an implicit check.)\n\nRemove the restriction on merging with inlined invoke static\nas this is not necessary anymore. This was a workaround for\n    X.test():\n       invoke-static C.foo() [1]\n    C.foo():\n       invoke-static C.bar() [2]\nAfter inlining and GVN we have\n    X.test():\n       LoadClass C (from [1])\n       ClinitCheck C (from [1], to be merged to LoadClass)\n       InvokeStaticOrDirect C.bar() (from [2])\nand the LoadClass must not be merged into the invoke as this\nwould cause the resolution trampoline to see an inlined\nframe from the not-yet-loaded class C during the stack walk\nand try to load the class. However, we\u0027re not allowed to\nload new classes at that point, so an attempt to do so leads\nto an assertion failure. With this CL, LoadClass is not\nmerged when it comes from a different instruction, so we can\nguarantee that all inlined frames seen by the stack walk in\nthe resolution trampoline belong to already loaded classes.\n\nChange-Id: I2b8da8d4f295355dce17141f0fab2dace126684d\n"
    },
    {
      "commit": "0ff7afc79169f786785419deaa97452f82103520",
      "tree": "37827a64af4126481cac5a152e5e7cc1e2d263ea",
      "parents": [
        "b9bbbeb2b05d74cae0fe0682a26b19f5a7e68d8c"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Nov 18 15:20:37 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Nov 18 15:31:11 2015 -0800"
      },
      "message": "Fix an assert in lse.\n\nWrong assert. Just deleted it.\n\nChange-Id: I6f051609d87b2c6da081ee63f783ce99462f8a09\n"
    },
    {
      "commit": "fb8464ae5f5194dc16278e528cfcbff71498c767",
      "tree": "9361521497f31fd024f36980464d17bee7c83d52",
      "parents": [
        "9231730cd0e285373afd73331168b289309ebee4"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Nov 02 10:56:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Nov 18 13:27:16 2015 -0800"
      },
      "message": "Revert \"Revert \"Enable store elimination for singleton objects.\"\"\n\nThis reverts commit 55d02cf056f993aeafebd54e7b7c68c7a48507c9, and\nmakes the following change:\nCurrently we leverage loop side effects to decide whether heap values are\nkilled by the loop. Stores need to be kept if heap values may be killed\nby loops and the corresponding loads cannot be eliminated. Similar thing\nneed to be done for each predecessor when we merge predecessor heap values.\nTo do that, the HInstanceFieldSet instruction itself is put in the heap\nvalue array instead of the value of the store instruction. The store\ninstruction may be added to possibly_removed_stores_ first, but can later\nbe removed from possibly_removed_stores_ when it\u0027s found out that the store\nneeds to be kept due to merging/loop side effects.\n\nChange-Id: I4f7bb1960f7b47240873e00ff1adac46fc102a02\n"
    },
    {
      "commit": "3f8bf65f36e14650bb6eb6876a42d9344a9d64d9",
      "tree": "2cca6628f091f02775519b6610d1cd176ea1327b",
      "parents": [
        "f66f05ddfceaa8a2f613d3ed8316a21c95e1fbca"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Oct 28 10:08:56 2015 -0700"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Wed Nov 18 12:24:59 2015 -0800"
      },
      "message": "MIPS32: Miscellaneous bit manipulations routines:\n\n- short java.lang.Short.reverseBytes(short)\n- int java.lang.Integer.reverseBytes(int)\n- long java.lang.Long.reverseBytes(long)\n- float java.lang.Float.intBitsToFloat(int)\n- double java.lang.Double.longBitsToDouble(long)\n- int java.lang.Float.floatToRawIntBits(float)\n- long java.lang.Double.doubleToRawLongBits(double)\n\nChange-Id: Id9803349d465c28756820e90e2cbe633f3f40a44\n"
    },
    {
      "commit": "9231730cd0e285373afd73331168b289309ebee4",
      "tree": "6e0a4b2ed3560a405af758661a2fce759760bbf7",
      "parents": [
        "349baca032735e4a386b74709aa94d17f076cbce",
        "3927c8b8361336f1b16aae6eb2ed7577b20560f4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 17:09:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 18 17:09:04 2015 +0000"
      },
      "message": "Merge \"Opt compiler: Arm64 packed-switch jump tables.\""
    },
    {
      "commit": "3927c8b8361336f1b16aae6eb2ed7577b20560f4",
      "tree": "daa5ffabb2103980538200097b5fb97c5bc2193a",
      "parents": [
        "cb6638ff664e3136ccfee3cffb9307e0d43ffbc1"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@linaro.org",
        "time": "Wed Nov 18 17:46:25 2015 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 16:11:25 2015 +0000"
      },
      "message": "Opt compiler: Arm64 packed-switch jump tables.\n\nIn this patch, we set a rough threshold and only generate jump table\nwith limited number of HIRs in the graph. This is because current VIXL\ncan only handle Adr with label in the range of +/-1Mb.\n\nChange-Id: I42bff2095ec26caeacc5efc90afebe34e229b518\n"
    },
    {
      "commit": "a4d1b6438ffaa68307480e8bb40cd18842daa2f3",
      "tree": "01f1e2899b88f9c3848d45bce7aa144c360f2940",
      "parents": [
        "a7a3ba792d608535e4d53ccc3b7a89d110609f12",
        "52503d83d057c66ea50eed491290e267b80e1fd3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 18 10:41:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 18 10:41:41 2015 +0000"
      },
      "message": "Merge \"Implement common super type in reference type propagation.\""
    },
    {
      "commit": "3b359c71f2fb784589be113206932e76807787bb",
      "tree": "f50f1b98a2948668d2ffabc42ce0cd9a00cecd0c",
      "parents": [
        "a04f57badca0a9211d45eb7bde44c1d1e8f159ff"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 17 19:35:12 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 17 19:35:12 2015 +0000"
      },
      "message": "ARM read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I92e8db414d029f952c07f3d3a98069e46dfdbc2a\n"
    },
    {
      "commit": "52503d83d057c66ea50eed491290e267b80e1fd3",
      "tree": "c55872ee898f67c7982deeadfb2b2820dde4b1bb",
      "parents": [
        "617bd9255bbdb9890e9d80462d293b94ba41c1f2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 11 16:58:31 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 17 18:47:43 2015 +0000"
      },
      "message": "Implement common super type in reference type propagation.\n\nCurrently only if both types are classes.\n\nChange-Id: I06e98211ead56875a42bd17f099e319b107a50d4\n"
    },
    {
      "commit": "a04f57badca0a9211d45eb7bde44c1d1e8f159ff",
      "tree": "49a3e42024120ca21165277abff8e7dc0949376d",
      "parents": [
        "9013bb031c1c3244e70ae246437604f2c094a671",
        "6dc01748c61a7ad41d4ab701d3e27897bd39a899"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 17:40:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 17 17:40:57 2015 +0000"
      },
      "message": "Merge \"Minor fixes and cleaning of arm64 static and direct calls code.\""
    },
    {
      "commit": "0debae7bc89eb05f7a2bf7dccd223318fad7c88d",
      "tree": "3da9656dc77d271b12c1b02793e7d713ae3da790",
      "parents": [
        "991842a5273d20695dd5f35eb9a9e28c386c5b4b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 12 18:37:00 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 17 15:12:00 2015 +0000"
      },
      "message": "ART: Refactor GenerateTestAndBranch\n\nEach code generator implements a method for generating condition\nevaluation and branching to arbitrary labels. This patch refactors\nit for better clarity but also to generate fewer jumps when the true\nbranch is the fallthrough successor.\n\nThis is preliminary work for implementing HSelect.\n\nChange-Id: Iaa545a5ecbacb761c5aa241fa69140cf6eb5952f\n"
    },
    {
      "commit": "a663d67500be03df7708afc059f135d2be76ef6e",
      "tree": "5d4f6c39fccb64fe165055deee95ac831cae655f",
      "parents": [
        "a445f7afbe113186de97007891307065109a6b84",
        "617bd9255bbdb9890e9d80462d293b94ba41c1f2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 16 17:00:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 16 17:00:23 2015 +0000"
      },
      "message": "Merge \"Ignore NullConstants when computing the type for Phis.\""
    },
    {
      "commit": "0d5a281c671444bfa75d63caf1427a8c0e6e1177",
      "tree": "fd9bbe0f1c581bcc7c05bbfb2643ffe0b1fb014e",
      "parents": [
        "dd4cbcc924c8ba2a578914a4a366996693bdcd74"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 13 10:07:31 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Nov 15 12:16:41 2015 +0000"
      },
      "message": "x86/x86-64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow (new) runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I14cd6107233c326389120336f93955b28ffbb329\n"
    },
    {
      "commit": "972d6d7b3b36c48ead6d95fa6a2a936390b868ac",
      "tree": "1f3a02753cf21ee4a09c2f445d6e202e0c97df16",
      "parents": [
        "0e06a0989f4fc53e0d281a5a2cb5b5a17feaea0c"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Tue Oct 20 11:29:12 2015 -0700"
      },
      "committer": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Fri Nov 13 12:51:28 2015 -0800"
      },
      "message": "MIPS64: Add java.lang.String.equals intrinsic.\n\nChange-Id: I71e41b20ebaf7640b2c72c590455eb0be4cbc5b7\n"
    },
    {
      "commit": "6dc01748c61a7ad41d4ab701d3e27897bd39a899",
      "tree": "4c536fc4ab19c3f99b8dddfa8bafbe11deaec0d7",
      "parents": [
        "cff81076cbb4bbe3841942f14326f4401fa3c8df"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Thu Nov 12 14:44:19 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 17:58:50 2015 +0000"
      },
      "message": "Minor fixes and cleaning of arm64 static and direct calls code.\n\nFixes:\nThe proper way to avoid the MacroAssembler to generate code before or\nafter an instruction is to block the pools (usually via\n`vixl::BlockPoolsScope`). Here we can use\n`vixl::SingleEmissionCheckScope`, that checks we generate only one\ninstruction and also blocks the pools.\nIn practice the current code would have worked fine because VIXL would\nnot have generated anything after `Bl()` or `Ldr()`, but that was not\nguaranteed.\n\nCleaning:\n- `XRegisterFrom()` returns an X register. Calling `.X()` is not\n  required.\n- Since we are sure (after the previous fixes) that nothing will be\n  emitted around the instructions we care about, update the code to\n  bind labels before the instructions for simplicity.\n\nChange-Id: I42d49976721e380e66bcd7a5b345f1777009434a\n"
    },
    {
      "commit": "cff81076cbb4bbe3841942f14326f4401fa3c8df",
      "tree": "f0a85a6059ff289ccb4b6e43b2b9b3924d481a31",
      "parents": [
        "fe0ec35c68d57205bd8fe13bd195ae0b5a3ed180",
        "0f7dca4ca0be8d2f8776794d35edf8b51b5bc997"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 15:20:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 12 15:20:08 2015 +0000"
      },
      "message": "Merge \"Optimizing/X86: PC-relative dex cache array addressing.\""
    },
    {
      "commit": "fe0ec35c68d57205bd8fe13bd195ae0b5a3ed180",
      "tree": "f232d1f06a50cf79c48ccb75b7314509432a276a",
      "parents": [
        "7a2f5c9459b492bd8550e437087191e52ca6324f",
        "13c86fdd2238ef158594182b31040533e1c92965"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 11:56:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 12 11:56:22 2015 +0000"
      },
      "message": "Merge \"Optimizing: Clean up constant location handling.\""
    },
    {
      "commit": "0f7dca4ca0be8d2f8776794d35edf8b51b5bc997",
      "tree": "cb2d99a0e9b7c50eb853a64b477268baaa77c11b",
      "parents": [
        "ce0f43b97ffb5e4d14c5df6607d8efb46a5dc9d2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 02 14:36:43 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 10:43:47 2015 +0000"
      },
      "message": "Optimizing/X86: PC-relative dex cache array addressing.\n\nAdd PC-relative dex cache array addressing for X86 and use\nit for better invoke-static/-direct dispatch. Also delay\nthe initialization to the PC-relative base until needed.\n\nChange-Id: Ib8634d5edce4920cd70172fd13211809cf6948d1\n"
    },
    {
      "commit": "00580bdbbb119a354c94a9c19928c1dcbd14a8f4",
      "tree": "722017e414952bccc6933a63e28b4ed5a214f1ff",
      "parents": [
        "c4b24109473d50e4cc829be5d1e7c77fd21527f3"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Wed Nov 11 13:31:12 2015 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Wed Nov 11 16:06:29 2015 -0800"
      },
      "message": "MIPS64: fix calling conventions in LoadClass and field accesses\n\nThis fixes failures in test 529-checker-unresolved\n\nChange-Id: I6170c22059e9711b2fcc965b00d6e34edd839539\n"
    }
  ],
  "next": "d15cd44c905e055d2d60b847ba4b221edda5e119"
}
