)]}'
{
  "log": [
    {
      "commit": "1d85823d122b475bdf67cc49aa9eee32736fd5b1",
      "tree": "4fbca48fe91517908885653433a0cfdc73fdeb28",
      "parents": [
        "2b689e370be9f32a88b419edf2d78eb6befade9c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 05 13:36:39 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 05 15:12:29 2015 -0700"
      },
      "message": "Temporarily suppress 098-ddmc for the read barrier config.\n\nBug: 20720510\nChange-Id: Ie8c159767654837c02f0484f4dda569bb0118a03\n"
    },
    {
      "commit": "fbda5f3e1378f07ae202f62da625ee43a063a052",
      "tree": "4c6b9dbadbdf409a878da05bd3d765f9cb55653a",
      "parents": [
        "008b17ae313d033537a3792faf937134315f03bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 14:16:00 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 05 10:24:17 2015 +0100"
      },
      "message": "Find better split positions in the register allocator.\n\nIn a standard if/else control flow graph, this avoids\ndoing a move in one branch if the other branch decided\nto move an interval.\n\nThis also needs a new register hint kind, which is what\nwas the location of the interval at the predecessor block.\n\nChange-Id: I18b78264587b4d693540fbb5e014d12df2add3e2\n"
    },
    {
      "commit": "5d7b7f81ed5455893f984752c00571ef27cc97c5",
      "tree": "a497582ae4ab5a69ba7035c1f95af0ee0f0b025b",
      "parents": [
        "01ce498499eed47e87fceb8736d26fe49b2a4346"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 28 00:52:43 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 01 10:07:52 2015 +0100"
      },
      "message": "Update the remaining input index of phis after deleting an input.\n\nbug:20715803\nbug:20690906\n\nChange-Id: Iaf08f0c30d629e766be2b04815dc3e38b6e7ff35\n"
    },
    {
      "commit": "fd5f56d4604eeeacdf6be5189187b6ef49157280",
      "tree": "b53a3ba3a8a4978e372a4e9a657b2c4c5ace7648",
      "parents": [
        "56784f887bad1219f326e9e6d110f785f31a5968",
        "2af2307f3903a75a379029c049b86f9903fc81a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 30 11:16:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 30 11:16:06 2015 +0000"
      },
      "message": "Merge \"Revert \"GVN final fields even with side effects.\"\""
    },
    {
      "commit": "2af2307f3903a75a379029c049b86f9903fc81a5",
      "tree": "89168f24337d7ec41648568c48b0dd5fb5194c39",
      "parents": [
        "781733632637db98d79dfffad72bf063be3259be"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 30 11:15:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 30 11:15:40 2015 +0000"
      },
      "message": "Revert \"GVN final fields even with side effects.\"\n\nThis reverts commit 781733632637db98d79dfffad72bf063be3259be.\n\nChange-Id: Id7c4591f6b8190921852044b278d11627457c570\n"
    },
    {
      "commit": "56784f887bad1219f326e9e6d110f785f31a5968",
      "tree": "42225647869863b4c79d537639bc1fb4ea5fdf7f",
      "parents": [
        "0a50264b30a0c61099e8388015cccfa417a6bd18",
        "781733632637db98d79dfffad72bf063be3259be"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 30 10:21:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 30 10:21:20 2015 +0000"
      },
      "message": "Merge \"GVN final fields even with side effects.\""
    },
    {
      "commit": "781733632637db98d79dfffad72bf063be3259be",
      "tree": "a4ea455e89adb9db77e25525a81737f3b0ab0c58",
      "parents": [
        "36ad3f1c3c08a49680a8f5d34bba43199ab9dd5b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 16:46:27 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 30 11:20:21 2015 +0100"
      },
      "message": "GVN final fields even with side effects.\n\nTwo accesses of a final field can be GVN\u0027ed even if there are\nside effects between them.\n\nChange-Id: I04495ae83c7858f4216b083ad1c29851954320ad\n"
    },
    {
      "commit": "0cba004b97245300d7f39318d5921ee8edbef1ac",
      "tree": "edef4ed18df47c3c033c33b14bdd2aa6652f8696",
      "parents": [
        "eff3229ff3c8faead4b6d400e273ee27b7004dab"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 29 20:47:16 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 29 20:47:16 2015 -0700"
      },
      "message": "ART: Allow oat files with duplicates classes in corner case\n\nWhen the oat file is actually an odex file, that is, a preopted\n/system app, then it is impossible to fall back to the original\nAPK, as that has been stripped.\n\nWhen it looks like it will be impossible to successfully open the\noriginal dex location, grudgingly allow to open the found oat file,\neven if it has duplicate classes, but warn accordingly.\n\nBug: 20697582\nChange-Id: I1dd459563d977a2e77806eacd03e49334d5b1f14\n"
    },
    {
      "commit": "ed51747ae96a0c7fac452e95a1607200a5494b28",
      "tree": "0c639e611ffb5a1931617f8e36cc74fa8ec735e0",
      "parents": [
        "0430fc9216dddf6a6967cfffd37dfa99d73c2c68",
        "579026039080252878106118645ed70706f4838e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 17:10:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 29 17:10:09 2015 +0000"
      },
      "message": "Merge \"Add synthesize uses at back edge.\""
    },
    {
      "commit": "579026039080252878106118645ed70706f4838e",
      "tree": "cfedba53d8e8b04e81b855560e388f3f691ee837",
      "parents": [
        "2d01066db24c19f9384f50ff71806cbb4835c7f9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 21 14:28:41 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 18:02:36 2015 +0100"
      },
      "message": "Add synthesize uses at back edge.\n\nThis reduces the cost of linearizing the graph (hence removing\nthe notion of back edge). Since linear scan allocates/spills registers\nbased on next use, adding a use at a back edge ensures we do count\nfor loop uses.\n\nChange-Id: Idaa882cb120edbdd08ca6bff142d326a8245bd14\n"
    },
    {
      "commit": "69a2804c3bb48cf4fd00a66080f613a4fd96c422",
      "tree": "aab3f079d972bae71bbfa27fdca139738f41dbf0",
      "parents": [
        "f073a36d1ed866e786f7d7784c709c86b00bc58e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 29 17:16:07 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 29 17:36:52 2015 +0100"
      },
      "message": "ART: Fix loop information after dead code elimination\n\nCompilation failed when only some blocks of a loop were removed during\ndead code elimination.\n\nBug: 20680703\nChange-Id: If31025169ca493f0d7f7f2788576e98d05f03394\n"
    },
    {
      "commit": "5c8bb7e630b8080702325ec1ef6ccb2deefcd220",
      "tree": "fbd219ab85472978fa8e35e6a3e93fe572d5e60b",
      "parents": [
        "57f6bee40489842c0461140935f900ed88281592"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 10:57:50 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 29 10:57:50 2015 +0100"
      },
      "message": "Bugs have been fixed, so run the tests.\n\nChange-Id: I6769cf244d246160b65d6dd4e4df0efb0aa8a7e5\n"
    },
    {
      "commit": "b8df6601f2119fd90150761388057dbe893bb6ae",
      "tree": "d8108e4e362fd9302aaacbb6d609fd41925060b6",
      "parents": [
        "edede5c67daa2a6890067da0934e0ba6e14661b9",
        "67aea0a0b078c7f6ed780e5fafb31e9849127f79"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 28 19:15:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 19:15:05 2015 +0000"
      },
      "message": "Merge \"Change ddmc run-test to make new objects instead of strings.\""
    },
    {
      "commit": "67aea0a0b078c7f6ed780e5fafb31e9849127f79",
      "tree": "975d975358182e373e8e0903d1b9bc1da1bd71a8",
      "parents": [
        "458d91b0f72293c9dd347feecf535db0682ccd71"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 28 12:11:22 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 28 12:11:22 2015 -0700"
      },
      "message": "Change ddmc run-test to make new objects instead of strings.\n\nBefore, the test was creating new strings until overflowing allocations,\nwhich was half string objects and half character arrays. Now, it\nallocates all strings with the character data, which is larger than\nbefore, causing the test to run out of memory. Allocating only objects\nprevents the test from running out of memory.\n\nChange-Id: Icf3f0fd2ae847e76a9b8d5dfb762be92de16aaa3\n"
    },
    {
      "commit": "edede5c67daa2a6890067da0934e0ba6e14661b9",
      "tree": "b487904c8b19988d09f7eb9b419671742244667c",
      "parents": [
        "458d91b0f72293c9dd347feecf535db0682ccd71",
        "2bee20b5f0d783b43c1bbbe281f69a6f9b9e0a98"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 28 18:35:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 18:35:18 2015 +0000"
      },
      "message": "Merge \"Quick: Fix crash on fall-through out of method code.\""
    },
    {
      "commit": "2bee20b5f0d783b43c1bbbe281f69a6f9b9e0a98",
      "tree": "22858fdb8f1c7041a231f38acff446b36e17bf84",
      "parents": [
        "3adfc4bbe6c42d574bd2069d8e38a13d5ad98ccf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 07 19:43:36 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 28 19:23:41 2015 +0100"
      },
      "message": "Quick: Fix crash on fall-through out of method code.\n\nFix Quick crash when the last insn has a fall-through out of\nthe method\u0027s code. Allow creation of an out-of-method block\nand at the end of MIRGraph::InlineMethod() check if that\nblock is reachable. If it is, punt to interpreter. Add tests\nfor unreachable if-lt and packed-switch as the last insn.\n\nAlso fix MIRGraph::ProcessCanSwitch() to treat the offset to\nthe data as signed. Jumping over the data with a goto and\nusing it from a switch further down is valid. This was also\ncrashing (presumably only on 64-bit dex2oat).\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the\nbug report.\n\nBug: 19988134\nChange-Id: I627f4137f61901897bfb9a5252741c6ded3a1adb\n"
    },
    {
      "commit": "2d2f2a9c665b02ca5139f71e37ca5e08389e4191",
      "tree": "50551b6039ff7924d75077ace60bd4304a8ed3bf",
      "parents": [
        "3adfc4bbe6c42d574bd2069d8e38a13d5ad98ccf"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 28 15:00:41 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 28 15:25:47 2015 +0200"
      },
      "message": "Fix constructor access check through reflection\n\nWe must not throw IllegalAccessException if the constructor has been\nmade accessible by a previous call to Constructor.setAccessible, even\nif the caller cannot access the constructor.\n\nBug: 20639158\nChange-Id: I9a34f05cdbb8825ad88b42223743690228e3f03e\n"
    },
    {
      "commit": "a94fb1f99ee3390bca9531b2512f8fc65f13ceee",
      "tree": "f1234e6d003873e4720d591a84cdedde6e7b399f",
      "parents": [
        "64db01714f91bf255a79c0a88813641c240c9857",
        "0d22184ec9e5b1e958c031ac92c7f053de3a13a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 28 10:29:17 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 10:29:19 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"[optimizing] Replace FP divide by power of 2\"\"\""
    },
    {
      "commit": "f0a3d3dad248ad0dcb7cfc6addcc66d8bd117e48",
      "tree": "a7c790ebf0e37c5cf5e50b60e8122c3d5be4222c",
      "parents": [
        "9d1e19035a59ff8bf05a09ad880ede99806ba73f",
        "8208bddbefa9613422b9c6a19ce39a24391beec3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 28 02:42:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 02:42:25 2015 +0000"
      },
      "message": "Merge \"ART: Fix constructor access checking\""
    },
    {
      "commit": "8208bddbefa9613422b9c6a19ce39a24391beec3",
      "tree": "618f6ca8791dcf0eaf659f751197f985a9bdec2b",
      "parents": [
        "97c96f5aab22f75dd54089bdc194588a4b5a2e8d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 27 17:26:37 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 27 19:41:54 2015 -0700"
      },
      "message": "ART: Fix constructor access checking\n\nConstructor access must be checked.\n\n(cherry picked from commit 0dd76cd3f09f495a1b9a0e4f8712c09ff885c6fd)\n\nBug: 20639158\nChange-Id: I3c586e9572a748d208bea43aa2349c3ef52a2ee5\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "0d22184ec9e5b1e958c031ac92c7f053de3a13a2",
      "tree": "4055eda9986916dc86b39d023082a57e60c804f4",
      "parents": [
        "97c96f5aab22f75dd54089bdc194588a4b5a2e8d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 27 08:53:46 2015 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 27 20:06:50 2015 -0400"
      },
      "message": "Revert \"Revert \"[optimizing] Replace FP divide by power of 2\"\"\n\nThis reverts commit 067cae2c86627d2edcf01b918ee601774bc76aeb.\n\nChange-Id: Iaaa8772500ea7d3dce6ae0829dc0dc3bbc9c14ca\n"
    },
    {
      "commit": "769c9e539da8ca80aa914cd12276aa5bd79148ee",
      "tree": "9aadf98a3fcbf7909f76c53fa2ee036ebda00304",
      "parents": [
        "0fbfe6f92a2481daf914043262b5854e65d8c3cc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 13:54:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 17:00:58 2015 +0100"
      },
      "message": "ART: Simplify Ifs with BooleanNot condition\n\nIf statements with negated condition can be simplified by removing the\nnegation and swapping the true and false branches.\n\nChange-Id: I197afbc79fb7344d73b7b85d3611e7ca2519717f\n"
    },
    {
      "commit": "c7508e93fa3df3a3890f6b62550cbd5e35bdd8df",
      "tree": "85795f0df38a741ab14c34e0403ba4bc3c317371",
      "parents": [
        "76bf84a196576f902a76a1165516a49dac15856f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 13:28:57 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 27 13:40:06 2015 +0100"
      },
      "message": "ART: Fix removing a Phi with RemoveInstruction\n\nBoolean simplifier might attempt to remove a Phi from the Instruction\nlist.\n\nChange-Id: I698cc616549bd88dac96395cb2e5d09b5433d157\n"
    },
    {
      "commit": "9d750efd66ae7f4b790af3c1ff8de972bbe826d9",
      "tree": "0166fe675ff0322941ed03674bde500f5bf39510",
      "parents": [
        "f382eff130a5d90c34b3f09c4c61cb50cacd4c54"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:15:30 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:22:33 2015 -0700"
      },
      "message": "BCE: don\u0027t add deoptimization if the loop has early exit.\n\nAlso make the way to detect loop_body_successor to be\nmore accurate.\n\nChange-Id: I29680f93396383c478a8f40ad28735e4f3f07c1b\n"
    },
    {
      "commit": "f382eff130a5d90c34b3f09c4c61cb50cacd4c54",
      "tree": "07dd1b8e0cdf5c078776d6b64aa3813a80182bb6",
      "parents": [
        "adf15974e0a0a2b0e6dc311ff5701b87ca15964a",
        "206d6fd6cae5ba8c4d5f0e230111fe77b9d5c0a5"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 18:23:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 18:23:02 2015 +0000"
      },
      "message": "Merge \"Deoptimization-based BCE for unknown loop bounds.\""
    },
    {
      "commit": "206d6fd6cae5ba8c4d5f0e230111fe77b9d5c0a5",
      "tree": "0684e7dd7ca2768991a839a5ddbe78f20bf1e4bf",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Apr 13 16:46:28 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sun Apr 26 10:47:01 2015 -0700"
      },
      "message": "Deoptimization-based BCE for unknown loop bounds.\n\nFor loop like:\n  for (int i \u003d start; i \u003c end; i++) {\n    array[i] \u003d 1;\n  }\nWe add the following to the loop pre-header:\n  if (start \u003c 0) deoptimize();\n  if (end \u003e array.length) deoptimize();\nThen we can eliminate bounds-check of array[i] inside the loop.\n\nWe also take care of indexing with induction variable plus some offsets,\nlike array[i - 1]/array[i + 1] inside the loop, and adjust the condition\nfor deoptimization accordingly.\n\nChange-Id: I9e24c6b5e134ff95eff5b5605ff8f95d6546616f\n"
    },
    {
      "commit": "adf15974e0a0a2b0e6dc311ff5701b87ca15964a",
      "tree": "65cc0394a15ea82df9ccb680b1ec6b3be72a1a87",
      "parents": [
        "5ff903a589af282f516bbcf6844ff2656ce76b02",
        "067cae2c86627d2edcf01b918ee601774bc76aeb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 16:43:19 2015 +0000"
      },
      "message": "Merge \"Revert \"[optimizing] Replace FP divide by power of 2\"\""
    },
    {
      "commit": "067cae2c86627d2edcf01b918ee601774bc76aeb",
      "tree": "170607d1194943f4eff92e70170da36e06b68a9c",
      "parents": [
        "b0bd8915cb257cdaf46ba663c450a6543bca75af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:00 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 16:43:00 2015 +0000"
      },
      "message": "Revert \"[optimizing] Replace FP divide by power of 2\"\n\nFails compiling docs.\n\nThis reverts commit b0bd8915cb257cdaf46ba663c450a6543bca75af.\n\nChange-Id: I47d32525c83a73118e2163eb58c68bbb7a28bb38\n"
    },
    {
      "commit": "5ff903a589af282f516bbcf6844ff2656ce76b02",
      "tree": "853e7f348c7299f32021a7f0f60ca95ef4f04b24",
      "parents": [
        "2c31b5ac1d45f2f96932c8ff0d299abb2dbde862",
        "b0bd8915cb257cdaf46ba663c450a6543bca75af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Apr 26 15:05:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Apr 26 15:05:29 2015 +0000"
      },
      "message": "Merge \"[optimizing] Replace FP divide by power of 2\""
    },
    {
      "commit": "b15be57e51e63df5406d5c7c1c32784cc0ec4078",
      "tree": "cf08f02ddf398b7486ecf5172de64562846fb10f",
      "parents": [
        "18772f087eb0eb14ba816ed088107c43958eb8c3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 15:27:38 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 15:58:31 2015 -0700"
      },
      "message": "ART: Test for GVN skipping\n\nAdd a deeply nested loop to test 090 that will make the GVN skip.\n\nChange-Id: I7c160293e76fd858c550f792b357eaaccdde77a9\n"
    },
    {
      "commit": "94329d31d2a99c9aff889b88ba4b675135409b82",
      "tree": "661df73fd35c4281438667abd488fb282175a8b1",
      "parents": [
        "6e655afb37a528cfd90aa702b1600e1eb5d10a58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 20:22:06 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 20:22:06 2015 -0700"
      },
      "message": "ART: Duplicate-classes cleanup\n\nDisable old test. Improve collision warning message. Add a comment\nabout the algorithm.\n\nChange-Id: Ibd29d79565732162150aebd7fe08d0895ccf3d79\n"
    },
    {
      "commit": "6e655afb37a528cfd90aa702b1600e1eb5d10a58",
      "tree": "347bd14890a81298fedf0ba97769077b9ef3d57f",
      "parents": [
        "b5aad4c54e0bf1aff6a0c49cb682defaafb81e1e",
        "b9aec2ccd8b9f39a4ddadde5ca8304cea6b1b188"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 01:35:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 01:35:01 2015 +0000"
      },
      "message": "Merge \"ART: Check for duplicate classes when loading oat files\""
    },
    {
      "commit": "5f02c6caf9f38be49e655f8bdeeeb99b6faf9383",
      "tree": "e0675b7691662a452a2bb48ebbf5410ceac51c85",
      "parents": [
        "eb5459ca861b58ee8a9907789f11400dcdddb87b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 19:14:22 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 19:18:27 2015 +0100"
      },
      "message": "Reduce the number of explicit clinit checks for static invokes.\n\nDo not generate explicit clinit checks for static invokes\nwhen the class of the called method is a super class of the\ncaller method\u0027s class (referrer class).\n\nChange-Id: I86ba18facef261fbb71f7ed20867756630ed3c53\n"
    },
    {
      "commit": "eb5459ca861b58ee8a9907789f11400dcdddb87b",
      "tree": "36c1f328c48f0ec111ee31702cc4a82ddb2ad784",
      "parents": [
        "ae803f6efbe8378b5423c51ee3c5564cae0e6e59",
        "4c0eb42259d790fddcd9978b66328dbb3ab65615"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 18:17:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 18:17:41 2015 +0000"
      },
      "message": "Merge \"Ensure inlined static calls perform clinit checks in Optimizing.\""
    },
    {
      "commit": "b9aec2ccd8b9f39a4ddadde5ca8304cea6b1b188",
      "tree": "86154f70ec4a971540363673236bf6b3ff81593c",
      "parents": [
        "9d4d13f38398e880e610323242fe73d609bac40d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 23 22:23:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 11:17:20 2015 -0700"
      },
      "message": "ART: Check for duplicate classes when loading oat files\n\nOat files are usually produced standalone, and the compilers take\nadvantage of any information they get. It is thus possible that\nwhen compile-time and runtime class-path are not the same, classes\nare resolved differently and optimized code is incorrect.\n\nThis is a very conservative check, scanning the complete class tables\nof dex files. In case any duplicate class is found, the new oat file\nwill be rejected and the original dex files will be used in interpreted\nmode.\n\nA possible refinement to this is actual tracking of the compile-time\nclass-path instead. That is however significantly complicated by the\nDexFile API and the non-standard uses it allows.\n\nAn alternative for both optimized code and correct resolution is\nnative multidex. Apps should switch to multidex and benefit from\nthe optimization as well as the shift of all compile time to install\ntime. Split APKs are currently compiled separately, but it is a goal\nto change that install flow to simulated multidex.\n\nChange-Id: Ib9e0db5091e060e3bb2c0e5e6c007430becbfc21\n"
    },
    {
      "commit": "7bf9bc7854f5c8ccc2cb2ef4be4f728c5fbd3236",
      "tree": "f4a4caeb5c0682b15e68b4f47020ea0239987cb9",
      "parents": [
        "f16d7b3824b2777b95fb509c1d2a95bef89f65a4",
        "b2a58477e14e1b15cb9848d16015a49a854ee32c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 15:53:25 2015 +0000"
      },
      "message": "Merge \"Minor improvements to 458-checker-instruction-simplification.\""
    },
    {
      "commit": "4c0eb42259d790fddcd9978b66328dbb3ab65615",
      "tree": "9d1ac505dfd4d0225f479d860b72a58747c8f6ce",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 16:43:49 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 24 16:43:49 2015 +0100"
      },
      "message": "Ensure inlined static calls perform clinit checks in Optimizing.\n\nCalls to static methods have implicit class initialization\n(clinit) checks of the method\u0027s declaring class in\nOptimizing.  However, when such a static call is inlined,\nthe implicit clinit check vanishes, possibly leading to an\nincorrect behavior.\n\nTo ensure that inlining static methods does not change the\nbehavior of a program, add explicit class initialization\nchecks (art::HClinitCheck) as well as load class\ninstructions (art::HLoadClass) as last input of static\ncalls (art::HInvokeStaticOrDirect) in Optimizing\u0027 control\nflow graphs, when the declaring class is reachable and not\nknown to be already initialized.  Then when considering the\ninlining of a static method call, proceed only if the method\nhas no implicit clinit check requirement.\n\nThe added explicit clinit checks are already removed by the\nart::PrepareForRegisterAllocation visitor.  This CL also\nextends this visitor to turn explicit clinit checks from\nstatic invokes into implicit ones after the inlining step,\nby removing the added art::HLoadClass nodes mentioned\nhereinbefore.\n\nChange-Id: I9ba452b8bd09ae1fdd9a3797ef556e3e7e19c651\n"
    },
    {
      "commit": "f16d7b3824b2777b95fb509c1d2a95bef89f65a4",
      "tree": "c9a0aaf0fa17cabdb5bea88bc80a11b3d8bf499b",
      "parents": [
        "9f3565a632d12c9cadd7d966da308fd26dbc899c",
        "2d7352ba5311b8f57427b91b7a891e61497373c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 15:20:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 15:20:28 2015 +0000"
      },
      "message": "Merge \"ART: Dead block removal\""
    },
    {
      "commit": "2d7352ba5311b8f57427b91b7a891e61497373c1",
      "tree": "3f3426f4f30663ee252ebc1f02ecd0eb114bad85",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 14:52:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 24 16:19:31 2015 +0100"
      },
      "message": "ART: Dead block removal\n\nAdds a new pass which finds all unreachable blocks, typically due to\nsimplifying an if-condition to a constant, and removes them from the\ngraph. The patch also slightly generalizes the graph-transforming\noperations.\n\nChange-Id: Iff7c97f1d10b52886f3cd7401689ebe1bfdbf456\n"
    },
    {
      "commit": "4f7fdd297881ee7b794fd3dda11ab29d9ec2c2fe",
      "tree": "a2472f415d7544a7599905cfa0cdaba0fb77c918",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 24 11:57:37 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 24 12:51:23 2015 +0100"
      },
      "message": "Make tests assume ANDROID_ROOT is not /system.\n\nThis is to enable better chroot-like testing.\n\nChange-Id: I943c68b0ebcdab2f107f808b466ac694085255aa\n"
    },
    {
      "commit": "021190bf584662e75b269ef47cd48e2044e34fe4",
      "tree": "88476dbad1d1047f4f5a0cdda305a0ea40df4faf",
      "parents": [
        "633a37ece49c5afcf3fa9a89692f07d19c56229b",
        "a61894d88fabe45677f491c9f6bde30059a49026"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 24 00:22:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 24 00:22:41 2015 +0000"
      },
      "message": "Merge \"Fix reflection handling and test flakiness\""
    },
    {
      "commit": "a61894d88fabe45677f491c9f6bde30059a49026",
      "tree": "b9d8b09e5f90792867b6720a1fb4ab5c76cdfa5f",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 16:32:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 17:21:26 2015 -0700"
      },
      "message": "Fix reflection handling and test flakiness\n\nFixed reflection invoke to handle exceptions which occur from\nFindClass or NewObject by throwing these instead of\nthe expected InvocationTargetException.\n\nAdded test case to 080 for this reflection invoke.\n\nFixed println throwing OOM in 104-growth-limit.\n\nChange-Id: I65766e7c3478e299da06fdc3a521fe3f3e8fdba9\n"
    },
    {
      "commit": "917f9ab1eaaafdab25b4fd24ca1f49a76182a794",
      "tree": "63f9ba9a84c1a94251346e4602626da9433daebb",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 15:13:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 23 17:46:36 2015 +0100"
      },
      "message": "ART: Run BooleanSimplifier after inlining\n\nInlined methods are currently not simplified.\n\nChange-Id: I075130c9df55e2f55032a2c81b08d42cb2cc01f6\n"
    },
    {
      "commit": "0a025d276b0be004f68ff8cd68555bc2d9c53805",
      "tree": "6e1123550b1efeb79de5d10c4165213bf946df21",
      "parents": [
        "c1b829b8d52affb1b6789550d2ffcc6689389209"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Apr 23 15:02:51 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Apr 23 15:05:23 2015 +0100"
      },
      "message": "Skip known broken tests for ARM back ends on ARM as second arch.\n\nChange-Id: Idbe4c26d8ffcd91882fe61f62c959cc27d1f28b1\n"
    },
    {
      "commit": "538491967d1514a263e99d78379d743fcc896eef",
      "tree": "f07290c03789f7b1d7851bc94ebe77b8060eb9a0",
      "parents": [
        "9d4d13f38398e880e610323242fe73d609bac40d"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 14:22:27 2015 +0600"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 23 12:53:47 2015 +0100"
      },
      "message": "Mul simplification should expect zero operand\n\nIt is possible that zero constant can appear due to\nsimplification of other instructions, so we cannot expect\nzero handling from constant optimizations.\n\nChange-Id: I084126fd0c106ac2683c4f10a451960d9807f4f6\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "bfdcdc1e2c0af34aeaf7b5b4d499975e0c3157be",
      "tree": "17143f52b438284477fa6e3ac8fe74b0d82a5744",
      "parents": [
        "8e58d76eb30a50e38c46bd6277186116937ba396"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 22 18:10:36 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 22 18:10:36 2015 -0700"
      },
      "message": "ART: Fix re-throwing failures of non-convention errors\n\nWhile it is convention that Throwable subclasses should have a\nconstructor with a String argument, that is not rigorously enforced.\nSo if a static initializer throws an error that omits that\nconstructor, we must not provide a message when trying to throw\nagain.\n\nBug: 20495321\nBug: 20497840\nChange-Id: Ia4334fa24223750f90a8f2732f1eb1e738575e8d\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "f7be052d88158f3bc607cbe3da4c7b1e32f6408f",
      "tree": "fab74e83cf4fe45efac90fadf1764e8077b1126b",
      "parents": [
        "f23c8e3b1cf4d05e7393ce423c085672d40d90c7",
        "641547a5f18ca2ea54469cceadcfef64f132e5e0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 11:11:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 22 11:11:07 2015 +0000"
      },
      "message": "Merge \"[optimizing] Fix a bug in moving the null check to the user.\""
    },
    {
      "commit": "641547a5f18ca2ea54469cceadcfef64f132e5e0",
      "tree": "441e325fc9bea377c549101756d9e8dc68f95779",
      "parents": [
        "296c6cc2e5e90a81bdfc5f5486eae6b64d80e595"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 22:08:51 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 22 11:40:25 2015 +0100"
      },
      "message": "[optimizing] Fix a bug in moving the null check to the user.\n\nWhen taking the decision to move a null check to the user we did not\nverify if the next instruction checks the same object.\n\nChange-Id: I2f4533a4bb18aa4b0b6d5e419f37dcccd60354d2\n"
    },
    {
      "commit": "598854726a5d50c18fa720af6b097279e5e01584",
      "tree": "f33f3c24d65dc128d709fd89abe4bcf6f919e463",
      "parents": [
        "08faf72e16a3b73b205e9f1ca618470b78174d4e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Apr 20 21:55:19 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 21 20:11:03 2015 -0700"
      },
      "message": "Class.forName(..., ..., null) fixes\n- Add test for Class.forName(..., ..., null)\n- Simplify VMStack.getClosestUserClassLoader based on new behavior of Class.forName(..., ..., null)\n\nChange-Id: I6bc470e20fa177e8a3debe55c90a84eef7ef518e\n"
    },
    {
      "commit": "fab31cd7ef8f33b59e7d0c804bf3253b8e66bc97",
      "tree": "05354c64624f3a5adbe018bb576820a650173184",
      "parents": [
        "8d7e077dc6069f5973059d41cee63cf12708806a",
        "26684c0fc0c77f057c9c25f15cd42553491ac4a9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 21 21:28:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 21:28:58 2015 +0000"
      },
      "message": "Merge \"ART: Extend run-test 068-classloader\""
    },
    {
      "commit": "26684c0fc0c77f057c9c25f15cd42553491ac4a9",
      "tree": "93b327dde2ed31231c45d2b415a7b70ea9c2c136",
      "parents": [
        "8e8bb8aab6f19ccb5b5869a632d9bc882891e17e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 23:23:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 21 21:24:36 2015 +0000"
      },
      "message": "ART: Extend run-test 068-classloader\n\nAdd code that tries to provoke dex-cache collisions.\n\nChange-Id: I58c7905597a501f3731efe4c6e1e2f7772e3b312\n"
    },
    {
      "commit": "0746453bdf87c4d76b646c5bdcea49b7cce0a47e",
      "tree": "7841ad7f0afe7f5a3f422fd3f16d6c40e82f88d8",
      "parents": [
        "4bb014fd8e0aa45b012d56bc4813f18fa295d2b0",
        "7d275379bf490a87805852129e3fe2e8afe961e7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 16:21:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 16:21:33 2015 +0000"
      },
      "message": "Merge \"ART: Update loop info of all nested loops when inlining\""
    },
    {
      "commit": "7d275379bf490a87805852129e3fe2e8afe961e7",
      "tree": "d0bbe856872c92773931c62e6881b0305a916236",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 16:36:35 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 17:17:11 2015 +0100"
      },
      "message": "ART: Update loop info of all nested loops when inlining\n\nWhen inlining into a nested loop, the inliner would only add the new\nblocks into the innermost loop info object. This patch fixes that and\nmodifies SsaChecker to verify the property.\n\nChange-Id: I21d343a6f7d972f5b7420701f816c65ab3f20566\n"
    },
    {
      "commit": "4bb014fd8e0aa45b012d56bc4813f18fa295d2b0",
      "tree": "ba5fa5beef6e2c4a91ec5bbe7b0ed81b168b4958",
      "parents": [
        "d677de20906067061f262bdd434536a02e7f0dd0",
        "232ade0b9401404ad4b61b1003551b58b96195a8"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 21 16:09:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 16:09:30 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\"\""
    },
    {
      "commit": "223f2f5b2a20ca8246da1523494900a2424d5956",
      "tree": "8217f5fdeb41dea987ae4a9b0607f34e6254939e",
      "parents": [
        "b4314b3aa80f0e6d3a55da7865e80658a150f1e8",
        "339dfc209ad93482269eea1386e79973abc313cf"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 21 15:26:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 21 15:26:13 2015 +0000"
      },
      "message": "Merge \"Incorrect transformation of (sub,neg) to (sub) for fp\""
    },
    {
      "commit": "b3306642f42d47ddb4d021a2f48ce9b1bd235857",
      "tree": "5b997bad1c6021c1ab777c2250816f1c22e930db",
      "parents": [
        "b9791aa606834160b085dec7c5b32ccbeaf9a186"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 18:30:42 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 21 13:59:33 2015 +0100"
      },
      "message": "[optimzing] Fix codegen bug and improve type propagation\n\n- don\u0027t bound the type if there are no relevant uses\n- insert the bound type in the bounded block (this allows for condition\nmaterialization without changing the logic there).\n- add more comments\n- add tests for BoundType generation\n- fix GenerateTestAndBranch\n\nChange-Id: I5c1fdda104da4a46775d207270220d410234a472\n"
    },
    {
      "commit": "b0bd8915cb257cdaf46ba663c450a6543bca75af",
      "tree": "0af66cce65abb2958d03579bd7fb660ffdda929b",
      "parents": [
        "b9791aa606834160b085dec7c5b32ccbeaf9a186"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Apr 15 19:57:22 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 20 14:26:10 2015 -0400"
      },
      "message": "[optimizing] Replace FP divide by power of 2\n\nReplace a floating point division by a power of two by a multiplication\nof the reciprocal.  This is guarenteed to have the exact same result as\nit is exactly representable.\n\nAdd routines to allow generation of float and double constants after the\nSSA Builder.  I was unsure if float and double caches should be\nimplemented.  Under the assumption that there is probably not a lot of\nrepetition of FP values.  Please let me know.\n\nChange-Id: I3a6c3847b49b4e747a7e7e8843ca32bb174b1584\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "339dfc209ad93482269eea1386e79973abc313cf",
      "tree": "cd0173a02590ead4fe7064a9b8f6ebf12a341ec5",
      "parents": [
        "f5091eee4abe73c64959e53bda684bd689569643"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 12:29:32 2015 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Apr 20 23:47:16 2015 +0600"
      },
      "message": "Incorrect transformation of (sub,neg) to (sub) for fp\n\nA pair (sub,neg) should not be transformed to (sub) for\nfloating point operations, otherwise we can lose the sign of\nzero for instructions like this:\n  - (A - B) !\u003d B - A if B \u003d\u003d A\n\nChange-Id: I4d612612d4dc0a067fac5721ad206f74168bcd36\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "0d13fee6f4330cc9cb100c43135490a34c11d7a5",
      "tree": "e96f089c1e384772bebdd8d8701c95d73569f29c",
      "parents": [
        "27eac12a66a73eb38b5ccb45b62350cf341299d0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 17 14:52:19 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 18:11:39 2015 +0100"
      },
      "message": "ART: Simplify more bool operations\n\nNow that we have the HBooleanNot instruction, the instruction\nsimplifier can optimize out more conditions comparing a boolean\nagainst a constant, as well as sequences of Boolean negations.\n\nChange-Id: I7f634f6428a3984dd97b27b3d6362491346f1ff6\n"
    },
    {
      "commit": "232ade0b9401404ad4b61b1003551b58b96195a8",
      "tree": "54fe7cc37674246dead84f883a4c8be2123e7d26",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 20 15:14:36 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 20 15:53:12 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\"\n\nThis reverts commit 386ce406f150645158d6067c4e0a36565aefc44f.\n\nBug: 20413424\nChange-Id: I6e93ff132907f2653f1ae12d6676ff2298f62ca1\n"
    },
    {
      "commit": "b2a58477e14e1b15cb9848d16015a49a854ee32c",
      "tree": "4d99998bb80bbe373a3b5627edad24e0be35ddbe",
      "parents": [
        "2e0f89b1b61685f7c322a4c6ec3e3b4839e76d64"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Apr 17 14:35:18 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Mon Apr 20 14:46:22 2015 +0100"
      },
      "message": "Minor improvements to 458-checker-instruction-simplification.\n\nThis follows earlier comments from Roland:\nhttps://android-review.googlesource.com/#/c/140446\n  /2/test/458-checker-instruction-simplification/src/Main.java@337\n  /2/test/458-checker-instruction-simplification/src/Main.java@465\n\nChange-Id: I255ab74b8885dd8e86bb2c11bba4075fa0eaa183\n"
    },
    {
      "commit": "36aafd94af64d6f1ba603392f66959998f2a93a2",
      "tree": "13de8641b36380015b80dac1a231b58d08b3de29",
      "parents": [
        "aff3f0a0a2a080e313ae80c9b0216aa26a668623",
        "27df758e2e7baebb6e3f393f9732fd0d064420c8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 13:03:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 20 13:03:14 2015 +0000"
      },
      "message": "Merge \"[optimizing] Add memory barriers in constructors when needed\""
    },
    {
      "commit": "27df758e2e7baebb6e3f393f9732fd0d064420c8",
      "tree": "261207281fd574deffb4dc1c1bc6bea8f150993e",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 17 19:12:31 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 14:02:51 2015 +0100"
      },
      "message": "[optimizing] Add memory barriers in constructors when needed\n\nIf a class has final fields we must add a memory barrier before\nreturning from constructor. This makes sure the fields are visible to\nother threads.\n\nBug: 19851497\nChange-Id: If8c485092fc512efb9636cd568cb0543fb27688e\n"
    },
    {
      "commit": "2fa194bf16678e9e8f9e2653e47cb703dbbc9738",
      "tree": "6421285a359953e0290785d94987965e0660cb23",
      "parents": [
        "f5091eee4abe73c64959e53bda684bd689569643"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 10:14:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 20 13:51:46 2015 +0100"
      },
      "message": "ART: Extend list of instructions accepted as boolean inputs\n\nPrevious change allowed integer Phis as inputs of instructions\nexpecting a boolean type. This list, however, was not exhaustive as\nbinary operations And, Or and Xor are also valid inputs. This patch\nextends the list in SSAChecker.\n\nChange-Id: I5b5c9e7a17992cc4987e3a078ee23ea80028ecfc\n"
    },
    {
      "commit": "e7bee3b7d307508243f4a00b5cf8a8867fcaaff5",
      "tree": "b9d350a3d1432d7546e5feab77e25807d328300a",
      "parents": [
        "59bb47675b1f1bafbcababadb4a6ba1c345fec1a",
        "a4f8831d6533e4fe5aed18433099e1130d95a877"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 15:53:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:53:23 2015 +0000"
      },
      "message": "Merge \"Remove duplicates phis created during SSA transformation\""
    },
    {
      "commit": "a4f8831d6533e4fe5aed18433099e1130d95a877",
      "tree": "914c97dd322f59b282f01ca5659a960609e0aa0b",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 12:57:19 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 16:48:25 2015 +0100"
      },
      "message": "Remove duplicates phis created during SSA transformation\n\nWhen creating equivalent phis we copy the inputs of the original phi\nwhich may be improperly typed. This will be fixed during the type\npropagation but as a result we may have two equivalent phis with the\nsame type for the same dex register. This is correct but generates more\ncode and prevent some optimizations.\n\nThis CL adds another step in the SSA builder to remove the extra Phi\nnodes created due to equality operators.\n\nThe graph checker verifies that for a given dex register not two phis\nhave the same type.\n\nAlso, replace zero int constant with null constant when we compare a\nreference against null.\n\nChange-Id: Id37cc11a016ea767c7e351575e003d822a9d2e60\n"
    },
    {
      "commit": "59bb47675b1f1bafbcababadb4a6ba1c345fec1a",
      "tree": "e3d42f08052c38e8be22f78723b27248f80af010",
      "parents": [
        "8aec061f5e58876bcc892d8c0309bc13b5349f5c",
        "3d233577c2a9a8dfc6053d93466861b10719b97e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 15:41:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:41:53 2015 +0000"
      },
      "message": "Merge \"ART: Fix whitespace in test\""
    },
    {
      "commit": "8aec061f5e58876bcc892d8c0309bc13b5349f5c",
      "tree": "468528f9081cc33299317a3fa62cfc6d84c224e8",
      "parents": [
        "f90b8548e91392dfc24e8b0f7d3000f4f121c19d",
        "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 15:41:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 15:41:03 2015 +0000"
      },
      "message": "Merge \"Fallback to quick in case of soft verification errors\""
    },
    {
      "commit": "3d233577c2a9a8dfc6053d93466861b10719b97e",
      "tree": "079154adac27ddc72c3df422f9988e71564f8f57",
      "parents": [
        "f90b8548e91392dfc24e8b0f7d3000f4f121c19d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 16:37:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 16:37:01 2015 +0100"
      },
      "message": "ART: Fix whitespace in test\n\nChange-Id: Ia17ac99868efcc7ff32ea63f72644097dd2065bf\n"
    },
    {
      "commit": "f1c6d9e87cbfd27702103ccc7c7f08ce784dc872",
      "tree": "45ad9f5bb52eb0db3857e344ab67b5aab2309472",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 18:42:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 16 16:28:11 2015 +0100"
      },
      "message": "Fallback to quick in case of soft verification errors\n\nAdd a regression test: using uninitialized values triggers a soft\nverification error and optimizing should not crash.\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.\n\nBug: 19988704\nChange-Id: I67174538eed853baff735694b3ae8eb34afe2a39\n"
    },
    {
      "commit": "f4687e7b4d239937c3cfdb6c877799df1a715fd2",
      "tree": "96b970a3a0e3f5ca305fc333b39b0f71b5c06132",
      "parents": [
        "05144f4322eed049f4878015bf1f0381d419b785"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 15:42:27 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 16:16:08 2015 +0100"
      },
      "message": "ART: Adds a regression test for an inliner issue\n\nRegression test for CL Ieddadcd94135930a1f29ad64ad57349a384da07f.\n\nChange-Id: Ibc8fd827a4b8b3d0cddf7f7590a689ec99bf1329\n"
    },
    {
      "commit": "13b4718ecd52a674b25eac106e654d8e89872750",
      "tree": "34d6efd2cda3ceb233118e4d135c4a897f02ea12",
      "parents": [
        "da93333d568f3c5bd8eeb58341d10a332e1d42bf"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 15 16:29:32 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 11:09:55 2015 +0100"
      },
      "message": "ART: Remove DCHECKs for boolean type\n\nSince bool and int are interchangeable types, checking whether an\ninput is kPrimBoolean can fail when replaced with 0/1 constant or\na phi. This patch removes the problematic DCHECKs, adds a best-effort\nverification into SSAChecker but leaves the phi case empty until a\nsuitable analysis is implemented.\n\nChange-Id: I31e8daf27dd33d2fd74049b82bed1cb7c240c8c6\n"
    },
    {
      "commit": "da93333d568f3c5bd8eeb58341d10a332e1d42bf",
      "tree": "ce6aba4bb0214f733707c58634fa98e73a03563b",
      "parents": [
        "669d8a1edbb2a78e08731a9cd6d8e815b0ec49db",
        "4a3faecbe4157225a3fe83a9ef7f4992dfc9c19d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 09:49:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 09:49:56 2015 +0000"
      },
      "message": "Merge \"ART: Don\u0027t duplicate null/int/long constants when inlining\""
    },
    {
      "commit": "4a3faecbe4157225a3fe83a9ef7f4992dfc9c19d",
      "tree": "90cd60a8f7e39f6d160c3e24598fc898cdac3d7e",
      "parents": [
        "8e8bb8aab6f19ccb5b5869a632d9bc882891e17e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 10:38:44 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 16 10:40:53 2015 +0100"
      },
      "message": "ART: Don\u0027t duplicate null/int/long constants when inlining\n\nChange-Id: I7e6a3393fcbbcf76b4ba2000915ba6bbbfb7c70e\n"
    },
    {
      "commit": "f776b92a0d52bb522043812dacb9c21ac11858e2",
      "tree": "619ae49853b201fc4ea9d0ac4b113c6226e3c339",
      "parents": [
        "acf9b7b7616a9b104e6f2146051d8e14d9cb9030"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 18:22:45 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 15 21:51:12 2015 +0100"
      },
      "message": "Remove dead blocks for the blocks_ array.\n\nThis prevents crashing because of structurally incorrect\nblocks. Also we now don\u0027t need to remove its instructions.\n\nTest case courtesy of Serguei I Katkov.\n\nChange-Id: Ia3ef9580549fc3546e8cd5f346079b1f0ceb2a61\n"
    },
    {
      "commit": "66d126ea06ce3f507d86ca5f0d1f752170ac9be1",
      "tree": "8e247db17ef085b55725b21c64d292414fd00b32",
      "parents": [
        "9bb3e8e10d7d9230a323511094a9e260062a1473"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Apr 03 16:02:44 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 15 12:51:49 2015 +0100"
      },
      "message": "ART: Implement HBooleanNot instruction\n\nOptimizations simplifying operations on boolean values (boolean\nsimplifier, instruction simplifier) can benefit from having a special\nHInstruction for negating booleans in order to perform more transforms\nand produce faster machine code.\n\nThis patch implements HBooleanNot as \u0027x xor 1\u0027, assuming that booleans\nare 1-bit integers and allowing for a single-instruction negation on\nall supported platforms.\n\nChange-Id: I33a2649c1821255b18a86ca68ed16416063c739f\n"
    },
    {
      "commit": "44fe8b32265e81a5539aa6730ba8ded270913d3a",
      "tree": "1f170380e5bdf9c49de6b60127b6efad97074dc4",
      "parents": [
        "2ff3c2cd515963ca8ba493c22a24f9e0df4f1bdd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 11:33:53 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 11:41:17 2015 -0700"
      },
      "message": "Fix test 104 for --relocate --no-patchoat\n\nFailure caused by keeping an array live in a vreg, this caused\ngetDeclaredMethod to throw OOME.\n\nChange-Id: Id2aa976af0978cdd7354fb94b3becfcc85e19ca2\n"
    },
    {
      "commit": "1e6c489d95afa6c13aa7cf1c213093b8f9b41f1c",
      "tree": "e68ac05fdf7d6c686b36ddf0d00f9d135440c964",
      "parents": [
        "8d20011a9de7cd94bee59db3ae8c0cbbf55911d9",
        "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 14 17:31:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 17:31:13 2015 +0000"
      },
      "message": "Merge \"getRuntimeStat() support (ART).\""
    },
    {
      "commit": "5f4886aad49b48cdc6945e3094549145c0914fe8",
      "tree": "792a11dfdd9f943017b575e99557da36e5bc43bd",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 15:11:57 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 14 15:59:12 2015 +0100"
      },
      "message": "Fix a bug in type propagation.\n\nIf a phi requests its inputs to be of a certain type, the inputs need\nto propagate that type to their users, as those users might be\nphis.\n\nBug report and test courtesy of Serguei I Katkov.\n\nChange-Id: I79baac271566ec4fa684c1edf11a1b3383d896a9\n"
    },
    {
      "commit": "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547",
      "tree": "77a722cae515f6b3c7ea54f5b0fd2435682ae55b",
      "parents": [
        "67592a44cd5600b3c007b9215e3e5296a61118e8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 02 10:18:12 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Apr 13 15:37:40 2015 -0700"
      },
      "message": "getRuntimeStat() support (ART).\n\nExport some runtime stats (currently GC stats) via\nVMDebug.getRuntimeStat().\n\nAdded several new GC stats such as blocking GC counts and GC count\nhistograms.\n\nBug: 19825248\nChange-Id: I8ece9ed241dc3982dfd983d7159090ba82940dce\n"
    },
    {
      "commit": "fc4fb0fdb1d18db2ba8d98e9f41211466ac86fd8",
      "tree": "b25d5be5b8e7320d05f42da549c11cc82d7dbc51",
      "parents": [
        "9134a1a405d471b0dfbf299ab0d4c2d629778632",
        "031af41d1debbdbd8964d7c504a789068dfe6029"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:26:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 14:26:19 2015 +0000"
      },
      "message": "Merge \"Revert \"Fallback to quick in case of soft verification errors\"\""
    },
    {
      "commit": "031af41d1debbdbd8964d7c504a789068dfe6029",
      "tree": "a480bdc4a80f63d46abcde2ef7a36e1ad072d624",
      "parents": [
        "c751d37e692d89b360f3c09421401f581b5c6d06"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:25:53 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 14:25:53 2015 +0000"
      },
      "message": "Revert \"Fallback to quick in case of soft verification errors\"\n\nThis reverts commit c751d37e692d89b360f3c09421401f581b5c6d06.\n\nChange-Id: I2183df8e856410989bc019f6a1f58af37d5d7eab\n"
    },
    {
      "commit": "9134a1a405d471b0dfbf299ab0d4c2d629778632",
      "tree": "cb943d6a8a0f73d98c5ea58e428e25331b97cd30",
      "parents": [
        "e4e88d7b37c977b4c755485174a54c04aa3de951",
        "c751d37e692d89b360f3c09421401f581b5c6d06"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 13 13:10:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 13:10:38 2015 +0000"
      },
      "message": "Merge \"Fallback to quick in case of soft verification errors\""
    },
    {
      "commit": "e4e88d7b37c977b4c755485174a54c04aa3de951",
      "tree": "b25d5be5b8e7320d05f42da549c11cc82d7dbc51",
      "parents": [
        "6cfece6336c86017694758bbc0dc68b62c02de86",
        "386ce406f150645158d6067c4e0a36565aefc44f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 13 12:53:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 12:53:57 2015 +0000"
      },
      "message": "Merge \"Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\""
    },
    {
      "commit": "386ce406f150645158d6067c4e0a36565aefc44f",
      "tree": "e350441be38017d6e7555d9e13ca8b975d61451d",
      "parents": [
        "2d45b4df3838d9c0e5a213305ccd1d7009e01437"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 13 12:53:37 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 13 12:53:37 2015 +0000"
      },
      "message": "Revert \"Optimizing: Fix long-to-fp conversion on x86.\"\n\nTest fails on arm.\n\nThis reverts commit 2d45b4df3838d9c0e5a213305ccd1d7009e01437.\n\nChange-Id: Id2864917b52f7ffba459680303a2d15b34f16a4e\n"
    },
    {
      "commit": "6cfece6336c86017694758bbc0dc68b62c02de86",
      "tree": "c0cc90f4167aed365c0ebfddd99fec31c473efc2",
      "parents": [
        "095d209342420563becfec6676b46a6c6b839107",
        "2d45b4df3838d9c0e5a213305ccd1d7009e01437"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 13 11:33:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 13 11:33:09 2015 +0000"
      },
      "message": "Merge \"Optimizing: Fix long-to-fp conversion on x86.\""
    },
    {
      "commit": "2d45b4df3838d9c0e5a213305ccd1d7009e01437",
      "tree": "b3893899a540ba9f4c8cd70e69536d0239a9d3ef",
      "parents": [
        "1576be32be4a99a1cffdaaf209a3cd67e8b2f88a"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Apr 07 17:04:50 2015 +0600"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 13 11:30:02 2015 +0000"
      },
      "message": "Optimizing: Fix long-to-fp conversion on x86.\n\nlong-to-fp conversion implemented using SSE loses the precision.\nThe test is included. CL uses FPU to provide the correct result.\n\nChange-Id: I8eaf3c46819a8cb52642a7e7d7c4e3e0edbc88db\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "48ee356484225ef0d7cfa197b1699524b866c802",
      "tree": "ea33754d124d5e15b02e1a7c09c81d27fd625ba3",
      "parents": [
        "58565098b2298041ccc97371a3cc486df88d51b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 19:57:29 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 20:42:14 2015 -0700"
      },
      "message": "ART: Ignore result for exception-case JNIEndWithReference\n\nThe value may not contain a valid jobject, so ignore and use null\ndirectly.\n\nRefactor a bit to have one common function for both synchronized\nand non-synchronized case.\n\nAdd a test to the JNI compiler tests.\n\nBug: 18135031\nChange-Id: If2f004a112f36f4ff68172a946dec67ce561ae4d\n"
    },
    {
      "commit": "c751d37e692d89b360f3c09421401f581b5c6d06",
      "tree": "e8291a99d7b407ac2dbf0680df0876384821812c",
      "parents": [
        "8e5fc53bd2f9ab5a46547959a176eba176ee115f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 01 20:27:28 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 10 18:14:42 2015 +0100"
      },
      "message": "Fallback to quick in case of soft verification errors\n\nAdd a regression test: using uninitialized values triggers a soft\nverification error and optimizing should not crash.\n\nThanks to Stephen Kyle (stephenckyle@googlemail.com) for the bug report.\n\nBug: 19988704\n\nChange-Id: I2493f737efd3fad72f6b41fb60eff1d3731613fb\n"
    },
    {
      "commit": "188d4316a880ae24aed315aa52dc503c4fcb1ec7",
      "tree": "a480bdc4a80f63d46abcde2ef7a36e1ad072d624",
      "parents": [
        "27ef3177fb164b5e1a3b8a6fd43d25f3074e586d"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Apr 09 18:30:21 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 16:19:55 2015 +0000"
      },
      "message": "Opt compiler: Instruction simplification for HAdd, HNeg, HNot, HSub.\n\nUnder assumptions for the \u0027cost\u0027 of each IR (eg. neither HAdd nor HSub\nare faster than the other), transformations are only applied if they\n(locally) cannot degrade the quality of the graph. The code could be\nextended to look at uses of the IRs and detect more opportunities for\noptimisations.  The optimisations in this patch do not look at other\nuses for their inputs.\n\nChange-Id: Ib60dab007af30f43421ef5bb55db2ec32fb8fc0c\n"
    },
    {
      "commit": "07d1f0d6c15f78e107c7b77e993b4d4d08ae1ad8",
      "tree": "34a48e22719bec06356788bd904b425dbe84284e",
      "parents": [
        "4df30d988105f988dbcdb4f28263654e9ce20687",
        "55501ce0db57bccfa23b0226faffc964203701f9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 10 14:15:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 14:15:38 2015 +0000"
      },
      "message": "Merge \"Optimizing x86: Fix VisitArraySet for FP value\""
    },
    {
      "commit": "744176959a259f36fe7ca7d101aee1cf39d707d5",
      "tree": "2f3aa65a881020beeb6f4b3313b3366733bbf3f5",
      "parents": [
        "e8888c83786d1f2bddbffd1dd6f37b95b7d2425d"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Thu Apr 09 15:21:41 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@arm.com",
        "time": "Fri Apr 10 10:53:19 2015 +0100"
      },
      "message": "Fix checker tests in 458-checker-instruction-simplification.\n\nChange-Id: I9931e1692117360b8396c0dd8d171c822f0aba3b\n"
    },
    {
      "commit": "55501ce0db57bccfa23b0226faffc964203701f9",
      "tree": "b9abd5dcbfd1ec5aff448e4a5d0ce051b27f0466",
      "parents": [
        "1576be32be4a99a1cffdaaf209a3cd67e8b2f88a"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Wed Apr 08 13:26:09 2015 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Fri Apr 10 14:50:43 2015 +0600"
      },
      "message": "Optimizing x86: Fix VisitArraySet for FP value\n\nInstruction generator expects to see FP value in XMM register,\nso update location builder to follow this.\n\nChange-Id: Idca4bb5cdb59249c77fcc6f76cdfcaba47222b3d\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "f9a627f7b7703d6f2a9db8ead651db7683ef4825",
      "tree": "18519c3e1872caedd46d37f7b4e29a8329b7710c",
      "parents": [
        "f06bb7c986231d91ffa2a85f8ad15f9a7ce8943e"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Wed Apr 08 15:53:58 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 09 16:04:33 2015 +0000"
      },
      "message": "Add test cases to make sure GenDivRemLit() handles 16-bit\nconstants correctly.\n\nChange-Id: Idb4aee8b98dc908cb28887e96254f8c254ad7d4d\n"
    },
    {
      "commit": "58d25fd052e999a24734b0cf856a1563e3d1b2d0",
      "tree": "b1dbeae13a24e3f7ec325698a3724b5d90df2ef9",
      "parents": [
        "1b8e8cac2c96f6d2af8e7217f997a30e11c098b5"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Apr 03 14:52:31 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Apr 06 23:05:13 2015 -0400"
      },
      "message": "[optimizing] Implement more x86/x86_64 intrinsics\n\nImplement CAS and bit reverse and byte reverse intrinsics that were\nmissing from x86 and x86_64 implementations.\n\nAdd assembler tests and compareAndSwapLong test.\n\nChange-Id: Iabb2ff46036645df0a91f640288ef06090a64ee3\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "b2d4768e4adc6d880d2e17c5cf4293639c8adab7",
      "tree": "90fbeac8abf73fb9c15be0d89bc01d2572b69626",
      "parents": [
        "698385411e5db8c7ac9bd4471f152b8c6ea7f7bf",
        "07b3c2351bb527ea91c084dc19434600af9ae66b"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Apr 03 17:47:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 03 17:49:53 2015 +0000"
      },
      "message": "Merge \"Store OatDexFile instead of OatFile in DexFile.\""
    },
    {
      "commit": "3dcd58cd54a922b864494fb7fff4a7f7a8562db9",
      "tree": "1e7b416de3dd46b0301f835632f8b3d0392beb97",
      "parents": [
        "d43f160dc294655885a2c273307d34585c4ce97b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 03 11:02:38 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 03 12:36:38 2015 +0100"
      },
      "message": "Fix a bug when creating a HDeoptimization instruction.\n\nWe need to copy the environment, instead of just pointing\nto an existing one. Otherwise, if the instruction that initially\nholds the environemnt gets removed from the graph, any update\nto an instruction in that environment will not be reflected in it.\n\nbug:20058506\n\nChange-Id: I2a62476d0851ecbc3707c0da395d8502ee437422\n"
    },
    {
      "commit": "07b3c2351bb527ea91c084dc19434600af9ae66b",
      "tree": "b286122b660ce16abae1e56c57b957b8c69c9531",
      "parents": [
        "dcff612c3a6e1427749771c4559f198fa480f709"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 31 15:57:54 2015 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Apr 02 09:47:03 2015 -0700"
      },
      "message": "Store OatDexFile instead of OatFile in DexFile.\n\nThis requires moving OatDexFile out of the OatFile class so that\na forward class declaration can be used for OatDexFile.\n\nBug: 19071355\nChange-Id: Ibda85b78d0577e9e81073090616fc0f2fa526be3\n"
    }
  ],
  "next": "812c141fc6d35d8a92cf8c87d6331984002db5a5"
}
