)]}'
{
  "log": [
    {
      "commit": "9e726e874580f1e8b2e0bfa63d2e9a3ac911cd1c",
      "tree": "96a8bfe6aaafb8af2c63c1741ec2c541d518558d",
      "parents": [
        "681c58c6eab2bc8dab561cb6ac5bcabe89676730"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 06 10:45:28 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 06 10:48:05 2016 -0700"
      },
      "message": "Revert \"Revert some flaky unloading\"\n\nThis reverts commit 73ad16e0193866d36dbd4088ac77fa5d4ceec334.\n\nWith this code it is possible that during testing we will race the\nfinal shutdown of some threads (i.e. returning to thread_start after\nsignaling thread has been finished) with the unloading of libart.so by\nlibnativehelper. This could cause crashes. By ensuring that libart.so\ncode is not unloaded in libnativehelper we fix the issue with this\npatch.\n\nBug: 28406866\n\nChange-Id: Ic67118c2a4e743941402b17b6bbfe4cce441f68f\n"
    },
    {
      "commit": "681c58c6eab2bc8dab561cb6ac5bcabe89676730",
      "tree": "61d43314c583985c119c87e69ee8dd59076854f2",
      "parents": [
        "1798c6ad3d045b58a65af1bbd3aa73bf6838bfbc",
        "020b18a4b211f451516a92dfd33454de3911daef"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Jun 06 16:48:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 06 16:48:43 2016 +0000"
      },
      "message": "Merge \"ART: Improve JitProfiling perf in mips/mips64 mterp.\""
    },
    {
      "commit": "12abcbd950bd0ff4528e2e0d27ca5e881c7b0467",
      "tree": "2788e5aec7b022694f7e7d41c1e40c205e46596e",
      "parents": [
        "808067335b228d7b50ad84123d3c8ecb7aeeb200"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "message": "Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\n\nbug:29089267\nbug:27521545\n\nFails some DHECKs.\n\nThis reverts commit 808067335b228d7b50ad84123d3c8ecb7aeeb200.\n\nChange-Id: I0e768ce85be593e3f50fd02abc29aa34f2be3562\n"
    },
    {
      "commit": "808067335b228d7b50ad84123d3c8ecb7aeeb200",
      "tree": "8642091a7775c18ac03a079f1befea3261805346",
      "parents": [
        "4b53f5795a289b40aa81b9c42ede5c896ea0e4ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 02 15:55:48 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 11:29:47 2016 +0100"
      },
      "message": "Fix ArtMethod::GetInvokeType for static methods on interfaces.\n\nAnd avoid calling ResolveMethod in the JIT, since it already\nknows that method.\n\nbug:29089267\nbug:27521545\n\n(cherry picked from commit 2dc77ecf375882f51ff7c09712c05b80e58abb6b)\n\nChange-Id: I36084b1f207317452c42fdfc8ffa4d8c721d2f76\n"
    },
    {
      "commit": "4b53f5795a289b40aa81b9c42ede5c896ea0e4ef",
      "tree": "2788e5aec7b022694f7e7d41c1e40c205e46596e",
      "parents": [
        "99b6ed6d377722db52d042a9b81a36a2707ef2ce",
        "46d46993cc0f11c2ac1b7ac8ffd55d78111faf48"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 09:24:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 06 09:24:27 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Temporarily disable dex cache array emptyness DCHECK\"\"\""
    },
    {
      "commit": "46d46993cc0f11c2ac1b7ac8ffd55d78111faf48",
      "tree": "6bc6c33f03bfde94963609dd9f3d44a6abf6380b",
      "parents": [
        "06cd763b7d2a7511ea4a54b52b2931e57f3522d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 09:24:01 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 09:24:01 2016 +0000"
      },
      "message": "Revert \"Revert \"Temporarily disable dex cache array emptyness DCHECK\"\"\n\nThis fix has been reverted.\n\nBug: 29083330\n\nThis reverts commit 06cd763b7d2a7511ea4a54b52b2931e57f3522d3.\n\nChange-Id: I5382c872caeb7e699de41acaa54ac3ee9f0543e0\n"
    },
    {
      "commit": "020b18a4b211f451516a92dfd33454de3911daef",
      "tree": "1cd1cf8635af2da67abf6ebb8b75906bc3468e23",
      "parents": [
        "99b6ed6d377722db52d042a9b81a36a2707ef2ce"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Fri Jun 03 18:05:35 2016 -0700"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Fri Jun 03 18:17:38 2016 -0700"
      },
      "message": "ART: Improve JitProfiling perf in mips/mips64 mterp.\n\nChange-Id: I4e1a214d92bd17ebd0a9b595e2eca2d7dcc13758\n"
    },
    {
      "commit": "d9df0d5281d1a3cf86de9088cd55cea1000da37b",
      "tree": "61041640502ca62a89fab56e777f57b0dca8b7b8",
      "parents": [
        "926a81c4fefdd187a9bb1dd63f3ea6492718bb08",
        "06cd763b7d2a7511ea4a54b52b2931e57f3522d3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 03 18:08:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 18:08:20 2016 +0000"
      },
      "message": "Merge \"Revert \"Temporarily disable dex cache array emptyness DCHECK\"\""
    },
    {
      "commit": "926a81c4fefdd187a9bb1dd63f3ea6492718bb08",
      "tree": "5357c2fd0023198affb68f0f12e91c751f849b11",
      "parents": [
        "b6b05aef09494da46411c8885e88fbb9cd03a1e2",
        "a3549d2b93f6ab4fe42f7c137cecae51b3b5fa14"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jun 03 18:01:01 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 18:01:01 2016 +0000"
      },
      "message": "Merge \"Fix an issue of partial fragment deoptimization\""
    },
    {
      "commit": "06cd763b7d2a7511ea4a54b52b2931e57f3522d3",
      "tree": "dc9d03fc84edba5525878e2953af5498aa9f0e12",
      "parents": [
        "b6b05aef09494da46411c8885e88fbb9cd03a1e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 03 10:58:45 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 03 10:59:18 2016 -0700"
      },
      "message": "Revert \"Temporarily disable dex cache array emptyness DCHECK\"\n\nBug: 29083330\n\nThis reverts commit 7b1541f4aecdc4c2878437ac3d46f2e74eacf0f1.\n"
    },
    {
      "commit": "b6b05aef09494da46411c8885e88fbb9cd03a1e2",
      "tree": "6bc6c33f03bfde94963609dd9f3d44a6abf6380b",
      "parents": [
        "776a802be39cb4a2267b6371764d46ce1fc23e74",
        "f284d448e3edd428b6ade473d0993028638b2064"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 03 17:53:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 17:53:09 2016 +0000"
      },
      "message": "Merge \"Hold dex caches live in class table\""
    },
    {
      "commit": "6591101bcb3117ca48a707f35c507a92ba6c72c2",
      "tree": "8857b7e91ef8e2218e3d016b723f1a54eed56461",
      "parents": [
        "4248fc46289f9940aa13d22e4f89abed5e74b169",
        "492a7fa6df3b197a24099a50f5abf624164f3842"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 03 12:42:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 03 12:42:04 2016 +0000"
      },
      "message": "Merge \"Delay dex-to-dex compilation until Optimizing is done.\""
    },
    {
      "commit": "492a7fa6df3b197a24099a50f5abf624164f3842",
      "tree": "1c02e48c0a16c8ff91f189946a39a3f14c1048dc",
      "parents": [
        "f7e1ab5224e16a47a410a788915422c73abfffac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 01 18:38:43 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 03 10:52:22 2016 +0100"
      },
      "message": "Delay dex-to-dex compilation until Optimizing is done.\n\nThis fixes a race between inlining in the Optimizing\nbackend and dex-to-dex quickening where the Optimizing can\nread the non-quickened opcode and then the quickened field\nindex or vtable index and look up the wrong field or method.\nEven if we such tearing of the dex instruction does not\nhappen, the possible reordering of dex-to-dex and Optimizing\ncompilation makes the final oat file non-deterministic.\n\nAlso, remove VerificationResults::RemoveVerifiedMethod() as\nwe have only the Optimizing backend now and as such it was\ndead code and would have interfered with this change.\n\nBug: 29043547\nBug: 29089975\nChange-Id: I8389927d35dcacaf2f99c2153f055857036c8129\n"
    },
    {
      "commit": "a3549d2b93f6ab4fe42f7c137cecae51b3b5fa14",
      "tree": "71de49768cb78980015dac65a4cbc49d23e82e12",
      "parents": [
        "1b66fdf3f33c72dfdda4d31f6f17b6a0d8607402"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jun 02 17:01:02 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jun 02 22:58:13 2016 -0700"
      },
      "message": "Fix an issue of partial fragment deoptimization\n\nIf the interpreter bridge returns to the instrumentation exit stub,\nwe need to let the stub makes the decision whether the calling code\nis deoptimizeable or not since the stub knows the real return pc.\n\nBug: 28769520\nChange-Id: I262d1222e50a1ccbcb3675d05dcab414dc242a28\n"
    },
    {
      "commit": "f284d448e3edd428b6ade473d0993028638b2064",
      "tree": "e24f57f952f4e6c850ec910de3361aef6340727a",
      "parents": [
        "3f432d5a7c184b7580bd5aba27158c1455c328ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 02 11:48:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 02 18:03:41 2016 -0700"
      },
      "message": "Hold dex caches live in class table\n\nPrevents temporary dex caches being unloaded for the same dex file.\nUsually this is OK, but if someone resolved a string in that dex\ncache, it could leave stale pointers in BSS. Also it can use extra\nmemory in linear alloc if we allocate dex cache arrays multiple\ntimes.\n\nBug: 29083330\nChange-Id: Ia44668f013ceef1f5eb80f653a48d0f8004548c9\n"
    },
    {
      "commit": "7b1541f4aecdc4c2878437ac3d46f2e74eacf0f1",
      "tree": "c645a83b04397d025a2dd85f1eecf0000c24f17a",
      "parents": [
        "61046e10005d49f73c905e95bbaccc8f0fd686be"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 01 19:36:41 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 01 19:39:46 2016 -0700"
      },
      "message": "Temporarily disable dex cache array emptyness DCHECK\n\nWill re-enable when the underlying cause is fixed.\n\nBug: 29083330\nChange-Id: Ic1ec9aad2ac0763388ddfa75b73bbedc1dcc5c45\n"
    },
    {
      "commit": "61046e10005d49f73c905e95bbaccc8f0fd686be",
      "tree": "60bd491f6be0a2bc8d0a589710aeb13c4d55700c",
      "parents": [
        "1bba7c22b1defa2121f71dd88015e6355235ec2c",
        "b05263225f6df798db565df0ef9a539f272603ed"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 01 22:24:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 01 22:24:26 2016 +0000"
      },
      "message": "Merge \"Fix bug in verifier: hard fail allowed following softfail\""
    },
    {
      "commit": "b05263225f6df798db565df0ef9a539f272603ed",
      "tree": "12acac3488144071b6a06ce31a0c3951d59f40d3",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 01 14:06:00 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 01 14:39:19 2016 -0700"
      },
      "message": "Fix bug in verifier: hard fail allowed following softfail\n\nRationale:\nDexfuzzing found a situation where a hard fail (not calling\nsuper in constructor) did not immediately bail, allowing\na soft fail to follow, causing a FATAL message later on.\n\nWith crash-before/pass after test.\n\nBUG\u003d29070461\n\nChange-Id: I46bd7a7457b9d408b254400aadac122539f2279c\n"
    },
    {
      "commit": "c7d3f4b8c294f36209ea2c129f9714a36ae1ec6b",
      "tree": "3ac0e2896bde73f089c77fbc07e935a804358d36",
      "parents": [
        "a21decf759af7dc29f64ff7ee02a758397578cd3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 01 10:48:19 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 01 11:02:07 2016 -0700"
      },
      "message": "Fix race with host_dlopen_handles_\n\nThread 1 opens an already opened oat file.\nThread 2 dlcloses the oat file and removes it from\nhost_dlopen_handles_.\nThread 1 checks that it is not already in host_dlopen_handles_ and\nproceeds to return the oat file. The problem now is that the BSS is\nnot cleared since it is the same oat file that was opened earlier.\n\nThe fix is to just hold the lock for dlopen / dlclose. This only\naffects contention on host.\n\nBug: 28992179\nBug: 28990799\nBug: 28826195\n\nChange-Id: I126e3d4da69f493b21604205eeea75352a6cf736\n"
    },
    {
      "commit": "a21decf759af7dc29f64ff7ee02a758397578cd3",
      "tree": "156479876d08ad1a82388fafdfc79ab3851222fd",
      "parents": [
        "1b66fdf3f33c72dfdda4d31f6f17b6a0d8607402",
        "3d0808655cd8cfbc867bf330bcc6f954c59beb9d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 31 17:23:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 31 17:23:16 2016 +0000"
      },
      "message": "Merge \"Relax annotation visibility so runtime includes build.\""
    },
    {
      "commit": "9e03b2fbc9843b834bb9d18bc8c3d2ef44a838d8",
      "tree": "ecd18b6f279dcf791eb60b94d0ba7c01cd795387",
      "parents": [
        "d355b75ca09d83c47e596daeb1a434942de83bee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 27 13:50:59 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 27 17:31:32 2016 -0700"
      },
      "message": "Reduce TLAB size\n\nPrevent pathological cases like threads fighting for TLABs and doing\nback to back GC for alloc each allocation.\n\nNo performance change on angler, before:\nEEAC: 1161, 1171, 1211\nMemAllocTest: 1005, 971, 1148\n\nAfter:\nEEAC: 1173, 1175, 1163\nMemAllocTest: 1003, 908, 803\n\nThere is also a mysterious speed up on volantis:\nEEAC: 1563, 1553, 1543\nMemAllocTest: 1474, 1486, 1485\n\nAfter:\nEEAC: 709, 714, 709\nMemAllocTest: 664, 684, 655\n\nBug: 28976163\n\nChange-Id: I564908badf395b6f948aa2dafcb66fe353fc1eba\n"
    },
    {
      "commit": "3d0808655cd8cfbc867bf330bcc6f954c59beb9d",
      "tree": "e7e6e6c62562b6f19e0dbf7b2249a900a1938afa",
      "parents": [
        "d355b75ca09d83c47e596daeb1a434942de83bee"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 26 18:39:17 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 27 17:27:28 2016 -0700"
      },
      "message": "Relax annotation visibility so runtime includes build.\n\nPrevious behavior in M and earlier would allow annotations marked\nVISIBILITY_BUILD to be visible to the runtime when they should not\nhave been. When targeting older sdks, revert to this behavior.\n\nBug: 28826610\n\n(cherry-picked from commit 7e50a7a5a1ad947e84c425efb2e97c442f91b155)\n\nChange-Id: I43d2328be41ec9f4e679b3151f586c0b87b38c7c\n"
    },
    {
      "commit": "9b26463fcddf5bc26e5550be5abd39d8c0f0b4b5",
      "tree": "3a69be37eef7a04a40a95aa0d271e5bcaeef1c55",
      "parents": [
        "ea8e02bef0f26a2212247210cc72b168a8157bad",
        "a89e51a8c3f25b72035c42be92acc26cff070e21"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Fri May 27 09:10:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 27 09:10:44 2016 +0000"
      },
      "message": "Merge \"Forbid JVM_O_DELETE in JVM_Open\""
    },
    {
      "commit": "ea8e02bef0f26a2212247210cc72b168a8157bad",
      "tree": "248d58fa61a647ef724c13e3ec4a7a49f8d26dc4",
      "parents": [
        "347eff2699557340c493a026300a73b84a796cd3",
        "f711f2cf3c28dfe865e36f17419a16f06a0ebb5a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 26 22:49:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 22:49:55 2016 +0000"
      },
      "message": "Merge \"Partial fragment deoptimization\""
    },
    {
      "commit": "347eff2699557340c493a026300a73b84a796cd3",
      "tree": "35c147bef1d09b2864fccb4efb788d76bf27cc6e",
      "parents": [
        "faf18de818bc39c25d0c87715c19c375b761a463",
        "a206c745dbb64b14f05c87891d425475c2f6d63a"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "message": "Merge \"Don\u0027t use dlopen on host for already loaded oat files.\""
    },
    {
      "commit": "faf18de818bc39c25d0c87715c19c375b761a463",
      "tree": "688f1d8244c57679394be092dd17c5c282884dcb",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa",
        "98810e34804e224e5ab302cd353393f72a45202b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:30:34 2016 +0000"
      },
      "message": "Merge \"Remove SetStateUnsafe in Debugger::Disconnected.\""
    },
    {
      "commit": "f711f2cf3c28dfe865e36f17419a16f06a0ebb5a",
      "tree": "3657d68b2a2fb67f4919cb97ca279cf9310224e9",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 23 12:29:39 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 26 13:24:54 2016 -0700"
      },
      "message": "Partial fragment deoptimization\n\nWe used to do either single frame deoptimization, or full fragment\ndeoptimization which deoptimizes all the frames in a fragment.\nThis change allows some methods to be not deoptimizeable, likely due\nto some kind of optimization. So we need another deoptimization mode\nthat unwinds partial fragment. Deoptimizations are now generalized into\neither full or partial fragment. A full fragment deoptimization will\ndeopt all frames in the fragment, and then returns from the invoke stub\nto enter interpreter. A partial fragment deoptimization will deopt a\nsingle frame, or all frames up to the method that\u0027s not deoptimizeable,\nand then jumps to the interpreter bridge.\n\nCurrently code not deoptimizeable is the code in boot image since the\ncode may not be compiled with debuggable flag.\n\nBug: 28769520\nChange-Id: I875c694791cc8ebd5121abcd92ce7b0db95aca38\n"
    },
    {
      "commit": "98810e34804e224e5ab302cd353393f72a45202b",
      "tree": "696693111fa137965fe03efc29a20b687cfb3b66",
      "parents": [
        "783d02e527107e91880f12bddf41afd313919132"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 24 14:55:40 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 26 11:45:13 2016 -0700"
      },
      "message": "Remove SetStateUnsafe in Debugger::Disconnected.\n\nThe debugger thread has the exclusive mutator lock and doen\u0027t need to\nswitch to runnable while updating instrumentation.\n\nThis avoids a spurious failure of the DCHECK in the jdwp test.\n\nBug: 25262836\n\nChange-Id: Ibfd0bc3936a877fd264396fcc4cc1af8d19a1645\n"
    },
    {
      "commit": "a89e51a8c3f25b72035c42be92acc26cff070e21",
      "tree": "d44bb4d51083a7e68cb60d64e52ff02b1a2af7ec",
      "parents": [
        "84f00fe695a7a78551d7f2e8d7bc2bed1ce86a67"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Thu May 26 15:52:36 2016 +0100"
      },
      "committer": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Thu May 26 17:21:12 2016 +0100"
      },
      "message": "Forbid JVM_O_DELETE in JVM_Open\n\nBug: 28901232\nChange-Id: Icf1f9b85163f478f380c76042bcc0ff6910cc1ce\n"
    },
    {
      "commit": "5d04eb68c31c9e5a315055d7b243d3b1bcd24f44",
      "tree": "fb31ba7873d94ed5ec5fb02dbe7f3f06748e889d",
      "parents": [
        "1704a18ce85cd89488234e8245a22c2aca117b18"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 25 18:09:53 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 26 11:00:40 2016 +0100"
      },
      "message": "Fix profile saver reference point when calculating the sleep time\n\nIt is wrong to use last_time_ns_saver_woke_up_ as a reference. We should\nuse sleep_start.\n\nBug: 28953776\n\n(cherry picked from commit dc85bd757e7f27c38143536a9f4fa4c2c7d07272)\n\nChange-Id: I400502c76a0423190826bbf1bd8e552cf591ebc3\n"
    },
    {
      "commit": "1704a18ce85cd89488234e8245a22c2aca117b18",
      "tree": "118e74b4a7201a6e99b2af435858b08efb0e5e73",
      "parents": [
        "81d53f5654eeb9be2c5bbd283f371b1378d3d53d",
        "3e80aeb449d0ae09f6a34b5a15727ccbfe38eb70"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 25 23:02:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 25 23:02:39 2016 +0000"
      },
      "message": "Merge \"ART: Print jit memory use only if we have samples\""
    },
    {
      "commit": "a206c745dbb64b14f05c87891d425475c2f6d63a",
      "tree": "b73c6dfa1f78d6605e71fab8a3e43fb484715647",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 15:04:22 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed May 25 11:26:43 2016 -0700"
      },
      "message": "Don\u0027t use dlopen on host for already loaded oat files.\n\nBecause the behavior of dlopen on the host is different then the\ntarget in that case, and it causes tests to fail.\n\nBug: 28826195\n\nChange-Id: Id202bbac3318bade89a4133a9bcb1ee01e8b6182\n"
    },
    {
      "commit": "f736a55d849d18767b827e7efeb9114f80e4e660",
      "tree": "d2b1d31fcd33d55ef1467e85ba3825bdddcd3ae7",
      "parents": [
        "29a7c68d297b6494a8c10ec1b67a8726d71f86f0",
        "06e3f4fa00ea9f71c4675f90e250e59b6d9ba36f"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed May 25 18:17:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 25 18:17:53 2016 +0000"
      },
      "message": "Merge changes I5c891dc1,Ie717089d\n\n* changes:\n  Base isDexOptNeeded result on OatFileAssistant::IsUpToDate.\n  Only compile dex files if they are not up to date.\n"
    },
    {
      "commit": "29a7c68d297b6494a8c10ec1b67a8726d71f86f0",
      "tree": "c1fd794f0dea95e195bb2898c75ac548cec41b17",
      "parents": [
        "39d4dee8d15f68bf60a30128a30da3d2e4031be6",
        "dc3b128e17440c027f6a02663cac630176f8b7c2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 25 16:26:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 25 16:26:52 2016 +0000"
      },
      "message": "Merge \"Avoid long sleep in ProfileSaver\""
    },
    {
      "commit": "dc3b128e17440c027f6a02663cac630176f8b7c2",
      "tree": "5aace89134fcc159974a00cfcc46a83bbf792bac",
      "parents": [
        "7ebb7aed1c10a83a24a66475f886e77645bf29c4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 24 19:45:30 2016 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 25 08:13:26 2016 -0700"
      },
      "message": "Avoid long sleep in ProfileSaver\n\nThis was due to subtracting a \u003e20s number of nanos from the constant for 20s.\n\nBug: 28880120\n\n(cherry picked from commit 8f15335d96eef7a3bcdd4f2b309a727791b67e68)\n\nChange-Id: Ied5f2a4264e4e0035e1ce8719eda9c57c8482443\n"
    },
    {
      "commit": "0950abe82f86a9943feb7719876ec291c6581037",
      "tree": "825692a547fccead5f2c95718904fcab5c8b4876",
      "parents": [
        "09da219c802df3bc362a71582e73fd42e98e7b89"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 25 14:52:37 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 25 14:52:37 2016 +0100"
      },
      "message": "Remove bogus DCHECK.\n\nbug:28771056\nChange-Id: I43a1d99623adc2393d7004927ef1651654ef137c\n"
    },
    {
      "commit": "d0668f2071610b9390779550ba926c81d53bd7a0",
      "tree": "977b5378f803dc9bf6a4ddfb3c97c3b45daf9e6e",
      "parents": [
        "68b6380096581019c5a0067bafb879f4481cf3dd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 26 18:30:31 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 25 13:11:48 2016 +0100"
      },
      "message": "Put boot class loader classes and strings in dex cache of app images.\n\nThe reason for b/28295348 was that an ArtMethod of the boot image was\nin the app image dex cache, but the declaring class of that\nboot image method was not.\n\nSince objects of boot images don\u0027t need fixups, the comparisons for\nFixupStrings and FixupResolvedTypes was always false for them.\n\nbug:28295348\n\n(cherry picked from commit 1df3b55abea375671b79e3f4e6851be757a2d8a7)\n\nChange-Id: I257b68089878ac9ab9f6fc78f726f9fb322dd884\n"
    },
    {
      "commit": "394fac502e1958b3d2a70328fcc3f73b6e3729e9",
      "tree": "5354752007a59e88ed0f4e8a092c7253eb4188cb",
      "parents": [
        "0cb22d07e18e1bcf7f545f1a587e3ebbec9f99cb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 24 17:41:21 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 24 18:27:02 2016 -0700"
      },
      "message": "Fix broken DCHECK\n\nDex cache may now contain references into boot image. Only check\nclasses that are actually in the application image.\n\nBug: 28295348\n\n(cherry picked from commit 55accd5725442026c8c32dc773b1cd12a65f90f6)\n\nChange-Id: Ic585e444f60734768a5499ccaf14d68bf3685d50\n"
    },
    {
      "commit": "06e3f4fa00ea9f71c4675f90e250e59b6d9ba36f",
      "tree": "f7b88bb422a27a38971de6944e77f6ce8a8ce180",
      "parents": [
        "01be68100e96a44b4ff8cb4cb3c9baa346ff048d"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 15:42:37 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 17:33:11 2016 -0700"
      },
      "message": "Base isDexOptNeeded result on OatFileAssistant::IsUpToDate.\n\nSo that it is consistent with when ART will try to run dex2oat.\n\nBug: 28826195\n\n(cherry picked from commit 10267549f5ea8acc07ea6163a87c9b4b8ea62be4)\n\nChange-Id: I5c891dc1a5a42ff7e0a4d3e66e9ecca37da743f2\n"
    },
    {
      "commit": "01be68100e96a44b4ff8cb4cb3c9baa346ff048d",
      "tree": "5d90bfc7b0e4c790ac9215ed6100a3130756e935",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 17 10:34:52 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 17:33:11 2016 -0700"
      },
      "message": "Only compile dex files if they are not up to date.\n\nInstead of trying to compile them all the time, and relying on file\npermissions to keep us from overwriting up-to-date dex files with\ndifferent compiler filters.\n\nBug: 27641809\nBug: 28639246\nBug: 28826195\nChange-Id: Ie717089d58517427b6f9a522b48146761c57a1a9\n"
    },
    {
      "commit": "27ed3a44e87690595f612f6ca03a6c8e6f38451c",
      "tree": "bbb5bc561edb97a926cd06680405e1b157894024",
      "parents": [
        "3b8e0b2cb67d5cb5d04c84be4294668703f4c7c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 18 08:51:52 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 24 16:30:31 2016 -0700"
      },
      "message": "Add methods with samples during launch to profile\n\nFor the snapshot taken after application launch we look at all of\nthe methods with one or more samples.\n\nBug: 28750506\n\n(cherry picked from commit c600eaa1089342db81ac1869437199efc1f6053b)\n\nChange-Id: Id8de4ee61c3f0b7594e638049fdd9d0848b49684\n"
    },
    {
      "commit": "5d3baf6e9dc4f21a13ba1c60c6dd7058e741d908",
      "tree": "d92eef7fdc9f56fd21e43195db11d4941aa86807",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 23 19:17:04 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 24 14:56:36 2016 -0700"
      },
      "message": "Don\u0027t update checksum if data ptr is null.\n\nPassing a nullptr to adler32 resets it to its initial value.\n\nBug: 28874264\n\n(cherry-picked from commit 2c6b49498e2f084ce217fcd3327103eadc1e0c37)\n\nChange-Id: I9ac1b66004d4028a67aca18057c03ba9fb494041\n"
    },
    {
      "commit": "3c7787fb2e197934a0e87329644384445b1d062f",
      "tree": "5942b3faa6b23abdccb98a2f9b9a13fa75ca6d36",
      "parents": [
        "80fd43eead361bd3b61d646e5c8efcdd0720304d",
        "fba39972d99701c80bf3beb7451aca508d67593c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "message": "Merge \"Fix misc-macro-parentheses warnings.\""
    },
    {
      "commit": "80fd43eead361bd3b61d646e5c8efcdd0720304d",
      "tree": "44433e54f130ee17dcd18f0ecfca934fa6584b1d",
      "parents": [
        "da97c4eee83d89c577ecc2ba98b2e45a2191b1f4",
        "c2bc26513ea7c5e2dd9f3b102fb23fd207e4ce63"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 24 17:54:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 17:54:11 2016 +0000"
      },
      "message": "Merge \"Fix bug in verifier: soft fail was hiding hard fail.\""
    },
    {
      "commit": "da97c4eee83d89c577ecc2ba98b2e45a2191b1f4",
      "tree": "6cb510f40e6b150df308f9d7fdf1570d121eb81f",
      "parents": [
        "409275236e20dc329ce7c0bad5572aacc34dc481",
        "2e09bc1c5bb97ea2b9e4951d0fdb3853bfa8cdc6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 24 17:37:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 17:37:34 2016 +0000"
      },
      "message": "Merge \"Remove no-op call to android_update_LD_LIBRARY_PATH\""
    },
    {
      "commit": "c2bc26513ea7c5e2dd9f3b102fb23fd207e4ce63",
      "tree": "cabc7c8d7fc27ea901d1d80548d7daaec3b2efd4",
      "parents": [
        "1e5dda549c11d02aff51f132760dd693e351ce85"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon May 23 14:58:49 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 24 09:48:21 2016 -0700"
      },
      "message": "Fix bug in verifier: soft fail was hiding hard fail.\n\nRationale:\nDexfuzzing found a situation where a soft fail (modifying\na final field) was hiding a hard fail (type error on that\nfield), which caused a crash in the compiler later on.\nAlso added a crash-before/pass-after regression test,\nso we don\u0027t add the return by accident later.\n\nBUG\u003d28908555\n\nChange-Id: I0cdc400be22a2d9eb00db8c8c6b25a85fbdac993\n"
    },
    {
      "commit": "2e09bc1c5bb97ea2b9e4951d0fdb3853bfa8cdc6",
      "tree": "baec505816b3265c98996b64ecff16a4f8084da8",
      "parents": [
        "84f00fe695a7a78551d7f2e8d7bc2bed1ce86a67"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 23 17:16:55 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 24 09:42:13 2016 -0700"
      },
      "message": "Remove no-op call to android_update_LD_LIBRARY_PATH\n\nWith linker-namespaces enabled for all target sdk versions\nthe call to android_update_LD_LIBRARY_PATH is no longer needed.\n\nBug: http://b/26040253\nBug: http://b/27702070\nChange-Id: I77c27c10a435e223824e1b69f727d0bc37a26306\n(cherry picked from commit 1bd15f0311b6d7c5b28cf70914831006a9ef64c3)\n"
    },
    {
      "commit": "f6d1e0f6196cb3669dfb4eed8ceef679b0588c0f",
      "tree": "fa9ade37af2b3c5736aa3431e393be348f21532c",
      "parents": [
        "84f00fe695a7a78551d7f2e8d7bc2bed1ce86a67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 23 15:32:42 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 24 17:33:07 2016 +0100"
      },
      "message": "Compile JNI stubs for verify-profile and interpret-only.\n\nThis is the intended behavior to have a good JNI transition\nperformance.\n\nBug: 28902384\n\n(cherry picked from commit 8c185bf0c6f18a5349bc87a7e3751ba06d90f461)\n\nChange-Id: I52767909b916ada3c619206c8838b85bff5ac316\n"
    },
    {
      "commit": "84f00fe695a7a78551d7f2e8d7bc2bed1ce86a67",
      "tree": "2b69dd152c9ee208713aa844b9fb89a7354c16ef",
      "parents": [
        "1e5dda549c11d02aff51f132760dd693e351ce85",
        "621b5eab8eed7746925bca489114d706ad455572"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 24 10:26:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 10:26:42 2016 +0000"
      },
      "message": "Merge \"Enforce class definition ordering rules in v37 Dex files.\""
    },
    {
      "commit": "3e80aeb449d0ae09f6a34b5a15727ccbfe38eb70",
      "tree": "ebda793d2853d4d05a34c0215f3222f260d4e224",
      "parents": [
        "df92503d788cc0340dcf296525416535cc34d7c9"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue May 17 16:37:53 2016 +0600"
      },
      "committer": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue May 24 11:55:47 2016 +0600"
      },
      "message": "ART: Print jit memory use only if we have samples\n\nOtherwise we got crashes on sigquit/shutdown trying to dump\nJIT statistics when the histograms are empty.\n\nChange-Id: Iac3ab5b51121f9bb5656f6ef71af785706541288\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\n"
    },
    {
      "commit": "1e5dda549c11d02aff51f132760dd693e351ce85",
      "tree": "934f2f6dc3318295e8f700da64c35869c62b79a7",
      "parents": [
        "2b650b7a170b2c474de177458057a190ff548862",
        "8e67465aa57ee58425be8812c8dba2f7f59cdc2e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 23 18:52:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 23 18:52:23 2016 +0000"
      },
      "message": "Merge \"Avoid the need for the black color for the baker-style read barrier.\""
    },
    {
      "commit": "8e67465aa57ee58425be8812c8dba2f7f59cdc2e",
      "tree": "b9ec80a0978d3a4d42a38efe1cee0e9a01696b47",
      "parents": [
        "20eef176101924d5047895214bad4e73b8ae35ec"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Dec 22 11:09:18 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon May 23 10:50:36 2016 -0700"
      },
      "message": "Avoid the need for the black color for the baker-style read barrier.\n\nWe used to set marked-through non-moving objects to black to\ndistinguish between an unmarked object and a marked-through\nobject (both would be white without black). This was to avoid a rare\ncase where a marked-through (white) object would be incorrectly set to\ngray for a second time (and left gray) after it\u0027s marked\nthrough (white/unmarked -\u003e gray/marked -\u003e white/marked-through -\u003e\ngray/incorrect). If an object is left gray, the invariant would be\nbroken that all objects are white when GC isn\u0027t running. Also, we\nneeded to have an extra pass over non-moving objects to change them\nfrom black to white after the marking phase.\n\nTo avoid the need for the black color, we use a \u0027false gray\u0027 stack to\ndetect such rare cases and register affected objects on it and change\nthe objects to white at the end of the marking phase. This saves some\nGC time because we can avoid the gray-to-black CAS per non-moving\nobject as well as the extra pass over non-moving objects.\n\nRitzperf EAAC (N6):\n  Avg GC time:  232 -\u003e  183 ms (-21%)\nTotal GC time: 15.3 -\u003e 14.1 s  (-7.7%)\n\nBug: 12687968\nChange-Id: Idb29c3dcb745b094bcf6abc4db646dac9cbd1f71\n"
    },
    {
      "commit": "2b650b7a170b2c474de177458057a190ff548862",
      "tree": "8a47caf4b5dc7c9c6f08db1520a8cb3513b87533",
      "parents": [
        "a09cc3102dcc5e2e685c5196f81ca5014920945f",
        "ffedec510c07cf0f77d0cce51940838f2e630514"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 23 16:50:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 23 16:50:48 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\"\""
    },
    {
      "commit": "1b1e31fa720d3f8c9b1a9cca41fecc46f38fe731",
      "tree": "1b0a37098e4308ff20d4e41bd91ec6b7f932edf7",
      "parents": [
        "96c6ad804369b20f3b9c3693df539d905ae475c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 19 10:13:04 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 20 16:30:50 2016 -0700"
      },
      "message": "Only fill methods with 0xFE on debug builds\n\nThe GC scans classes without holding any locks, we can not fill\nthe methods if it is running. Added a GC critical section to address\nthis. Fixes random crash when scanning classes\u0027 methods.\n\nOnly for debug builds to not hurt performance.\n\n(cherry picked from commit 22bd2a1b5ec2a5038cc3ae1964781f30aef0315f)\n\nBug: 28699001\nChange-Id: If96155eaf3fc0e6df31f57dcf32fbd4063b09345\n"
    },
    {
      "commit": "ffedec510c07cf0f77d0cce51940838f2e630514",
      "tree": "7b21bd86b08f2750bab8d4fd9f23a721ec4eba84",
      "parents": [
        "247250f28028a5b2260ba2eb0a7f555a183b996a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 19 10:48:40 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri May 20 11:36:18 2016 -0700"
      },
      "message": "Revert \"Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\"\n\nPotential gc points can make the result value stale. We now set the result value\nto null proactively once it\u0027s moved to shadow frame registers. IsStringInit()\nis written in a way that does string comparison instead of requiring method\nresolution so that it doesn\u0027t have a gc point. Also we don\u0027t cache the callee\nmethod during frame unwinding since the method may be rewritten already.\n\nBug: 28555675\n\nChange-Id: Ic51511a4a0fc84a852d8d907f91e7835f49ac478\n"
    },
    {
      "commit": "96c6ad804369b20f3b9c3693df539d905ae475c2",
      "tree": "a09093da75747fe523436f26ff314b19804ffa23",
      "parents": [
        "df92503d788cc0340dcf296525416535cc34d7c9",
        "c25cbf14595799265d3d1b5bafb8dd00b91dbbc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 20 13:55:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 20 13:55:13 2016 +0000"
      },
      "message": "Merge \"ARM: Add new String.compareTo intrinsic.\""
    },
    {
      "commit": "c25cbf14595799265d3d1b5bafb8dd00b91dbbc1",
      "tree": "3bb842edbcff3de90246eed1672c0cd1069ff17b",
      "parents": [
        "a741785dddab1f4b79253514287860d11c5800c6"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Apr 18 09:00:11 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri May 20 11:56:14 2016 +0100"
      },
      "message": "ARM: Add new String.compareTo intrinsic.\n\nBenchmarked on Nexus6P big, little, and all cores. The new intrinsic is\nfaster than pStringCompareTo for compare lengths on [1,512], so the\nruntime call is no longer needed.\n\nChange-Id: If853b592dfc5e561ea3389b51729f37a2c89c18e\n"
    },
    {
      "commit": "ca87756577d97bc9c4258f13a06bb53be26507b1",
      "tree": "29e9fafb8b75ee50db4744ba00fb1c9eb5ca0850",
      "parents": [
        "d9d54c57e061a7ec650ce2088d7d3658b93f6c65",
        "8fbea8e69a231e6a8768fb212f56c97d0de85eba"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 20 02:26:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 20 02:26:43 2016 +0000"
      },
      "message": "Merge \"Add missing check for IsShuttingDown in profile saver\""
    },
    {
      "commit": "8fbea8e69a231e6a8768fb212f56c97d0de85eba",
      "tree": "f88fea4df45ec9558683e01a2631893ba3af85b8",
      "parents": [
        "0fc5abef6fd98c8f1960195aa43448c16e1f11b7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 18 15:49:36 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 19 17:36:41 2016 -0700"
      },
      "message": "Add missing check for IsShuttingDown in profile saver\n\nBug: 28814718\n\n(cherry picked from commit 0233a413ba42aa34a92c357c8dcfbe48871788b9)\n\nChange-Id: I709fc30147047c7a420cd6ff2f0c3b57c54c2021\n"
    },
    {
      "commit": "54315c7e452742c6c57649e61c6370c8c2083d96",
      "tree": "c379d90d4eebb5be1b2abf286d625f8941fede9a",
      "parents": [
        "0fc5abef6fd98c8f1960195aa43448c16e1f11b7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 18 21:10:42 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 19 15:39:35 2016 -0700"
      },
      "message": "ART: Check whether an oat file exists before opening\n\nThe two-stage process of dlopen and our own loader is expensive.\nConsidering that the OatFileAssistant needs to check two locations,\none of which is unlikely to have a file for the common case of apps\ninstalled in data, do a file existence check before attempting to\nload the file.\n\nRemove an unused variable.\n\nSaves about 0.25ms on a N6P.\n\nBug: 28801010\n\n(cherry picked from commit d9a720bcb5df2c135f161c7c6da2d25db4400dca)\n\nChange-Id: I0aff9c276c0f539723f8a92663f14ce72160c44d\n"
    },
    {
      "commit": "0fc5abef6fd98c8f1960195aa43448c16e1f11b7",
      "tree": "94c8bdd8f0e80545cbbbf5d3a7bf8b5cde3dd133",
      "parents": [
        "93622f95a8ee8828d3130fa54f38fb4806119e45",
        "29bdaeef925f35eed68f3e52d04416daa0a62317"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 19 20:30:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 20:30:19 2016 +0000"
      },
      "message": "Merge \"Do not allow OSR jump while debugging is active.\""
    },
    {
      "commit": "93622f95a8ee8828d3130fa54f38fb4806119e45",
      "tree": "cde01f20be212ccedaaabf038b1a31f3a0896ca1",
      "parents": [
        "247250f28028a5b2260ba2eb0a7f555a183b996a",
        "39004a6fa5566007354379dfc4ae59823146e23e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 19 19:02:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 19:02:16 2016 +0000"
      },
      "message": "Merge changes I0bbdf83d,I70156f98\n\n* changes:\n  ART: Fix Mac build\n  ART: Optimize PreSetup pass for oat-file open\n"
    },
    {
      "commit": "29bdaeef925f35eed68f3e52d04416daa0a62317",
      "tree": "252c4490c104a86416df84702b1d5fa702a2c0d8",
      "parents": [
        "fde261814318ba1fdab5cc371c9220286173d997"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 18 15:44:07 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 19 11:38:10 2016 -0700"
      },
      "message": "Do not allow OSR jump while debugging is active.\n\nRationale:\nThis prevents dangerous transitions between interpreter\nand osr compiled code while e.g. single stepping through\na method that is becoming hot.\n\nBUG\u003d28672961\n\nChange-Id: Ife8e641c05b3e3eb01284212270595c8677d6673\n"
    },
    {
      "commit": "247250f28028a5b2260ba2eb0a7f555a183b996a",
      "tree": "5c144bbca4cadd3726e9887ef8cb910bbccfec48",
      "parents": [
        "4020ecd536601213b3262b2a6a8bb922d594b994",
        "3224838dfe9c95330ad963286f2c47e9546d3b5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 17:37:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 17:37:40 2016 +0000"
      },
      "message": "Merge \"Clean up JNI calling convention callee saves.\""
    },
    {
      "commit": "3224838dfe9c95330ad963286f2c47e9546d3b5c",
      "tree": "50d1b8759c61d392ecc159ede7efab94ecbfcde8",
      "parents": [
        "db9fcb30402a2726564905c206fa23ee86e146c3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 10:37:24 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 18:12:22 2016 +0100"
      },
      "message": "Clean up JNI calling convention callee saves.\n\nPrecalculate callee saves at compile time and return them\nas ArrayRef\u003c\u003e instead of keeping then in a std::vector\u003c\u003e.\n\nChange-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef\n"
    },
    {
      "commit": "a57305e9e128bf4330cd02ed8ba66cacca018327",
      "tree": "9dfcb088363bf77afa064ffd621320da6f6d1956",
      "parents": [
        "6c313600e995ac81a6e68e84b64761a10fb1311c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 18 19:51:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 19 10:07:22 2016 -0700"
      },
      "message": "Fix profile saver initial wait\n\nWas using TimedWait for the initial wait, but this can return\nearly if the process receives any interrupt (due to futex). The\nsolution is to use a wait loop. If the wait returned early, not\nenough classes were including in the profile. This negatively\naffected application launch times in some scenarios.\n\nSample wait times before the change:\nWaited 2.002s\nWaited 97.808ms\nWaited 182.676ms\nWaited 2.000s\nWaited 1.678s\n\nBug: 27688727\n\n(cherry picked from commit 0ec065d55ccc4eb0956b0a2231bcc8c1a6d1d273)\n\nChange-Id: I7cfdda9dcff942c7618d6022a0c31f872fb76fcf\n"
    },
    {
      "commit": "39004a6fa5566007354379dfc4ae59823146e23e",
      "tree": "acbba08b9e5c1a02e0dedea1eb945f357e9ab31e",
      "parents": [
        "4075f830c58e38f1ac88a6b3c663fafefdb4b414"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 18 21:27:00 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 19 08:28:46 2016 -0700"
      },
      "message": "ART: Fix Mac build\n\nFollow-up to 9821cceebf077cb747aed543582b3d740a03ea7f.\n\nBug: 28801010\n\n(cherry picked from commit 17fc4bda7987654709dcc24ea5a7bd6a859e0966)\n\nChange-Id: I0bbdf83d64ea81e56824aa19bfae3baa341a2b73\n"
    },
    {
      "commit": "4075f830c58e38f1ac88a6b3c663fafefdb4b414",
      "tree": "21023435f210dafdcc5134bd1775a3b88399a6be",
      "parents": [
        "6c313600e995ac81a6e68e84b64761a10fb1311c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 18 13:09:54 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 19 08:28:27 2016 -0700"
      },
      "message": "ART: Optimize PreSetup pass for oat-file open\n\nThe PreSetup pass for opening an oatfile with dlopen parses all\nshared objects and tries to retrieve the corresponding mem map\n(so as to have a fake MemMap to reserve the space for any scanning\noperations and so on). Optimistically optimize this pass by counting\nthe number of shared objects before the dlopen, and skipping as\nmany afterwards.\n\nThis saves about half a millisecond on an N6P.\n\nBug: 28801010\n\n(cherry picked from commit 9821cceebf077cb747aed543582b3d740a03ea7f)\n\nChange-Id: I70156f9875e89c5af3c9e36e8f01c5662e3f736e\n"
    },
    {
      "commit": "db9fcb30402a2726564905c206fa23ee86e146c3",
      "tree": "af72fef6330650d98483c938eb77774582029fe7",
      "parents": [
        "fde261814318ba1fdab5cc371c9220286173d997",
        "695e2c4aa1e61aa006412c83f15c4a659111a08a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 19 01:06:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 19 01:06:25 2016 +0000"
      },
      "message": "Merge \"Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\""
    },
    {
      "commit": "695e2c4aa1e61aa006412c83f15c4a659111a08a",
      "tree": "37bd8865195a0eeff1b237dbbd94db2dc7f31f70",
      "parents": [
        "8ca33bf04060fadd5b35fa93fa56547c62fe52e7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "message": "Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\n\nThis reverts commit 8ca33bf04060fadd5b35fa93fa56547c62fe52e7.\n\n597-deopt-new-string is failing.\n\nBug: 28846692\nBug: 28555675\nChange-Id: Ibfb59ec36e089c987ea64e4af4ca3709e536412a\n"
    },
    {
      "commit": "667953bea55e5dda8bcc099219909ec6a3e1f2ef",
      "tree": "5d7489241be8291693d11d4236a18979f3a4191e",
      "parents": [
        "a741785dddab1f4b79253514287860d11c5800c6",
        "8ca33bf04060fadd5b35fa93fa56547c62fe52e7"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed May 18 17:45:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 18 17:45:27 2016 +0000"
      },
      "message": "Merge \"Move rewritten StringFactory call results into dex registers for deopt\""
    },
    {
      "commit": "989ab3b3034d16a57f5a893d73ed804169d8eced",
      "tree": "bda9791bb3b9917a34bb0f6d6de560ab967ffea4",
      "parents": [
        "a741785dddab1f4b79253514287860d11c5800c6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 18 15:52:54 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 18 15:52:54 2016 +0100"
      },
      "message": "Catch classes inheriting from themselves in the class linker.\n\n(cherry picked from commit 90328ac545f65759a8e4fb217a75332906795518)\n\nBug: 28685551\nBug: 27682580\nBug: 28830038\n\nChange-Id: If568013bf3c82c1df9b282522712d9af5ca5945d\n"
    },
    {
      "commit": "621b5eab8eed7746925bca489114d706ad455572",
      "tree": "4b335194a2fa7b2d25c4708a8051342bd330d413",
      "parents": [
        "4021b462e05b63c6fc6fec4b6e0a41ac1f6ac9de"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 18 11:41:33 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 18 11:41:33 2016 +0100"
      },
      "message": "Enforce class definition ordering rules in v37 Dex files.\n\nThese new checks also reject classes extending or\nimplementing themselves directly or transitively within\na single Dex file.\n\nBug: 28812524\nBug: 28797012\nBug: 28685551\nBug: 27682580\n\nChange-Id: I51c43f8b4b6a7abaade63682411e61f21767f5d4\n"
    },
    {
      "commit": "6e759ad477a30e09cce8ca59ed30180aceb8aff6",
      "tree": "5df26346612113c1a53d5b991d81a263fb7f2f3b",
      "parents": [
        "7463820747549be5d2babf93bb16ac739c053ce9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 17 10:13:10 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 17 21:23:04 2016 -0700"
      },
      "message": "ART: Fix systrace monitor logging\n\nThinlock unlocking was incorrectly unconditionally ending a block.\n\nBug: 28423466\n\n(cherry picked from commit 825ab1c3f44fd84e5967f023c2dd8d36c6906f08)\n\nChange-Id: Ifaebd9e959041e157e292d4cba05675a37e9c700\n"
    },
    {
      "commit": "8ca33bf04060fadd5b35fa93fa56547c62fe52e7",
      "tree": "8f41ac9cad78e9cae1902fbd2f2e9636a9d5bd31",
      "parents": [
        "8ccc728d9275ad9bf839507a4979774f26ee7392"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 11:01:49 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 17 17:03:58 2016 -0700"
      },
      "message": "Move rewritten StringFactory call results into dex registers for deopt\n\nBug: 28555675\nChange-Id: I9236df283f2e83ca5dcde01f73dc0522d745cd59\n"
    },
    {
      "commit": "8ccc728d9275ad9bf839507a4979774f26ee7392",
      "tree": "37bd8865195a0eeff1b237dbbd94db2dc7f31f70",
      "parents": [
        "5987549ea901df16dbe181336ed0658bf2732bc7",
        "3fd448a8b7903b00fceaed5853306e2d7eb31c72"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 17 22:11:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 17 22:11:33 2016 +0000"
      },
      "message": "Merge \"Fix an assert during jdwp debugging.\""
    },
    {
      "commit": "278a80b59f570d72e03656b4a561d08c54a73007",
      "tree": "21c8256f52efc4b6f6c3a168984b4b8d2761b1d1",
      "parents": [
        "8f2ea28b2504dcd86dc3bbcea4a5a800eede9f5b"
      ],
      "author": {
        "name": "Oleksiy Vyalov",
        "email": "ovyalov@google.com",
        "time": "Wed Mar 30 20:27:00 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 17 14:01:10 2016 -0700"
      },
      "message": "ART: Return native debuggable status of the app.\n\nBug: 27942453\n\n(cherry picked from commit dfbbeef151d52ec9c5bbc9f12449d4c74b8ec19e)\n\nChange-Id: Ie474f4d830237d015436158829264b8bdf0a7194\n"
    },
    {
      "commit": "f0192c86a58b2f43378c9a2113007538dd38ddbf",
      "tree": "df3fef8e9ccd30152819e893e6212ce45b5f51a5",
      "parents": [
        "783d02e527107e91880f12bddf41afd313919132"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 28 20:39:50 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 17 11:08:41 2016 -0700"
      },
      "message": "Support to pass \u003cuses-library\u003e option through to dex2oat.\n\nThis change takes an app\u0027s shared libraries specified by \u003cuses-library\u003e\nand passes it through to dex2oat to be used during compilation.\n\nPart of a multi-project change.\n\nBug: 26880306\n\n(cherry-picked from commit 26e8a2f150cd7f7195a10650ab8a5b6fa5014bc8)\n\nChange-Id: I72a352abdfc37eacd8bedfa6c218e3809ca8e39c\n"
    },
    {
      "commit": "8cafedd5c43bbe9a5a0f5ff8b07382a93b721dad",
      "tree": "5aebe5b06be657f4672400973ac9ed738f3b7262",
      "parents": [
        "a5755ab86d4e97a26a3d0530749881cba8260440",
        "4021b462e05b63c6fc6fec4b6e0a41ac1f6ac9de"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:50:29 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 17 15:50:29 2016 +0000"
      },
      "message": "Merge \"Revert \"Reject classes inheriting from themselves directly or transitively.\"\""
    },
    {
      "commit": "4021b462e05b63c6fc6fec4b6e0a41ac1f6ac9de",
      "tree": "a5e99fc922172da3374a86673285610fd3f8d1be",
      "parents": [
        "498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:50:00 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:50:00 2016 +0000"
      },
      "message": "Revert \"Reject classes inheriting from themselves directly or transitively.\"\n\nThis reverts commit 498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9.\n\nReverting not to break apps that do not follow the class\ndefinition order rules.\n\nBug: 28797012\nBug: 28685551\nBug: 27682580\nChange-Id: I2491b5aefe3ca8a364a05f7dfbc899c5a5757712\n"
    },
    {
      "commit": "a5755ab86d4e97a26a3d0530749881cba8260440",
      "tree": "a7eb3769e287d5026248d3d6cd5567d07b884f89",
      "parents": [
        "bd274fec102dc9652b6c3b7aef2e2401d27bb15b",
        "a6f672a1b3172a329ecc60a3e54a9b44d4f7a0eb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:48:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 17 15:48:49 2016 +0000"
      },
      "message": "Merge \"Revert \"Reject classes implementing themselves as interface directly or transitively.\"\""
    },
    {
      "commit": "a6f672a1b3172a329ecc60a3e54a9b44d4f7a0eb",
      "tree": "f91a716df4b81cebd85e9c28970200e5d6ebf3e7",
      "parents": [
        "34598460015962699eb6b85b5fdb39400759280e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:48:10 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 17 15:48:10 2016 +0000"
      },
      "message": "Revert \"Reject classes implementing themselves as interface directly or transitively.\"\n\nThis reverts commit 34598460015962699eb6b85b5fdb39400759280e.\n\nReverting not to break apps that do not follow the class\ndefinition order rules.\n\nBug: 28797012\nChange-Id: I77844a77f2d070563294fa0b01f8f68383c93fb8\n"
    },
    {
      "commit": "a26389234ac66a4a5042c7bf7195c6531663d24d",
      "tree": "cd33279ec9285e777fc3023473ee9211a7b9425b",
      "parents": [
        "31e61f1d0aeb2c85ebddc7cd0cc3d7f1aea4014e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 29 16:44:11 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 17 00:16:55 2016 +0100"
      },
      "message": "Adjust ProfileSaver strategy\n\nChange to a notification based strategy (instead of polling):\n- the JIT notifies the ProfileSaver everytime it attempts a compilation\nor generate (in a task) a ProfileInfo object for the method\n- once a certain number of hot methods notification are received,\nProfileSaver wakes up the thread to do the analysis\n- a wake up does not equal to I/O since the during processing we might\nrealized that\u0027s actually not enough new data.\n- ProfileSaver throtles the request and ensures it doesn\u0027t do the\nprocessing more often than kMinSavePeriodNs.\n\nThe new strategy avoids waking the thread unnecessary during extended\nidle periods when we don\u0027t JIT.\n\nBug: 26815940\n\n(cherry picked from commit 5fbb0fe0625a1f76aa33cd78ccf1a17b00d8f6d1)\n\nChange-Id: Ifbac3a53c025e00a3faab6784bbfa679c6b42acb\n"
    },
    {
      "commit": "3fd448a8b7903b00fceaed5853306e2d7eb31c72",
      "tree": "5ef4f837bb7d0be0f1af86279f22b64b18db8000",
      "parents": [
        "73660f87497cadb77e8b33b4f5e01c34baae00dc"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 10 14:30:41 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 15:33:19 2016 -0700"
      },
      "message": "Fix an assert during jdwp debugging.\n\nWhen debugger attaches, we patch entry points of methods in framework code.\nDuring that process, it\u0027s possible that some method\u0027s declaring class isn\u0027t\nresolved yet. We need to relax one assert for that case.\n\nBug: 28630805\nChange-Id: I59fd488ad75417a64b52321677ffcac6ccdc5ce1\n"
    },
    {
      "commit": "31e61f1d0aeb2c85ebddc7cd0cc3d7f1aea4014e",
      "tree": "7c0b766c39ba378e8f07be134291cc1ee38ba66e",
      "parents": [
        "73660f87497cadb77e8b33b4f5e01c34baae00dc",
        "84a4ab827685b10088eb01807b1e9296bec527b3"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon May 16 20:17:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 16 20:17:17 2016 +0000"
      },
      "message": "Merge \"SafeStack-friendly stack protection in ART.\""
    },
    {
      "commit": "84a4ab827685b10088eb01807b1e9296bec527b3",
      "tree": "a7f1b57a95282505999045a7c052709c74e1b62f",
      "parents": [
        "30ad1c2e8b43227c28a6870c8c9eb765b80b0b33"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri May 13 14:01:41 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon May 16 11:14:39 2016 -0700"
      },
      "message": "SafeStack-friendly stack protection in ART.\n\nThis code takes an address of a stack variable to find the current\nstack top. With SafeStack, such variables can be allocated on a\nseparate, \"unsafe\" stack, generating a completely bogus address.\n\nUse __builtin_frame_address(0) instead.\n\nChange-Id: I84fe3161bdd01cebbb4e9bebf2aca86783cc6f15\n"
    },
    {
      "commit": "8494943e2e4ca98f2087dbacfae1dedefc853a4b",
      "tree": "c931bfa11f66a8a68bcfb8b7945b23e10c1d7d68",
      "parents": [
        "b68b354db33957cd20ca444cdb49b957781f70c9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 13 14:46:28 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 16 10:16:22 2016 -0700"
      },
      "message": "Make quick frames of proxy methods visited if they\u0027re constructors.\n\nAlso adds a test case for getting annotations during moving GC.\n\nBug: 28510922\n\n(cherry-picked from commit 12c08f03f65acc1c308491fc7ab6c57f682e2f24)\n\nChange-Id: I0d5cc9d5bb8bbff6bd6b108f7486a63402a15993\n"
    },
    {
      "commit": "ab880f4371e1ae5239c1b887911bd88f0c216a3d",
      "tree": "2e13093b2255369257844865db39c56816dfb054",
      "parents": [
        "2273f678ea3a55ec0f6b3b8c29c1e5100d6fc846"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 12 16:24:36 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 16 15:56:23 2016 +0100"
      },
      "message": "Typos and stylistic fixes.\n\nChange-Id: I1c88af9bd1d2cac6c803c8c61088c569a3847e01\n"
    },
    {
      "commit": "2273f678ea3a55ec0f6b3b8c29c1e5100d6fc846",
      "tree": "e2c9e7f33d28a976f7c2f2b520d49d0852ee1c5a",
      "parents": [
        "69872a18c19aa7a1f3d9f84f6b842a409cd1e161",
        "34598460015962699eb6b85b5fdb39400759280e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 16 14:04:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 16 14:04:38 2016 +0000"
      },
      "message": "Merge \"Reject classes implementing themselves as interface directly or transitively.\""
    },
    {
      "commit": "69872a18c19aa7a1f3d9f84f6b842a409cd1e161",
      "tree": "5f2077fd423a81bfc847b4032552b2024c3b5335",
      "parents": [
        "92f9d53e988087277bb82203d36fdd8bcfbe9142",
        "498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 16 12:39:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 16 12:39:43 2016 +0000"
      },
      "message": "Merge \"Reject classes inheriting from themselves directly or transitively.\""
    },
    {
      "commit": "34598460015962699eb6b85b5fdb39400759280e",
      "tree": "a20342239abfc16c184370118368634f0fbc541b",
      "parents": [
        "498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 16 12:22:55 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 16 13:01:53 2016 +0100"
      },
      "message": "Reject classes implementing themselves as interface directly or transitively.\n\nAlso enforce class definition ordering with respect to\nimplemented interfaces within a Dex file.\n\nChange-Id: I1cb991b1a976933f952d45ed08d8a189000ae4f5\n"
    },
    {
      "commit": "35e827ade289f4c2985eb419b43a0d1776469738",
      "tree": "1fd7695553c042a92e7399c54598d6e9f43ff260",
      "parents": [
        "30ad1c2e8b43227c28a6870c8c9eb765b80b0b33"
      ],
      "author": {
        "name": "Daniel Erat",
        "email": "derat@google.com",
        "time": "Tue May 10 18:07:18 2016 -0600"
      },
      "committer": {
        "name": "Daniel Erat",
        "email": "derat@google.com",
        "time": "Fri May 13 13:57:53 2016 -0600"
      },
      "message": "Fix JNIEnv-on-wrong-thread abort message.\n\nUpdate an incorrect abort message that claimed that thread A\nwas using the JNIEnv from thread A (when the JNIEnv was in\nfact from another thread). Now, the message is e.g.\n\n  JNI DETECTED ERROR IN APPLICATION: thread\n  Thread[1,tid\u003d628,Native,Thread*\u003d0xb038b400,peer\u003d0x75efc1f0,\"main\"]\n  using JNIEnv* from thread\n  Thread[6,tid\u003d640,Runnable,Thread*\u003d0xaa890800,peer\u003d0x12c00ca0,\"Binder:628_1\"]\n\nChange-Id: I877a78c47e88d1e8a28bade8ea40be6bed58439f\n"
    },
    {
      "commit": "30ad1c2e8b43227c28a6870c8c9eb765b80b0b33",
      "tree": "3f63d1698550507cfa54d6c663b219650a48b952",
      "parents": [
        "afb2e7813f11ba8017e8394e32e8529b666d100a",
        "249b4d1a9132338aeb28fcbfa3d31de3b188d9f2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 13 18:07:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 13 18:07:16 2016 +0000"
      },
      "message": "Merge \"Use _exit instead of exit for the system exit.\""
    },
    {
      "commit": "fba39972d99701c80bf3beb7451aca508d67593c",
      "tree": "0d80ecb6997290140503926b08a72e7418915526",
      "parents": [
        "718d4e269810c17d03df909c84b2f7bbd4f61fb9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 11 11:26:48 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 13 10:38:56 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\n* Add parentheses to fix warnings.\n* Use NOLINT to suppress wrong clang-tidy warnings.\n\nBug: 28705665\nChange-Id: Icc8bc9b59583dee0ea17ab83e0ff0383b8599c3e\n"
    },
    {
      "commit": "498bb81f8725e2cf8f5ce1aa6b49ab5a9c5bb4c9",
      "tree": "f91a716df4b81cebd85e9c28970200e5d6ebf3e7",
      "parents": [
        "d8cd1c83f9fe7637494f7a65807289041d2fb7d3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 12 16:12:47 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 13 17:53:28 2016 +0100"
      },
      "message": "Reject classes inheriting from themselves directly or transitively.\n\nAlso enforce class definition ordering with respect to super\nclasses within a Dex file.\n\nBug: 28685551\nBug: 27682580\nChange-Id: If3eba782538eb4328d4b8a542236632379e7c050\n"
    },
    {
      "commit": "afb2e7813f11ba8017e8394e32e8529b666d100a",
      "tree": "a431c3c689498ca0ed3b9b270488b9c3718e155e",
      "parents": [
        "628f2017fcc64352a2297a802c10ea7100fbd74b",
        "a2b147eaf72c5af23302a382620360b4cac28934"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Fri May 13 12:26:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 13 12:26:22 2016 +0000"
      },
      "message": "Merge \"Ensure that java.lang.reflect.Field is initialized\""
    },
    {
      "commit": "a2b147eaf72c5af23302a382620360b4cac28934",
      "tree": "eb0876d95dda8f278237ad50f6c1cca4ca84c993",
      "parents": [
        "af4bcdf49e014ededa9e71e425dac761697dac8d"
      ],
      "author": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Thu May 12 14:55:48 2016 +0100"
      },
      "committer": {
        "name": "Przemyslaw Szczepaniak",
        "email": "pszczepaniak@google.com",
        "time": "Fri May 13 13:21:45 2016 +0100"
      },
      "message": "Ensure that java.lang.reflect.Field is initialized\n\nRecent change in libcore (a move of clinit code\nto register function for java.net.InetAddress\nclass) was triggering a failure in 119-noimage-patchoat\ntest. Failure was occurring when the test was running\nwithout the image. This was caused by the\njava.lang.reflect.Field not being initialized when\nrunning InetAddress.\u003cclinit\u003e, which is a side effect\nof calling JNIEnv-\u003eGetMethodId inside the libcore JNI_OnLoad.\n\nThis changes makes sure that this class is initialized\nwhen we\u0027re running without image.\n\nBug: 28153851\nChange-Id: I8aeb5eb312a163c452c40b851112544a8340e488\n"
    },
    {
      "commit": "e18d619fc2cd8e7d9617c89c961251f7f9bda4f8",
      "tree": "2ac853d4c3b758968713213a7d2515398e57c15b",
      "parents": [
        "af4bcdf49e014ededa9e71e425dac761697dac8d"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 10 14:01:18 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu May 12 08:45:52 2016 -0700"
      },
      "message": "Don\u0027t expect permission to open foreign dex use marks.\n\nsepolicy says we can create the mark files, but open requires\nadditional permissions we don\u0027t need. Don\u0027t print a warning when we\naren\u0027t given those additional permissions.\n\nBug: 28241500\n\n(cherry picked from commit 12e4157666bfdc2ca38f459f6447385b80c7ddff)\n\nChange-Id: I272befdb4fa58a0adf550fde52ddab5b5f5a9fe3\n"
    },
    {
      "commit": "249b4d1a9132338aeb28fcbfa3d31de3b188d9f2",
      "tree": "a696bab21a669db0da770d6dcec396fdd75c5dbe",
      "parents": [
        "b2b55596e605bef315b615cb89e4515f360548f2"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed May 11 19:27:44 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed May 11 19:27:44 2016 -0700"
      },
      "message": "Use _exit instead of exit for the system exit.\n\nWe get DCHECK failures in ~Mutex() called from an atexit handler on\nSystem.exit() in some tests. To avoid it, use _exit instead of exit.\n\nBug: 28106055\nChange-Id: I2a6d2ad8170327553c9c9f0049829e3fd3937180\n"
    },
    {
      "commit": "5d2a3f7bdd23003af78e3f09e96b9f77ff33c4b6",
      "tree": "b4acc13230922ddf87b8d99341d1f8e376cd0031",
      "parents": [
        "d6f374071804b3efe864f16d75fa22cb9971ed5a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 11 11:35:39 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 11 14:30:17 2016 -0700"
      },
      "message": "Add histogram for native allocations\n\nShows up in traces.txt, sample output:\nHistogram of native allocation 0:4315,131072:33,1179648:3 bucket size 131072\nHistogram of native free 0:995,131072:19,1179648:2 bucket size 131072\n\nBug: 28680116\n\n(cherry picked from commit 0dce75dc6945c221a054eb9c479fb60efd193719)\n\nChange-Id: Iaa07c6b8da0d6bab64a8fd4af8a02fc0b8c70e9e\n"
    }
  ],
  "next": "10c5f56423feaf3eadb3d4c09c61d2b998404162"
}
