)]}'
{
  "log": [
    {
      "commit": "dcdc85bbd569f0ee66c331b4219c19304a616214",
      "tree": "b5ab789248e279318f6c1e3f6c511703d7294476",
      "parents": [
        "48944c760b196188b968b7af81439466cf987a75"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 04 14:06:18 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 23 21:14:23 2015 -0800"
      },
      "message": "Dex2oat support for multiple oat file and image file outputs.\n\nMultiple changes to dex2oat and the runtime to support a --multi-image\noption. This generates a separate oat file and image file output for\neach dex file input.\n\nChange-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129\n"
    },
    {
      "commit": "0cf4493166ff28518c8eafa2d0463f6e817cce75",
      "tree": "6d207db3fb655bbd692f2b01fa963c603619bd0e",
      "parents": [
        "d674bf7ba2a209790cea8ef8d935480ef515c9e1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 09 14:09:59 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 23 13:19:16 2015 +0000"
      },
      "message": "Generate more stack maps during native debugging.\n\nGenerate extra stack map at the start of each java statement.\nThe stack maps are later translated to DWARF which allows\nLLDB to set breakpoints and view local variables.\n\nChange-Id: If00ab875513308e4a1399d1e12e0fe8934a6f0c3\n"
    },
    {
      "commit": "5f7b58ea1adfc0639dd605b65f59198d3763f801",
      "tree": "04556e673cdd3967cc967ff79931eab49e523956",
      "parents": [
        "1201804d1813d7db0accead9721d67c40b3de564"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 23 19:49:34 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 09:59:07 2015 +0000"
      },
      "message": "Rewrite HInstruction::Is/As\u003ctype\u003e().\n\nMake Is\u003ctype\u003e() and As\u003ctype\u003e() non-virtual for concrete\ninstruction types, relying on GetKind(), and mark GetKind()\nas PURE to improve optimization opportunities. This reduces\nthe number of relocations in libart-compiler.so\u0027s .rel.dyn\nsection by ~4K, or ~44%, and in .data.rel.ro by ~18K, or\n~65%. The file is 96KiB smaller for Nexus 5, including 8KiB\nreduction of the .text section.\n\nUnfortunately, the g++/clang++ __attribute__((pure)) is not\nstrong enough to avoid duplicated virtual calls and we would\nneed the C++ [[pure]] attribute proposed in n3744 instead.\nTo work around this deficiency, we introduce an extra\nnon-virtual indirection for GetKind(), so that the compiler\ncan optimize common expressions such as\n    instruction-\u003eIsAdd() || instruction-\u003eIsSub()\nor\n    instruction-\u003eIsAdd() \u0026\u0026 instruction-\u003eAsAdd()-\u003e...\nwhich contain two virtual calls to GetKind() after inlining.\n\nChange-Id: I83787de0671a5cb9f5b0a5f4a536cef239d5b401\n"
    },
    {
      "commit": "9865bde5d822f56c4732214c2005dfcaa41f94cf",
      "tree": "cd2eae058f4f4f13b5a82ff557b7eaaf13a1ecfb",
      "parents": [
        "115a02b737dd5f4d485b2f6c359e02988df66b83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "message": "Rename NullHandle to ScopedNullHandle\n\nThis makes it clearer that is invalid to do things like:\nHandle\u003cT\u003e h \u003d ScopedNullHandle\u003cT\u003e();\n\nBug: 26233305\nChange-Id: I6d8f54eae01ec2e901cb7043afa853ea77db79fe\n"
    },
    {
      "commit": "803cbb9c9319af10b01317abb849303fb8329fb7",
      "tree": "be2111df46daca89d711c7517570df99e68640e3",
      "parents": [
        "045d37ae20ae9481f6c967ab5db4240991ff151f"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Dec 01 12:24:36 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Dec 18 10:23:59 2015 -0800"
      },
      "message": "For LSE, further optimize stores for singleton references.\n\nLoop side effects shouldn\u0027t affect singletons whose fields are never stored into\ninside a loop.\n\nChange-Id: If3715d7b7e621bb077ef9481072a56f7fec87f2b\n"
    },
    {
      "commit": "280a65b1ea1f18ab8204a4089630a206dd2d0375",
      "tree": "31cb62a357b77204994f86afecc79c36a101e6fc",
      "parents": [
        "9d9435ff95f31c5467912a6a3eb60070cc6f4199",
        "299a93993fb8f3efbf0465cf674d80c3bcfdc66c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 17:54:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 18 17:54:01 2015 +0000"
      },
      "message": "Merge \"MIPS64: Fuse long and FP compare \u0026 condition in Optimizing.\""
    },
    {
      "commit": "ecf52dfa46addbbd5d1ee92a4bc9b7a9fd960629",
      "tree": "581d6d5071b7a0450d676eee167aeb34812240fa",
      "parents": [
        "273941131aed5248a8c75b2d3f2952a88c7ab02d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 16:58:08 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 18 13:58:22 2015 +0000"
      },
      "message": "ART: Fix bug in LSE\n\nLSE will not remove a load if the type of the heap value does not\nmatch the type of the load. This was a workaround for b/22538329 but\nbackfires for integers. For example, \u0027IntConstant 0\u0027 has type int\nbut can be retrieved from a boolean field. The corresponding store is\nremoved but not the load, loading uninitialized memory. This fixes the\nissue until the workaround is not needed any more.\n\nChange-Id: I2a47783e8d5f93104854e5216b69b6c220832c76\n"
    },
    {
      "commit": "273941131aed5248a8c75b2d3f2952a88c7ab02d",
      "tree": "55bb421dd5e9e2a9c1119e57af56f98afb712ecb",
      "parents": [
        "570a920d0a4a01e159a1be46609ff3db4aedc221",
        "391b866ce55b8e78b1f9a6b98321d837256e8d66"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 12:56:47 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 18 12:56:47 2015 +0000"
      },
      "message": "Merge \"Disable the UnsafeCASObject intrinsic with read barriers.\""
    },
    {
      "commit": "391b866ce55b8e78b1f9a6b98321d837256e8d66",
      "tree": "f420d0083300621d9059f65bbfeaf0c361961ff2",
      "parents": [
        "14c4e90f67e71430dade7d4f20920e6352be386e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 11:43:38 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 11:43:38 2015 +0000"
      },
      "message": "Disable the UnsafeCASObject intrinsic with read barriers.\n\nThe current implementations of the UnsafeCASObject\nintrinsics are missing a read barrier.  Temporarily disable\nthem when read barriers are enabled.\n\nAlso re-enable the jsr166.LinkedTransferQueueTest tests that\nwere failing on the concurrent collector configuration, as\nthe UnsafeCASObject JNI implementation now correctly\nimplements the read barrier which was missing.\n\nBug: 25883050\nBug: 26205973\nChange-Id: Iaf5d515532949662d0ac6702c9452a00aa0a23e6\n"
    },
    {
      "commit": "570a920d0a4a01e159a1be46609ff3db4aedc221",
      "tree": "d959ea022b6ef33d4c9aefef0f02756384e2769d",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036",
        "17077d888a6752a2e5f8161eee1b2c3285783d12"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Dec 17 23:28:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 23:28:06 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"X86: Use locked add rather than mfence\"\"\""
    },
    {
      "commit": "299a93993fb8f3efbf0465cf674d80c3bcfdc66c",
      "tree": "1ba8d1cd2a34091317af08cbbe5cfa3fa52e549f",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Dec 08 16:08:02 2015 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Dec 17 14:14:26 2015 -0800"
      },
      "message": "MIPS64: Fuse long and FP compare \u0026 condition in Optimizing.\n\nBug: 25559148\n\nChange-Id: I2d14ac75460a76848c71c08cffff6d7a18f5f580\n"
    },
    {
      "commit": "14c4e90f67e71430dade7d4f20920e6352be386e",
      "tree": "2d376e0d6f833bb87348faae12ad7ed3bf15b95b",
      "parents": [
        "6132a3884a912a704010f22ea2991f3d9d432af2",
        "f3e0ee27f46aa6434b900ab33f12cd3157578234"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 17 16:46:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 16:46:19 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Reduce the instructions generated by packed switch.\"\"\""
    },
    {
      "commit": "f3e0ee27f46aa6434b900ab33f12cd3157578234",
      "tree": "83d5a75bf26238ff1789569de62e4b72fb348119",
      "parents": [
        "b4c137630fd2226ad07dfd178ab15725374220f1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 17 15:23:13 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 17 15:23:13 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Reduce the instructions generated by packed switch.\"\"\n\nThis reverts commit b4c137630fd2226ad07dfd178ab15725374220f1.\n\nThe underlying issue was fixed by https://android-review.googlesource.com/188271 .\n\nBug: 26121945\nChange-Id: I58b08eb1a9f0a5c861f8cda93522af64bcf63920\n"
    },
    {
      "commit": "3e3e4a762c23c3de66436b30e9fc65f35dad344c",
      "tree": "8a039c333528790c52a080311511f36186c6ff9f",
      "parents": [
        "fb9f4ad455eced3a07bef1d4772ab1fe34ec133b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 14:28:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 14:31:05 2015 +0000"
      },
      "message": "Fix braino in parallel move resolver.\n\nReiterating over the moves needs to set i to -1, not 0.\n\nbug:26241132\n\nChange-Id: Iaae7eac5b421b0ee1b1ce89577c8b951b2d4dae8\n"
    },
    {
      "commit": "17077d888a6752a2e5f8161eee1b2c3285783d12",
      "tree": "15b869f7ed0a8273814b628cd277a6d5d779b24d",
      "parents": [
        "d16bb3f0dc17d77db7022150d0710fcbb8b6fd9d"
      ],
      "author": {
        "name": "Mark P Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Dec 16 19:15:59 2015 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Dec 16 20:17:48 2015 -0500"
      },
      "message": "Revert \"Revert \"X86: Use locked add rather than mfence\"\"\n\nThis reverts commit 0da3b9117706760e8722029f407da6d0297cc943.\n\nFix a compilation failure that slipped in somehow.\n\nChange-Id: Ide8681cdc921febb296ea47aa282cc195f154049\n"
    },
    {
      "commit": "1c70f18dce7705ff70147ddebf65a97f66df8d5c",
      "tree": "7fa76545c1b91499b86f840cdb8c53050e9c761c",
      "parents": [
        "1f312652e138e05328b9c4c738d3ecbab2d09ae9",
        "0da3b9117706760e8722029f407da6d0297cc943"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 16 19:11:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 19:11:38 2015 +0000"
      },
      "message": "Merge \"Revert \"X86: Use locked add rather than mfence\"\""
    },
    {
      "commit": "0da3b9117706760e8722029f407da6d0297cc943",
      "tree": "84ad42399e1055f3596d7df6f786d9f7b8605ee3",
      "parents": [
        "7b3e4f99b25c31048a33a08688557b133ad345ab"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 16 19:06:17 2015 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 16 19:06:17 2015 +0000"
      },
      "message": "Revert \"X86: Use locked add rather than mfence\"\n\nThis reverts commit 7b3e4f99b25c31048a33a08688557b133ad345ab.\n\nReason: build error on sdk (linux) in git_mirror-aosp-master-with-vendor , please fix first\n\nart/compiler/optimizing/code_generator_x86_64.cc:4032:7: error: use of\nundeclared identifier \u0027codegen_\u0027\n      codegen_-\u003eMemoryFence();\n\nChange-Id: I91f8542cfd944b7425d1981c35872dcdcb901e18\n"
    },
    {
      "commit": "c3ca1e6543ef5e717183c059e68ac34597be7022",
      "tree": "ee7032d33c1dc8962a767d81321a142e9f4d173d",
      "parents": [
        "9ddcbf69cfa807790e324f7f54e1931bc66d0f5c",
        "7b3e4f99b25c31048a33a08688557b133ad345ab"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 16 18:47:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 18:47:07 2015 +0000"
      },
      "message": "Merge \"X86: Use locked add rather than mfence\""
    },
    {
      "commit": "698fa975c10e244fd181e2ffb4bb67a88851e1d7",
      "tree": "104d67a406808b9952cd0b177c3aa44f2393c19d",
      "parents": [
        "cbf8af898e758cef27687c20c8cf9ac75280026d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Dec 16 17:06:47 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Dec 16 17:06:47 2015 +0000"
      },
      "message": "Remove spurious references to kEmitCompilerReadBarrier in MIPS.\n\nWe do not support read barriers on MIPS code generators yet.\n\nAlso, wrap some long lines in the MIPS64 code generator.\n\nChange-Id: Ia2755590afa60eb9c8fb547e059146ab6518372b\n"
    },
    {
      "commit": "cbf8af898e758cef27687c20c8cf9ac75280026d",
      "tree": "982a30df208013b0b3107dc5cadb169a4d76b3ab",
      "parents": [
        "1329b15f47751b764ba3162674b2bb997c2ddb90",
        "cd7b0ee296b0462961c63e51d99c9c323e2690df"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Dec 16 15:45:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 15:45:29 2015 +0000"
      },
      "message": "Merge \"MIPS32: Fuse long and FP compare \u0026 condition in Optimizing.\""
    },
    {
      "commit": "4741516396e9dbfb3afc2c1d8241a7e4e26a6302",
      "tree": "5b828a40c6a4342e4a3fbe995560df014db8fa81",
      "parents": [
        "7f3b38cc23b638ab84ac01a94e90f0456da3b688",
        "751beff19b36f777d9e3a966d754fd9cfad5d534"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Dec 16 15:21:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 15:21:25 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Introduce support for hardware simulators, starting with ARM64\"\"\""
    },
    {
      "commit": "d7d35383838c369a4a1ff5aa21e952f941718c48",
      "tree": "7d36f56c834e2b561ebc0359b9d11ad03d150cb2",
      "parents": [
        "6b75bc08e8e2e5516a23350418bacef2cf982bd9",
        "b4c137630fd2226ad07dfd178ab15725374220f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 12:31:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 12:31:14 2015 +0000"
      },
      "message": "Merge \"Revert \"ART: Reduce the instructions generated by packed switch.\"\""
    },
    {
      "commit": "b4c137630fd2226ad07dfd178ab15725374220f1",
      "tree": "6f319089980073ffb2c20d36e367a944daa525c4",
      "parents": [
        "59f054d98f519a3efa992b1c688eb97bdd8bbf55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 12:06:39 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 12:07:01 2015 +0000"
      },
      "message": "Revert \"ART: Reduce the instructions generated by packed switch.\"\n\nThis reverts commit 59f054d98f519a3efa992b1c688eb97bdd8bbf55.\n\nbug:26121945\n\nChange-Id: I8a5ad7ef1f1de8d44787c27528fa3f7f5c2e9cd3\n"
    },
    {
      "commit": "96f721dd41f81c967b187d81b6f3e1bcc2a9243c",
      "tree": "6a5f6e02d76be32ccbd5ee38a811785b62ccbe53",
      "parents": [
        "b059c8a044ed3ede1a0eea4b1e92008ced90c013",
        "dce90b9198d523488b8f9a04dfb3834311ff3554"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 09:34:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 09:34:39 2015 +0000"
      },
      "message": "Merge \"Revert \"ART: Set RTI of Arm64IntermediateAddress\"\""
    },
    {
      "commit": "dce90b9198d523488b8f9a04dfb3834311ff3554",
      "tree": "9f4e4ffb5fae25c4f14059fd1d772726e9d96170",
      "parents": [
        "e36ae9435da21542891ceeebb3328f5066c8301e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 09:34:21 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 16 09:34:21 2015 +0000"
      },
      "message": "Revert \"ART: Set RTI of Arm64IntermediateAddress\"\n\nThis reverts commit e36ae9435da21542891ceeebb3328f5066c8301e.\n\nChange-Id: If675b02db04bee78cc95da4ed58e545da5085da1\n"
    },
    {
      "commit": "68289a531484d26214e09f1eadd9833531a3bc3c",
      "tree": "6f87852b9d14e479ea2c7ef92de35c3118a0fd1e",
      "parents": [
        "bc90a0538e56f98b8e138cb622e6b9d834244ad9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:30:30 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 17:40:08 2015 -0800"
      },
      "message": "Revert \"ART: Refactor SsaBuilder for more precise typing info\"\n\nThis reverts commit d9510dfc32349eeb4f2145c801f7ba1d5bccfb12.\n\nBug: 26208284\n\nBug: 24252151\nBug: 24252100\nBug: 22538329\nBug: 25786318\n\nChange-Id: I5f491becdf076ff51d437d490405ec4e1586c010\n"
    },
    {
      "commit": "cd7b0ee296b0462961c63e51d99c9c323e2690df",
      "tree": "57a9071635389e58a8912d98b99d7e114c1efcc6",
      "parents": [
        "0bbc1727c446ee5f4cc3c28e68127164ef379594"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Dec 03 16:46:38 2015 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Dec 15 14:29:48 2015 -0800"
      },
      "message": "MIPS32: Fuse long and FP compare \u0026 condition in Optimizing.\n\nThis also does a minor clean-up in the assembler and\nits test.\n\nBug: 25559148\nChange-Id: I9bad3c500b592a09013b56745f70752eb284a842\n"
    },
    {
      "commit": "7b3e4f99b25c31048a33a08688557b133ad345ab",
      "tree": "446ce2d9b4684120c35fad9c097ea2f760f0797c",
      "parents": [
        "089ff4886aa9b5e7cec04d2ef5cdeb9d68e5dc43"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Nov 19 14:08:40 2015 -0500"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Dec 15 15:48:39 2015 -0500"
      },
      "message": "X86: Use locked add rather than mfence\n\nJava semantics for memory ordering can be satisfied using\n  lock addl $0,0(SP)\nrather than mfence.  The locked add synchronizes the memory caches, but\ndoesn\u0027t affect device memory.\n\nTiming on a micro benchmark with a mfence or lock add $0,0(sp) in a loop\nwith 600000000 iterations:\ntime ./mfence\nreal    0m5.411s\nuser    0m5.408s\nsys     0m0.000s\n\ntime ./locked_add\nreal    0m3.552s\nuser    0m3.550s\nsys     0m0.000s\n\nImplement this as an instruction-set-feature lock_add.  This is off by\ndefault (uses mfence), and enabled for atom \u0026 silvermont variants.\nGeneration of mfence can be forced by a parameter to MemoryFence.\n\nChange-Id: I5cb4fded61f4cbbd7b7db42a1b6902e43e458911\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "7d57d7f2f0328241ff07c43a93edadbc1a6697c6",
      "tree": "4a53eb14db06af2e8fc84bbebd48a462e868bfd4",
      "parents": [
        "7d5a577c1f256a7703361afb071dcd4ecc7d275f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Dec 09 14:39:48 2015 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Dec 15 11:56:35 2015 -0800"
      },
      "message": "Various induction/range analysis improvements.\n\nRationale: this change list improves analysis of triangular loops\n           both by changing loop order for induction analysis\n           (enabling range analysis in inner loops) and by\n           some symbolic improvements during range analysis;\n           also, a mul/div bug has been fixed (with pass/fail\n           unit tests); lastly this change list prepares some\n           follow up optimizations.\n\nChange-Id: I84a03e848405009541c3fa8e3d3c2f430e100087\n"
    },
    {
      "commit": "1e7f8db01a929ac816ca122868edc067c3c6cd17",
      "tree": "1ac7e8a555eb22b0c716c72bf0c3bee29a12b752",
      "parents": [
        "7c1559a06041c9c299d5ab514d54b2102f204a84"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 10:54:19 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 11:45:56 2015 +0000"
      },
      "message": "x86-64 Baker\u0027s read barrier fast path implementation.\n\nIntroduce an x86-64 fast path implementation in Optimizing\nfor Baker\u0027s read barriers (for both heap reference loads and\nGC root loads).  The marking phase of the read barrier is\nperformed by a slow path, invoking the runtime entry point\nartReadBarrierMark.\n\nOther read barrier algorithms continue to use the original\nslow path based implementation, which has been renamed as\nGenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.\n\nBug: 12687968\nChange-Id: I9329293ddca7f9bcb512132bde6675aa202b98b2\n"
    },
    {
      "commit": "7c1559a06041c9c299d5ab514d54b2102f204a84",
      "tree": "c50b54bf82f457f44dbf0741947d836749d4a96a",
      "parents": [
        "7cd230c8f74a227ea04f1dd93c8d855aa81fc1fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 10:55:36 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Dec 15 11:45:56 2015 +0000"
      },
      "message": "x86 Baker\u0027s read barrier fast path implementation.\n\nIntroduce an x86 fast path implementation in Optimizing for\nBaker\u0027s read barriers (for both heap reference loads and GC\nroot loads).  The marking phase of the read barrier is\nperformed by a slow path, invoking a new runtime entry point\n(artReadBarrierMark).\n\nOther read barrier algorithms continue to use the original\nslow path based implementation, which has been renamed as\nGenerateReadBarrierSlow/GenerateReadBarrierForRootSlow.\n\nBug: 12687968\nChange-Id: Ie610c4befc19ff22378a8cba38b422dcacb54320\n"
    },
    {
      "commit": "e36ae9435da21542891ceeebb3328f5066c8301e",
      "tree": "11b827c7638935b9199b5325ba0c85867d98f115",
      "parents": [
        "795accfff05abfb69f54003ee3f096ef3ff6f1e4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 14:25:44 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 14:25:44 2015 +0000"
      },
      "message": "ART: Set RTI of Arm64IntermediateAddress\n\nFixes the arm64 build after I7a3aee1ff66c82d64b4846611c547af17e91d260.\n\nChange-Id: Ic2c72df59e0ddbdf2edc8519a6954d078a5ef596\n"
    },
    {
      "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"
    }
  ],
  "next": "51a354c747c8a76a4716a49a1f70bfd975d63787"
}
