)]}'
{
  "log": [
    {
      "commit": "454b3b6774fe07765273b917ccc97da2eba776ac",
      "tree": "3fbfefeb7901e22181011ba311de1b9cec1e367d",
      "parents": [
        "2c6760a0eb1e05d3a89a6cca9d2746da3d547e9e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Apr 07 14:42:47 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Apr 08 09:09:07 2016 -0700"
      },
      "message": "ART: Fix race in on-stack replacement\n\nThe expected sequence of events for on-stack replacement is:\n\n   1. Method goes warm, triggering enhanced profiling\n   2. Method goes hot, triggering method compilation\n   3. Method goes really hot, triggering an osr method compilation.\n   4. Interpreter polls for the existence of an osr entry point,\n      and transitons to compiled code if found.\n\nWe have a race problem if #2 and #3 happen closely together, and\nthe osr method compilation begins before the regular method\ncompilation.  In that case, the jit sees that the method is\nalready being compiled (the osr method - but it does not\ndistinguish the two), and discards the normal compilation request.\nSo, the osr version is compiled and the normal version is discarded.\nIn #4, the MaybeDoOnStackReplacement() check assumes that a normal\nversion of the compiled method must exist before doing an on-stack\nreplacement, so it keeps returning false.\n\nThis is why we were seeing sporadic timeout failures of\n570-checker-osr when the mterp fast branch profiling was\nintroduced.  The branch profiling performance enhancements\ngreatly reduced the time between #2 and #3, increasing the liklihood\nof losing the race.  Further, the new code clamped hotness to avoid\nwrap-around.  The race existed (and likely occurred) in the previous\nversion, but because hotness counters were allowed to overflow and\nwrap around you\u0027d eventually hit the threshold a second time and\ntry again - masking the problem.\n\nTip \u0027o the hat to Serguei Katkov for identifying the problem.\n\nA possible solution (taken in this CL) is to differentiate osr\ncompilations from normal method compilations.\n\nBug: 27939339\nChange-Id: I71044516b35dc69de9fc2d2a445e33809ac650ed\n"
    },
    {
      "commit": "9d07e3d128ccfa0ef7670feadd424a825e447d1d",
      "tree": "dfb677fd75f0f297fef9bc49311cf1d22c770f56",
      "parents": [
        "eb98c0ded592cfca8187c744393c82efd1020b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 31 12:02:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 04 17:50:20 2016 +0100"
      },
      "message": "Clean up OatQuickMethodHeader after Quick removal.\n\nThis reduces the size of the pre-header by 8 bytes, reducing\noat file size and mmapped .text section size. The memory\nneeded to store a CompiledMethod by dex2oat is also reduced,\nfor 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The\naosp_flounder-userdebug 32-bit and 64-bit boot.oat are each\nabout 1.1MiB smaller.\n\nDisable the broken StubTest.IMT, b/27991555 .\n\nChange-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039\n"
    },
    {
      "commit": "b9a639df2f21dd67b9f4379f31b7ccc5dd48ebd6",
      "tree": "24a069d64f03333035da93382701b0ba0ebb1ef8",
      "parents": [
        "a373a33d33b8a5b4fd0d4c35645e2e4353ebde9b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 11:25:20 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 11:25:20 2016 +0000"
      },
      "message": "Fix braino in JitCodeCache.\n\nA OatQuickMethodHeader can never have its entry point be the\ninterpreter entrypoint.\n\nClear hotness counter of methods in more relevant places.\n\nChange-Id: I0563a57eace2e0e4fe2abc76f5e293ddf47b25e3\n"
    },
    {
      "commit": "6300fd77033817664aee3056c4ff5fab85698d2b",
      "tree": "55e14dca88cad3d5a733a9a7a50534556cb838b5",
      "parents": [
        "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 18 09:40:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:42:47 2016 +0000"
      },
      "message": "Code cleanup between debugger and jit.\n\nThis is to allow secondary dex files to be fully compiled.\n\n- No need to do full deopt anymore for breakpoints: code in boot.oat\n  is deoptimized as soon as the debugger attaches (and we decided that\n  existing frames could not be debugged), and application being\n  debugged is compiled debuggable.\n\n- jit should only call UpdateMethodsCode if exit stubs are not\n  installed due to lock violation otherwise (the lock level of the\n  jit code cache is lower than the deoptimization lock).\n  This part needs an overall cleanup beyond the scope of this change.\n\nChange-Id: I38d85dcb270db746c1d6b0ceb7893a1aad8c9655\n"
    },
    {
      "commit": "933330a192d43d7c7304120999907857a89c2f96",
      "tree": "a413b4df2a4b9fdb804983204168ee23cd9c9eb7",
      "parents": [
        "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:06 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:26 2016 +0000"
      },
      "message": "Add more statistics for memory use of the JIT.\n\nCollect data for stack maps, profiling info, and compiled code.\n\nbug:27520994\n\nChange-Id: Ic87361230c96ce0090027a37d750e948d806c597\n"
    },
    {
      "commit": "07e3ca9a46801990d662c48d0fddedc63c4c053c",
      "tree": "94fedc96b28c6a46d2b83c80b2cfefd4c2898f4a",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "message": "Fix thread race when fetching the ProfilingInfo object.\n\nProblem is:\n1) Compiler fetches the ProfilingInfo of A, it\u0027s null.\n2) Mutator creates the ProfilingInfo.\n3) Compiler notifies it\u0027s not using A anymore, calls\n   ProfilingInfo::DecrementInlineUse -\u003e Crash as we expected\n   ProfilingInfo::IncrementUse to be called before.\n\nAlso update some namings to better reflect what is going on.\n\nChange-Id: I55ea4c5d81988131467095e18a0d13a8be9d0ef7\n"
    },
    {
      "commit": "e87fe952e94ae97ebdf84e342d91eeb8b9aef06b",
      "tree": "69e14ce007f842ca72fe7e07164ca2374ec5cf6a",
      "parents": [
        "93e46b2a14050d8f65088ccb44d6fab6c1c46b2c",
        "b6e20ae17d0881a66c22532e4152ce6779454a92"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 10 10:47:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 10 10:47:57 2016 +0000"
      },
      "message": "Merge \"Clear inline caches at each full GC.\""
    },
    {
      "commit": "b6e20ae17d0881a66c22532e4152ce6779454a92",
      "tree": "35d7fbfb812aef11ea51010794dce26eb91c1ae4",
      "parents": [
        "8a8c84114b16b8971bc2d3c5c7e0e31470d1a68b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 07 14:29:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 09 17:25:19 2016 +0000"
      },
      "message": "Clear inline caches at each full GC.\n\nThis fixes occasional failures of 141-class-unload.\n\nAlso fix a bug where clearing inline caches also cleared the dex\npc associated with it.\n\nbug:26846185\nbug:23128949\nChange-Id: I77bf1dee229d7764c3cc21440829c7fba7b37001\n"
    },
    {
      "commit": "33fbf37feb959293b10d0b6e26d5e8ee7dff786c",
      "tree": "b3abd06a7d8e8b79c547971f4dc9a2904baac006",
      "parents": [
        "83537c6e2fe6518e0581a8466ef41e90ea7b5516"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 07 13:48:08 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 07 14:44:20 2016 -0800"
      },
      "message": "Add systrace logging to ScopedCodeCacheWrite\n\nShows if we are taking a long time to mprotect.\n\nBug: 27502458\n\n(cherry picked from commit 462cd2cfa8c5fbb6548419eb8f27b448a12aca11)\n\nChange-Id: Ic0f24641f5856b13f3b949dcd53dc01ec952d171\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "9abb2978f09643227664ab70c0677744b8f6e946",
      "tree": "69b4bb602fa5c58d6d0eabdf5f79aee2f6a60c52",
      "parents": [
        "a3ed89f687dbaa9b5321b2d38d41b487a4208b80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 14:32:59 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 15:15:28 2016 +0000"
      },
      "message": "Fix very rare bug around JIT code cache collection.\n\nThe bug is the following:\n1) JIT thread: We start a code cache collection.\n2) JIT thread: We mark all code that is in the call stack of all\n   threads.\n3) Mutator thread: after marking its stack, resumes and does call\n   that pushes JIT compiled code to the call stack.\n4) Mutator thread: deoptimizes compiled code of ArtMethod Foo,\n   and therefore updates the entry point of Foo through\n   JitCodeCache::InvalidateCompiledCodeFor.\n   (Note that updating the entrypoint could also be done through\n   instrumentation).\n5) JIT thread: Call JitCodeCache::RemoveUnusedAndUnmarkedCode.\n   The method used to remove entries that were not entrypoints.\n   It sees the compiled code for Foo but that is not an entrypoint\n   anymore, so deletes it.\n6) Mutator thread problem: it now has compiled code in its call\n   stack that is deleted.\n\nIf it\u0027s only one mutator thread, we only hit a DCHECK when walking\nthe stack, as we are now seeing an invalid pc. The deoptimization\nwill longjmp to the caller of that invalid entry anyway.\n\nHowever, if multiple mutator threads are involved, one thread\nmight invalidate the compiled code while the other is still\nrunning it. And we end up deleting code that is in the call\nstack of a thread, and we will crash.\n\nThe fix is to mark entrypoints before marking call stacks,\nso that anything a thread might jump to is marked and kept.\n\nbug:27424509\nbug:23128949\nbug:26846185\n\nChange-Id: I07cd08cedd96b9900629f7535e95404f622104ea\n"
    },
    {
      "commit": "bcd94c8ea9bde4e075c25fbdfb3a2ef6858eed7b",
      "tree": "2719f29261e1fced1c94ef309e12230ef103a79e",
      "parents": [
        "e283588e56df7eebabd795b98264003105b20ece"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 13:23:33 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 14:02:16 2016 +0000"
      },
      "message": "Refine statistics around the JIT.\n\n- Better namings.\n- Now also time the code cache collection time.\n- Random cleanups.\n\nbug:23128949\nbug:27445008\nbug:27442890\n\nChange-Id: I1dd52544bea678af868e7c47907f7a0fc9a146c3\n"
    },
    {
      "commit": "e283588e56df7eebabd795b98264003105b20ece",
      "tree": "56572fedc4552ec3ddbca891c2e3923f3a5befc6",
      "parents": [
        "e4cec517faf1c74d6895e0e5b512a6e2f83a0e06",
        "1e7da9bd04bdd2664a4196f1d7e285c010f8881f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "message": "Merge \"Do a TryLock when allocating a ProfilingInfo from the interpreter.\""
    },
    {
      "commit": "511e41b4ec2d378a5c434598ebd0b3d6136fff9d",
      "tree": "e1b9d4e67ae2226d6f6abfb452daf837b619d151",
      "parents": [
        "785eeae66ebeb68d05878add2777df855846a1e2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 17:09:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 17:45:47 2016 +0000"
      },
      "message": "Clear inline caches if a ProfilingInfo gets revived.\n\nThis avoids stalled class references.\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\nChange-Id: I9539215241708e26fef887e02201ce1feabc2d1a\n"
    },
    {
      "commit": "35122443e5f8606cc5a660ac32745a06aefb341b",
      "tree": "be44db33797ae729342c671fb95b7746e363e799",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 12:05:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 16:35:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\"\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit a96917a6983a5abbe973255a3846fda549fb1657.\n\nChange-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347\n"
    },
    {
      "commit": "a96917a6983a5abbe973255a3846fda549fb1657",
      "tree": "aa03a2a6d0f70faa20f3579458abde24f71abb04",
      "parents": [
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "message": "Revert \"Use the interpreter as a heartbeat for the JIT.\"\n\nHits a DCHECK testing libcore.\n    art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second-\u003eGetProfilingInfo(sizeof(void*)) !\u003d nullptr \n\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8.\n\nChange-Id: I6614a82e775ea71aa16f041313f67546db41eac8\n"
    },
    {
      "commit": "1e7da9bd04bdd2664a4196f1d7e285c010f8881f",
      "tree": "4d028a231ecbc684eebe1b4a5a3022ff46801769",
      "parents": [
        "09294dc760d77d64ea4168c1fd6d96fbfbe38018"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:11:40 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:13:17 2016 +0000"
      },
      "message": "Do a TryLock when allocating a ProfilingInfo from the interpreter.\n\nThis removes some thread contentions just for allocating ProfilingInfo.\n\nbug:23128949\n\nChange-Id: I9ff7d44c4b0ee272425cf4c6248d3065f67958f3\n"
    },
    {
      "commit": "7273a5d045d3ceb3ff011ad65765356b69b155e8",
      "tree": "addf5dcdc82e54605cfb9a622d284bf06b849327",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 15:35:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:03:32 2016 +0000"
      },
      "message": "Use the interpreter as a heartbeat for the JIT.\n\nWhen doing a partial code cache collection, update all entrypoints to\ninterpreter, so that the next full collection will remove code\nthat wasn\u0027t executed during that window.\n\nbug:27398183\nbug:23128949\nbug:26846185\n\nChange-Id: I4423f5c4810dac183dc8973078bf218818745e80\n"
    },
    {
      "commit": "fcdd72941810f03460a8efca0c6255439be80c35",
      "tree": "ce279d446fd5fa4e9dd1e42b53444e991b90ae2f",
      "parents": [
        "1470073c3a9ce17a0f7d3167345746d0b8d2202b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "message": "Dump the number of OSR compiled code.\n\nChange-Id: I20efc80e8556da8220dab92c3a7947f883d48cf8\n"
    },
    {
      "commit": "b0d220835f2ddc03510f17fcc4fb4c64b426a0f5",
      "tree": "ab5041089c04767d7957cd99fc7af43f5f47dc48",
      "parents": [
        "a6be605d83473c8c97245f823f3da2596cb63817"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 24 17:18:25 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 24 17:18:25 2016 +0000"
      },
      "message": "Forgot to initialize JIT memory use fields.\n\nChange-Id: I82ae97adffd8e633de048f044cdbdb953b2f9763\n"
    },
    {
      "commit": "8d37250f7b9a7839b11488f45a1842b025026f94",
      "tree": "d0394ebde45888dabd811852468afcf4b71c7bf1",
      "parents": [
        "a016ba5614054e27eada7f4815df7d4bac7ba8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 13:56:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 14:33:16 2016 +0000"
      },
      "message": "Introduce partial code cache collection.\n\nIt will collect code that is known unused (because it deoptimized),\nand osr code.\n\nbug:26846185\n\nChange-Id: Ic27dfeb944efb2ca464039007ba365c1e0d4a040\n"
    },
    {
      "commit": "08e992e41e5e234ecc6b38a4ab53d4876fd077b6",
      "tree": "beb81c51031934f8b228f934de23d7666e56d11f",
      "parents": [
        "4764d4e253aaea1595bbe1f5aaa8677ea9319b79",
        "65b83d875e4f9c021bc8380024455c9f1e658b14"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "message": "Merge \"Add a new kReservedCapacity to decide when to start GC code.\""
    },
    {
      "commit": "65b83d875e4f9c021bc8380024455c9f1e658b14",
      "tree": "28b8665ca9d0a2fcb3d6210412e58f5cb42af0b4",
      "parents": [
        "d9c05309e8fab26a6087abd5773859f112cdefe9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "message": "Add a new kReservedCapacity to decide when to start GC code.\n\nChange-Id: Ib9d0ad9bc86c66ac29975f7f907f79f842342500\n"
    },
    {
      "commit": "38ea9bd50debc63ceb77ec1e65036d8e2070ec7d",
      "tree": "5c4755e1d3bffbd1cb6ebf514710dc52c7363c0a",
      "parents": [
        "05d77c2673082b371129f8d854439688533cfff2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "message": "Track memory usage of code cache.\n\nNeeded once we start having a strategy based on how full the code\ncache is.\n\nChange-Id: I181ad05e1c216afabf106f91ac54bbf144d7406a\n"
    },
    {
      "commit": "39e4fab868a6052e0fab75e2668600b0e26daa42",
      "tree": "55aed4a74028cd734a46a2cb6be58f73293ccb0a",
      "parents": [
        "442643920a6c539e98aad76594e99b932b5631ba",
        "b88d59ef4fe611fe47e50a6a19785e03bbd5f93b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 12:09:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 12:09:53 2016 +0000"
      },
      "message": "Merge \"Be a bit smarter with JIT code triggering deoptimization.\""
    },
    {
      "commit": "b88d59ef4fe611fe47e50a6a19785e03bbd5f93b",
      "tree": "7db030759bf4eb20df3bfef823e75b5a39a313a7",
      "parents": [
        "b93c21e83c8fbf0191093c01a8951adb5be9010b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 11:31:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 11:32:49 2016 +0000"
      },
      "message": "Be a bit smarter with JIT code triggering deoptimization.\n\nDo not re-use an OSR method that triggered deoptimization.\nAlso add a stack overflow check before doing OSR.\n\nbug:27094810\nChange-Id: I6ff6a7fb9b3df9b7c0ff37e3610595efa70ad067\n"
    },
    {
      "commit": "a9b91313cee629d81d4784798d03419fc7fa9e11",
      "tree": "0ee693fc2bfd64d72ab0e510de1167cdd879495f",
      "parents": [
        "7eca244e79480f2ecea341598524a53273959c2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 09:49:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 09:51:16 2016 +0000"
      },
      "message": "We also need to delete osr entries when deleting ArtMethod.\n\nIn the unfortunate event an ArtMethod gets allocated at the\nsame location as an old (deleted) ArtMethod, the osr_code_map_\nlookup will succeed and return garbage. So we need to delete\nentries in the osr_code_map_ when an ArtMethod gets deleted.\n\nThis should finally fix:\ndalvik.system.DexClassLoaderTest#test_twoJar_diff_getResourceAsStream\n\nChange-Id: I7c8b775c3376a6cfcb907f09b783e393967ad82d\n"
    },
    {
      "commit": "d9994f069dfeaa32ba929ca78816b5b83e2a4134",
      "tree": "a826990f89d8f546921902933a4cc05b57196971",
      "parents": [
        "be89a6f1d9e41b154be3fe1da97cedb6964fbd35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 17:35:55 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 21:47:46 2016 +0000"
      },
      "message": "Re-enable OSR.\n\nFixes two bugs:\n- Dealing with proxy methods, which the compiler and code cache\n  does not handle.\n- Dealing with phi types, that may have been speculatively optimized\n  but do not hold once jumping to the compiled code.\n\nChange-Id: I7dcd9976ef7b12128fff95d2b7ed3e69cc42e90a\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "324302696c0a93511fef1310d309a54ebfb25a46",
      "tree": "3122d6ffaf46bf93364278f387e8c2ff6ff310a4",
      "parents": [
        "ba5ea7003f071f85936ee351aff46f64a56ee096"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 01 15:23:20 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 01 15:23:20 2016 +0000"
      },
      "message": "Ensure instruction cache is flushed in compiler tests with Clang.\n\nInvoke __builtin___clear_cache with Clang in\nart::CommonCompilerTest::MakeExecutable.  This fixes\n\"Illegal instruction\" failures in codegen_test on angler.\n\nFactor this logic in a function and use it in\nart::jit::JitCodeCache::CommitCodeInternal too.\n\nBug: 26786447\nChange-Id: I81fa056c8d7c6bf2168c9340deeab82231cb1084\n"
    },
    {
      "commit": "c26f1288aaf9141ac4b2150869f0c594d52dbf36",
      "tree": "bbff860250a2e4c0410cbbd3eca538a552058a9a",
      "parents": [
        "10cd5eec804167dd67b4fd1096108f0837e151c6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 11:41:25 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 12:08:07 2016 +0000"
      },
      "message": "Re-enable test 566-polymorphic-inlining.\n\n- Can not rely on debug builds.\n- Need to wait for the method to be compiled.\n\nChange-Id: I26ce89075075da8555fd59ade56bd04bec23f4ce\n"
    },
    {
      "commit": "9ff1de06d6ed1da36f7e976224a2d13e5e9882bf",
      "tree": "9121c384f3e0375fccfa4ca9f71c7d86baf38904",
      "parents": [
        "bee600ff66e3e233274faa1391890ff424a8244e",
        "a42363f79832a6e14f348514664dc6dc3edf9da2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 28 16:09:16 2016 +0000"
      },
      "message": "Merge \"Implement first kind of polymorphic inlining.\""
    },
    {
      "commit": "a42363f79832a6e14f348514664dc6dc3edf9da2",
      "tree": "bcd43acdf9903a704b566af00b5c740786284b7b",
      "parents": [
        "9cea9139033a4d04437ebc5542e9466fd67137fe"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 17 14:57:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 15:55:46 2016 +0000"
      },
      "message": "Implement first kind of polymorphic inlining.\n\nAdd HClassTableGet to fetch an ArtMethod from the vtable or imt,\nand compare it to the only method the profiling saw.\n\nChange-Id: I76afd3689178f10e3be048aa3ac9a97c6f63295d\n"
    },
    {
      "commit": "b4eddd21c364c51b6fc5c439cda6958ae255dcd5",
      "tree": "8a56d50c0c02328d6b7b6a9f596d25003e06b2e6",
      "parents": [
        "47c83eac0644a4b6092d956dd3a6824bccb7263a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 13 15:52:33 2016 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 26 13:45:11 2016 +0000"
      },
      "message": "Add profile support for apps with shared runtime.\n\n- extend ProfileSaver to track different dex locations to different\nprofile files.\n- allow repeated calls to Runtime::RegisterAppInfo() which will\nregister a new pair \u003cprofile_file, locations_to_track\u003e with the profile\nsaver.\n\nBug: 26080105\nChange-Id: I58c4587d5f462c557411ad7126a00c29cd7db3a6\n"
    },
    {
      "commit": "0a52223d9173315aeaca05217b8c792b3088ea7d",
      "tree": "a22a7b670952e5272919d6ca91eedf8721d93e3f",
      "parents": [
        "a65ff5e0576ace8ffeb1a6dc8784a61cd2498fba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 09:34:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:27:08 2016 +0000"
      },
      "message": "Keep track of number of JIT compilations.\n\nChange-Id: Ic436bc3f939f6236190ddd840955cb72f76e8f85\n"
    },
    {
      "commit": "3fdb3fec5c36127d8568b2f89698906ba4b68576",
      "tree": "fa4aad8ca14520e2be9f803c294f4a1abb7546b1",
      "parents": [
        "7b4199a5fa9f151fbf3af2a34f26d04215a1016c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 14 10:24:28 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 14 14:12:01 2016 -0800"
      },
      "message": "Don\u0027t allow thread suspension in ProfilingInfo::Create\n\nAddSamples calls ProfilingInfo::Create which would occasionally\ntransition to suspended and wait for code cache GC to complete.\nThis CL removes the thread state change and\nWaitForPotentialCollectionToComplete which caused thread suspension.\n\nThe thread suspension caused occasional stale object references in\nInvokeVirtualOrInterface since moving GC could occur.\nIf this_object became stale, we would put it\u0027s stale class into the\nprofile info, resulting in a GC crash.\n\nBug: 26086970\nChange-Id: I5a86561098d72b7be80e8a3bcf3d8401403a0b00\n"
    },
    {
      "commit": "c3fec4c4ca01055d4d5920f363620b5726ebbbef",
      "tree": "4e983e064d88458dc9d535343d610e63346e58d7",
      "parents": [
        "8422edd7af342a955f17639ab827cf062ef8965e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 16:16:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 16:16:35 2016 +0000"
      },
      "message": "Fix braino in parameters passed.\n\nChange-Id: I4683586184617bb8ac4f377b873263a339d1d960\n"
    },
    {
      "commit": "26751735568224bddd07eeb9218560833c3f4ee1",
      "tree": "dfaab40e4ecebbbbe508b3af77d8f4161f901d01",
      "parents": [
        "8e6b237031eef38e79c844904c3253bb0aa4c132",
        "a25dce9b452ba17ef7cef768926c884177a3025e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 14 12:22:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 14 12:22:11 2016 +0000"
      },
      "message": "Merge \"Support --perf with jitted code.\""
    },
    {
      "commit": "a25dce9b452ba17ef7cef768926c884177a3025e",
      "tree": "0da78b818c256f636badf2f1a97e8f1a8b661be9",
      "parents": [
        "fbd9dfcf4ffc32f0bda831aa898c7ea5dbf8ed9a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 16:41:10 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:40:55 2016 +0000"
      },
      "message": "Support --perf with jitted code.\n\nChange-Id: I76f29d815234e9506efc59d4865780e52b2381a1\n"
    },
    {
      "commit": "5cc349f3dd578e974f78314c50b6a0267c23e591",
      "tree": "7d8bf706fd6aba6f298bfe212f75db0f66e94b81",
      "parents": [
        "a38e418fb2d9b817309c54b54ca85039907c2bbb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 18 15:04:48 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 13 15:39:12 2016 +0000"
      },
      "message": "Report DWARF debug information for JITed code.\n\nChange-Id: Ia5b2133c54386932c76c22774cf3d2ae61e0925f\n"
    },
    {
      "commit": "07f3564d73550495a937bc667d03721106315400",
      "tree": "73448ab6d605f25615d0b3d7c1047e2bf6a0f764",
      "parents": [
        "91f43b4f17cded6f0d38276be7c4de7f6616e4a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 04 16:06:51 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 04 16:27:17 2016 +0000"
      },
      "message": "Add a fence to ensure other threads see the correct data.\n\nOther threads may see the ProfilingInfo pointer in the ArtMethod,\nbut the data they have for it is bogus due to a prior load in their\ncache.\n\nbug:26221227\nChange-Id: I1fa8f088a3144df39d07a986ed57d6fc20edba18\n"
    },
    {
      "commit": "4d77b6a511659f26fdc711e23825ffa6e7feed7a",
      "tree": "7ac013467a20fcdf64cb6cf4c79a8ff67dc7690a",
      "parents": [
        "66f55237679db90cb0a0a265043a787932b466f8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 01 18:38:09 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 24 12:02:12 2015 +0200"
      },
      "message": "Save profile information in a separate thread.\n\nPreviously we would save the profiling information only when the app\nwas sent to background. This missed on an important number of updates\non the jit code cache and it didn\u0027t work for background processes.\n\nBug: 26080105\n\nChange-Id: I84075629870e69b3ed372f00f4806af1e9391e0f\n"
    },
    {
      "commit": "66f55237679db90cb0a0a265043a787932b466f8",
      "tree": "50784132be869b47562e8ce41ea318d79c6cf6ab",
      "parents": [
        "fb9f4ad455eced3a07bef1d4772ab1fe34ec133b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 08 15:09:10 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 17 12:38:27 2015 +0200"
      },
      "message": "Pass down to the runtime the application code paths.\n\nWhen registering the app with the runtime the framework needs to pass\ndown the list of application code paths. This will be used by JIT to\nknow what profile info to persist.\n\nThis fixes the reliance on OatFileManager::GetPrimaryOatFile which may\nproduce inconsistent results based on external factors (i.e. class path\norder or failing to compile the first dex file from the class path)\n\nBug: 26080105\nChange-Id: Iadcebd2684fcd48569e8f76ef21bd4d117fedc05\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "31f2c155975c5794d481df03eb0947cb48d2c6b5",
      "tree": "b0ed3a2235fc115f73060ab4b51bda31e3ada596",
      "parents": [
        "22c20ef131812a6e7ff01f8c57ffe1eb0942fc39"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 23 17:56:15 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 24 19:31:16 2015 +0000"
      },
      "message": "Save jit profiling info to file.\n\nCurrently saves only the hot method references and omits the inline\ncache.\n\nChange-Id: I79e91f855f6b52dc19a9a86662604f2eee16613c\n"
    },
    {
      "commit": "0a3be1620a3560253cfa789cb9819013293c5654",
      "tree": "7bdbc40b620706a83a0904ee1544e4be1c61f695",
      "parents": [
        "991842a5273d20695dd5f35eb9a9e28c386c5b4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 18 11:15:22 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 19 11:30:39 2015 +0000"
      },
      "message": "Increase code cache after 1 full collection.\n\nAlso add a max capacity option.\n\nChange-Id: Icd442b72e9be0c6b091b588b4c4473c69b7cde10\n"
    },
    {
      "commit": "8ccbd279b91c96aa0f7bb649e399b12b31b8bda1",
      "tree": "acb284087ce7732f6603d388bb785202a3cdcbba",
      "parents": [
        "dc184177452ed438718befccd9d984cc93de51cc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 09 09:15:15 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 09 09:15:15 2015 +0000"
      },
      "message": "Remove unused variable.\n\nChange-Id: I29d80004eba897b72304ec83fe89ed1071a24024\n"
    },
    {
      "commit": "a5891e81a2fb833307cf7c7e7267070dc0223dc8",
      "tree": "a7acb2a0f2836fee2729db2b795d15bb3f586863",
      "parents": [
        "2fa684206b0a8bd203d07e1edf74a839b498f74f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 14:18:27 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 16:05:42 2015 +0000"
      },
      "message": "Fix interaction between JIT and instrumentation.\n\n- The JIT needs to go through the instrumentation to update\n  entry points.\n- The instrumention needs to know if a method got JITted\n  to know if needs to deoptimize.\n\nbug:25438583\n\nChange-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1\n"
    },
    {
      "commit": "d28b969c273ab777ca9b147b87fcef671b4f695f",
      "tree": "ca66ecfd809afdcd31443bbe50bf38a836302cc5",
      "parents": [
        "6bf6e438cd4746effce0b26d504c54100191c988"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 14:36:55 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 10:37:48 2015 +0000"
      },
      "message": "Code cleanup to avoid CompilerDriver abstractions in JIT.\n\nAvoids allocating a CompiledMethod.\n\nChange-Id: I35b4aa0d7c74daba68e827a01e71c300fce3b3bf\n"
    },
    {
      "commit": "5a23d2ea6e0d89112ff11ec765e676c03818b7c2",
      "tree": "9203582b6c0995da6642c7001332ee59eefab880",
      "parents": [
        "df6dc42ba2ca0fa43ba970ba2e60977422105f7e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 03 18:58:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 09:27:28 2015 +0000"
      },
      "message": "Fix TODO on instrumentation and add some more DCHECKs.\n\nbug:25343683\nbug:25438583\n\nChange-Id: I232deb1b6761466b514c687ce304f61928755cdc\n"
    },
    {
      "commit": "62623401fe994ff2f2719faf3cdb3c23b92ccd96",
      "tree": "7ecf11ececadb2b541f06620af2db01b9a90f2f0",
      "parents": [
        "43c6d31c43c05d97511bb9658964fd3d2f32b915"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 19:15:05 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 03 10:26:03 2015 +0000"
      },
      "message": "Fix deadlock with the JIT code cache.\n\nAlso remove hack done for ThreadStress.\n\nChange-Id: Ie25c3bca08d9f2b8919706fa3fc26c5ab213f4a3\n"
    },
    {
      "commit": "10d2508b105427ef1bcaf0c222873bae7acc66d3",
      "tree": "8aa018dd07a1d84daf9f44ea7bb1c02442c44097",
      "parents": [
        "5f2e628b280dfc5f8385e489d44cc0960fcea484"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 18:36:09 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 28 19:24:54 2015 -0700"
      },
      "message": "Change Checkpoint API to return total number of checkpoints\n\nFixes a race condition with SetStateUnsafe that caused some\nwarnings in the Barrier::~Barrier.\n\nThe race was:\nRunCheckpoint sees suspended thread, runs the checkpoint. Inside the\ncheckpoint, the thread state had changed to runnable by\nSetStateUnsafe. This occasionally caused more Barrier::Pass than\nexpected.\n\nThe fix is to return the total number of checkpoints instead of just\nthe runnable ones.\n\nBug: 24191051\nChange-Id: If15a933ed4c8efa66a5f27cd5feaa2e5957ae804\n"
    },
    {
      "commit": "4e915fbc2be5fc43c782389bbbb7306cd76a523a",
      "tree": "c85e0ab3b80393a46dbc98e217678337567e26ce",
      "parents": [
        "28b48026f0686f93b31b9cad47671c18837acc56"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 17:39:47 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 17:51:53 2015 +0000"
      },
      "message": "Tune heuristics a bit.\n\nFirst version. Seems to be more in line with what we\u0027re seeing.\n\nChange-Id: I5117352c13cb2e95d16f0c9b05b1faf37c05d710\n"
    },
    {
      "commit": "26705e2b1245b65989a0341b24c5dbf2658d4bb6",
      "tree": "11f73cfb6f1f484f2f27227d4d3ef0e85ab22ad7",
      "parents": [
        "903ef50ed03444b28899088f977d5c2d0ff67d49"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 12:50:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 15:03:13 2015 +0000"
      },
      "message": "Add support for collection ProfilingInfo objects.\n\nChange-Id: I8bb6069530253a7372acdf2b5aee71e1de644822\n"
    },
    {
      "commit": "1dad3f68b7f5a4a4cb2b281413357adc2309a8fd",
      "tree": "df482d1f65e55a9a228c925e96532942fb25eb47",
      "parents": [
        "fe97bfeabcf99d470e7d974a68ec6b6641648396"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 23 14:59:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 26 19:10:55 2015 +0000"
      },
      "message": "Support garbage collection of JITted code.\n\nChange-Id: I9afc544460ae4fb31149644b6196ac7f5182c784\n"
    },
    {
      "commit": "1e7de6cfcabc87ebd36bf6f2c9ed466152d21d4e",
      "tree": "24626b6d76bfd3591501932b07b6462c6a2b0733",
      "parents": [
        "9926d886573d13ab3f97befae4c526b936de8a53"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 12:07:31 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 12:07:31 2015 +0100"
      },
      "message": "Remove the magic 32 constant and ensure alignment.\n\nChange-Id: I383315bf3cd5f0b8634e2982da55d5d864009a91\n"
    },
    {
      "commit": "0c3c2668ef44fdbd18d97f9134a85d1a7d561aa4",
      "tree": "92e8e49ed1b4d5442f20721858c476ed5769d0ea",
      "parents": [
        "7edef7441d28db1403fbc5641b56a26ecf355879"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 13:53:04 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 10:59:27 2015 +0100"
      },
      "message": "Use DlMallocSpace for the JIT code cache.\n\n- Also tidy up some code in the JIT compiler.\n- And mprotect code space to be writable only when allocating.\n\nChange-Id: I46ea5c029aec489f2af63452de31db3736aebc20\n"
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "a4885cbaafd35fe9c60eb6cd95e41e2c86f54f66",
      "tree": "6afaa296fc2f6c4c7c1ce35a3d36ef911096764c",
      "parents": [
        "54a8cc689dc23f346c9aac0d5fc6f47e61df8cad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 09 15:38:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 09 15:42:44 2015 -0700"
      },
      "message": "Add way to print JIT related info at shutdown\n\nAdded a runtime option called -XX:DumpJITInfoOnShutdown with prints\nvarious interesting JIT statistics during the shutdown of the runtime\nif enabled.\n\nExample of running EvaluateAndApplyChanges with the option:\nI art     : Code cache size\u003d427KB data cache size\u003d84KB num methods\u003d1598\nI art     : Start Dumping histograms for 1598 iterations for JIT timings\nI art     : Compiling: Sum: 727.850ms 99% C.I. 135us-4402us Avg: 455.475us Max: 15567us\nI art     : Verifying: Sum: 191.074ms 99% C.I. 19us-1450.500us Avg: 119.570us Max: 5142us\nI art     : TrimMaps:  Sum: 62.053ms 99% C.I. 13us-199.374us Avg: 38.831us Max: 10058us\nI art     : MakeExecutable:  Sum: 11.153ms 99% C.I. 4us-47us Avg: 6.979us Max: 47us\nI art     : Initializing:  Sum: 7.991ms 99% C.I. 1us-49.781us Avg: 5us Max: 4852us\nI art     : Done Dumping histograms\n\nBug: 17950037\nChange-Id: I23538b24f947e5f6934f55579b8baa9d806eb3d5\n"
    },
    {
      "commit": "5c42c29b89286e5efa4a4613132b09051ce5945b",
      "tree": "5db25a4f62c5583f2f6fc42b9a2ff47362eeed5c",
      "parents": [
        "242026e246a8b9efe098a0cce008fd525e011e5b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 25 12:02:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 02 18:07:03 2015 +0000"
      },
      "message": "Add support for .bss section in oat files.\n\nChange-Id: I779b80b8139d9afdc28373f8c68edff5df7726ce\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    }
  ]
}
