)]}'
{
  "log": [
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "46637e6ad75751fa1db283aee160342dc7e2fd0f",
      "tree": "0211c79512e5f876194963d1734140d9d023e79c",
      "parents": [
        "d36fcc612036009d609795ad0b5b07a7aa980692",
        "73cf0fb75de2a449ce4fe329b5f1fb42eef1372f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 01 10:58:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 01 10:58:32 2015 +0000"
      },
      "message": "Merge \"ART: Add 16-bit Thumb2 ROR, NEGS and CMP for high registers.\""
    },
    {
      "commit": "73cf0fb75de2a449ce4fe329b5f1fb42eef1372f",
      "tree": "d5b0957414c355254babfcd1a797ce87a0eb85a2",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 30 15:07:22 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 01 10:10:37 2015 +0100"
      },
      "message": "ART: Add 16-bit Thumb2 ROR, NEGS and CMP for high registers.\n\nAlso clean up the usage of set_cc flag. Define a SetCc\nenumeration that specifies whether to set or keep condition\ncodes or whether we don\u0027t care and a 16-bit instruction\nshould be selected if one exists.\n\nThis reduces the size of Nexus 5 boot.oat by 44KiB (when\ncompiled with Optimizing which is not the default yet).\n\nChange-Id: I047072dc197ea678bf2019c01bcb28943fa9b604\n"
    },
    {
      "commit": "f92d753fe3c43f7988d031c7c7e2c9a399f18103",
      "tree": "4a73e35ad6d53836282d5c03eb8b466f2023f8d8",
      "parents": [
        "5899810257a6c1bd2b252cfc46c78e2c9bea3c52",
        "673ed3d8aedc5462a47ded827c99f35d46525457"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 20:37:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 31 20:37:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Change dex caches to be weak roots\"\"\""
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "40abca79b09107f33d9a44d5ce3620b5ef45fe44",
      "tree": "5b6f6b6fc1cc7f470a4cf6ca7929f5481e2a0cac",
      "parents": [
        "88b52d2aecdbc7242385ba1f8a2c4d6960ee07fc",
        "aae9e66a727756bc965121a60ffcef89ed370e6c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Aug 30 16:57:53 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Aug 30 16:57:53 2015 +0000"
      },
      "message": "Merge \"ART: Fix the simplifier for NEGATE add/sub\""
    },
    {
      "commit": "ed15000a5099f5e230c8ded5ac75692bae272650",
      "tree": "be78bce04c0c9611abc221fd71d9251d05e35d2b",
      "parents": [
        "12b7025d0393a2ce15410df6019844e59b77314d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 11:16:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 13:31:51 2015 -0700"
      },
      "message": "Fix some HandleScope bugs and add corresponding checks\n\nSome places were creating or destroying handle scopes without holding\nthe mutator lock. This can cause GC crashes if thread roots are being\nmarked or hprof dumps to also fail.\n\nAlso added checks to catch some of these errors.\n\nBug: 23468617\nChange-Id: I1a2d615923484cfc25014967656775c445aa3f1f\n"
    },
    {
      "commit": "9393c69c2c6b63b6c8ec36327273ca40d3e45e6c",
      "tree": "17ede5868125c12585c9747c05aa2164a75bd1d8",
      "parents": [
        "f0f73895c06a1ff157d7915b04c41f93a52936c2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 28 10:56:38 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 28 10:56:38 2015 -0700"
      },
      "message": "ART: Add mising ScopedObjectAccess in ref type propagation\n\nAdding handles requires the mutator lock. Annotalysis doesn\u0027t help,\nas constructors aren\u0027t checked.\n\nBug: 23468617\nChange-Id: I79510d105580dacdec965a5b1693c390fdff275a\n"
    },
    {
      "commit": "81a9087f0df0518c39405b7d18ba5858a6d8b77b",
      "tree": "f4936654805b4d84540bd909095e8bbf69795bfd",
      "parents": [
        "f86a0859684c0f8964da4cbe75d49df8f832e85b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "message": "Revert \"Change dex caches to be weak roots\"\n\nThis reverts commit 3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4.\n"
    },
    {
      "commit": "706ea6a0294ef8bc3def050142c548c082fa8e30",
      "tree": "2a6737a452fe6059e47aefda8ec5b9778ff2d582",
      "parents": [
        "772cc4a2d4f978888d1b1e5a78c1c16a108260ed",
        "0760a81257fa427646c309500d603194009265ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 27 16:04:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 27 16:04:21 2015 +0000"
      },
      "message": "Merge \"ART: Propagate verifier failure types to the compilers\""
    },
    {
      "commit": "aae9e66a727756bc965121a60ffcef89ed370e6c",
      "tree": "871d86b73428f998e1099135118c515e3f623fb4",
      "parents": [
        "772cc4a2d4f978888d1b1e5a78c1c16a108260ed"
      ],
      "author": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Fri Aug 21 13:26:34 2015 +0600"
      },
      "committer": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Thu Aug 27 10:05:38 2015 +0600"
      },
      "message": "ART: Fix the simplifier for NEGATE add/sub\n\nInstruction simplifier for negate add/sub should not proceed\nwith floats because that might cause the incorrect behavior\nwith signed zero.\n\nChange-Id: I4970694a2b265a3577cde34fee9cd3a437358c0f\n"
    },
    {
      "commit": "772cc4a2d4f978888d1b1e5a78c1c16a108260ed",
      "tree": "b8f29167cb5fb7ca7709a0d305cfd7e6018d5b2a",
      "parents": [
        "7d6c95a7e5d431fd1b9ad49823535073325c699a",
        "3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 27 02:47:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 27 02:47:40 2015 +0000"
      },
      "message": "Merge \"Change dex caches to be weak roots\""
    },
    {
      "commit": "0760a81257fa427646c309500d603194009265ef",
      "tree": "9754389d2d488f41459c76d4568dd40dd41955ae",
      "parents": [
        "7d6c95a7e5d431fd1b9ad49823535073325c699a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 17:12:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 19:08:03 2015 -0700"
      },
      "message": "ART: Propagate verifier failure types to the compilers\n\nAdd a bit-set encoding of seen failure types to the verifier and\nmake it available. Store this in VerifiedMethod, so that compilers\ncan inspect it and make choices based on failures. Rewrite the\ncurrent punting of runtime-throw errors to be at the compiler-driver\nlevel.\n\nBug: 23502994\nChange-Id: I1cfc7cbdf2aec1f14ba18f0169e432ba4ae16883\n"
    },
    {
      "commit": "30efb4e00c2a9aa318d44486b5eacaa7178d20ef",
      "tree": "90c4e84b5473def182fa443191ba8de80fa62d63",
      "parents": [
        "574d75597013cb12a961c0d4365d1618d8ef6977"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 30 12:14:31 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Aug 26 17:20:28 2015 +0000"
      },
      "message": "Induction variable analysis (with unit tests).\n\nRationale:\nInduction variable analysis forms the basis of a wide\nvariety of compiler optimizations. This implementation\nfinds induction variables using the elegant SSA-based\nalgorithm defined by [Gerlek et al.].\n\nChange-Id: I79b8dce33ffb8b283c179699a8dff5bd196f75b2\n"
    },
    {
      "commit": "9ee5d6cdc14ac94b64ea1961bf221bad48746929",
      "tree": "25575bae2832f0879db55214bab64905ab90e3e2",
      "parents": [
        "d71c89f46ad60713494d537001d4b370ce355885",
        "aa50d3a01a4137cd89c152be5487fed23683d0ff"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 26 06:04:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 26 06:04:50 2015 +0000"
      },
      "message": "Merge \"Add missing field init in constructors\""
    },
    {
      "commit": "3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4",
      "tree": "9ae990956db3d2d5970fb15bf264aeeb73e2bfe0",
      "parents": [
        "dcff51a0079c5e3abaf0335f7cb9a3dd44044456"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 14 14:03:10 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 25 18:00:47 2015 -0700"
      },
      "message": "Change dex caches to be weak roots\n\nChanged dex caches to be weak roots. This is necessary for class\nunloading since the resolved types arrays would keep classes live\nwhen they should be unloaded. Currently the dex caches still don\u0027t\nget freed due to the class loader roots.\n\nAlso deleted some unused functionality in image writer.\n\nBug: 22720414\nChange-Id: If22cb3cad7e3baabc8158a77d7f20799faf4c341\n"
    },
    {
      "commit": "d9cb68e3212d31d61445fb7e8446f68991720009",
      "tree": "8738656ba16c292c1f1fd022337817c58ded2136",
      "parents": [
        "9dc601eb65da0cd5f53172699dacd6e5dd38ab44"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 25 13:52:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 25 17:35:16 2015 +0100"
      },
      "message": "ART: Add (Fpu)RegHigh stack map location kinds\n\nWhen running Optimized code on 64-bit, high value of vreg pair may be\nstored in the high 32 bits of a CPU register. This is not reflected in\nstack maps which would encode both the low and high vreg as\nkInRegister with the same register number, making it indistinguishable\nfrom two non-wide vregs with the same value in the lower 32 bits.\n\nDeoptimization deals with this by running the verifier and thus\nobtaining vreg pair information, but this would be too slow for try/\ncatch. This patch therefore adds two new stack map location kinds:\nkInRegisterHigh and kInFpuRegisterHigh to differentiate between the\ntwo cases.\n\nNote that this also applies to floating-point registers on x86.\n\nChange-Id: I15092323e56a661673e77bee1f0fca4261374732\n"
    },
    {
      "commit": "aa50d3a01a4137cd89c152be5487fed23683d0ff",
      "tree": "a676638c9d43eb519214445173c1a66ba38355ac",
      "parents": [
        "f0170ded84fbcd3d9152cdbcf9ffbf74c71b03ba"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:25:41 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:56:54 2015 +0200"
      },
      "message": "Add missing field init in constructors\n\nAdds missing field initializations detected by Eclipse IDE.\n\nChange-Id: I5f2f32bcccb12545fc9f0b42fcec74a23dc81376\n"
    },
    {
      "commit": "dcff51a0079c5e3abaf0335f7cb9a3dd44044456",
      "tree": "fbd617b837e928e8b272d80622eeaffa901a2f2d",
      "parents": [
        "f7b12e7ae8f481f3fab27d1a17bded4b4f2ce423",
        "a14b9fef395b94fa9a32147862c198fe7c22e3d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 24 22:50:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 24 22:50:51 2015 +0000"
      },
      "message": "Merge \"Revert \"Do a second check for testing intrinsic types.\"\""
    },
    {
      "commit": "a14b9fef395b94fa9a32147862c198fe7c22e3d7",
      "tree": "49b3183cd1d25b6a5cfb31e0d16678deb023c1e8",
      "parents": [
        "4daa0b4c21eee46362b5114fb2c3800c0c7e7a36"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 24 22:49:59 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 24 22:49:59 2015 +0000"
      },
      "message": "Revert \"Do a second check for testing intrinsic types.\"\n\nThis reverts commit 4daa0b4c21eee46362b5114fb2c3800c0c7e7a36.\n\nIf the intrinsic has a slow-path, like charAt, the slow-path logic will complain as it only understands direct slow-paths, not virtual calls.\n\nWe should either override that decision in the slow-path, or replace the HInvokeVirtual when we\u0027re overriding the intrinsic choice.\n\nBug: 23475673\nChange-Id: If55fbc8c82d52e0e7a7aec2674ae2bd2b74b5c77\n"
    },
    {
      "commit": "3979bdf446b425e69171db58789819e26542f79d",
      "tree": "1c526eca980fec73f082185ddae98ddbbccdb21e",
      "parents": [
        "e75ffdfe3fbd4253bf1ffd48350b7f6472500c30",
        "2e92bc2ba2446525a07f5172d1cd30ab49d26cd6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 14:25:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 21 14:25:23 2015 +0000"
      },
      "message": "Merge \"Fix TrySplitNonPairOrUnalignedPairIntervalAt.\""
    },
    {
      "commit": "2e92bc2ba2446525a07f5172d1cd30ab49d26cd6",
      "tree": "18ea6a6719555fee1b9bc4eb8f40f8850dd36714",
      "parents": [
        "cbddb90e515c30983094378e316e446b9edca5d6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 20 19:52:26 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 15:23:16 2015 +0100"
      },
      "message": "Fix TrySplitNonPairOrUnalignedPairIntervalAt.\n\nWe need to both:\n1) Look at pair that don\u0027t start at an even register.\n2) Also remove the other half from the list of actives.\n\nChange-Id: Ia99fa9852c67b8633e8d17a258fe302add54b14a\n"
    },
    {
      "commit": "28de0f652e32e112edab0e5e7dc779943ae488d5",
      "tree": "c35065aeef23f857563eacd82e55ae47d8ceb67c",
      "parents": [
        "6bd6a830f24033830a910f88928b400a7ed28418",
        "4daa0b4c21eee46362b5114fb2c3800c0c7e7a36"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 10:06:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 21 10:06:20 2015 +0000"
      },
      "message": "Merge \"Do a second check for testing intrinsic types.\""
    },
    {
      "commit": "4daa0b4c21eee46362b5114fb2c3800c0c7e7a36",
      "tree": "c4fc2657cd4f0001fe9d5e37f1621c18c2da29fc",
      "parents": [
        "bffabfce093e26bffb9e820a8f6b45474d28787a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 20 14:05:14 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 11:01:38 2015 +0100"
      },
      "message": "Do a second check for testing intrinsic types.\n\nThis allows to intrinsify calls made in a different dex file.\n\nCan\u0027t easily write a test because it depends on having inlined\na method from boot classpath that calls an intrinsic. Once\nString.equals is implemented with the hybrid approach we can write one.\n\nChange-Id: I591d9496e236429943d6bfa7f8b20f576b1cfb9a\n"
    },
    {
      "commit": "113af44c238625500ec5b999a9990f39519e2ae2",
      "tree": "cae823179560c18cf86441b30d7927976483d883",
      "parents": [
        "a05264c142526f74af0cf45e643f7b07500431d8",
        "b4edcf357c823f32ddc8f529f111710c7d7c90b1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 16:16:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 20 16:16:52 2015 +0000"
      },
      "message": "Merge \"Fix indentation in reference type propagation\""
    },
    {
      "commit": "a05264c142526f74af0cf45e643f7b07500431d8",
      "tree": "27fbf99e57f01048d10b5bae00ea27fc17294273",
      "parents": [
        "1d4a598ed12d86934ceb5e6fd79f80f974f3f23f",
        "4dff2fdca6dc0032032ff324161c6343e675e4b0"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 20 16:11:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 20 16:11:31 2015 +0000"
      },
      "message": "Merge \"ARM64: Minor optimization for conversions from long to int.\""
    },
    {
      "commit": "b4edcf357c823f32ddc8f529f111710c7d7c90b1",
      "tree": "767328904963a9080776f7aaa04a0fb5ffeb887f",
      "parents": [
        "5e7cd7bf59501d6f1f90910a9da87effae7b9328"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:05:49 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:05:49 2015 +0100"
      },
      "message": "Fix indentation in reference type propagation\n\nChange-Id: I5860c4fef55326ac2b510e3e34c4541b691794e0\n"
    },
    {
      "commit": "5e7cd7bf59501d6f1f90910a9da87effae7b9328",
      "tree": "18bc50e23f1fe09364495ce434f1e24ed4b8fe1a",
      "parents": [
        "8a5ea659d0fdf024181a3ea4aae50b0fb26f6291",
        "289cd55808111d23c92f2739a096942a8049649a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 20 15:08:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 20 15:08:54 2015 +0000"
      },
      "message": "Merge \"Optimizing String.Equals as an intrinsic (ARM)\""
    },
    {
      "commit": "599262ca1f45ff41ec1bbf31556ab5bf7e94d87a",
      "tree": "cd1fc6e00092b80ebad94b3e896b167107294d41",
      "parents": [
        "0eedd7e0c923f3ef0b7103f58ca0b975613af144"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 15:01:27 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 15:01:27 2015 +0100"
      },
      "message": "Fix extra parantheses\n\n:(\n\nChange-Id: Ie48a54de1276fb9e478cb5927d714b2ff14ae6c6\n"
    },
    {
      "commit": "0eedd7e0c923f3ef0b7103f58ca0b975613af144",
      "tree": "c77db90ea2e42f0cd3b0e3b185a2c3ecde0ca515",
      "parents": [
        "68ad649d3918f2eed3a37209c01a7f0a0faf09f0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 14:48:00 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 14:51:27 2015 +0100"
      },
      "message": "Fix BuildInvoke\n\nThe invoke should be added to the graph before\nPotentiallySimplifyFakeString.\n\nChange-Id: I2afc1d16e6dae60957e7d1386fd028e4f3a5b27a\n"
    },
    {
      "commit": "4dff2fdca6dc0032032ff324161c6343e675e4b0",
      "tree": "3cfc13ae18696ddef98d5cd5954c493f63b66ec7",
      "parents": [
        "4d786026efaac41acf8278d1c87d842f7ce06fde"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Thu Aug 20 13:36:35 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Thu Aug 20 13:36:35 2015 +0100"
      },
      "message": "ARM64: Minor optimization for conversions from long to int.\n\nChange-Id: Ice7febba8dd09a4548ab235fc8aee76d7e7676a1\n"
    },
    {
      "commit": "68ad649d3918f2eed3a37209c01a7f0a0faf09f0",
      "tree": "5d6a004a79bffc5c02af02f325faa8df5f8cad52",
      "parents": [
        "bffabfce093e26bffb9e820a8f6b45474d28787a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 18 17:08:12 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 12:57:10 2015 +0100"
      },
      "message": "Refactor BuildInvoke.\n\nBuildInvoke got to be too complex an unreadble. This breaks it down in\nsmaller pieces.\n\nChange-Id: Ibda63f69f5a1be537ae13e18a5f67c361173f4a6\n"
    },
    {
      "commit": "e418dda75998e0186f7580c2c54705767c3c8f1f",
      "tree": "49b3183cd1d25b6a5cfb31e0d16678deb023c1e8",
      "parents": [
        "4d786026efaac41acf8278d1c87d842f7ce06fde"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 11 20:03:09 2015 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 20 11:00:12 2015 +0100"
      },
      "message": "Be more flexible on the code unit size when inlining.\n\nThis change increases the maximum code unit size, and fold\nparameters in the inlinee in the hope to reduce the overall\nsize of the graph. We then make sure we don\u0027t inline methods\nthat have more than N HInstructions.\n\nAlso, remove the kAccDontInline flag on ArtMethod. The compiler\ndoes not need it anymore.\n\nChange-Id: I4cd3da40e551f30ba83b8b274728b87e67f6812e\n"
    },
    {
      "commit": "05f2056b4f11e0b2bac92b2655abe7030771f5dc",
      "tree": "60d94fc6f0e0825bec14a5f8eb52f2b98d285314",
      "parents": [
        "e1e05e0876f303a9f4aca1d8713b7c44f21952b8"
      ],
      "author": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 19 14:58:14 2015 -0700"
      },
      "committer": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 19 18:51:32 2015 -0700"
      },
      "message": "Add support to indicate whether intrinsics require a dex cache\n\nA structural change to indicate whether a given intrinsic requires access\nto a dex cache.  I updated the needs_environment_ field to indicate\nwhether an HInvoke needs an environment or a dex cache, and if an HInvoke\nrepresents an intrisified method, we utilize this field to determine if\nthe HInvoke needs a dex cache.\n\nBug: 21481923\nChange-Id: I9dd25a385e1a1397603da6c4c43f6c1aea511b32\n"
    },
    {
      "commit": "289cd55808111d23c92f2739a096942a8049649a",
      "tree": "e09f51a94f3c83de7fc7c2bed4e0879ac62a6c70",
      "parents": [
        "e1e05e0876f303a9f4aca1d8713b7c44f21952b8"
      ],
      "author": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Tue Aug 18 17:10:38 2015 -0700"
      },
      "committer": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 19 17:50:40 2015 -0700"
      },
      "message": "Optimizing String.Equals as an intrinsic (ARM)\n\nThe second implementation of String.Equals. I added an intrinsic\nin ARM which is similar to the original java implementation\nof String.equals: an instanceof check, null check, length check, and\nreference equality check followed by a loop comparing strings two\ncharacters at a time. After extensive benchmarking, it seems that\ncomparing strings forward is faster and is worth the additional temp\nregister required. Additionally, moving the add and sub instructions\nthat are anyways necessary between branches in the comparison loop\nimproved benchmarking results.\n\nInteresting benchmarking values:\n\nOptimizing Compiler on Nexus 7\n    Intrinsic 1-5 Character Strings \u003d 91.6 ns\n    Original 1-5 Character Strings \u003d 285.84 ns\n    Intrinsic 15-30 Character Strings \u003d 176 ns\n    Original 15-30 Character Strings \u003d 367.67 ns\n    Intrinsic 100-1000 Character Strings \u003d 2992.1 ns\n    Original 100-1000 Character Strings \u003d 9098.5 ns\n    Intrinsic Null Argument \u003d 70.9 ns\n    Original Null Argument \u003d 189 ns\n\nCode Expansion:\n\n    Average size of 116 apps without intrinsic \u003d 6880521.11 bytes\n    Average size of 116 apps with intrinsic \u003d 6901107.97 bytes\n    Overall 0.299% increase in code size\n\nBug: 21481923\nChange-Id: I48df2a74f2a92b56fb9479fbf14276d44e880aed\n"
    },
    {
      "commit": "83f8b5bb9e9c52791a02a84d7b0889cab898efe4",
      "tree": "59de59bcd9f166fd892df1887019c846abd539ba",
      "parents": [
        "99429ae0610e8d67d417542942c4befb35950bd3",
        "bbd733e4ef277eff19bf9a6601032da081e9b68f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 19:02:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 19:02:45 2015 +0000"
      },
      "message": "Merge \"ART: Enable basic optimizations for try/catch\""
    },
    {
      "commit": "bbd733e4ef277eff19bf9a6601032da081e9b68f",
      "tree": "47c5e9624378d8705e8e448ed951617f680d021f",
      "parents": [
        "a35d4c9d66b372e7ae1014357c48ddfa6104085b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 18 17:48:17 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 19:55:43 2015 +0100"
      },
      "message": "ART: Enable basic optimizations for try/catch\n\nGenerating code for try/catch methods requires having run at least the\ninstruction simplifier to remove redundant suspend checks. This patch\nenables the first group of optimizations when try/catch is present.\n\nEnabled optimizations:\n1) IntrinsicsRecognizer\nDoes not modify the graph, only sets HInvoke::intrinsic_.\n\n2) ConstantFolding\nDoes not deal with throwing instructions.\n\n3) InstructionSimplifier\nMay remove a throwing instruction (e.g. LoadClass in VisitCheckCast),\nor may turn a throwing instruction into a non-throwing one (ArraySet).\nTheir corresponding catch phi inputs are not removed but correctness\nis preserved.\n\n4) ReferenceTypePropagation\nDoes not modify the graph, only sets type properties. Typing of\nLoadException from catch handler information was added.\n\n5) DeadCodeElimination\nRemoving individual instructions is fine (same as 3). Removal of dead\nblocks was disabled for try/catch.\n\nChange-Id: I2722c3229eb8aaf326391e07f522dbf5186774b8\n"
    },
    {
      "commit": "99429ae0610e8d67d417542942c4befb35950bd3",
      "tree": "707a048ce213083edcf370a0a021e66a709d157c",
      "parents": [
        "a35d4c9d66b372e7ae1014357c48ddfa6104085b",
        "581550137ee3a068a14224870e71aeee924a0646"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\""
    },
    {
      "commit": "581550137ee3a068a14224870e71aeee924a0646",
      "tree": "f62dd0d07c66a8ce4d7d994ee0e9c27bd8014bb1",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:49:41 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:54:36 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\n\nFixed kCallArtMethod to use correct callee location for\nkRecursive. This combination is used when compiling with\ndebuggable flag set.\n\nThis reverts commit b2c431e80e92eb6437788cc544cee6c88c3156df.\n\nChange-Id: Idee0f2a794199ebdf24892c60f8a5dcf057db01c\n"
    },
    {
      "commit": "a35d4c9d66b372e7ae1014357c48ddfa6104085b",
      "tree": "8f3c9cefb4c9ed12749713ef1f52708ef6d5d455",
      "parents": [
        "f25f4f95863946053cae46e34fd175cc7a6c3ea5",
        "ec16f79a4d0aeff319bf52139a0c82de3080d73c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 17:12:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 17:12:48 2015 +0000"
      },
      "message": "Merge \"ART: Refactor try/catch block info, store exception type\""
    },
    {
      "commit": "ec16f79a4d0aeff319bf52139a0c82de3080d73c",
      "tree": "1306b2cbaa97bbacc2cbc100d6e157e14f9510cb",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 15:04:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 17:43:13 2015 +0100"
      },
      "message": "ART: Refactor try/catch block info, store exception type\n\nThis patch replaces HBasicBlock fields storing try/catch info with a\nsingle TryCatchInformation data structure, saving memory for the\nmajority of non-try/catch blocks. It also changes builder to store\nthe exception type for catch blocks.\n\nChange-Id: Ib3e43f7db247e6915d67c267fc62410420e230c9\n"
    },
    {
      "commit": "44b9cf937836bb33139123e15ca8b586b5853268",
      "tree": "a4fe52cb53133522069f41083d118fb6abca9336",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 15:39:06 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 15:39:06 2015 +0100"
      },
      "message": "Put in place the ARM64 instruction simplification framework.\n\nThis commit introduces and runs the empty InstructionSimplifierArm64\npass. Further commits will introduce arm64-specific transformations in\nthat pass.\n\nChange-Id: I458f8a2b15470297b87fc1f7ff85bd52155d93ef\n"
    },
    {
      "commit": "77b022dfb8e73564b00c4724f7078cb1d5a57a65",
      "tree": "b62a68acdee9661364a6cb5e3621f27115140fbe",
      "parents": [
        "3bf1027cd09397f1c076f523de7b4553227d36d3"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 14:17:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 14:36:17 2015 +0100"
      },
      "message": "ART: Revisit users in phi elimination\n\nSSA phi elimination visits phis in post order so that loop phis are\nvisited after their inputs. This prevents elimination of phis with\nother phi inputs, exacerbated by the fact that the SSA builder does\ncreate catch phis even if all inputs are the same (unlike with normal\nphis). This patch revisits phi users of eliminated phis until no more\nphis can be removed.\n\nChange-Id: I403614dd46a8e6f0a5b9dd9e8ddc8832617521eb\n"
    },
    {
      "commit": "d9c4d2e9a9bc01fd82a895091126406081fafb1f",
      "tree": "094657600e206c365e365634fab6d4758a3073f4",
      "parents": [
        "464581adaf895d14f73db3d768729f0c9c6f5366",
        "b2c431e80e92eb6437788cc544cee6c88c3156df"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:46:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 12:46:09 2015 +0000"
      },
      "message": "Merge \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\""
    },
    {
      "commit": "b2c431e80e92eb6437788cc544cee6c88c3156df",
      "tree": "6c0ac5f843845e4b09829eb0fd9f1b3013cf4494",
      "parents": [
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "message": "Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\n\nReverting due to failing ndebug tests.\n\nThis reverts commit 9b688a095afbae21112df5d495487ac5231b12d0.\n\nChange-Id: Ie4f69da6609df3b7c8443412b6cf7f5c43c2c5d9\n"
    },
    {
      "commit": "464581adaf895d14f73db3d768729f0c9c6f5366",
      "tree": "0a839dc0e7add5f1f6f473baa261fe3296a47105",
      "parents": [
        "5a4f0032d797cef0bd110ed03b4342862cd27fc8",
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 11:27:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 11:27:57 2015 +0000"
      },
      "message": "Merge \"Optimizing: Better invoke-static/-direct dispatch.\""
    },
    {
      "commit": "9b688a095afbae21112df5d495487ac5231b12d0",
      "tree": "e5e881d4d124803e66f1e90c1e0a0e4c90d22e13",
      "parents": [
        "009c34cba875885d9540696f33255a9b355d6e15"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 06 14:12:42 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:23:37 2015 +0100"
      },
      "message": "Optimizing: Better invoke-static/-direct dispatch.\n\nAdd framework for different types of loading ArtMethod*\nand code pointer retrieval. Implement invoke-static and\ninvoke-direct calls the same way as Quick. Document the\ndispatch kinds in HInvokeStaticOrDirect\u0027s new enumerations\nMethodLoadKind and CodePtrLocation.\n\nPC-relative loads from dex cache arrays are used only for\nx86-64 and arm64. The implementation for other architectures\nwill be done in separate CLs.\n\nChange-Id: I468ca4d422dbd14748e1ba6b45289f0d31734d94\n"
    },
    {
      "commit": "5a4f0032d797cef0bd110ed03b4342862cd27fc8",
      "tree": "094657600e206c365e365634fab6d4758a3073f4",
      "parents": [
        "f9d86df5ff23d7a0459daab2669ceb1b9ed9a035",
        "98596203dd67b9c80062317ac20886e4df745fa3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 19 10:52:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 10:52:30 2015 +0000"
      },
      "message": "Merge \"Remove extra calls to `RecordPcInfo()`.\""
    },
    {
      "commit": "98596203dd67b9c80062317ac20886e4df745fa3",
      "tree": "11430f16b9a4f6cc9f9ae11bf59c6fdca5fa530e",
      "parents": [
        "1cb16842fbd213fcd6288efe7f854b6dbc844dcf"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 11:33:36 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 19 11:33:36 2015 +0100"
      },
      "message": "Remove extra calls to `RecordPcInfo()`.\n\nSome calls to `RecordPcInfo()` were mistakingly left in the x86/x86_64\ncode after we started using the `InvokeRuntime()` helper.\n\nChange-Id: I8a902fee9db2dfb85020167289a786f965cb3fe9\n"
    },
    {
      "commit": "f9d86df5ff23d7a0459daab2669ceb1b9ed9a035",
      "tree": "90df277615f3281b5a53d5427505de7998fe76c4",
      "parents": [
        "cbddb90e515c30983094378e316e446b9edca5d6",
        "29fc008c9689e9036a3f5e3bd186bbfb5de3cb82"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 10:08:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 10:08:36 2015 +0000"
      },
      "message": "Merge \"ART: Revert storing of exceptional predecessors\""
    },
    {
      "commit": "cbddb90e515c30983094378e316e446b9edca5d6",
      "tree": "976fc3c86ac73d6950c01ea5040e0179dcd1bfa2",
      "parents": [
        "1cb16842fbd213fcd6288efe7f854b6dbc844dcf",
        "d5897678eb555a797d4e84e07814d79f0e0bb465"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 19 08:50:42 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 08:50:42 2015 +0000"
      },
      "message": "Merge \"Implement CountLeadingZeros for x86\""
    },
    {
      "commit": "fdc3990cafb30dff8c48ea042b61b991b31a4b4d",
      "tree": "0509a46afe205cef54e4643623725f232a5d8fd7",
      "parents": [
        "f71ad9ede9ae322a897e8fe407208dc35c5dee65",
        "4cd27d64b0bbdde61fa3f6674ceb24221853ac2c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 23:27:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 18 23:27:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Introduce support for hardware simulators, starting with ARM64\"\""
    },
    {
      "commit": "4cd27d64b0bbdde61fa3f6674ceb24221853ac2c",
      "tree": "20d0a46a943a3cd66341d87eb568cd8c5f83aec2",
      "parents": [
        "edd0a6dbe26bb334f02d5abe649e3da9165277b2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 23:03:42 2015 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 16:17:57 2015 -0700"
      },
      "message": "Revert \"Introduce support for hardware simulators, starting with ARM64\"\n\nThis reverts commit c2e1a5edc438274159c6ef8e65455ac73723a8f1.\n\nThis breaks the build for x86_64 targets. This is because on target the libvixl is not included as a\nlibrary for the libart.so target build. The build of non-x86_64 targets only works because the\ncompilers removes the dead-code that contains the libvixl symbols.\n\nBug: 23321940\nChange-Id: I39e93ff05b887665c47fb0986867f1d13ca65b9b\n"
    },
    {
      "commit": "f71ad9ede9ae322a897e8fe407208dc35c5dee65",
      "tree": "5dee2185faeebe5f4107fec6835f1013b4e7548d",
      "parents": [
        "add6cfac914f48136e71a05f72123154d7d2d44b",
        "50fa993d67f8a20322c27c1a77e7efcf826531fc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 21:43:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 18 21:43:44 2015 +0000"
      },
      "message": "Merge \"Svelter libart-compiler\""
    },
    {
      "commit": "50fa993d67f8a20322c27c1a77e7efcf826531fc",
      "tree": "76d6b73a9d8a8ef2709aef6c01778af6a0d4ada1",
      "parents": [
        "4500fcbe682d666a24c2e8f6e0cb90cfb35d3fa3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 10 15:30:07 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 11:21:05 2015 -0700"
      },
      "message": "Svelter libart-compiler\n\nAdded new environment variable ART_{TARGET,HOST}_CODEGEN_ARCHS which\nmay be set to \u0027all\u0027, \u0027svelte\u0027 or a space separated list of architectures.\n\nWhen compiled with ART_{TARGET,HOST}_CODEGEN_ARCHS\u003d\u0027all\u0027 (the default\nvalue) dex2oat will be able to generate output for all supported\narchitectures.\n\nWhen compiled with ART_TARGET_CODEGEN_ARCHS\u003d\u0027svelte\u0027\nonly the architectures of the TARGET will be included. When\nART_HOST_CODEGEN_ARCHS\u003d\u0027svelte\u0027 all architectures the target includes\nand the host architectures will be included on the host dex2oat.\n\nIf a list of architectures is given only those will be included.\n\nChange-Id: I87f4ad0131ab1b37544d8799e947ce4733b6daec\n"
    },
    {
      "commit": "17ff917877041a6f212537e062f06684adcbf171",
      "tree": "f8dd85956a04299153b1b02e1c9900cec37397d6",
      "parents": [
        "a539ec06503766fcad4be71480c194a225fb037c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 18 18:36:20 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 18 18:36:20 2015 +0100"
      },
      "message": "Fix codegen_test.\n\nAllow the execution of Thumb-2 code on ARM32 hardware.\n\nChange-Id: I2fec71e39d538249569ffa88435f3198e8c28c01\n"
    },
    {
      "commit": "29fc008c9689e9036a3f5e3bd186bbfb5de3cb82",
      "tree": "373a288e3bfcc44d6af87c78a3e114eed211eca3",
      "parents": [
        "a539ec06503766fcad4be71480c194a225fb037c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 18 17:17:38 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 18 17:17:38 2015 +0100"
      },
      "message": "ART: Revert storing of exceptional predecessors\n\nAfter change of the approach for try/catch register allocation, it is\nno longer necessary to record instructions which might throw into a\ncatch block.\n\nChange-Id: I7ef12ed06c49a35280029810975fa2a50fe4a424\n"
    },
    {
      "commit": "a539ec06503766fcad4be71480c194a225fb037c",
      "tree": "9d3cfda89dcf4879b7579b24cdf34551eb29ec56",
      "parents": [
        "009c34cba875885d9540696f33255a9b355d6e15",
        "c2e1a5edc438274159c6ef8e65455ac73723a8f1"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 18 13:28:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 18 13:28:20 2015 +0000"
      },
      "message": "Merge \"Introduce support for hardware simulators, starting with ARM64\""
    },
    {
      "commit": "c2e1a5edc438274159c6ef8e65455ac73723a8f1",
      "tree": "30deefcdb9f8226a7367342000104248ea635487",
      "parents": [
        "62dee441fff15e951c577b9565f87bb5f27c5ffb"
      ],
      "author": {
        "name": "Phil Wang",
        "email": "phil.wang@linaro.org",
        "time": "Wed Jul 29 15:14:09 2015 +0800"
      },
      "committer": {
        "name": "Phil Wang",
        "email": "phil.wang@linaro.org",
        "time": "Tue Aug 18 15:15:17 2015 +0800"
      },
      "message": "Introduce support for hardware simulators, starting with ARM64\n\nSimulator support for ARM64 is implemented with VIXL.\nNow codegen_test will also run on all supported hardware simulators.\n\nChange-Id: Idc740f566175d1a23c373ea9292b8fc5ba526d00\n"
    },
    {
      "commit": "2a5c4681ba19411c1cb22e9a7ab446dab910af1c",
      "tree": "883ea0c07aad9efdb7c86960056cbefd7992b2bc",
      "parents": [
        "228b3973b2b24783c727a55fda2b4b80375f7207"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 14 08:22:54 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 17 15:42:25 2015 -0700"
      },
      "message": "ART: Some header cleaning around bit-utils\n\nTry to remove dependencies where they are not necessary.\n\nChange-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e\n"
    },
    {
      "commit": "d5897678eb555a797d4e84e07814d79f0e0bb465",
      "tree": "bcf7df2382200011fb43a59f49d008852368b355",
      "parents": [
        "8ecc1357e2c682165467ca8e10c7a748f7554df2"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Aug 12 21:16:41 2015 -0400"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 17 12:36:34 2015 +0100"
      },
      "message": "Implement CountLeadingZeros for x86\n\nGenerate Long and Integer numberOfLeadingZeros for x86 and x86_64. Uses\n\u0027bsr\u0027 instruction to find the first one bit, and then corrects the\nresult.\n\nAdded some more tests with constant values to test constant folding.\nAlso add a runtime test with 0 as the input.\n\nChange-Id: I920b21bb00069bccf5f921f8f87a77e334114926\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "63fdedf3c46a42c77713b5cc5abce47defaf5550",
      "tree": "63457fff11e3fc28348c57fe4a249d6f67d61a0f",
      "parents": [
        "b31de31c4559c8434aa37701ef2f9e0ba3d2ad44",
        "f8cfb20cfa00f8987227204211e99486bc38572f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 14 23:49:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 14 23:49:45 2015 +0000"
      },
      "message": "Merge \"Optimizing String.Equals as an intrinsic (x86_64)\""
    },
    {
      "commit": "f8cfb20cfa00f8987227204211e99486bc38572f",
      "tree": "5fd373b346a16136693a4436749c6dc5a813137f",
      "parents": [
        "837b64974977f615dd1f0662857b97536acdb4dd"
      ],
      "author": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Thu Aug 13 17:54:54 2015 -0700"
      },
      "committer": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Fri Aug 14 10:47:57 2015 -0700"
      },
      "message": "Optimizing String.Equals as an intrinsic (x86_64)\n\nThe fourth implementation of String.Equals. I added an intrinsic\nin x86_64 which is similar to the original java implementation\nof String.equals: an instanceof check, null check,length check,\nand reference equality check followed by a loop comparing strings\nfour characters at a time.\n\nInteresting Benchmarking Values:\n\nOptimizing Compiler on 64-bit Emulator\n        Intrinsic 1-5 Character Strings: 48 ns\n        Original 1-5 Character Strings: 56 ns\n        Intrinsic 1000+ Character Strings: 4009 ns\n        Original 1000+ Character Strings: 4704 ns\n        Intrinsic Non-String Argument: 35 ns\n        Original Non-String Argument: 42 ns\n\nBug: 21481923\nChange-Id: I17d0d2e24a670a898ab1729669d3990403b9a853\n"
    },
    {
      "commit": "d95ab77f5db43767fc78f9be42c1dd991033d682",
      "tree": "fd077bae5407fd5bac581c8efd8420cee67d6bc3",
      "parents": [
        "f1dacdd52146841fc69949b3f485922debed9237",
        "d7138c813ad72a824fff19f8b10f3fb61f4f43cf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 14 15:21:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 14 15:21:14 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing String.Equals as an intrinsic (x86)\"\"\""
    },
    {
      "commit": "1cad8c7c63b600a3da83bf05fb645e08ac8fafc0",
      "tree": "887b7a75c8ce60f31ae3b43a2e8f41335e9ce760",
      "parents": [
        "1def08ee2f1189ddcb73f72211afb223142d173f",
        "da2b254fe4c35986d85876c5819b1114e25140cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 14 10:54:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 14 10:54:56 2015 +0000"
      },
      "message": "Merge \"Fix a bug in the register allocator when allocating pairs.\""
    },
    {
      "commit": "d7138c813ad72a824fff19f8b10f3fb61f4f43cf",
      "tree": "c02cf30b286e7a8b57b54c78e8906b9a86101909",
      "parents": [
        "837b64974977f615dd1f0662857b97536acdb4dd"
      ],
      "author": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Thu Aug 13 17:46:44 2015 -0700"
      },
      "committer": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Thu Aug 13 18:27:24 2015 -0700"
      },
      "message": "Revert \"Revert \"Optimizing String.Equals as an intrinsic (x86)\"\"\n\nThis reverts commit aabdf8ad2e8d3de953d.\nThe third implementation of String.Equals. I added an intrinsic\nin x86 which is similar to the original java implementation of\nString.equals: an instanceof check, null check, length check, and\nreference equality check followed by a loop comparing strings\ncharacter by character.\n\nInteresting Benchmarking Values:\n\nOptimizing Compiler on Nexus Player\n        Intrinsic 15-30 Character Strings: 177 ns\n        Original 15-30 Character Strings: 275 ns\n        Intrinsic Null Argument: 59 ns\n        Original Null Argument: 137 ns\n        Intrinsic 100-1000 Character Strings: 1812 ns\n        Original 100-1000 Character Strings: 6334 ns\n\nBug: 21481923\nChange-Id: I93fa603c4bd22639143d29d0bfc7e773846f21d3\n"
    },
    {
      "commit": "ea34b40783064ef73fb555a9cfd04c35cff624d8",
      "tree": "0e737478beda7e0e4063a49738328a0bdfcb4e12",
      "parents": [
        "837b64974977f615dd1f0662857b97536acdb4dd"
      ],
      "author": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Thu Aug 13 17:51:19 2015 -0700"
      },
      "committer": {
        "name": "Agi Csaki",
        "email": "agicsaki@google.com",
        "time": "Thu Aug 13 17:51:19 2015 -0700"
      },
      "message": "Optimizing String.Equals as an intrinsic (ARM64)\n\nThe fifth implementation of String.Equals.  I added an intrinsic\nin ARM64 which is similar to the original java implementation\nof String.equals: an instanceof check, null check, length check, and\nreference equality check followed by a loop comparing strings four\ncharacters at a time starting at the beginning of the string.\n\nInteresting Benchmarking Values:\n\n64 Bit Nexus 9:\n\tIntrinsic Short (1-5 Character) Strings: 40 ns\n\tOriginal Short (1-5 Character) Strings: 80 ns\n\tIntrinsic Very Long (1000+ Character) Strings: 1556 ns\n\tOriginal Very Long (1000+ Character) Strings: 4554 ns\n\tIntrinsic Non-String Argument: 15 ns\n\tOriginal Non-String Argument: 62 ns\n\nBug: 21481923\nChange-Id: If37b399614c2250f52ac709a3b50c356419ca88a\n"
    },
    {
      "commit": "837b64974977f615dd1f0662857b97536acdb4dd",
      "tree": "0564fcf0bd8b01644a6453a36983172f5e3d2489",
      "parents": [
        "e28dde5c7907f14042a0c9bcfa8dad436a1d82f4",
        "df3f8227badd0276177774a72f1bcb181688d954"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 16:25:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 16:25:52 2015 +0000"
      },
      "message": "Merge \"Adjust art::HTypeConversion\u0027s side effects for MIPS64.\""
    },
    {
      "commit": "e28dde5c7907f14042a0c9bcfa8dad436a1d82f4",
      "tree": "2a7663655fa4ca8c9aa4d40df4d6bb1480f0d2be",
      "parents": [
        "7c2af0d873b7033adccf8fa7adf259166c53d369",
        "efa8468c78fdd808043dfb664b56541f3f2dd0e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 13 15:16:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 15:16:40 2015 +0000"
      },
      "message": "Merge \"Small optimization improvements.\""
    },
    {
      "commit": "df3f8227badd0276177774a72f1bcb181688d954",
      "tree": "c64b926ec875e096deb84b13bb464ed69625e917",
      "parents": [
        "7c2af0d873b7033adccf8fa7adf259166c53d369"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 12:31:44 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 12:32:04 2015 +0100"
      },
      "message": "Adjust art::HTypeConversion\u0027s side effects for MIPS64.\n\nAlso improve debugging information in\nart::CodeGenerator::ValidateInvokeRuntime.\n\nChange-Id: Icfcd1a5cfa5e5449a316251dc20547de6badecb5\n"
    },
    {
      "commit": "7c2af0d873b7033adccf8fa7adf259166c53d369",
      "tree": "ec1a3cffa19b1131abcdd3e64541a14e9bcc4b86",
      "parents": [
        "1d4219ee25dfb228cc72f353d97be69584fc0722",
        "3887c468d731420e929e6ad3acf190d5431e94fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "message": "Merge \"Remove unnecessary `explicit` qualifiers on constructors.\""
    },
    {
      "commit": "1d4219ee25dfb228cc72f353d97be69584fc0722",
      "tree": "95d13900fb7ab30bfa155ae51b3d04296d5eca43",
      "parents": [
        "8be64212312ff2a1ccd9d4c007f7c679fe19483e",
        "6cff09a873e0179f2a8d28727d4cd2447bd1bf16"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 13 05:26:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 05:26:35 2015 +0000"
      },
      "message": "Merge \"Intrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets\""
    },
    {
      "commit": "7da072feb160079734331e994ea52760cb2a3243",
      "tree": "9616f6983d1d9e0ba4447bdbdc2cb7805c737240",
      "parents": [
        "a83cf577d770f389f941b7798c8ea19d55a2e037"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 20:30:17 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 12 22:02:02 2015 -0700"
      },
      "message": "Structure for String.Equals intrinsic\n\nAdded structure for implementing String.Equals intrinsics. There is no\nfunctional change at this point- the intrinsic is marked as unimplemented\nfor all instruction sets and compilers.\n\nBug: 21481923\nChange-Id: Ic2a1e22a113ff6091581126f12e926478c011340\n"
    },
    {
      "commit": "6cff09a873e0179f2a8d28727d4cd2447bd1bf16",
      "tree": "95a2136b6eae3a9a5d549f9654fcdf4282a9e333",
      "parents": [
        "a83cf577d770f389f941b7798c8ea19d55a2e037"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 21:20:43 2015 -0700"
      },
      "committer": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 21:37:46 2015 -0700"
      },
      "message": "Intrinsics recognizer returns kNone for MIPS, MIPS64 instruction sets\n\nSince no intrinsics are implemented in MIPS or MIPS64, the intrinsics\nrecognizer now does not mark methods as being intrinsified if the\ncurrent instruction set is either MIPS or MIPS64.\n\nChange-Id: I9819ccd11d280e548623ad18add057eefefbf6d5\n"
    },
    {
      "commit": "efa8468c78fdd808043dfb664b56541f3f2dd0e8",
      "tree": "eeec64ba00456b737b43eaf3d9e61f04fafdfa95",
      "parents": [
        "6a6bd17f68c02139630796a615bd38b929c02e7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 12 18:28:14 2015 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 12 18:32:54 2015 -0700"
      },
      "message": "Small optimization improvements.\n\n- Tune CanBeNull for HBoundType.\n- Remove LoadClass when we know the class is loaded.\n- Tune CanBeNull for StringInit.\n\nChange-Id: I564ed33a506d65e991a514342bdfd1610bed0cf5\n"
    },
    {
      "commit": "57b81ecbe74138992dd447251e94ed06cd5eb802",
      "tree": "ec855a19b35d41eb62ac653fde12a5b14cdc2988",
      "parents": [
        "82b844fb449ddc5d7b4e43e71a55eb934a1b0b45"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Tue Aug 11 17:39:37 2015 -0700"
      },
      "committer": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 18:20:56 2015 -0700"
      },
      "message": "Add support to indicate whether intrinsics require an environment\n\nA structural change to indicate whether a given intrinsic requires\naccess to an environment. I added a field to HInvoke objects to indicate\nif they need an environment whose default value is true and is only updated\nif an intrinsic is marked as not requiring an environment. At this point\nthere is no functional change, as all intrinsics are marked as requiring\nan environment. This change adds the structure for future inliner work\nwhich will allow us to inline more intrinsified calls.\n\nChange-Id: I2930e3cef7b785384bf95b95a542d34af442f3b9\n"
    },
    {
      "commit": "3887c468d731420e929e6ad3acf190d5431e94fc",
      "tree": "67dacb849e722e33e118b97714a48e467c06cbd5",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "message": "Remove unnecessary `explicit` qualifiers on constructors.\n\nChange-Id: Id12e392ad50f66a6e2251a68662b7959315dc567\n"
    },
    {
      "commit": "78e3ef6bc5f8aa149f2f8bf0c78ce854c2f910fa",
      "tree": "b8aa83bef462e20e2e7e09650e6c15d3a8d97fa6",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 12 13:43:29 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 12 13:43:29 2015 +0100"
      },
      "message": "Add a GVN dependency \u0027GC\u0027 for garbage collection.\n\nThis will be used by incoming architecture specific optimizations. The\ndependencies must be conservative. When an HInstruction is created we\nmay not be sure whether it can trigger GC. In that case the\n\u0027ChangesGC\u0027 dependency must be set. We control at code-generation time\nthat HInstructions that can call have the \u0027ChangesGC\u0027 dependency\nset.\n\nChange-Id: Iea6a7f430009f37a9599b0a0039207049906e45d\n"
    },
    {
      "commit": "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82",
      "tree": "2d7a59bfecc34628f3d1def79407b153650c1ac6",
      "parents": [
        "2b562f400cf9717f197ae3ae1f9a32c96769ef06",
        "cfa410b0ea561318f74a76c5323f0f6cd8eaaa50"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 11:43:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 12 11:43:20 2015 +0000"
      },
      "message": "Merge \"[optimizing] More x86_64 code improvements\""
    },
    {
      "commit": "da2b254fe4c35986d85876c5819b1114e25140cb",
      "tree": "2ec2cb94bdf02fa66bfc8bbd79cb3810dbdcce16",
      "parents": [
        "d2606b1b922573d45707931bc387cbf990771238"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 06 19:56:45 2015 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 11 14:17:44 2015 -0700"
      },
      "message": "Fix a bug in the register allocator when allocating pairs.\n\nbug:22913897\nChange-Id: I402d8a29a482f6cb98c8d1fcdcbf0eddf744e038\n"
    },
    {
      "commit": "ff2ac94ebd542c0b3bdb6812a96363ed56df09f0",
      "tree": "e8e50da8980a0104747b600a8948880cf846c331",
      "parents": [
        "adbd0e5c3a9a9fce4ad49c48d7a4212f3d18cfcc",
        "8dbf0cf3714d9748e6acef7a5f070fc517bda681"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 11 17:42:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 11 17:42:21 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Pass the verified method to the inlinee DexCompilationUnit.\"\"\""
    },
    {
      "commit": "cfa410b0ea561318f74a76c5323f0f6cd8eaaa50",
      "tree": "80d989b8b26e3fd1afc232c5ecb9a0919823d15b",
      "parents": [
        "1a5625be743a4a84329930ac1c7e96425e24ca8d"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon May 25 16:02:44 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Aug 11 10:32:47 2015 -0400"
      },
      "message": "[optimizing] More x86_64 code improvements\n\nUse the constant area some more, use 32-bit immediates in movq\ninstructions when possible, and other small tweaks.\n\nRemove the commented out code for Math.Abs(float/double) as it would\nfail for baseline compiler due to the output being the same as the\ninput.\n\nChange-Id: Ifa39f1865b94cec2e1c0a99af3066a645e9d3618\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "423f150e5c17b5f4cd16259565b61c57f5f19477",
      "tree": "f30a2ea82c56175870c11a39949cf6a38aa36617",
      "parents": [
        "f24576a7233ec708d49badb239cd7336c2b0f07e",
        "8c0676ce786f33b8f9c8eedf1ace48988c750932"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 11 14:25:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 11 14:25:45 2015 +0000"
      },
      "message": "Merge \"ART-Optimizing: Fix the type of HDivZeroCheck\""
    },
    {
      "commit": "8c0676ce786f33b8f9c8eedf1ace48988c750932",
      "tree": "024674305019f6e5b47a7aa044c47c87c1d4abaf",
      "parents": [
        "1f3f766d3b365d01f36b85dc19d40f754fa48533"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Aug 03 13:55:33 2015 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Aug 11 18:12:02 2015 +0600"
      },
      "message": "ART-Optimizing: Fix the type of HDivZeroCheck\n\nHDivZeroCheck is created during the building CFG and at this moment\nits type is not known completely. So it sets the type to int or long.\nHowever, later SSA builder can insert the type conversion and type\nof input of HDivZeroCheck can become byte or short while the type\nof HDivZeroCheck remains the same.\n\nIn reality the type of HDivZeroCheck should be always equal to\nits input parameter.\nTo fix this inconsistency we return the type of HDivZeroCheck as its\ninput type. Code generators are updated accordingly.\n\nChange-Id: I6a5aedc8d479cfc6328704e7ddf252bca830076b\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "8dbf0cf3714d9748e6acef7a5f070fc517bda681",
      "tree": "8302f7b01f06916a5f94e76f16ea71f16f323c3c",
      "parents": [
        "f25b661b3708c865cdaa0a018372a42881353bea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 11 02:14:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 11 02:14:38 2015 +0000"
      },
      "message": "Revert \"Revert \"Pass the verified method to the inlinee DexCompilationUnit.\"\"\n\nbug:22866717\n\nThis reverts commit f25b661b3708c865cdaa0a018372a42881353bea.\n\nChange-Id: I95e8310e6c3d8e6edb736fdefcabf602cce3a4e0\n"
    },
    {
      "commit": "f29758111e71a7d14f3e52d78773561a5d59961f",
      "tree": "644efb1559c2a4ecd083128e86086d0e896ca761",
      "parents": [
        "3ded7766981b3105c7686e0c9d75c378c42fa4a0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 07 18:13:03 2015 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 07 18:15:18 2015 -0700"
      },
      "message": "Fix a bug in the register allocator around pair allocation.\n\nWe may get hints that do not work with the current implementation\nof register pairs, which forces the allocation of (low + 1)\nfor the high register. For example, if the hint is EBX, we will\nallocate ESP for the high register.\n\nbug:23043730\n\nChange-Id: I371ebb0c61568f09d12eb9ab815c0bf0ea02d49b\n"
    },
    {
      "commit": "f25b661b3708c865cdaa0a018372a42881353bea",
      "tree": "6da1c44e1735bfa27e30f80f101862f622113ae6",
      "parents": [
        "08624c50f488ecd845e48683e84726ff8c53e6a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 07 15:31:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 07 15:31:10 2015 +0000"
      },
      "message": "Revert \"Pass the verified method to the inlinee DexCompilationUnit.\"\n\nCrashes testing libcore on host/x86.\n\nBug:22866717\n\nThis reverts commit 08624c50f488ecd845e48683e84726ff8c53e6a7.\n\nChange-Id: Ia8f130d9ea32e171e554bd3e10c44f8453111b52\n"
    },
    {
      "commit": "8158f28b6689314213eb4dbbe14166073be71f7e",
      "tree": "fced445e53f639b2db42cb5a0e96d5aa04750861",
      "parents": [
        "33407564904d2186f536107e1ca8d88f2c760c83"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Aug 07 10:26:17 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri Aug 07 10:26:17 2015 +0100"
      },
      "message": "Ensure coherency of call kinds for LocationSummary.\n\nThe coherency is enforced with checks added in the `InvokeRuntime`\nhelper, that we now also use on x86 and x86_64.\n\nChange-Id: I8cb92b042f25dc3c5fd390e9c61a45b477d081f4\n"
    },
    {
      "commit": "08624c50f488ecd845e48683e84726ff8c53e6a7",
      "tree": "8302f7b01f06916a5f94e76f16ea71f16f323c3c",
      "parents": [
        "7fbaa22e10979cf17b8c1c0c96bef4919e9d4163"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 06 21:10:30 2015 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 06 21:13:54 2015 -0700"
      },
      "message": "Pass the verified method to the inlinee DexCompilationUnit.\n\nSharpening and other optimizations in compiler driver rely\non having it there.\n\nAlso fixes a warning for the intrinsics code.\n\nbug:22866717\nChange-Id: I6ac4f55e9e77452a4ea9e0d0dd0ad70124a95a55\n"
    },
    {
      "commit": "115b53f609e74672fa93eea1845bb17340d5112a",
      "tree": "a791ed8bcd97c5a97c329e4dc708604e1defed4b",
      "parents": [
        "1339409345cc8b46d64570430ca3197408fda159"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Wed Aug 05 17:03:30 2015 +0600"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 06 18:22:02 2015 +0100"
      },
      "message": "ART: Fix the simplifier for add/sub\n\nInstruction simplifier for add/sub should not proceed with floats\nbecause that might cause the incorrect behavior with signed zero.\n\nChange-Id: If0c9bf3931bcbf96b0814f8605a86997aea37145\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "1339409345cc8b46d64570430ca3197408fda159",
      "tree": "4e2a3dfea6fab0f902beb70140d38b6edfecba3e",
      "parents": [
        "902ec264e1040cbfd783c44809ed10b261bd78ee",
        "9867bc722f7c41e07a95397bc08b790cd21dc758"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 12:52:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 12:52:12 2015 +0000"
      },
      "message": "Merge \"Have constant folding be more flexible.\""
    },
    {
      "commit": "902ec264e1040cbfd783c44809ed10b261bd78ee",
      "tree": "915f7d23caf192e440a585b9495f4d787e8d26bf",
      "parents": [
        "d4fd591406f356dcb8feaa262c19983cacb9116d",
        "c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 10:03:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 10:03:46 2015 +0000"
      },
      "message": "Merge \"Add constant folding for long unary operations in opt. compiler.\""
    },
    {
      "commit": "9867bc722f7c41e07a95397bc08b790cd21dc758",
      "tree": "6bad203433f24a5556fe98e6480326ed30956c75",
      "parents": [
        "c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 10:21:34 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 11:01:53 2015 +0100"
      },
      "message": "Have constant folding be more flexible.\n\n- Have Evaluate methods take as argument(s) and return value\n  instances of HConstant (instead of built-in 32- or 64-bit\n  integer values), to let the evaluated instruction choose\n  the type of the statically evaluated node; for instance,\n  art::HEqual::Evaluate shall return a HIntConstant\n  node (as implementation of a Boolean constant) whatever\n  the type of its inputs (a pair of HIntConstant or a pair\n  of HLongConstant).\n- Split the evaluation job from the operation logic: the\n  former is addressed by Evaluate methods, while the latter\n  is done by a generic Compute method.\n- Adress valid BinOp(int, long) and BinOp(long, int) cases.\n- Add a constructor to art::HIntConstant to build an integer\n  constant from a `bool` value.\n\nChange-Id: If84b6fe8406bb94ddb1aa8b02e36628dff526db3\n"
    },
    {
      "commit": "c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6",
      "tree": "a462fa0cc21489d4250febb6d098aacc7a265279",
      "parents": [
        "c2abe2fe9036b57c581e3003d0b820d1c54dbd30"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Dec 11 12:14:33 2014 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 11:01:40 2015 +0100"
      },
      "message": "Add constant folding for long unary operations in opt. compiler.\n\nAdd tests to exercise the constant folding of these\ninstructions.\n\nAlso, prevent Java methods from run-tests exercising the\ncode generation of these instruction from being inlined,\nso that they continue to check the generated code (and\nnot the code produced by the constant folding pass).\n\nChange-Id: I28efca7cdb5142ac2b6d158ba296fb9136d62481\n"
    },
    {
      "commit": "d4fd591406f356dcb8feaa262c19983cacb9116d",
      "tree": "be14ec9665bd3f3fce0cdb263c5ab5a6956cc94e",
      "parents": [
        "8bfc949ae075d66d1d6fbf36d7ed774b6da1f62a",
        "cb1c0557033065f2436ee79e7fa6c19d87064801"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 05 08:34:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 08:34:24 2015 +0000"
      },
      "message": "Merge \"ART: Move exception clearing into own instruction\""
    },
    {
      "commit": "1056919800f5db8d7a9607835fa34254eae51ec3",
      "tree": "e14e783094d45cb64705f3c5d83cee7eb0eb1551",
      "parents": [
        "1cf85515600d298a2c9e4de137c0926949205097",
        "9ca257196b46fd7629bce0b338580e571e4113a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 05 02:11:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 02:11:01 2015 +0000"
      },
      "message": "Merge \"ART: x86_64 RoundDouble/Float intrinsics should initialize out value.\""
    },
    {
      "commit": "d2606b1b922573d45707931bc387cbf990771238",
      "tree": "6da80d412ad6ff8175bc11e97db07182a2d50ff8",
      "parents": [
        "bab71e2a51834dd6986f2166d332f540824687f9",
        "6e18dcb5d2c35c646f2c95cb776abb79799f52ae"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 05 00:10:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 00:10:01 2015 +0000"
      },
      "message": "Merge \"Parallel Move Resolver: Perform Stack/Stack first\""
    },
    {
      "commit": "cb1c0557033065f2436ee79e7fa6c19d87064801",
      "tree": "741b623b2e370a133b5cef9feed2542151186db6",
      "parents": [
        "e238414eee3ec933a4ceb1894666c9ef331ace0c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 04 16:22:25 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 04 16:39:38 2015 +0100"
      },
      "message": "ART: Move exception clearing into own instruction\n\nRuntime delivers exceptions only to catch blocks which begin with a\nMOVE_EXCEPTION instruction (in DEX). In that case, the catch block is\nexpected to clear the thread-local exception storage after having\nread the exception reference.\n\nThis patch changes Optimizing to represent MOVE_EXCEPTION with two\ninstructions - HLoadException and HClearException - instead of one.\nIf the exception reference is not used, HLoadException can be safely\nremoved, saving a memory load without breaking the runtime behaviour.\n\nChange-Id: Idad8a714467bf9d9d5fccefbc43c0bd8ae13ddba\n"
    },
    {
      "commit": "9ca257196b46fd7629bce0b338580e571e4113a8",
      "tree": "0f9253785ee43a18a1da2b726529763d6bf0074d",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Fri Jul 31 13:03:17 2015 +0600"
      },
      "committer": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue Aug 04 17:31:04 2015 +0600"
      },
      "message": "ART: x86_64 RoundDouble/Float intrinsics should initialize out value.\n\nx86_64 RoundDouble intrinsic should initialize output register for the case of\n\"inPlusPointFive \u003e\u003d maxLong\" as expected. The same for the RoundFloat intrinsic.\nFixed also the out register type in CreateSSE41FPToIntLocations provoking\na DCHECK failure.\n\nChange-Id: I0a910682e2917214861683c678ffba8e0f4bfed8\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\n"
    },
    {
      "commit": "611d3395e9efc0ab8dbfa4a197fa022fbd8c7204",
      "tree": "9a0a3b6750caae13b963b244719e03b8cfb49c44",
      "parents": [
        "0c9c5bbdd6976c21602b92d9b455e6fe5d769fb0"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Jul 10 11:42:06 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Tue Aug 04 09:02:56 2015 +0100"
      },
      "message": "ARM/ARM64: Implement numberOfLeadingZeros intrinsic.\n\nChange-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b\n"
    }
  ],
  "next": "e238414eee3ec933a4ceb1894666c9ef331ace0c"
}
