)]}'
{
  "log": [
    {
      "commit": "d9510dfc32349eeb4f2145c801f7ba1d5bccfb12",
      "tree": "9f4e4ffb5fae25c4f14059fd1d772726e9d96170",
      "parents": [
        "ceec5a3c81925cf80a18954b2e585316450c575c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 04 23:30:22 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 13:03:19 2015 +0000"
      },
      "message": "ART: Refactor SsaBuilder for more precise typing info\n\nThis patch refactors the SsaBuilder to do the following:\n\n1) All phis are constructed live and marked dead if not used or proved\nto be conflicting.\n\n2) Primitive type propagation, now not a separate pass, identifies\nconflicting types and marks corresponding phis dead.\n\n3) When compiling --debuggable, DeadPhiHandling used to revive phis\nwhich had only environmental uses but did not attempt to resolve\nconflicts. This pass was removed as obsolete and is now superseded\nby primitive type propagation (identifying conflicting phis) and\nSsaDeadPhiEliminiation (keeping phis live if debuggable + env use).\n\n4) Resolving conflicts requires correct primitive type information\non all instructions. This was not the case for ArrayGet instructions\nwhich can have ambiguous types in the bytecode. To this end,\nSsaBuilder now runs reference type propagation and types ArrayGets\nfrom the type of the input array.\n\n5) With RTP being run inside the SsaBuilder, it is not necessary to\nrun it as a separate optimization pass. Optimizations can now assume\nthat all instructions of type kPrimNot have reference type info after\nSsaBuilder (with the exception of NullConstant).\n\n6) Graph now contains a reference type to be assigned to NullConstant.\nAll reference type instructions therefore have RTI, as now enforced\nby the SsaChecker.\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I7a3aee1ff66c82d64b4846611c547af17e91d260\n"
    },
    {
      "commit": "351dddf4025f07477161209e374741f089d97cb4",
      "tree": "d35406fe1e975369acf8f103d0ad5e0cf2313431",
      "parents": [
        "58dcb021c3bd45718d0103844f4e6d55754e6501"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:34:46 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:54:42 2015 +0000"
      },
      "message": "Optimizing: Clean up after HRor.\n\nChange-Id: I96bd7fa2e8bdccb87a3380d063dad0dd57fed9d7\n"
    },
    {
      "commit": "58dcb021c3bd45718d0103844f4e6d55754e6501",
      "tree": "b5ca917081eff52a98331b1234335069ead8bede",
      "parents": [
        "66278646b5b332142d1474703ac7d945dfbf7c78",
        "40a04bf64e5837fa48aceaffe970c9984c94084a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 16:14:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 16:14:56 2015 +0000"
      },
      "message": "Merge \"Replace rotate patterns and invokes with HRor IR.\""
    },
    {
      "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": "bf479be3a9b25b2126d2c73a3267f18ee52811fb",
      "tree": "b6cb4205b3c6065029085132125bf6e935d1f7a2",
      "parents": [
        "376cbcc5163b3bb80811b9af6b67b6f8719db9f2",
        "917d01680714b2295f109f8fea0aa06764a30b70"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 11 09:32:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 09:32:54 2015 +0000"
      },
      "message": "Merge \"Don\u0027t generate a slow path for strings in the dex cache.\""
    },
    {
      "commit": "376cbcc5163b3bb80811b9af6b67b6f8719db9f2",
      "tree": "e7d9780e67772221de3063b48dc0972eed31aa7d",
      "parents": [
        "b4cc884dfe5bb9c1a36bdfbf6a0dfa183d8d321c",
        "a4f1220c1518074db18ca1044e9201492975750b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 11 09:31:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 09:31:08 2015 +0000"
      },
      "message": "Merge \"Optimizing: Add direct calls to math intrinsics\""
    },
    {
      "commit": "8ab1d645dfbc84e4b19c0db5e3a0d3081924dc0f",
      "tree": "bcbdf43935238eeeff308919105891c1aa3f1ef5",
      "parents": [
        "840d22928c09bf373c8f559171fdba3f7448345e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 03 14:11:15 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 10 16:38:35 2015 -0800"
      },
      "message": "For LSE, add a few non-aliasing cases due to pre-existence.\n\nCreate reference info for a few instructions that can return a reference.\nSo they will be treated as not-aliasing with future allocations.\n\nChange-Id: Ided3db790b95f8d6f1468bbf4b7f3e6d71d81eb2\n"
    },
    {
      "commit": "a4f1220c1518074db18ca1044e9201492975750b",
      "tree": "796f0dcd733ad5ffd7d8310af871f3e2c22ee0be",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Aug 06 15:23:34 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Dec 10 13:23:49 2015 -0500"
      },
      "message": "Optimizing: Add direct calls to math intrinsics\n\nSupport the double forms of:\n  cos, sin, acos, asin, atan, atan2, cbrt, cosh, exp, expm1,\n  hypot, log, log10, nextAfter, sinh, tan, tanh\n\nAdd these entries to the vector addressed off the thread pointer. Call\nthe libc routines directly, which means that we have to implement the\nnative ABI, not the ART one. For x86_64, that includes saving XMM12-15\nas the native ABI considers them caller-save, while the ART ABI\nconsiders them callee-save.  We save them by marking them as used by the\ncall to the math function.  For x86, this is not an issue, as all the XMM\nregisters are caller-save.\n\nOther architectures will call Java as before until they are ready to\nimplement the new intrinsics.\n\nBump the OAT version since we are incompatible with old boot.oat files.\n\nChange-Id: Ic6332c3555c09393a17d1ad4daf62932488722fb\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "917d01680714b2295f109f8fea0aa06764a30b70",
      "tree": "1da1b936fcc2318dced0d0aa9d2f987af1a05169",
      "parents": [
        "d48015603a54b820d287d92709825765159615f0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 18:25:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 16:48:06 2015 +0000"
      },
      "message": "Don\u0027t generate a slow path for strings in the dex cache.\n\nChange-Id: I1d258f1a89bf0ec7c7ddd134be9215d480f0b09a\n"
    },
    {
      "commit": "f71b3ade9c99ce2fec2f5049ce9c5968721e1b81",
      "tree": "fcda284846a6a468e39aec2783812d2d1129a35e",
      "parents": [
        "d48015603a54b820d287d92709825765159615f0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 15:05:08 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 16:18:54 2015 +0000"
      },
      "message": "Get source mapping table from stack maps.\n\nStack maps contain pc to dex mapping.\nReuse them instead of maintaining separate map.\n\nChange-Id: Iaaec9a6bd2603eace1dfc8f4344087883d88cce3\n"
    },
    {
      "commit": "d48015603a54b820d287d92709825765159615f0",
      "tree": "4ea80442ced4a81676cd6a68c33bc641a8494497",
      "parents": [
        "4a34064d9ca437c5168d7c00c456155ea8339dec",
        "41844e5071b2540d7b974ba09859170af2720776"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 15:40:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 10 15:40:55 2015 +0000"
      },
      "message": "Merge \"Fix braino when resolving an invoke-super.\""
    },
    {
      "commit": "41844e5071b2540d7b974ba09859170af2720776",
      "tree": "2bb63772ce8b223ead4d8b496ce0a192e41aab42",
      "parents": [
        "70a33905e90c655cb17303b238bace2a2f4d5bf9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 15:06:15 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 15:38:48 2015 +0000"
      },
      "message": "Fix braino when resolving an invoke-super.\n\nWe should check the actual_method, and not the resolved_method,\non whether it is in the same dex file.\n\nbug:26022686\n\nChange-Id: I8a9b0c68e162015e0aec397545d0607482949967\n"
    },
    {
      "commit": "4a34064d9ca437c5168d7c00c456155ea8339dec",
      "tree": "7f34804138b0978b210450f1f36a4f68f960e95b",
      "parents": [
        "a10a0750cf8a916080067997eedfb80c03d74b51",
        "04ff4e8463ac68752638d305eeb84b457fd8289c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 10 15:12:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 10 15:12:19 2015 +0000"
      },
      "message": "Merge \"ART: Fix bug in DCE not removing phis from catch phi uses\""
    },
    {
      "commit": "04ff4e8463ac68752638d305eeb84b457fd8289c",
      "tree": "109240fb049a9713af5a6de9a6668b61929c2b2b",
      "parents": [
        "70a33905e90c655cb17303b238bace2a2f4d5bf9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 10 13:54:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Dec 10 15:11:25 2015 +0000"
      },
      "message": "ART: Fix bug in DCE not removing phis from catch phi uses\n\nDue to the missing edges between throwing instructions and catch phis\nDCE needs to manually remove dead instructions from catch phi users,\nbeing overly conservative if the inputs are not in the dead blocks.\nDCE used to do this for normal instructions, but it needs to do the\nsame for phis.\n\nChange-Id: I7edfcb84ec6ff7303945d5d5cd436b1d1e95df2a\n"
    },
    {
      "commit": "6d0aefdc1f536e093305e29770cf749acb3247e2",
      "tree": "74964d04d6bb0b7a3210b8e414516375cb3fb189",
      "parents": [
        "6247556fb980c5122fc2dd5c431c2b2c0281606d",
        "7e99e054d023af878d6632bc8c8ba07357ded294"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 10:54:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 10 10:54:24 2015 +0000"
      },
      "message": "Merge \"MIPS32: Improve integer division by constants\""
    },
    {
      "commit": "f1975e432859101bf8e7b0fd33f6052cafb0f9b2",
      "tree": "bad5813c2abd5c3a9c302767290f9b1b9360b707",
      "parents": [
        "7cbd95c2fb7ca3d1391ec92d1be2d81863e63dd2",
        "4b467ed97bc5886fb800209c0ee94df10163b88d"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Dec 09 20:35:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 09 20:35:32 2015 +0000"
      },
      "message": "Merge \"Simplify and rename IsLoopInvariant() test.\""
    },
    {
      "commit": "2c1164c2aea94e4dfc5bf21785557240c832bcd2",
      "tree": "34a2693a4642071cd53a619323a824f37e232d5c",
      "parents": [
        "976af0a2914f20b65830b1ed9ac8ab45055f35a5",
        "59f054d98f519a3efa992b1c688eb97bdd8bbf55"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 15:53:42 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 09 15:53:42 2015 +0000"
      },
      "message": "Merge \"ART: Reduce the instructions generated by packed switch.\""
    },
    {
      "commit": "4b467ed97bc5886fb800209c0ee94df10163b88d",
      "tree": "13b2d0b144c65e91243f3aa50ce9514276e52c64",
      "parents": [
        "eb5ddd7b02ce2d25d4f28f85a13aac628526e1c1"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Nov 19 17:04:22 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Dec 08 17:02:15 2015 -0800"
      },
      "message": "Simplify and rename IsLoopInvariant() test.\n\nSimplify IsLoopInvariant() test. Also rename it to IsDefinedOutOfTheLoop()\nso there is no ambiguity for example whether a instruction after the loop counts\nas a loop invariant. It\u0027s up to the caller to make the interpretation.\n\nChange-Id: I999139032b0e4d815dd1e2276f2bd428cf558686\n"
    },
    {
      "commit": "eb5ddd7b02ce2d25d4f28f85a13aac628526e1c1",
      "tree": "8f655b382e73222e70e30daaeedc3999014aa7ae",
      "parents": [
        "2433d4e17c3006b8262a0d9421e201fc84777208",
        "dae24142127c64551142a50423085aabdb0a6060"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 08 22:33:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 08 22:33:23 2015 +0000"
      },
      "message": "Merge \"ART: Check invoke-interface earlier in verifier\""
    },
    {
      "commit": "59f054d98f519a3efa992b1c688eb97bdd8bbf55",
      "tree": "83d5a75bf26238ff1789569de62e4b72fb348119",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@linaro.org",
        "time": "Mon Dec 07 17:17:03 2015 +0800"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Dec 08 13:14:10 2015 -0500"
      },
      "message": "ART: Reduce the instructions generated by packed switch.\n\nImplement Vladimir Marko\u0027s suggestion. The new compare/jump series\nreduce the number of instructions from (2*n+1) to (1.5*n+3).\n\nGenerate normal compare/jump series when numEntries \u003c\u003d 3.\nGenerate optimal compare/jump series when numEntries \u003c\u003d threshold.\nGenerate jump tables otherwise.\n\nChange-Id: I425547b6787057c7fa84e71f17c145b63b208633\n"
    },
    {
      "commit": "dae24142127c64551142a50423085aabdb0a6060",
      "tree": "35c06bc37e2dd2caad4fef1fba4de16a12aad6f9",
      "parents": [
        "ef45113d01c16102538a8848d6979e772dad6225"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 08 08:50:12 2015 -0800"
      },
      "message": "ART: Check invoke-interface earlier in verifier\n\nInvoke-interface should only be called on an interface method.\nMove the check earlier, as otherwise we\u0027ll try to resolve and\npotentially inject a method into the dex cache.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: Ica27158f675b5aa223d9229248189612f4706832\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": "7e99e054d023af878d6632bc8c8ba07357ded294",
      "tree": "2c2615326f71612631c3488e0eea7e5e5636fc91",
      "parents": [
        "883ef45b5d5a2e4005914c7b339881900976b6e7"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Nov 24 19:28:01 2015 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Nov 24 19:28:01 2015 -0800"
      },
      "message": "MIPS32: Improve integer division by constants\n\nChange-Id: I2d1e84e84bdf8d3007cde7c51611ec893a0e9527\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"
    }
  ],
  "next": "ee7d4a3d574d8789fb0d1860eba284ae5099f10d"
}
