)]}'
{
  "log": [
    {
      "commit": "b4154d33eb51de747cc517dd270b58619b3a3122",
      "tree": "c7782e1bfc682b57d6267286f0eafaf265f18d40",
      "parents": [
        "20d2c9d003ea2508154dac4b8a3bfeba00b063de",
        "456307a47336e3d6576ed6d8563b67573a4238d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 20 09:00:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 20 09:00:49 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Use dex cache from compilation unit in RTP.\"\"\""
    },
    {
      "commit": "456307a47336e3d6576ed6d8563b67573a4238d3",
      "tree": "35d7c3d213b942a562538a8d25129b4e27cc712f",
      "parents": [
        "814ae9448d7a620a1855d53c7b69b1b377944a67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 19 14:12:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 19 19:25:00 2016 +0100"
      },
      "message": "Revert \"Revert \"Use dex cache from compilation unit in RTP.\"\"\n\nThe exposed issue has been fixed by\n    https://android-review.googlesource.com/215877\n\nBug:28210356\n\nThis reverts commit 34d9b04d8d0006967486c0ad1b221e7b632652af.\n\nChange-Id: I5288c923e45d9ef3190dabb89738350a1212a60d\n"
    },
    {
      "commit": "46817b876ab00d6b78905b80ed12b4344c522b6c",
      "tree": "6715bee60b0682a10437866c9617cb442146aa2f",
      "parents": [
        "f59149a151ee694484e21da7b3b207920dead5a6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 29 12:21:58 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 19 18:33:06 2016 +0100"
      },
      "message": "Use iterators \"before\" the use node in HUserRecord\u003c\u003e.\n\nCreate a new template class IntrusiveForwardList\u003c\u003e that\nmimicks std::forward_list\u003c\u003e except that all allocations\nare handled externally. This is essentially the same as\nboost::intrusive::slist\u003c\u003e but since we\u0027re not using Boost\nwe have to reinvent the wheel.\n\nUse the new container to replace the HUseList and use the\niterators to \"before\" use nodes in HUserRecord\u003c\u003e to avoid\nthe extra pointer to the previous node which was used\nexclusively for removing nodes from the list. This reduces\nthe size of the HUseListNode by 25%, 32B to 24B in 64-bit\ncompiler, 16B to 12B in 32-bit compiler. This translates\ndirectly to overall memory savings for the 64-bit compiler\nbut due to rounding up of the arena allocations to 8B, we\ndo not get any improvement in the 32-bit compiler.\n\nCompiling the Nexus 5 boot image with the 64-bit dex2oat\non host this CL reduces the memory used for compiling the\nmost hungry method, BatteryStats.dumpLocked(), by ~3.3MiB:\n\nBefore:\n  MEM: used: 47829200, allocated: 48769120, lost: 939920\n  Number of arenas allocated: 345,\n  Number of allocations: 815492, avg size: 58\n  ...\n  UseListNode    13744640\n  ...\nAfter:\n  MEM: used: 44393040, allocated: 45361248, lost: 968208\n  Number of arenas allocated: 319,\n  Number of allocations: 815492, avg size: 54\n  ...\n  UseListNode    10308480\n  ...\n\nNote that while we do not ship the 64-bit dex2oat to the\ndevice, the JIT compilation for 64-bit processes is using\nthe 64-bit libart-compiler.\n\nBug: 28173563\nChange-Id: I985eabd4816f845372d8aaa825a1489cf9569208\n"
    },
    {
      "commit": "2dcab783cd7a5a4351c50755b3b3de927e70ac38",
      "tree": "621974407f4fe3e9d2c72b4e8f79054328ea59ec",
      "parents": [
        "979fb0090c5c9de1da62735b8611a3c9028ed0aa",
        "18b36abc7cc03076fe1c399c0bb8ec8793cc6806"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 15 19:04:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 15 19:04:13 2016 +0000"
      },
      "message": "Merge \"Remove the no-longer-needed F/I and D/J alias.\""
    },
    {
      "commit": "18b36abc7cc03076fe1c399c0bb8ec8793cc6806",
      "tree": "3e38ee71b94c7bbde6f93976e16416a2f6d33ee0",
      "parents": [
        "defccc564481c2c892792680c6abb6020e36bacd"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 16:41:35 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Apr 15 10:49:34 2016 -0700"
      },
      "message": "Remove the no-longer-needed F/I and D/J alias.\n\nRationale:\nNow that our HIR is type clean (yeah!), we no longer have\nto conservatively assume F/I and D/J are aliased. This\nenables more accurate side effects analysis, with improvements\nin all clients, such a LICM.\n\nRefinement:\nThe HIR is not completely clean between building and SSA.\nThis refinement takes care of that, with new tests.\n\nBUG\u003d22538329\n\nChange-Id: Id78ff0ff4e325aeebf0022d868937cff73d3a742\n"
    },
    {
      "commit": "05241f4edbf6960aac7c04b0b98d05f16a23962b",
      "tree": "7b02580b8833e8411f061b6a162a58ecffd6ceaf",
      "parents": [
        "6233bff5bd04bb6030929ed6f55e34dde09aa8f3",
        "062157f4e07b525728fa58f4ec57ffe1bf15d545"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Apr 15 17:30:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 15 17:30:05 2016 +0000"
      },
      "message": "Merge \"Enable allocation elimination as part of LSE\""
    },
    {
      "commit": "34d9b04d8d0006967486c0ad1b221e7b632652af",
      "tree": "cf00b5f4af53b6eadef0c3e3f8c05f743176271e",
      "parents": [
        "27bb86edf60e2f9ca2c1075c0c86b9e79374f1d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 17:01:11 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 17:01:11 2016 +0000"
      },
      "message": "Revert \"Use dex cache from compilation unit in RTP.\"\n\nbug:28210356\n\nThis reverts commit 27bb86edf60e2f9ca2c1075c0c86b9e79374f1d0.\n\nChange-Id: Ib27ee90a7e4d516fd2db67a9c4e454023737841a\n"
    },
    {
      "commit": "062157f4e07b525728fa58f4ec57ffe1bf15d545",
      "tree": "90be1124b444b735b86e09f4adeff59f813b50d2",
      "parents": [
        "240986c1fcd867b9a01e2e94ee2aa90235ce7d75"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Mar 02 10:15:36 2016 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Apr 15 09:03:55 2016 -0700"
      },
      "message": "Enable allocation elimination as part of LSE\n\nAfter load-store elimination, an allocation may not be used any more\nand may be eliminated.\n\nChange-Id: I7fcaaefa9d6ec2c611e46119c5799293770a917c\n"
    },
    {
      "commit": "27bb86edf60e2f9ca2c1075c0c86b9e79374f1d0",
      "tree": "5e2cb0caa0b4456fd55c93f6c863bb3b26d5cd31",
      "parents": [
        "0108f3d945cd5483217d7bf1df75ab5108d4555c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 14 18:07:55 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 14 18:45:01 2016 +0100"
      },
      "message": "Use dex cache from compilation unit in RTP.\n\nAvoid calling the costly ClassLinker::FindDexCache() from\nreference type propagation when the dex cache from the\ncompilation unit will do, i.e. almost always. Compiling\nthe Nexus 5 boot image on host under perf(1) shows that\nthe FindDexCache() hits drop from about 0.2% to almost\nnothing, though enabling inlining for the boot image will\nincrease it a bit to 0.03% due to unavoidable calls from\nthe inliner.\n\nAlso clean up the ScopedObjectAccess usage a bit.\n\nChange-Id: I426a5f9f5da9e64fad2ea57654240789a48d3871\n"
    },
    {
      "commit": "1f7624c3bc41251ff72b1409441f541d992967c7",
      "tree": "d6f91bc54a8216358cfc7aa62aab2a615a41160f",
      "parents": [
        "2f52064dcfe5ebce5a998d30766ca079a366c920"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 21:17:17 2016 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Apr 13 21:17:17 2016 +0000"
      },
      "message": "Revert \"Remove the no-longer-needed F/I and D/J alias.\"\n\nThis reverts commit 2f52064dcfe5ebce5a998d30766ca079a366c920.\n\nReason:\n\nArrays.sort() returns wrong result on double[] and this CL is the most likely suspect. Rolling back to buy some time for careful analysis and debugging.\n\nChange-Id: I58223c42e95c2287520eef863fbcb738b0736d4d\n"
    },
    {
      "commit": "2f52064dcfe5ebce5a998d30766ca079a366c920",
      "tree": "4c49114f810e22e83d662f42705ac908d473b9f4",
      "parents": [
        "ec9a828fa4a4638d2d17124c4fa835f15c7c5589"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 12 15:05:45 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Apr 12 19:25:42 2016 -0700"
      },
      "message": "Remove the no-longer-needed F/I and D/J alias.\n\nRationale:\nNow that our HIR is type clean (yeah!), we no longer have\nto conservatively assume F/I and D/J are aliased. This\nenables more accurate side effects analysis, with improvements\nin all clients, such a LICM.\n\nBUG\u003d22538329\n\nChange-Id: Iba1fb09ff063f31b5893f588aa6d0c5ab3b42f39\n"
    },
    {
      "commit": "c2e8af9659db7e456b26febb1b971900057ad427",
      "tree": "af35981588f2995d8bb3a570e2f7244c8c22373a",
      "parents": [
        "04c2b2de69460d41e0c39c1f7d9fb77376c3aa8b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 05 17:15:19 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 12 15:17:28 2016 +0100"
      },
      "message": "ART: Speed up HGraph::PopulateIrreducibleRecursive\n\nPopulating an irreducible loop can potentially traverse all possible\npaths through the HGraph, leading to an exponential algorithm.\nThis patch adds a bit vector of nodes whose membership in the loop\nhas been decided and need not be revisited again.\n\nBug: 27856014\nChange-Id: I3696f08c846e6f40e5de44cb771811bac7e3e08a\n"
    },
    {
      "commit": "dee58d6bb6d567fcd0c4f39d8d690c3acaf0e432",
      "tree": "5a2f20546ca3c1544c44bee560062580e22dc79c",
      "parents": [
        "391e155a6936a05bd39b171031ec21d2dee62133"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 09:54:26 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 16:03:16 2016 +0000"
      },
      "message": "Revert \"Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\"\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nThis CL fixed an issue with parsing quickened instructions.\n\nBug: 27894376\nBug: 27998571\nBug: 27995065\n\nChange-Id: I20dbe1bf2d0fe296377478db98cb86cba695e694\n"
    },
    {
      "commit": "60328910cad396589474f8513391ba733d19390b",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "message": "Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\n\nBug: 27995065\nThis reverts commit e3ff7b293be2a6791fe9d135d660c0cffe4bd73f.\n\nChange-Id: I5363c7ce18f47fd422c15eed5423a345a57249d8\n"
    },
    {
      "commit": "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f",
      "tree": "d578d27cb78e6d2caef683cd8ac94c9a9752b192",
      "parents": [
        "86ea7eeabe30c98bbe1651a51d03cb89776724e7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 02 16:48:20 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:30 2016 +0100"
      },
      "message": "Refactor HGraphBuilder and SsaBuilder to remove HLocals\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nBug: 27894376\nChange-Id: Iefe28d40600c169c5d306fd2c77034ae19476d90\n"
    },
    {
      "commit": "86ea7eeabe30c98bbe1651a51d03cb89776724e7",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "0cb5c86b7021e70cbf584c1455aad1ef383af786"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 16 09:26:07 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:20 2016 +0100"
      },
      "message": "Build dominator tree before generating HInstructions\n\nSecond CL in the series of merging HGraphBuilder and SsaBuilder. This\npatch refactors the builders so that dominator tree can be built\nbefore any HInstructions are generated. This puts the SsaBuilder\nremoval of HLoadLocals/HStoreLocals straight after HGraphBuilder\u0027s\nHInstruction generation phase. Next CL will therefore be able to\nmerge them.\n\nThis patch also adds util classes for iterating bytecode and switch\ntables which allowed to simplify the code.\n\nBug: 27894376\nChange-Id: Ic425d298b2e6e7980481ed697230b1a0b7904526\n"
    },
    {
      "commit": "b0170f0457f60b81dd232bb3fa505b22f10f324c",
      "tree": "b7297d1969458814ae5184cc62dc0a8eac437929",
      "parents": [
        "6656f30115c4a6a52ca01f46ca84df125179466a",
        "f355c3ff08710ac2eba3aac2aacc5e65caa06b4c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 31 10:39:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 31 10:39:53 2016 +0000"
      },
      "message": "Merge \"Fix Boolean to integral types conversions.\""
    },
    {
      "commit": "f355c3ff08710ac2eba3aac2aacc5e65caa06b4c",
      "tree": "1d9f9487897fabc539f748be881f9c8140c16cef",
      "parents": [
        "6f51d7756a9c66007fe7666b19399e1f60ff6092"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 30 19:09:03 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 30 19:09:03 2016 +0100"
      },
      "message": "Fix Boolean to integral types conversions.\n\nBug: 27616343\nChange-Id: I050f92045bca1b8b5d6da53547cc617f17be84b1\n"
    },
    {
      "commit": "cac5a7e871f1f346b317894359ad06fa7bd67fba",
      "tree": "2df7d4892216a7c976dfe848c9893cb5eb8fa6a5",
      "parents": [
        "6f51d7756a9c66007fe7666b19399e1f60ff6092"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 22 10:39:50 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 29 19:27:40 2016 +0100"
      },
      "message": "Optimizing: Improve const-string code generation.\n\nFor strings in the boot image, use either direct pointers\nor pc-relative addresses. For other strings, use PC-relative\naccess to the dex cache arrays for AOT and direct address of\nthe string\u0027s dex cache slot for JIT.\n\nFor aosp_flounder-userdebug:\n  - 32-bit boot.oat: -692KiB (-0.9%)\n  - 64-bit boot.oat: -948KiB (-1.1%)\n  - 32-bit dalvik cache total: -900KiB (-0.9%)\n  - 64-bit dalvik cache total: -3672KiB (-1.5%)\n    (contains more files than the 32-bit dalvik cache)\nFor aosp_flounder-userdebug forced to compile PIC:\n  - 32-bit boot.oat: -380KiB (-0.5%)\n  - 64-bit boot.oat: -928KiB (-1.0%)\n  - 32-bit dalvik cache total: -468KiB (-0.4%)\n  - 64-bit dalvik cache total: -1928KiB (-0.8%)\n    (contains more files than the 32-bit dalvik cache)\n\nBug: 26884697\nChange-Id: Iec7266ce67e6fedc107be78fab2e742a8dab2696\n"
    },
    {
      "commit": "0ced281ae6216c29f57ca0f8b7388a722e8da97b",
      "tree": "b7f8273bb117c8ec8f8546ed937a8c0a96d2e5de",
      "parents": [
        "843a65556616183a36792bbcc1632c6d8d0e78b2",
        "1a65388f1d86bb232c2e44fecb44cebe13105d2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 24 10:25:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 24 10:25:51 2016 +0000"
      },
      "message": "Merge \"Clean up art::HConstant predicates.\""
    },
    {
      "commit": "541261e66273857c638677424215de91f3d65a6f",
      "tree": "8e2dd00e442612e22ba1473a49597a2ae2735e81",
      "parents": [
        "f8a3dea642fe638f54d181b7ca280b79ee519398",
        "5b5b9319ff970979ed47d41a41283e4faeffb602"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 23 17:10:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 23 17:10:31 2016 +0000"
      },
      "message": "Merge \"Fix and improve shift and rotate operations.\""
    },
    {
      "commit": "6fa06e6f5a92cd318021afad9b036126438b2de4",
      "tree": "d48878a61532d4d901d5f31c18c569cc6234242d",
      "parents": [
        "2a07b80dfbfb869aabe96c88b10e07d26c0ce137",
        "937e6cd515bbe7ff2f255c8fcd40bf1a575a9a16"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 16:38:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 22 16:38:18 2016 +0000"
      },
      "message": "Merge \"Tighten art::HNeg type constraints on its input.\""
    },
    {
      "commit": "5b5b9319ff970979ed47d41a41283e4faeffb602",
      "tree": "e7795abf120cf512627786fd6302efd34535724b",
      "parents": [
        "0c25da0276f5b6f6119793ae9d45d1bca8172c2b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 14:57:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 14:57:31 2016 +0000"
      },
      "message": "Fix and improve shift and rotate operations.\n\n- Define maximum int and long shift \u0026 rotate distances as\n  int32_t constants, as shift \u0026 rotate distances are 32-bit\n  integer values.\n- Consider the (long, long) inputs case as invalid for\n  static evaluation of shift \u0026 rotate rotations.\n- Add more checks in shift \u0026 rotate operations constructors\n  as well as in art::GraphChecker.\n\nChange-Id: I754b326c3a341c9cc567d1720b327dad6fcbf9d6\n"
    },
    {
      "commit": "937e6cd515bbe7ff2f255c8fcd40bf1a575a9a16",
      "tree": "90660b3d679cfbd87327e9cda5c783128f1b9a92",
      "parents": [
        "1153282aa91292b740289ab7612a481e5c6bc167"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 11:54:37 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 22 11:54:37 2016 +0000"
      },
      "message": "Tighten art::HNeg type constraints on its input.\n\nEnsure art::HNeg is only passed a type having the kind of\nits input.  For a boolean, byte, short, or char input, it\nmeans HNeg\u0027s type should be int.\n\nBug: 27684275\nChange-Id: Ic8442c62090a8ab65590754874a14a0deb7acd8d\n"
    },
    {
      "commit": "f6a35de9eeefb20f6446f1b4815b4dcb0161d09c",
      "tree": "cf484acbd6889b92a7fe3e8615611129088c3894",
      "parents": [
        "459898dc4470559ba1e1d578bc52a914d1f573f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 12:01:50 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 16:50:08 2016 +0000"
      },
      "message": "Optimizing: Fix register allocator validation memory usage.\n\nAlso attribute ArenaBitVector allocations to appropriate\npasses. This was used to track down the source of the\nexcessive memory alloactions.\n\nBug: 27690481\n\nChange-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100\n"
    },
    {
      "commit": "1a65388f1d86bb232c2e44fecb44cebe13105d2e",
      "tree": "515e3000b3ad6d195101f20f33f3c9498e536593",
      "parents": [
        "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 18:05:57 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 18:05:57 2016 +0000"
      },
      "message": "Clean up art::HConstant predicates.\n\n- Make the difference between arithmetic zero and zero-bit\n  pattern non ambiguous.\n- Introduce Boolean predicates in art::HIntConstant for when\n  they are used as Booleans.\n- Introduce aritmetic positive and negative zero predicates\n  for floating-point constants.\n\nBug: 27639313\nChange-Id: Ia04ecc6f6aa7450136028c5362ed429760c883bd\n"
    },
    {
      "commit": "22c4922c6b31e154a6814c4abe9015d9ba156911",
      "tree": "8e871f67e327322d24d0c2e4588b165005414077",
      "parents": [
        "0205b58a0d7a9ce5832393857c19c086c78996e9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 14:04:28 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 18 14:04:28 2016 +0000"
      },
      "message": "Ensure art::HRor support boolean, byte, short and char inputs.\n\nAlso extend tests covering the IntegerRotateLeft,\nLongRotateLeft, IntegerRotateRight and LongRotateRight\nintrinsics and their translation into an art::HRor\ninstruction.\n\nBug: 27682579\nChange-Id: I89f6ea6a7315659a172482bf09875cfb7e7422a1\n"
    },
    {
      "commit": "a5c4a4060edd03eda017abebc85f24cffb083ba7",
      "tree": "85f69512d33c19d82e172a490a241f3a17d66560",
      "parents": [
        "713c519db15aaa8d6f33b744fd28adddb97a07c2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 15:02:50 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 16 16:49:36 2016 +0000"
      },
      "message": "Make art::HCompare support boolean, byte, short and char inputs.\n\nAlso extend tests covering the IntegerSignum, LongSignum,\nIntegerCompare and LongCompare intrinsics and their\ntranslation into an art::HCompare instruction.\n\nBug: 27629913\nChange-Id: I0afc75ee6e82602b01ec348bbb36a08e8abb8bb8\n"
    },
    {
      "commit": "3e906819c33d19c9586ecd9441f0ffb8433f2bad",
      "tree": "77b91c120c37cb149fa4740b6f677194c2706605",
      "parents": [
        "d9ebad9b52605ed785222a86c84e58fa7cb66686",
        "1693a1f9c83a0bf5a29fa18ddc2d87e04e049233"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 16 10:12:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 16 10:12:39 2016 +0000"
      },
      "message": "Merge \"Make art::HCompare side effect free.\""
    },
    {
      "commit": "949e54dec11582cb9bb96f0d68e6485dd20336f1",
      "tree": "24e65c8fb3907d7e9c4d2effadb67c0ed2ea0a29",
      "parents": [
        "51b7e2d08f2bcf528eeec48b42c178b5550f6635"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 15 16:23:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 15 16:23:04 2016 +0000"
      },
      "message": "Fix HDoubleConstant::IsZero and HFloatConstant::IsZero.\n\nbug:27639313\nChange-Id: I2f30a65a07662dfce0a6d6f4ed356a8a0b3dcdef\n"
    },
    {
      "commit": "1693a1f9c83a0bf5a29fa18ddc2d87e04e049233",
      "tree": "ab8d99220352e3f6ce2501963ba81943089f0df5",
      "parents": [
        "51b7e2d08f2bcf528eeec48b42c178b5550f6635"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 14:57:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 15 14:57:31 2016 +0000"
      },
      "message": "Make art::HCompare side effect free.\n\nAll our back ends implement all comparisons without making a\nruntime call, so we can mark art::HCompare as a side effect\nfree instruction unconditionally.\n\nChange-Id: I9a9e7c09156c642edb6af1fe84408f887e762f2e\n"
    },
    {
      "commit": "95f931eefd6a694a27548c3503ca56559a2b868b",
      "tree": "ec7b0d6edee087c13810be515c7dbb67aec98544",
      "parents": [
        "cdd3991f821f027c9ac6674057603ba4ad9c2bb0",
        "7fc6350f6f1ab04b52b9cd7542e0790528296cbe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 11 19:48:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 19:48:08 2016 +0000"
      },
      "message": "Merge \"Integrate BitwiseNegated into shared framework.\""
    },
    {
      "commit": "a9e68021a88566f31b0ba1a997ac3c61d3081c40",
      "tree": "03816b2c31f05f6d32fbb5458eac6a9bfc554bfb",
      "parents": [
        "62a9841469f99810b2b39b0748cb113af0e8913a",
        "bdd7935c2adc3ad190ee87958e714a36f33cedae"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 16:37:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 16:37:23 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\"\""
    },
    {
      "commit": "18401b748a3180f52e42547ede22d1b184fe8c43",
      "tree": "aebee923635cc2563c74033b00ffc90ceadafed4",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 13:35:51 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 13:36:19 2016 +0000"
      },
      "message": "Fix invariant in reference type propagation.\n\nAlso some cleanups.\n\nChange-Id: I7f0ec7d06b4bab10dbfa230c757447d311658f93\n"
    },
    {
      "commit": "7fc6350f6f1ab04b52b9cd7542e0790528296cbe",
      "tree": "26a33ef7bb2e49a9b7c7d9436194a92cb447b317",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Tue Feb 09 17:15:29 2016 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Mar 11 12:49:27 2016 +0000"
      },
      "message": "Integrate BitwiseNegated into shared framework.\n\nShare implementation between arm and arm64.\n\nChange-Id: I0dd12e772cb23b4c181fd0b1e2a447470b1d8702\n"
    },
    {
      "commit": "bdd7935c2adc3ad190ee87958e714a36f33cedae",
      "tree": "64563d52d699d63c22574dbc97e6d5410df94ac3",
      "parents": [
        "2af7213a4e0d395fe22dcdce6ec10a3bd131023d"
      ],
      "author": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Mon Feb 15 12:48:36 2016 +0600"
      },
      "committer": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Fri Mar 11 18:28:55 2016 +0600"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\"\n\nThis reverts commit d4aee949b3dd976295201b5310f13aa2df40afa1.\n\nChange-Id: I505b8c9863c310a3a708f580b00d425b750c9541\n"
    },
    {
      "commit": "7c9c31ca3b94a8e0828d2d8f9747fd579ca40305",
      "tree": "dcb9ddfa56a1bed0f52cc7da9321441e94b0e60f",
      "parents": [
        "6e1564cfdf4f6b332ee6d156de6ff9712655fff6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 08 16:00:41 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 08 16:00:41 2016 -0800"
      },
      "message": "ART: Fix missing include\n\nThe SwitchTable needs a function from an inl file.\n\nChange-Id: I624d71e0c0efc0c87150d7ef3be71e0b4506c75a\n"
    },
    {
      "commit": "3f52306b259caed1c654c4b3fd5b594d5ec8d46c",
      "tree": "8a94e537ee9c17ce8591e1775fb232ee1af09425",
      "parents": [
        "757701fc80dfe35ff9677c858b3d85e946e1ae36"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 29 16:53:33 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 01 22:54:29 2016 +0000"
      },
      "message": "ART: Fix overlapping instruction IDs in inliner\n\nInliner creates the inner graph so that it generates instruction IDs\nhigher than the outer graph. This was broken because the inliner\nwould create instructions in the outer graph before the inner graph\nis inlined.\n\nThe bug cannot be triggered because the offending instruction would\nshare the same ID as the first inner HLocal, which is removed before\nthe inner graph is inlined. The added DCHECKs reveal the hidden problem\nand make it safe for HLocals to be removed in the future.\n\nChange-Id: I486eb0f3987e20c50cbec0fb06332229e07fbae9\n"
    },
    {
      "commit": "a1d8ddfaf09545f99bc326dff97ab604d4574eb6",
      "tree": "c4a9893ac195928397c91a84223e2e011cd059bd",
      "parents": [
        "a48224f32797b234f07d78fbbede5edbb212ceab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 11:46:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 12:17:52 2016 +0000"
      },
      "message": "Bug fix for polymorphic inlining.\n\nThe code used to wrongly propagate try/catch information to\nnew blocks. Since it has the same logic as Hraph::InlineInto,\nextract the code that updates loop and try/catch information\nto blocks to a shared method.\n\nbug:27330865\nbug:27372101\nbug:27360329\n\nChange-Id: I4386f724d8d412bde5bcc04fda6955bc3bacf5a9\n"
    },
    {
      "commit": "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c",
      "tree": "45d5c735386d3253e65a986b15e3eab9b9bf75cd",
      "parents": [
        "af86c4e44184bd17411de330d48aad7784d569d4",
        "a1de9188a05afdecca8cd04ecc4fefbac8b9880f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:39:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 26 16:39:57 2016 +0000"
      },
      "message": "Merge \"Optimizing: Reduce memory usage of HInstructions.\""
    },
    {
      "commit": "a1de9188a05afdecca8cd04ecc4fefbac8b9880f",
      "tree": "a671c8aef814ccf194e5c3950a551f2711516c53",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 11:37:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:01:59 2016 +0000"
      },
      "message": "Optimizing: Reduce memory usage of HInstructions.\n\nPack narrow fields and flags into a single 32-bit field.\n\nChange-Id: Ib2f7abf987caee0339018d21f0d498f8db63542d\n"
    },
    {
      "commit": "9ff0d205fd60cba6753a91f613b198ca2d67f04d",
      "tree": "86689672064d66d2c473045f934f948211ba0389",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Mon Jan 11 13:43:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 25 16:26:13 2016 +0000"
      },
      "message": "Optimizing: ARM64 negated bitwise operations simplification\n\nUse negated instructions on ARM64 to replace [bitwise operation + not]\npatterns, that is:\na \u0026 ~b (BIC)\na | ~b (ORN)\na ^ ~b (EON)\n\nThe simplification only happens if the Not is only used by the bitwise\noperation. It does not happen if both inputs are Not\u0027s (this should be\nhandled by a generic simplification applying De Morgan\u0027s laws).\n\nChange-Id: I0e112b23fd8b8e10f09bfeff5994508a8ff96e9c\n"
    },
    {
      "commit": "1de3bb289ba5e8a249840c634ad5eb108b827d69",
      "tree": "d8faf2243c92442f0322c873555e3c695a254452",
      "parents": [
        "dcedaaa4dc6d05b6044ecef50f2d9bb95575d49c",
        "4a0dad67867f389e01a5a6c0fe381d210f687c0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 15:37:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 25 15:37:05 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ARM/ARM64: Extend support of instruction combining.\"\"\""
    },
    {
      "commit": "4a0dad67867f389e01a5a6c0fe381d210f687c0d",
      "tree": "91f1e70f4a2d0bd32aa7eb51e546f5330d72f772",
      "parents": [
        "d15ede2df7d157ea5480614fd18c2bf0d37a6c2a"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Jan 26 12:28:31 2016 +0300"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 10:14:30 2016 +0000"
      },
      "message": "Revert \"Revert \"ARM/ARM64: Extend support of instruction combining.\"\"\n\nThis reverts commit 6b5afdd144d2bb3bf994240797834b5666b2cf98.\n\nChange-Id: Ic27a10f02e21109503edd64e6d73d1bb0c6a8ac6\n"
    },
    {
      "commit": "e53bd8160ad2892f33849108d3b1099992a311fd",
      "tree": "2e2c33e50fa871174273799d09689d669f4c0561",
      "parents": [
        "d15ede2df7d157ea5480614fd18c2bf0d37a6c2a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 24 14:54:18 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 24 14:54:45 2016 +0000"
      },
      "message": "Remove unreachable code paths in constant folding.\n\nChange-Id: I7ffb361711c87f6b1b98d172d2cfdf9b2ba65607\n"
    },
    {
      "commit": "1d01ef7f0f79b032449c35203ca9543fb8a0b22f",
      "tree": "78e44decc10d0155ddec585bba5500451e2daacb",
      "parents": [
        "afe84004583488ded7f99bb703ed4c1a601ff034",
        "e4084a5eb46dc6b99c0e0b74bcdecccaceb28fe7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 16:33:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 18 16:33:37 2016 +0000"
      },
      "message": "Merge \"Small inlining improvements.\""
    },
    {
      "commit": "f8a08735f6c60ddee2bb5646dcad561361cce079",
      "tree": "36111e04c122c0c4f58dc1ea24a327c9069f72d6",
      "parents": [
        "99da8cd8818e015b21d1c2af73ac40749698c930",
        "916cc1d504f10a24f43b384e035fdecbe6a74b4c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 15:56:59 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 18 15:56:59 2016 +0000"
      },
      "message": "Merge \"Implement polymorphic inlining.\""
    },
    {
      "commit": "e4084a5eb46dc6b99c0e0b74bcdecccaceb28fe7",
      "tree": "d47f5a4ff9faae1736fc065e82d39110b9261e61",
      "parents": [
        "a1f65135cd2315159ac302f904ba0c5ba0d7fd0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:43:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 15:14:30 2016 +0000"
      },
      "message": "Small inlining improvements.\n\n- Use the type_index in the current dex file for classes not\n  defined in the current dex file.\n- Make the loading of the vtable field of a class have no side effects\n  to enable gvn\u0027ing it.\n\nNote that those improvements only affect the JIT, where we don\u0027t have\nchecker support.\n\nChange-Id: I519f52bd8270f2b828f0920a1214da33cf788f41\n"
    },
    {
      "commit": "916cc1d504f10a24f43b384e035fdecbe6a74b4c",
      "tree": "a68f7276cba6cd75bc0b200337edde8eafccccc7",
      "parents": [
        "442643920a6c539e98aad76594e99b932b5631ba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 11:12:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 14:41:25 2016 +0000"
      },
      "message": "Implement polymorphic inlining.\n\nFor example, before:\nHInvokeVirtual\n\nAfter:\nIf (receiver \u003d\u003d Foo) {\n  // inlined code.\n} else if (receiver \u003d\u003d Bar) {\n  // inlined code\n} else {\n  // HInvokeVirtual or HDeoptimize(receiver !\u003d Baz)\n}\n\nChange-Id: I5ce305aef8f39f8294bf2b2bcfe60e0dddcfdbec\n"
    },
    {
      "commit": "31dd3d60491148d345c1edae1ccd090a1b67dd2b",
      "tree": "57e6fc0663a39dd5abd6284adc822e8782c4bdf0",
      "parents": [
        "88f38e9b4e9ba0aca3d6fd4823be3a7226c87f33"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 16 12:21:02 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 17 13:52:33 2016 +0000"
      },
      "message": "Extend constant folding to float and double operations.\n\nChange-Id: I2837064b2ceea587bc171fc520507f13355292c6\n"
    },
    {
      "commit": "4a69a30120ecba9431246938e124d56213447137",
      "tree": "3201099fae198e4d90305a0a9168019c1a7b9f60",
      "parents": [
        "ce053b20e87f33b4417b8f21bb6f2ec4feb3104e",
        "55bd749991f9a0a73f612696e1a93e739380546b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 16:54:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 16 16:54:19 2016 +0000"
      },
      "message": "Merge \"Refactor the inliner.\""
    },
    {
      "commit": "55bd749991f9a0a73f612696e1a93e739380546b",
      "tree": "7bfe5a6565e728468fa67cb9ce7c62907d9ce0f8",
      "parents": [
        "7dc277b171b4d8294c4d152d8a6020995dc95f98"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:37:12 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 16:05:11 2016 +0000"
      },
      "message": "Refactor the inliner.\n\nIn preparation for more polymorphic inlining, refactor the inliner\na bit.\n\nChange-Id: Ie3fd6c1ef205f1089989c67a527e6f57ff3c8b5d\n"
    },
    {
      "commit": "9779307ce8f2dd40c429abb0f0cafc1415f70648",
      "tree": "c3963fb789d54a81459166f38176c6be6eb328e8",
      "parents": [
        "7eca244e79480f2ecea341598524a53273959c2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:33:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 15:36:16 2016 +0000"
      },
      "message": "HInvokeStaticOrDirect may not have a special input.\n\nFor irreducible loops, we disable the generation of\nHX86ComputeBaseMethodAddress, so intrinsics code should not assume\nit\u0027s there.\n\nbug:27149923\n\nChange-Id: I78ba0ca7aefa4033227c77ba438b6eaca53dadd9\n"
    },
    {
      "commit": "b01e0e2e931b9670690a9eeffdbee73db588715d",
      "tree": "cde0cb9e1d26fe11c730ed8580f507a58cf8006a",
      "parents": [
        "9b8beaa5d04afcab0e3ddb6306ed610c0d11da8d",
        "badd826664896d4a9628a5a89b78016894aa414b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 16:12:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 15 16:12:32 2016 +0000"
      },
      "message": "Merge \"ART: Run SsaBuilder from HGraphBuilder\""
    },
    {
      "commit": "c0b601b5e4c1add5eefd45f2f4d2c376a20ba4d4",
      "tree": "5afda879812dd7984f2d5970d4ff4ab3bc22a7d0",
      "parents": [
        "b3ba4ec3fac34f0a45aa654ef88033b2f34c3640"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 08 14:20:45 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 13:11:04 2016 +0000"
      },
      "message": "ART: Implement HSelect with CSEL/FCSEL on arm64\n\nChange-Id: I549af0cba3c5048066a2d1206b78a70b496d349e\n"
    },
    {
      "commit": "badd826664896d4a9628a5a89b78016894aa414b",
      "tree": "a30e8b3e62126ae1e1df1152ac643cfc5f2b074a",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:28:56 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 10:21:07 2016 +0000"
      },
      "message": "ART: Run SsaBuilder from HGraphBuilder\n\nFirst step towards merging the two passes, which will later result in\nHGraphBuilder directly producing SSA form. This CL mostly just updates\ntests broken by not being able to inspect the pre-SSA form.\n\nUsing HLocals outside the HGraphBuilder is now deprecated.\n\nBug: 27150508\nChange-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e\n"
    },
    {
      "commit": "6e332529c33be4d7dae5dad3609a839f4c0d3bfc",
      "tree": "cedd2e1beb170fd5821136fe974e3f34adfcddc2",
      "parents": [
        "d3caabd4f85f86dd744da432993e12935d843a83"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:15:27 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 12 15:17:50 2016 +0000"
      },
      "message": "ART: Remove HTemporary\n\nChange-Id: I21b984224370a9ce7a4a13a9652503cfb03c5f03\n"
    },
    {
      "commit": "86503785cd6414b8692e5c83cadaa2972b6a099b",
      "tree": "a242e28bd3605dce65c9f5e94b5fc13f06f07d19",
      "parents": [
        "be89a6f1d9e41b154be3fe1da97cedb6964fbd35"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 11 19:07:30 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 11 19:07:30 2016 +0000"
      },
      "message": "Fix x86-64 Baker\u0027s read barrier fast path for CheckCast.\n\nUse an art::x86_64::Label instead of an\nart::x86_64::NearLabel as end label when emitting code for a\nHCheckCast instruction, as the range of the latter may\nsometimes be too short when Baker\u0027s read barriers are\nenabled.\n\nBug: 12687968\nChange-Id: Ia9742dce65be7d4fb104688f3c4717b65df1fb54\n"
    },
    {
      "commit": "9fba3f67a0792ad5eeb495e489d11a87211c318f",
      "tree": "7204ab0951b14fa2536fe33d974e413a3cbe87a5",
      "parents": [
        "0f638c64686c03256c949051331b0838c9888a2a",
        "b331febbab8e916680faba722cc84b66b84218a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:25:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 17:25:17 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\""
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "11aa3f5c5efd5ce8e761dfd76378a91d9f8dc42b",
      "tree": "746ab81bbc05e03fb918ca32cc8d5b296d083113",
      "parents": [
        "7ac9aeb501520089334c7b9e0deca1e089945bc8",
        "bd89a5c556324062b7d841843b039392e84cfaf4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:47:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 15:47:16 2016 +0000"
      },
      "message": "Merge \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\""
    },
    {
      "commit": "bd89a5c556324062b7d841843b039392e84cfaf4",
      "tree": "185a1604d29d715aa3ac8e0284343bf8d538ef3e",
      "parents": [
        "891bc286963892ed96134ca1adb7822737af9710"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:46:42 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 05 15:46:42 2016 +0000"
      },
      "message": "Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\n\nDCHECK whether loop headers are covered fails.\n\nThis reverts commit 891bc286963892ed96134ca1adb7822737af9710.\n\nChange-Id: I0f9a90630b014b16d20ba1dfba31ce63e6648021\n"
    },
    {
      "commit": "7ac9aeb501520089334c7b9e0deca1e089945bc8",
      "tree": "2654ef827f6f15ac92f224c2b0460a3d3645fe2d",
      "parents": [
        "c8d2b0c174dc45c931eecf45a5fdd45fdf4be311",
        "891bc286963892ed96134ca1adb7822737af9710"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 14:39:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 05 14:39:18 2016 +0000"
      },
      "message": "Merge \"Implement on-stack replacement for arm/arm64/x86/x86_64.\""
    },
    {
      "commit": "891bc286963892ed96134ca1adb7822737af9710",
      "tree": "596055109b4eed1a41ae61dbec76ad9d5a1d78df",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 12:40:13 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 11:48:04 2016 +0000"
      },
      "message": "Implement on-stack replacement for arm/arm64/x86/x86_64.\n\nHigh-level overview:\n- osr_method_threshold is used to know when to compile a method\n  in osr mode (-\u003e treat all loops as irreducible).\n- branch instructions in the compiler query whether they can\n  jump to an osr method.\n- An osr entry point is found through the stack maps: if a stack\n  map is duplicated in the CodeInfo, it is an osr entry point.\n\nChange-Id: Ifb39338cd281e2c7eccce67f4e18d46428be71e4\n"
    },
    {
      "commit": "2f10a5fb8c236a6786928f0323bd312c3ee9a4cc",
      "tree": "0dc51717b1f5d9b2c20898c5283467d4feb220e2",
      "parents": [
        "a20748aceb63396c5e09366968bbc71308f745df"
      ],
      "author": {
        "name": "Mark P Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Jan 25 14:47:50 2016 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Feb 04 12:59:22 2016 -0500"
      },
      "message": "Revert \"Revert \"X86: Use the constant area for more operations.\"\"\n\nThis reverts commit cf8d1bb97e193e02b430d707d3b669565fababb4.\n\nHandle the case of an intrinsic where CurrentMethod is still an input.\nThis will be the case when there are unresolved classes in the\nhierarchy.\n\nAdd a test case to confirm that we don\u0027t crash when handling Math.abs,\nwhich wants to add a pointer to the constant area for the bitmask to be\nused to remove the sign bit.\n\nEnhance 565-checker-condition-liveness to check for the case of deeply\nnested EmitAtUseSite chains.\n\nChange-Id: I022e8b96a32f5bf464331d0c318c56b9d0ac3c9a\n"
    },
    {
      "commit": "03196cfae4e8a91ce37d257b315f78a965a79829",
      "tree": "b4cd8397a53e8c0a38ff6211f0ea84841a085602",
      "parents": [
        "7f1551d28b3674799a4bb2b198bf6b16f32082af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 12:23:22 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 12:25:24 2016 +0000"
      },
      "message": "Be on the safe side: emit an environment for runtime calls.\n\nEven if those runtime calls don\u0027t throw, they may be interrupted\nand be asked to dump their stack. Since dumping a stack also dumps\nlocked Java objects, we need a DexRegisterMap at these locations\nto know the location of those objects.\n\nAdds 0.05% to boot image code size.\n\nbug:26168076\nChange-Id: I7c3975addea9ddf3123183b07108b0701bb26fc8\n"
    },
    {
      "commit": "9ff1de06d6ed1da36f7e976224a2d13e5e9882bf",
      "tree": "9121c384f3e0375fccfa4ca9f71c7d86baf38904",
      "parents": [
        "bee600ff66e3e233274faa1391890ff424a8244e",
        "a42363f79832a6e14f348514664dc6dc3edf9da2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "message": "Merge \"Implement first kind of polymorphic inlining.\""
    },
    {
      "commit": "a42363f79832a6e14f348514664dc6dc3edf9da2",
      "tree": "bcd43acdf9903a704b566af00b5c740786284b7b",
      "parents": [
        "9cea9139033a4d04437ebc5542e9466fd67137fe"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 14:57:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 15:55:46 2016 +0000"
      },
      "message": "Implement first kind of polymorphic inlining.\n\nAdd HClassTableGet to fetch an ArtMethod from the vtable or imt,\nand compare it to the only method the profiling saw.\n\nChange-Id: I76afd3689178f10e3be048aa3ac9a97c6f63295d\n"
    },
    {
      "commit": "74eb1b264691c4eb399d0858015a7fc13c476ac6",
      "tree": "0b6fc4f3003d50bf6c388601013cdfc606e53859",
      "parents": [
        "75fd2a8ab9b4aff59308034da26eb4986d10fa9e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 14 11:44:01 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 28 15:50:27 2016 +0000"
      },
      "message": "ART: Implement HSelect\n\nThis patch adds a new HIR instruction to Optimizing. HSelect returns\none of two inputs based on the outcome of a condition.\n\nThis is only initial implementation which:\n - defines the new instruction,\n - repurposes BooleanSimplifier to emit it,\n - extends InstructionSimplifier to statically resolve it,\n - updates existing code and tests accordingly.\n\nCode generators currently emit fallback if/then/else code and will be\nupdated in follow-up CLs to use platform-specific conditional moves\nwhen possible.\n\nChange-Id: Ib61b17146487ebe6b55350c2b589f0b971dcaaee\n"
    },
    {
      "commit": "b3e773eea39a156b3eacf915ba84e3af1a5c14fa",
      "tree": "6c0d3a748d7b445a0d776ed306c7add43a0e1dd3",
      "parents": [
        "05aeb408f292d8d94af1646a94bc69faf77f0b46"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 26 11:28:37 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 28 15:48:00 2016 +0000"
      },
      "message": "ART: Implement support for instruction inlining\n\nOptimizing HIR contains \u0027non-materialized\u0027 instructions which are\nemitted at their use sites rather than their defining sites. This\nwas not properly handled by the liveness analysis which did not\nadjust the use positions of the inputs of such instructions.\nDespite the analysis being incorrect, the current use cases never\nproduce incorrect code.\n\nThis patch generalizes the concept of inlined instructions and\nupdates liveness analysis to set the compute use positions correctly.\n\nChange-Id: Id703c154b20ab861241ae5c715a150385d3ff621\n"
    },
    {
      "commit": "f39745e663f8f2634fc8858e427b77da98f8f2b4",
      "tree": "b8cd5abd22e0252511166930ac6326a2f38e6980",
      "parents": [
        "36867b43efadc637ab74b1bacb1caecea2c5413d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "message": "ART: Remove some unnecessary mutator lock annotations.\n\nThe StackReference\u003c\u003e pointer held by a Handle\u003c\u003e can be used\nwithout holding the mutator lock. We already do that when\nwe copy Handle\u003c\u003es around. Only accessing the actual content\nof the pointed-to StackReference\u003c\u003e needs to be done while\nholding the mutator lock.\n\nChange-Id: I5f93bd7e277383192f1f16dff6883ecb26387414\n"
    },
    {
      "commit": "cf8d1bb97e193e02b430d707d3b669565fababb4",
      "tree": "dcdf5e9baaa89b82515652d5abffa2712bc9b3ca",
      "parents": [
        "dc00454f0b9a134f01f79b419200f4044c2af5c6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 25 09:43:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 25 09:43:30 2016 +0000"
      },
      "message": "Revert \"X86: Use the constant area for more operations.\"\n\nHits a DCHECK:\n\ndex2oatd F 19461 20411 art/compiler/optimizing/pc_relative_fixups_x86.cc:196] Check failed: !invoke_static_or_direct-\u003eHasCurrentMethodInput() \n\n\nThis reverts commit dc00454f0b9a134f01f79b419200f4044c2af5c6.\n\nChange-Id: Idfcacf12eb9e1dd7e68d95e880fda0f76f90e9ed\n"
    },
    {
      "commit": "dc00454f0b9a134f01f79b419200f4044c2af5c6",
      "tree": "49a787e2b617ce5bc69aa2dc4b71653c68ee0375",
      "parents": [
        "2d0582b6c96cf16e18df50158494e32eeede0a95"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Oct 30 09:45:03 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Jan 22 14:54:15 2016 -0500"
      },
      "message": "X86: Use the constant area for more operations.\n\nAllow FP HNeg to use the constant area to hold the constant to flip the\nsign bit.\n\nEnhance some math intrinsics to allow the use of the constant\narea: Abs{Float,Double}, {Min,Max}{FloatFloat,DoubleDouble}.\n\nAllow compares of floats/doubles to constants using the constant area.\n\nThese eliminate almost all uses of loading constants from the stack.\n\nChange-Id: Ic4b831565825cbe9f0801b1b53c1013be7c87ae4\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "87f7dfc3ad523441f607d116042638a02b2286a6",
      "tree": "6902b45f5e661722cee59a4db1828ddef7bdbd7d",
      "parents": [
        "d30de5b7667843889e38370ec3b8f523e5a128d0",
        "788f2f05c3e5b0e5bda247b00e34f0094585546f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 13:35:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 13:35:19 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Inline methods with loops.\"\"\""
    },
    {
      "commit": "788f2f05c3e5b0e5bda247b00e34f0094585546f",
      "tree": "7e8b578b60bed6e550b62767f1fbc43651755798",
      "parents": [
        "c24b8df48be848af1f4cb54e9caef2b7d6afe680"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:41:38 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 13:33:57 2016 +0000"
      },
      "message": "Revert \"Revert \"Inline methods with loops.\"\"\n\nBug: 26689526\n\nThis reverts commit 451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d.\n\nChange-Id: If484fe4c0744254dd7568fd5006e574d621a1855\n"
    },
    {
      "commit": "d30de5b7667843889e38370ec3b8f523e5a128d0",
      "tree": "6aa3ee28f89a3ec812339b19c003c0d404624aa6",
      "parents": [
        "34513835220e9473662ed1780291c680a5716fd0",
        "d4aee949b3dd976295201b5310f13aa2df40afa1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:36:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 12:36:39 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\""
    },
    {
      "commit": "d4aee949b3dd976295201b5310f13aa2df40afa1",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "884e54c8a45e49b58cb1127c8ed890f79f382601"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:35:26 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 12:35:26 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\"\n\nFails two checker tests:\n\n458-checker-instruction-simplification\n537-checker-jump-over-jump\n\nThis reverts commit 884e54c8a45e49b58cb1127c8ed890f79f382601.\n\nChange-Id: I22553e4e77662736b8b453d911a2f4e601f3a27e\n"
    },
    {
      "commit": "45ec0967f1ac09d223e94267c0004dc08670792e",
      "tree": "bba7deec82b9f7808eff253e2c1177818f9dd918",
      "parents": [
        "c54ec90cc3c7570be2a5a64717cd10c817e246c7",
        "884e54c8a45e49b58cb1127c8ed890f79f382601"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 10:44:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 10:44:39 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\""
    },
    {
      "commit": "6b5afdd144d2bb3bf994240797834b5666b2cf98",
      "tree": "d536cd7b3aaf55c563e82c2c522521a91b2bb953",
      "parents": [
        "debeb98aaa8950caf1a19df490f2ac9bf563075b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 09:31:52 2016 +0000"
      },
      "message": "Revert \"ARM/ARM64: Extend support of instruction combining.\"\n\nThe test fails its checker parts.\n\nThis reverts commit debeb98aaa8950caf1a19df490f2ac9bf563075b.\n\nChange-Id: I49929e15950c7814da6c411ecd2b640d12de80df\n"
    },
    {
      "commit": "884e54c8a45e49b58cb1127c8ed890f79f382601",
      "tree": "0be051a729b2f2674c3148d8734e5520713ad546",
      "parents": [
        "a05cacc11fa075246c38497c01b949745fadc54b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:59:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:59:04 2016 +0000"
      },
      "message": "Revert \"Revert \"Change condition to opposite if lhs is constant\"\"\n\nThis reverts commit a05cacc11fa075246c38497c01b949745fadc54b.\n\nChange-Id: Ifdc261fd4dfb2c538017fe1d69af723aafd4afef\n"
    },
    {
      "commit": "debeb98aaa8950caf1a19df490f2ac9bf563075b",
      "tree": "b2a7a7cc6fb2f56d4bcc6cecaa80035668f38dc4",
      "parents": [
        "6aadaef35ea52506db61e463910c2520b702ca5e"
      ],
      "author": {
        "name": "Ilmir Usmanov",
        "email": "i.usmanov@samsung.com",
        "time": "Fri Dec 11 11:39:44 2015 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Jan 21 11:07:38 2016 +0300"
      },
      "message": "ARM/ARM64: Extend support of instruction combining.\n\nCombine multiply instructions in the following way:\nARM64:\nMUL/NEG -\u003e MNEG\nARM32 (32-bit integers only):\nMUL/ADD -\u003e MLA\nMUL/SUB -\u003e MLS\n\nChange-Id: If20f2d8fb060145ab6fbceeb5a8f1a3d02e0ecdb\n"
    },
    {
      "commit": "3ac099bd8e881b2c3e9096877c646c5dcba6d36a",
      "tree": "0cd87f47db0353afb7ee4d108092cfc52873ecad",
      "parents": [
        "6c2574c8879fff57ffc611ab7214daa97cf6f51d",
        "451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:24:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 20 21:24:20 2016 +0000"
      },
      "message": "Merge \"Revert \"Inline methods with loops.\"\""
    },
    {
      "commit": "451ad8d1be9a1949ea3c3e3a713a9e76198a8b2d",
      "tree": "4a1bb8da95ff9b971f2ef9f3941b645bcaf211d3",
      "parents": [
        "82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:23:30 2016 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 20 21:23:30 2016 +0000"
      },
      "message": "Revert \"Inline methods with loops.\"\n\nThis reverts commit 82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869.\n\nLoop inlining exposes issues with BCE.\n\nBug: 26689526\nChange-Id: Id9983d7f9d3c5579d91e56e4699d4d939517b2dc\n"
    },
    {
      "commit": "440ef2cbc76d7e2bc76cf5f15b69fc0478d7e853",
      "tree": "b2c457e09b6ebff0e1c7504d4bb1bf4bcfe1b8e6",
      "parents": [
        "5b98e3c84ab634ff259a94fe6148f10533b467da",
        "bc9ab1630a198efbbf730275541291321ac3d2d4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 16:48:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 20 16:48:30 2016 +0000"
      },
      "message": "Merge \"ART: Cannot assume String.\u003cinit\u003e called on NewInstance\""
    },
    {
      "commit": "bc9ab1630a198efbbf730275541291321ac3d2d4",
      "tree": "68551c86f225e15bbeba00f52236492a4c8fe576",
      "parents": [
        "c4004042ca028a3c7898f0032dcee08cddea303b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 14:50:19 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 20 16:35:08 2016 +0000"
      },
      "message": "ART: Cannot assume String.\u003cinit\u003e called on NewInstance\n\nIrreducible loops create uneliminatable phis for all live vregs. This\nbreaks the StringFactory optimization which assumes that the first\ninput is always a NewInstance instruction.\n\nBug: 26676472\n\nChange-Id: Ib7dfdadbafbbfef89e1f5b1a80eb75ecf792621a\n"
    },
    {
      "commit": "82fc9bb45dbf8ff728122fb7ab72d1eb7b2f4869",
      "tree": "3a22cf5bb2e0012723ecdc7640e4db0dd5be2f0a",
      "parents": [
        "17ccfff2de292fd2b4a78aef87d79b662381f920"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 14:08:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 20 16:28:39 2016 +0000"
      },
      "message": "Inline methods with loops.\n\nCompiling Gms/Fb/Framework/Docs:\n- Overall compilation-time increase: 2.2%\n- Overall code size increase: 1.1%\n\nPerformance improvements:\n- Richards with jit: +6%\n- Takl: +11%\n\nChange-Id: I0a6fcf2a360e5ad193cd95b5c4fe92227ac6bd96\n"
    },
    {
      "commit": "09aa147f0891ef28a95d89e8ad61c429f82ddd5b",
      "tree": "dbf7ee48d5aa06dc4ba1ca88702e5e667e17a9db",
      "parents": [
        "a65ff5e0576ace8ffeb1a6dc8784a61cd2498fba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:52:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 13:24:07 2016 +0000"
      },
      "message": "Disable DCE when there are irreducible loops.\n\nAlso ensure an instruction that requires an environment\ndoes have one.\n\nChange-Id: I41a8460e05ef320f872197d3be7847e7ffaa6ee8\n"
    },
    {
      "commit": "28943466954ca5d6f586bb5496f7f3f0f85fe87a",
      "tree": "56a4f7427addf50aba847ea944ec24396c7e848f",
      "parents": [
        "68c56ae9ccdb6e348501456e374ae65e74f6270c",
        "6de1938e562b0d06e462512dd806166e754035ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 15 09:19:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 09:19:12 2016 +0000"
      },
      "message": "Merge \"ART: Remove incorrect HFakeString optimization\""
    },
    {
      "commit": "947cb4f5582d1f57270b48d3c47ea95e7f9085b5",
      "tree": "6f6aed8f8cca3177b06521a8db6ca845d18623ad",
      "parents": [
        "7b4199a5fa9f151fbf3af2a34f26d04215a1016c",
        "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 14 21:25:16 2016 +0000"
      },
      "message": "Merge \"Implement irreducible loop support in optimizing.\""
    },
    {
      "commit": "6de1938e562b0d06e462512dd806166e754035ea",
      "tree": "f9df086a73860c20768d17ff7bc5be4139567941",
      "parents": [
        "f5b84ee14a3bc578f799a39dca1ae512b49356ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 08 17:37:10 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 14 16:22:13 2016 +0000"
      },
      "message": "ART: Remove incorrect HFakeString optimization\n\nSimplification of HFakeString assumes that it cannot be used until\nString.\u003cinit\u003e is called which is not true and causes different\nbehaviour between the compiler and the interpreter. This patch\nremoves the optimization together with the HFakeString instruction.\n\nInstead, HNewInstance is generated and an empty String allocated\nuntil it is replaced with the result of the StringFactory call. This\nis consistent with the behaviour of the interpreter but is too\nconservative. A follow-up CL will attempt to optimize out the initial\nallocation when possible.\n\nBug: 26457745\nBug: 26486014\n\nChange-Id: I7139e37ed00a880715bfc234896a930fde670c44\n"
    },
    {
      "commit": "15bd22849ee6a1ffb3fb3630f686c2870bdf1bbc",
      "tree": "a261601589163faa4538bcf1c9d156e8ec4a42b3",
      "parents": [
        "5b7b5ddb515828c93f0c2aec67aa513c32d0de22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:55:41 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 15:00:20 2016 +0000"
      },
      "message": "Implement irreducible loop support in optimizing.\n\nSo we don\u0027t fallback to the interpreter in the presence of\nirreducible loops.\n\nImplications:\n- A loop pre-header does not necessarily dominate a loop header.\n- Non-constant redundant phis will be kept in loop headers, to\n  satisfy our linear scan register allocation algorithm.\n- while-graph optimizations, such as gvn, licm, lse, and dce\n  need to know when they are dealing with irreducible loops.\n\nChange-Id: I2cea8934ce0b40162d215353497c7f77d6c9137e\n"
    },
    {
      "commit": "780aeced2a8ef918901d8f450864de934f79c555",
      "tree": "0e91880137f2a5cffad2ead46d1b917bd523ae47",
      "parents": [
        "a38e418fb2d9b817309c54b54ca85039907c2bbb"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Jan 13 14:34:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:00:44 2016 +0000"
      },
      "message": "Update `ValidateInvokeRuntime()` and HDivZeroCheck.\n\nChange-Id: I35beab2777a8c83bd508d56966afa1ceff9ee24f\n"
    },
    {
      "commit": "1cde05849f2057b11e3a149144a1d02245d22060",
      "tree": "6ee7b558c082124c5fb45048e33ae18b8c13d790",
      "parents": [
        "185be57ccf1ffe059fc7a0d5acca81446b732411"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 13:56:20 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 13:56:20 2016 +0000"
      },
      "message": "HDeoptimize can also trigger GC.\n\nbug:26532563\nChange-Id: Idaa294fb500ab820c7b45e37747e96f0b455f663\n"
    },
    {
      "commit": "1af564e2d3b560fb9a076eb35ea20471aed0dc92",
      "tree": "1a369a546a6319fd866c241d5c92f3a241d314af",
      "parents": [
        "922698ded1e80cad1ecce4c2172a88c76a216373"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 12:09:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 12:38:52 2016 +0000"
      },
      "message": "Set side effects to HNullCheck and HBoundsCheck.\n\nBoth can trigger GC, as they will call NullPointerException or\nIndexOutOfBoundsException constructors.\n\nbug:26532563\nChange-Id: Id9e42f0450caaaf365630989e1b36e98add46c89\n"
    },
    {
      "commit": "a3eca2d7300f35c66cf4b696d788a8b7ba74eb99",
      "tree": "18ea775d51bfc71d90407bd801e8b56fb5309868",
      "parents": [
        "3da15f8b1097905e06a59149c3a4a9658cbb7d5e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 16:03:16 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 16:05:38 2016 +0000"
      },
      "message": "Do not leave intermediate addresses across Java calls.\n\nbug:26472446\nChange-Id: Ie4a9b5fe6f1d61a76c71eceaa2299fe55512c612\n"
    },
    {
      "commit": "a05cacc11fa075246c38497c01b949745fadc54b",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "f9f196c55f3b25c3b09350cd8ed5d7ead31f1757"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:00:24 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:00:24 2016 +0000"
      },
      "message": "Revert \"Change condition to opposite if lhs is constant\"\n\nBreaks arm64\n\nThis reverts commit f9f196c55f3b25c3b09350cd8ed5d7ead31f1757.\n\nChange-Id: Ie1027a218154b8ded6c1c8f0007720f5be68780d\n"
    },
    {
      "commit": "f9f196c55f3b25c3b09350cd8ed5d7ead31f1757",
      "tree": "0be051a729b2f2674c3148d8734e5520713ad546",
      "parents": [
        "c3ba07ef76549129705af28173070b88a1c39531"
      ],
      "author": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Tue Sep 08 17:33:16 2015 +0600"
      },
      "committer": {
        "name": "Anton Shamin",
        "email": "anton.shamin@intel.com",
        "time": "Tue Jan 12 13:07:06 2016 +0000"
      },
      "message": "Change condition to opposite if lhs is constant\n\nSwap operands if lhs is constant. Handeled unsigned comparison\nin insruction simplifier. Fixed NaN comparison: no matter what\nbias is set result of Equal and NotEqual operations should not\ndepend on it. Added checker tests.\n\nChange-Id: I5a9ac25fb10f2705127a52534867cee43368ed1b\nSigned-off-by: Anton Shamin \u003canton.shamin@intel.com\u003e\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "c928591f5b2c544751bb3fb26dc614d3c2e67bef",
      "tree": "b6c8a5e08c4d4c7a66a70f4d91e209ededf22334",
      "parents": [
        "5ee288c9dd99614e3a238f5efceeec6456e3499d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Dec 18 10:38:42 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jan 08 12:55:31 2016 +0000"
      },
      "message": "ARM Baker\u0027s read barrier fast path implementation.\n\nIntroduce an ARM 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 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: Ie7ee85b1b4c0564148270cebdd3cbd4c3da51b3a\n"
    },
    {
      "commit": "15693bfdf9fa3ec79327a77b7e10315614d716cc",
      "tree": "918208d60ec2a5595a2b5e42791865fefdbf9692",
      "parents": [
        "87bafaf563d35616804dd0cc0dbde176aac87817"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 16 10:30:45 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 12:44:42 2016 +0000"
      },
      "message": "ART: Resolve ambiguous ArraySets\n\nJust like aget(-wide), the value operand of aput(-wide) bytecode\ninstructions can be both int/long and float/double. This patch builds\non the previous mechanism for resolving type of ArrayGets to type the\nvalues of ArraySets based on the reference type of the array.\n\nBug: 22538329\n\nChange-Id: Ic86abbb58de146692de04476b555010b6fcdd8b6\n"
    },
    {
      "commit": "f555258861aea7df8af9c2241ab761227fd2f66a",
      "tree": "1317545f50f78eb7c9e4dd44ebfb256bdff0af11",
      "parents": [
        "c917d195d8d8d05f90796b1e0842883fc608346d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Dec 27 13:36:12 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 10:33:30 2016 +0000"
      },
      "message": "ART: Create BoundType for CheckCast early\n\nReferenceTypePropagation creates a BoundType for each CheckCast and\nreplaces all dominated uses of the casted object with it. This does\nnot include Phi uses on the boundary of the dominated scope, reducing\ntyping precision. This patch creates the BoundType in Builder, causing\nSsaBuilder to replace uses of the object automatically.\n\nBug: 26081304\n\nChange-Id: I083979155cccb348071ff58cb9060a896ed7d2ac\n"
    }
  ],
  "next": "4833f5a1990c76bc2be89504225fb13cca22bedf"
}
