)]}'
{
  "log": [
    {
      "commit": "336b0b1baaf2b3eccb26ccf1b7d502c90c3f33fd",
      "tree": "c7f5bd6059d2b5cd96207fb36ce0027d0867f10a",
      "parents": [
        "ac854d27aeafb3dca04dfc5c716d0436f1d5ffc1",
        "3552d96086c75523a76f399a13dd85d65eaa2d19"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 23:36:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 22 23:36:15 2015 +0000"
      },
      "message": "Merge \"base: Fix an infinite loop in HashSet::Insert\""
    },
    {
      "commit": "3552d96086c75523a76f399a13dd85d65eaa2d19",
      "tree": "6c3223813af09bdf81de7b7291b0a47153928052",
      "parents": [
        "ec3a4e7cdc4f268b40d923227c125429f4ee4884"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 15:57:38 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 16:26:58 2015 -0700"
      },
      "message": "base: Fix an infinite loop in HashSet::Insert\n\nAlso adds a test for HashSet::ShrinkToMaximumLoad\n\n(This bug was only reachable when using ShrinkToMaximumLoad, which is not\ncalled from anywhere other than the new test)\n\nChange-Id: I5276b4b3f4ecf6090bb545ddd1752758b11609dd\n"
    },
    {
      "commit": "310008008c90fea246efd00cb99ee7ded97c5209",
      "tree": "93ef04470ec9c883e003b0a8043b370b8f05718f",
      "parents": [
        "f7012291ed9c984e2b50d83d7a2d5758cd64c99a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jun 14 14:14:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 22 15:45:13 2015 -0700"
      },
      "message": "New experimental GC stress mode\n\nTries to do a GC for every unique call stack (up to 16 frames).\nThe goal is to catch moving GC bugs and lock violations without being\nrediculously slow. Some tests fail on 64 bits, 32 bit host doesn\u0027t\nwork. N5 is booting.\n\nAdded runtime -Xgc options: gcstress and nogcstress.\n\nBug: 21664466\n\nChange-Id: Icb8e420f2048e8ee83bcca7937563166a2638f5c\n"
    },
    {
      "commit": "42361f2e8b3601813dc40d12e14c679df99a864b",
      "tree": "f5a89acb10d76edc7b7d288e934b60f3c1fc6b9a",
      "parents": [
        "995f6e23418a1b4058167e64bbe50fd9e5dc7f02",
        "cbc5064ff05179b97b416f00ca579c55e38cd7d9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 12 10:40:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 12 10:40:58 2015 +0000"
      },
      "message": "Merge \"JDWP: asynchronous invoke command handling\""
    },
    {
      "commit": "d39645e22b8db1767cf64dc1200a9e4b2f939ed2",
      "tree": "fd6488a428600f222c5a411e91ed9f1f3a280b05",
      "parents": [
        "15306dcd03208f062737239753ab1eccfe91403f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 09 17:50:29 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 11 14:56:08 2015 -0700"
      },
      "message": "Move image intern table into image\n\nPreviously we recreated this intern table during runtime startup.\nThis added 50-100ms of boot time.\n\nFixed bug where we didn\u0027t copy over hashcodes into the image.\n\nDeleted some stale code.\n\n(cherry picked from commit fac3a390a247fe33d4873773d742aad4cc100118)\n\nBug: 20727525\nBug: 19569780\nChange-Id: I08959e9aa2a73cedb52f393033e2ffea3a26e76b\n"
    },
    {
      "commit": "cbc5064ff05179b97b416f00ca579c55e38cd7d9",
      "tree": "9ce221e6644ff770b8484ba8cb5581e538b88eef",
      "parents": [
        "864a2d955aa85ab989c86d7f1eeacbe0b11f8b0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 17:33:12 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 10 09:35:08 2015 +0200"
      },
      "message": "JDWP: asynchronous invoke command handling\n\nThe JDWP thread used to wait for the result of a method invocation\nrunning in an event thread. But doing that prevents the JDWP thread\nfrom processing incoming commands from the debugger if the event\nthread gets suspended by a debug event occurring in another thread.\nIn Android Studio (or another IDE), this leads to the debugger being\nblocked (with the famous message \"Waiting until last debugger command\ncompletes\" of Android Studio / IntelliJ) because it is actually\nwaiting for the reply of its latest command while the JDWP thread\ncannot process it.\n\nThis CL changes the way invoke commands (ClassType.InvokeCommand,\nClassType.NewInstance and ObjectReference.InvokeCommand) are handled\nin the ART runtime.\nThe JDWP thread no longer waits for the event thread to complete the\nmethod invocation. It now simply waits for the next JDWP command to\nprocess. This means it does not send any reply for invoke commands,\nexcept if the information given by the debugger is wrong. In this\ncase, it still sends a reply with the appropriate error code.\nThe event thread is now responsible for sending the reply (containing\nthe result and the exception object of the invoked method) before\ngoing back to the suspended state.\n\nIn other words, we add special handling for invoke commands so they\nare handled asynchronously while other commands remained handled\nsynchronously. In the future, we may want to handle all commands\nasynchronously (using a queue of reply/event for instance) to remove\nthe special handling code this CL is adding.\n\nNow the JDWP thread can process commands while a thread is invoking\na method, it is possible for the debugger to detach (by sending a\nVirtualMachine.Dispose command) before the invocation completes. In\nthat situation, we must not suspend threads again (including the\nevent thread that executed the method) because they would all remain\nsuspended forever.\n\nAlso minor cleanup of the use of JDWP constants and update comments.\n\nBug: 21515842\nBug: 18899981\nChange-Id: I15e00fb068340f3d69dc9225d8d2065246e68c58\n"
    },
    {
      "commit": "b5de3bb65556950d5cce1dea3ea6d80adcc5051d",
      "tree": "092ccd0bde09ae445b10339c149eb403e1e82901",
      "parents": [
        "38b66b6fed1adcc1da4b931a32f78c5290a97c1e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 05 13:21:05 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 05 16:21:47 2015 -0700"
      },
      "message": "Use runFinalizationWithTimeout for native allocations\n\nPrevents deadlocks by not waiting longer than 250ms for finalizers\nto complete.\n\n(cherry picked from commit 3b532d744034b43ed329a3198f15846d80fec3f0)\n\nBug: 21544853\nChange-Id: I57b2f7ae8b74185922eb3c15ba0ab71a4d2348aa\n"
    },
    {
      "commit": "f10a25f961eb8029c01c84fe8eabd405055cca37",
      "tree": "a0fd9dfa459689fa2929a89310ebcd3a45607e5f",
      "parents": [
        "1682e1aa3463c2e6a8e5f4a9d3f4d13a0e31e3da"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 14:29:52 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 14:36:09 2015 +0100"
      },
      "message": "ART: Fast copy stack mask\n\nStackMap::SetStackMask will currently copy a BitVector into a Memory-\nRegion bit by bit. This patch adds a new function for copying the data\nwith memcpy.\n\nThis is resubmission of CL I28d45a590b35a4a854cca2f57db864cf8a081487\nbut with a fix for a broken test which it revealed.\n\nChange-Id: Ib65aa614d3ab7b5c99c6719fdc8e436466a4213d\n"
    },
    {
      "commit": "d84b4384bc14a6bc256ad85955eca0582e6b2364",
      "tree": "c6b4bb107841320abbaa1402484df67c3f4a0a3b",
      "parents": [
        "6b10c9b2c0e62193ab9df4d63aedea1d0798e742"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:42:40 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:42:40 2015 +0000"
      },
      "message": "Revert \"ART: Fast copy stack mask\"\n\nDCHECK failure, need to investigate\n\nThis reverts commit 6b10c9b2c0e62193ab9df4d63aedea1d0798e742.\n\nChange-Id: Ie1d1cc6fb71367bc5ac5d6a260af8de316a758dd\n"
    },
    {
      "commit": "6b10c9b2c0e62193ab9df4d63aedea1d0798e742",
      "tree": "9930b839777184008b38e5504f1274c4cbfd87e1",
      "parents": [
        "f86808b55b550962c627b50511b98f4de8cd0e60"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:33:09 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jun 02 12:30:46 2015 +0100"
      },
      "message": "ART: Fast copy stack mask\n\nStackMap::SetStackMask will currently copy a BitVector into a Memory-\nRegion bit by bit. This patch adds a new function for copying the data\nwith memcpy.\n\nChange-Id: I28d45a590b35a4a854cca2f57db864cf8a081487\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": "eabafcefca8ead8309dccc1c5510e6e0845e471d",
      "tree": "f673a2369ebb5a19a0bf20d4f0fc79724406b39d",
      "parents": [
        "2dde2a17bfeca795d2ab17795952770487d848b0",
        "72133adde48a7d48afc6becb505a26431cc28e74"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue May 26 21:49:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 21:49:26 2015 +0000"
      },
      "message": "Merge \"Fix alloc-dealloc-mismatch (new[] vs delete) in tests.\""
    },
    {
      "commit": "72133adde48a7d48afc6becb505a26431cc28e74",
      "tree": "76465dcb8b4e456a788186fdd6ee3627e8ce40e8",
      "parents": [
        "847d902cc274d0c317fd94b5b5a058cba94828c6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue May 26 14:44:23 2015 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue May 26 14:44:23 2015 -0700"
      },
      "message": "Fix alloc-dealloc-mismatch (new[] vs delete) in tests.\n\nChange-Id: I680eaf819f7d7d3a4149c833b6739cba4b7e21be\n"
    },
    {
      "commit": "ce39200492e2715a94d96fbd39fa42b46115c255",
      "tree": "a295d2f9265092513d728122cd201943288a8820",
      "parents": [
        "dc31313c4577bb4c00d90774159c84e738ed348d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 19:57:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 20:12:19 2015 +0100"
      },
      "message": "Fix mac build: include \u003csys/time.h\u003e in time_utils.cc .\n\nRequired for gettimeofday(). Not needed in utils.cc .\n\nBug: 13925192\nChange-Id: If06840d8a47c9193ccc7bd4cee5c16fcf76d9729\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "be910330a25117e0c739330747f7f6806c00acaf",
      "tree": "5a638b5ba78c938e273a99eba432dde9a12ebba8",
      "parents": [
        "9a85fe78f45768fbb4d3e5e138716d107d399b6c",
        "f3d1f94cf730948f8978befa7cf60ab28ff0f281"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 19 05:50:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 19 05:50:53 2015 +0000"
      },
      "message": "Merge \"ART: Add verbose:deopt logging\""
    },
    {
      "commit": "f3d1f94cf730948f8978befa7cf60ab28ff0f281",
      "tree": "f72b66944fa37839caca105446240e00294744b6",
      "parents": [
        "ef4366a159ecdd357c98e577583bbe224d065128"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 18 21:41:13 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 18 21:44:33 2015 -0700"
      },
      "message": "ART: Add verbose:deopt logging\n\nAdd verbose logging for deoptimization. Can be enabled with the\nregular command line option \"-verbose:_\".\n\nChange-Id: Iab63e02f3a4e0a213fc61efed1118fe829feeaa4\n"
    },
    {
      "commit": "6a887d6a1d1ca089b48663a5ae11f973b98785a9",
      "tree": "fc04f689092b809dcb5aa1b34e0cb46f73580b03",
      "parents": [
        "96ca18cd105e4c4cddce53a40c0e41886155bf01"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 08:25:58 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 08:25:58 2015 -0700"
      },
      "message": "Stop wrapping close(2) with TEMP_FAILURE_RETRY in art.\n\nNote that all the TEMP_FAILURE_RETRY([A-Z] calls in this file are\nwrong. The member functions return -errno, so only an EPERM failure\nwill return -1 (but errno should be EPERM, so you won\u0027t loop).\n\nBug: http://b/20501816\nChange-Id: Ibde6a2c7bf92469d008d6d510f9391669ae37a84\n"
    },
    {
      "commit": "baaf28796dda318bd9c88bd0c1140a7ece3149d6",
      "tree": "8cd8fc2d6ee0d9c3b8261724d66c4bebf1b0ea4e",
      "parents": [
        "7bd8f9e0261f141fc64cf5a37e1e6f220eb4df8a",
        "06f08e405777bd3b710fd1d7cf73b06f5347db36"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 13 16:27:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 13 16:27:08 2015 +0000"
      },
      "message": "Merge \"Silence unused result warnings in art.\""
    },
    {
      "commit": "06f08e405777bd3b710fd1d7cf73b06f5347db36",
      "tree": "7aa97dbe837127c3676cfc3e0390e373bf20bca2",
      "parents": [
        "23d358b621dbe11d6da918ab310ed3f1a5fc0558"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 12 21:25:36 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 12 21:25:36 2015 -0700"
      },
      "message": "Silence unused result warnings in art.\n\nThis lets us turn on _FORTIFY_SOURCE\u003d2 for the host.\n\nThe logging change is basically a trick (since we\u0027re still ignoring the\nresult unless it\u0027s an EINTR failure).\n\nThe profiler change is in a function whose error checking is a mess; the\nfd is leaked, and it\u0027s not clear what\u0027s supposed to happen about the flock\non failure. I didn\u0027t exit if the ftruncate fails because the rest of the\nfunction just blunders on, and error handling here needs a deeper rethink.\n\nBug: http://b/20558757\nChange-Id: I7a2873fce08e37f4af826a04b4701d7ac6a8e3fa\n"
    },
    {
      "commit": "83d46ef1eaa8fdecadfdb9564d80e50b42646c37",
      "tree": "c009b65e982a72c78cbfe6b203c3e942275c8531",
      "parents": [
        "f3962119654ac1f02e7ec891e1526ca8045542aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 18:27:20 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 18:37:17 2015 +0100"
      },
      "message": "Quick: Fix DCE to mark wide register overlaps correctly.\n\nPreviously we missed some cases of overlap with registers\ncoming from previous blocks.\n\nBug: 20640451\nChange-Id: I4b32a7aaea2dea1b0b9560ae3459a4d903683f20\n"
    },
    {
      "commit": "e34a42cd37b2b3b6b21280df14fa6f40917b5d6e",
      "tree": "b9a9362bdd3db787caffbe9ab72b3b3ad810bff9",
      "parents": [
        "3f4fa70a251443b7e35ee0464120e53daf4ae9c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 14:44:29 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 17:07:07 2015 -0700"
      },
      "message": "ART: Fix Trace types, check minimum buf size\n\nAlso make streaming mode adhere to the given buffer (and fix the\ncase where the buffer is too small for a packet). This is important\nto not lose too much tracing information when the runtime is destroyed\nwith an unflushed buffer.\n\nChange-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "7d275379bf490a87805852129e3fe2e8afe961e7",
      "tree": "d0bbe856872c92773931c62e6881b0305a916236",
      "parents": [
        "223f2f5b2a20ca8246da1523494900a2424d5956"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 16:36:35 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 21 17:17:11 2015 +0100"
      },
      "message": "ART: Update loop info of all nested loops when inlining\n\nWhen inlining into a nested loop, the inliner would only add the new\nblocks into the innermost loop info object. This patch fixes that and\nmodifies SsaChecker to verify the property.\n\nChange-Id: I21d343a6f7d972f5b7420701f816c65ab3f20566\n"
    },
    {
      "commit": "ad4450e5c3ffaa9566216cc6fafbf5c11186c467",
      "tree": "eecf36e8e9d8112e765ad8840eb2d27f8d0415ab",
      "parents": [
        "f8bdd9f3a002970e4b8fdcf6fe6730116f1626c3"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Apr 17 18:48:56 2015 +0800"
      },
      "committer": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Apr 17 18:54:08 2015 +0800"
      },
      "message": "Opt compiler: Implement parallel move resolver without using swap.\n\nThe algorithm of ParallelMoveResolverNoSwap() is almost the same with\nParallelMoveResolverWithSwap(), except the way we resolve the circular\ndependency. NoSwap() uses additional scratch register to resolve the\ncircular dependency. For example, (0-\u003e1) (1-\u003e2) (2-\u003e0) will be performed\nas (2-\u003escratch) (1-\u003e2) (0-\u003e1) (scratch-\u003e0).\n\nOn architectures without swap register support, NoSwap() can reduce the\nnumber of moves from 3x(N-1) to (N+1) when there is circular dependency\nwith N moves.\n\nAnd also, NoSwap() algorithm does not depend on architecture register\nlayout information, which means it can support register pairs on arm32\nand X/W, D/S registers on arm64 without additional modification.\n\nChange-Id: Idf56bd5469bb78c0e339e43ab16387428a082318\n"
    },
    {
      "commit": "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547",
      "tree": "77a722cae515f6b3c7ea54f5b0fd2435682ae55b",
      "parents": [
        "67592a44cd5600b3c007b9215e3e5296a61118e8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 02 10:18:12 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Apr 13 15:37:40 2015 -0700"
      },
      "message": "getRuntimeStat() support (ART).\n\nExport some runtime stats (currently GC stats) via\nVMDebug.getRuntimeStat().\n\nAdded several new GC stats such as blocking GC counts and GC count\nhistograms.\n\nBug: 19825248\nChange-Id: I8ece9ed241dc3982dfd983d7159090ba82940dce\n"
    },
    {
      "commit": "3481ba2c4e4f3aa80d8c6d50a9f85dacb56b508b",
      "tree": "77551c0a6d060e5a3723ad35d2ab101038f9328a",
      "parents": [
        "095d209342420563becfec6676b46a6c6b839107"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 13 12:22:36 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 13 16:30:13 2015 +0100"
      },
      "message": "ART: Clean up includes.\n\nReduce dependencies to improve incremental build times.\nBreak up circular dependency involving class_linker-inl.h.\n\nChange-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "a2d40be3e64b339c6c39d59655507c597251e506",
      "tree": "011137a2bb46a6bc56e9b47c0e5c9d7978aa8ace",
      "parents": [
        "9d0ab6f0a2f08c3fa9a59e0b8742cf366d7d0feb",
        "4e5b20863898006ec6c9d120cda167d38dda6e60"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 08 16:42:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 08 16:42:39 2015 +0000"
      },
      "message": "Merge \"Fix JDWP race at runtime shutdown\""
    },
    {
      "commit": "65b798ea10dd716c1bb3dda029f9bf255435af72",
      "tree": "774e9901b6917989a63f07f927c3b4d8b921a013",
      "parents": [
        "c411c6cc327d3f2b3b4d1987b07dd442205d9454"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 09:35:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:05:07 2015 -0700"
      },
      "message": "ART: Enable more Clang warnings\n\nChange-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c\n"
    },
    {
      "commit": "758a801b66c134361a7b43f7e83f85d1fb800c4c",
      "tree": "35b060c780fcf6e7c268fec47df40c74b5ab8b05",
      "parents": [
        "e8aae00fa400efbb8f998a5dbf68eb42810889c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 21:28:42 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:03:17 2015 -0700"
      },
      "message": "ART: Enable Clang\u0027s -Wdeprecated\n\nReplace throw() with noexcept.\n\nAdd default copy constructors and copy assignment constructors for\ncases with destructors, as the implicit definition is deprecated.\n\nChange-Id: Ice306a3f510b072b00bec4d4360f7c8055135c9d\n"
    },
    {
      "commit": "4e5b20863898006ec6c9d120cda167d38dda6e60",
      "tree": "8cb7e98c87a4e48e6237fd2c172ae39f5b7f5a76",
      "parents": [
        "04914da1385564fca1990863d9a2690af10e1946"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 24 19:03:40 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 01 12:22:52 2015 +0200"
      },
      "message": "Fix JDWP race at runtime shutdown\n\nWhen the runtime shuts down, it closes the JDWP connection with the\ndebugger. However, if a JDWP command is still being processed by the\nJDWP handler thread when we close the connection, we won\u0027t be able to\nsend its reply.\n\nBug: 19628620\nChange-Id: I20301325a347d66f3b9ef95ebe8f156abafb1f76\n"
    },
    {
      "commit": "a552e1c0584b8ab63150510286478c68cdbce13f",
      "tree": "c9c66b3d6bf001491ddd6a59d16d345d5656db8f",
      "parents": [
        "ba6233527e455368bba02efe963dd1e24d971727"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 26 15:01:03 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 31 12:47:33 2015 +0100"
      },
      "message": "Use unique location catalogs to encode Dex register maps.\n\n- For each CodeInfo object (i.e. for each method), compute a\n  variable index size location catalog  of unique Dex\n  register locations.  In Dex register maps, instead of\n  storing the actual location of a (live) Dex register,\n  store the index of the location catalog entry containing\n  that Dex register location.\n- Adjust art::StackMapStream,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Add LoadBits and StoreBits methods to art::MemoryRegion\n  to load and store a block of adjacent bits in a memory\n  region.\n- Update compiler/optimizing/stack_map_test.cc.\n- Remove the default value for parameter EmptyFn of\n  art::HashMap.  This default value did not seem to make\n  sense, as it would create an \"empty function\" for type Key\n  by default, whereas art::HashMap expects an \"empty\n  function\" for type std::pair\u003cKey, Value\u003e.\n\nChange-Id: Id9e49d7756c253ce41c36630cd832208d06c2e28\n"
    },
    {
      "commit": "8d5b8b295930aaa43255c4f0b74ece3ee8b43a47",
      "tree": "c26fc49bbc74615e7f0b9657aaf3757a8282d7a9",
      "parents": [
        "c8924c6ea9e83ba3832dd5551df38ab06f4aaca9"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 24 10:51:52 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Mar 26 14:10:03 2015 +0000"
      },
      "message": "ART: Force constants into the entry block\n\nOptimizations such as GVN and BCE make the assumption that all\nconstants are located in the entry block of the CFG, but not all\npasses adhere to this rule.\n\nThis patch makes constructors of constants private and only accessible\nto friend classes - HGraph for int/long constants and SsaBuilder for\nfloat/double - which ensure that they are placed correctly and not\nduplicated.\n\nNote that the ArenaAllocatorAdapter was modified to not increment\nthe ArenaAllocator\u0027s internal reference counter in order to allow\nfor use of ArenaSafeMap inside an arena-allocated objects. Because\ntheir destructor is not called, the counter does not get decremented.\n\nChange-Id: I36a4fa29ae34fb905cdefd482ccbf386cff14166\n"
    },
    {
      "commit": "47f867a0ae34d743f6159c2261e5b11e39693e15",
      "tree": "3b9129e77ab3e99b211fccc8ab2eba06d0c12957",
      "parents": [
        "a2b02f7bb474549ae356b5edfbb27a76e5460c58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 18 10:39:00 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 18 13:39:18 2015 -0700"
      },
      "message": "Clean up hash set\n\nAdded vertical whitespace, const iterators, made some functions\nconst.\n\nChange-Id: I188dc0384a98d6dae2822f0ac38b740f2356c23d\n"
    },
    {
      "commit": "850cd16a683d724b41687074a49504996d8e8e3e",
      "tree": "3b3913d85f8f3c138b97584ede8b2d490dc54d00",
      "parents": [
        "eb46017aaa3906e293d6e975d4db3ba02b9bebe9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 17 11:05:20 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 17 11:06:36 2015 +0000"
      },
      "message": "ART: Fix build for counting arena allocations.\n\nChange-Id: I1fbb8cc9c4934cc81cb80c5c2107c63fd16a0a05\n"
    },
    {
      "commit": "12d625f87bcd6c4059a205bb39007a255f57f382",
      "tree": "b69f6f80f56977c176e0c441869d2f1de06ede70",
      "parents": [
        "b871a15f1f662c8efe10d41199180bd00b6decd1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 11:33:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 16:38:25 2015 -0700"
      },
      "message": "Change method verifiers to be thread local roots\n\nBug: 10921004\n\nChange-Id: I3a1425d76cd380587ba67ef6d5ec1227564e55bf\n"
    },
    {
      "commit": "2435a43f6c851c23922d8508fb17c6079248201c",
      "tree": "a0eea938dfbafc8f8e1546528295005d3a55ecee",
      "parents": [
        "c685bce4e6cfec075cb5b468d06b2fcdeeda2005"
      ],
      "author": {
        "name": "bowen_lai",
        "email": "bowen_lai@htc.com",
        "time": "Fri Mar 13 14:34:40 2015 +0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 10:20:40 2015 -0700"
      },
      "message": "ART: Add entries_ lock for race condition\n\nGCDaemon thread would visit incorrect RegType content when there is\nanother thread initializing classes.\nAdd a lock to protect entries_.\n\nhttps://code.google.com/p/android/issues/detail?id\u003d159849\n\nChange-Id: Iabaa1c7f5cc5106b60a6e3856152e0797e8a5d6d\n"
    },
    {
      "commit": "c6201fa2ec66a218c4d0320fbcddd2fbb65cfa4a",
      "tree": "d7e2742906c340d61a7bf24aab6e0b343e0580d2",
      "parents": [
        "4cfe74cb50b73f5f4b6dd32aabed55d044afe348"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 12 10:06:33 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 12 10:59:33 2015 -0700"
      },
      "message": "Add way to select arena type at runtime\n\nWe now use MemMap for JIT, and malloc for everything else. This\nshould help fix the allegedly regressed compile times.\n\nChange-Id: I6a6552738933f9d7ee3bd23f45e310818b19b70d\n"
    },
    {
      "commit": "072e48ed63aa4f99bec1dbbe8a7872a4bcc03e41",
      "tree": "f7523ed14d6256e16eb8545f945d327a2228acc0",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3",
        "66d874d96d5699bb090c59f47a5a528956ca053e"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 10 14:41:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 10 14:41:26 2015 +0000"
      },
      "message": "Merge \"Create OatFileAssistant class for assisting with oat files.\""
    },
    {
      "commit": "66d874d96d5699bb090c59f47a5a528956ca053e",
      "tree": "d59bf83a08fead7d9823230831bea63c9e43a62c",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 09:37:19 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 09 14:46:23 2015 -0700"
      },
      "message": "Create OatFileAssistant class for assisting with oat files.\n\nThe oat file assistant is used for determining whether dex2oat or\npatchoat is needed, for running dex2oat or patchoat as needed to make\nan oat file up to date, and to load dex files associated with a given\ndex location.\n\nThe introduction of the OatFileAssistant class is meant to clean up and\nconsolidate code related to the management of oat files that was\nduplicated and spread across dalvik_system_DexFile.cc and\nclass_linker.cc.\n\nBug: 11301553\nChange-Id: I0c16027b9bae4570c2c50faa9c14f581c0cbafb8\n"
    },
    {
      "commit": "9b34b244ecddd8a35c922ed87bc3df0ca4db0282",
      "tree": "cb73f09a77a1ba58331eb299bb8dd1e6eafb6eaa",
      "parents": [
        "81d38f74219774d87389f83f23595ffc8fe814b1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 09 11:30:17 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 09 14:25:02 2015 -0700"
      },
      "message": "Trim arenas for JIT\n\nMoved arena pool into the runtime. Added arena trimming to arena\npool. When called, this madvises the used memory.\n\nChanged the JIT compiler to trim arenas after compilation. Changed\nthe arena mmap name to dalvik-LinearAlloc.\n\nNative PSS before:\n  80353 kB: Native\n  80775 kB: Native\n  78116 kB: Native\nAfter:\n  73357 kB: Native\n  70181 kB: Native\n  70306 kB: Native\n\nBug: 17950037\nBug: 17643507\nBug: 19264997\n\nChange-Id: I63e7a898fd6e909c2c677fa57b5917a7b1398930\n"
    },
    {
      "commit": "627f917e66a273e7cbc2805e49f53cf1b9ca0c77",
      "tree": "e995bc4765ea9da166128a2c9961286e725dc188",
      "parents": [
        "dc68bafc29a457b1cc5b29a03f2ef5f2af77865d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 04 15:06:16 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Mar 04 15:06:16 2015 -0800"
      },
      "message": "Include what we use.\n\nNewest libc++ update fixes some of the header cruft.\n\nChange-Id: Ic5019ffcb272274ac3b21627218d65a887074458\n"
    },
    {
      "commit": "91e56692c6bd9fa1d41951ee7dc311f19461f4be",
      "tree": "8e7600204eed1509b7ec436ae789f3d8195a8755",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 03 13:51:04 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 03 16:31:49 2015 -0800"
      },
      "message": "Wait for threads to finish unregistering\n\nThere was a race where Thread::join would return before the thread was\nunregistered. This caused a problem with Daemons.stop since the thread\nlist could get deleted before the daemon thread was removed from list_.\nThis caused occasional \"Request to unregister unattached thread\"\nerrors and warnings.\n\nThe fix is to wait until threads finish registering before destroying\nthe thread list. The only threads which can be unregistering at this\npoint are the daemons we stopped earlier during the runtime shutdown\nprocess. The issue is that thread join finishes before we remove the\nthread from the thread list.\n\nAlso some cleanup.\n\nBug: 18713034\nChange-Id: I8921122fe8462643a6b814b5f00632481e3831fb\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": "42f8c1c39b74aae50714488525d14de30f9722c9",
      "tree": "6f8fb16d45fc182c3a7669651e2be14f38a788e8",
      "parents": [
        "8fa836e16e65aca3aeaa1c4784157207188e6373",
        "c801f0d79b8c5bf28401a040356b59b2f41520f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 25 04:56:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 25 04:56:43 2015 +0000"
      },
      "message": "Merge \"ART: Fix \"unused parameters\"\""
    },
    {
      "commit": "c801f0d79b8c5bf28401a040356b59b2f41520f4",
      "tree": "ebb9d2dbe0e4dae09b0b83c71d2383611f0b2737",
      "parents": [
        "17b01497b29f980a3d515a01adcb5f47df67ac63"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 20:55:16 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 20:55:16 2015 -0800"
      },
      "message": "ART: Fix \"unused parameters\"\n\nGCC 4.8 decides that parameters for functions implemented with\n\"\u003d default\" are unused. This currently only impacts x86, but remove\nthe parameter names anyways.\n\nChange-Id: I01865faa81af68c4c0e0b1cb1fb19e88ef548769\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"
    },
    {
      "commit": "794ad76e8d5b5b9132819d5b08a0570e27615644",
      "tree": "74b420e4337ecf9e5df689cc376fa965d765a908",
      "parents": [
        "d98ff78976696fdde1e7868d4687719a0439544b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 08:12:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 10:23:06 2015 -0800"
      },
      "message": "ART: Introduce NO_RETURN, Mark DoLongJump noreturn\n\nAdd NO_RETURN macro that adds C++11 noreturn attribute. Mark\nDoLongJump methods as noreturn.\n\nChange-Id: Ifde4318e370493237050d4c1349285a0382df23f\n"
    },
    {
      "commit": "b666f4805c8ae707ea6fd7f6c7f375e0b000dba8",
      "tree": "a61439a9bcb555dc575286f3e0bb5e50ce185982",
      "parents": [
        "39109a06015c91188232e59fa9e60e0915d24cd7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 18 14:33:14 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 19 09:59:50 2015 -0800"
      },
      "message": "Move arenas into runtime\n\nMoved arena pool into the runtime.\n\nMotivation:\nAllow GC to use arena allocators, recycle arena pool for linear alloc.\n\nBug: 19264997\nChange-Id: I8ddbb6d55ee923a980b28fb656c758c5d7697c2f\n"
    },
    {
      "commit": "2798da180524dde1f923b4ee964877546bd6bb44",
      "tree": "9636c049c56402a7cc0196ff3657a8c8ec1322a0",
      "parents": [
        "6e27f82193a8f54cd8ecdc8fb2c4c1adadafbaf4"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Feb 06 17:59:39 2015 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 17 10:57:35 2015 -0800"
      },
      "message": "art: Fix bug in VariantMap::Set\n\nBug: 19295410\nChange-Id: I7827583846d710698c0e7bc0ec1a2c3bf901bd50\n"
    },
    {
      "commit": "1bb6cb0b7e10698f12213f7a4fabc845057d9ab9",
      "tree": "e3ae2fc62490cffa8af35b5913f331585483fd21",
      "parents": [
        "a8fb460f0a5c96881c433f9586bdf1f705c97d35",
        "aaebaa0121be3b9d9f13630585304482cbcaeb4b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 21:45:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 04 21:45:13 2015 +0000"
      },
      "message": "Merge \"art: Refactor RuntimeOptions/ParsedOptions\""
    },
    {
      "commit": "aaebaa0121be3b9d9f13630585304482cbcaeb4b",
      "tree": "0f47257e497fdf920c8d703d2d00adab53934a76",
      "parents": [
        "babecc483276b46d84cb83d4f01e577228827305"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jan 26 10:55:53 2015 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 04 13:29:19 2015 -0800"
      },
      "message": "art: Refactor RuntimeOptions/ParsedOptions\n\nRefactor the RuntimeOptions to be a\ntype-safe map (VariantMap, see runtime_options.h) and the ParsedOptions\nto delegate the parsing to CmdlineParser (see cmdline/cmdline_parser.h).\n\nThis is the start of a command line parsing refactor, and may include\nmore in the future (dex2oat, patchoat, etc).\n\nFor more details of the command line parsing generator usage see cmdline/README.md\n\nChange-Id: Ic67c6bca5e1f33bf2ec60e2e3ff8c366bab91563\n"
    },
    {
      "commit": "1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f",
      "tree": "bb0ca0614452268d8e0aafb68d2b76972c29d380",
      "parents": [
        "ab7f56d9b9838811cb01773e45999e2cda4aa03a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 30 15:37:34 2015 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jan 30 15:37:34 2015 -0800"
      },
      "message": "Disable clang optimization to boot up on arm64.\n\nOn arm64 devices, clang compiled lib64/libart.so repeatedly\ncrashes during boot up stage. That prevents a stable adb connection.\nWhen optimization of BitVector::NumSetBits is disabled,\nwe can boot up to Android home screen, although some Apps\nare still unstable.\nThis is a temporary workaround only for clang/llvm arm64 target,\nto enable concurrent debugging on other bugs.\n\nBUG: 19180814\nChange-Id: Id82497ce4be0b2c30d36679d15394848d826f50c\n"
    },
    {
      "commit": "4c10110b144eafa47333dc9d30da9220a03e7c08",
      "tree": "e373871d3b56a161eacd7a1d25846c2a39b0ad62",
      "parents": [
        "763abfd0d803f8169e97d3da944043c2464aac0a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 27 17:14:16 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 27 18:20:41 2015 -0800"
      },
      "message": "Print lock level in ExclusiveUnlock\n\nBug: 18713034\nChange-Id: I83e1bf1e2023b595d8ddf20008935c75b2b0aa0c\n"
    },
    {
      "commit": "0e92f4fa0079dad6d1df69abd13054a9885cba98",
      "tree": "a172f8cfeb71cd56af58625d0bf11690ae1f5471",
      "parents": [
        "94fc0e7be35ab1dd42c6336071ea53dfc565faee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 17:37:27 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 26 17:37:27 2015 -0800"
      },
      "message": "ART: More Quick cleanup\n\nRemove frontend, move code to QuickCompiler.\n\nFix some includes.\n\nChange-Id: Iedd8f339ec76635e48b166e285f7fc571fc948ac\n"
    },
    {
      "commit": "d7fa69ca6527abce692da848eb49f6262213c14d",
      "tree": "66011cf3d4944ef45eaaf3f48729fb0c7fa993f1",
      "parents": [
        "61e620d4771e09143471e38fe7531678a36ce3f8",
        "8f1fa100ee037131976c616ec72a6608dccb51e2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 23 23:17:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 23 23:17:16 2015 +0000"
      },
      "message": "Merge \"ART: On shutdown, only warn on mutex contention\""
    },
    {
      "commit": "8f1fa100ee037131976c616ec72a6608dccb51e2",
      "tree": "4df001bf5f7bc441b81c750b5b858f5c912cd6eb",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 22 19:48:51 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 23 15:16:33 2015 -0800"
      },
      "message": "ART: On shutdown, only warn on mutex contention\n\nDo not abort, as daemon threads may still be active.\n\nBug: 17894429\n\n(cherry picked from commit c0440f69ebf051ff2ffdc00de51005a040014462)\n\nChange-Id: I7c1d50ff8d4a5e150279e703a69c8f2f1d423e6b\n"
    },
    {
      "commit": "2cd334ae2d4287216523882f0d298cf3901b7ab1",
      "tree": "b72d3d07e5a04151caca96cae345075b6e4452b0",
      "parents": [
        "604e2828896fbb8663897d1e75112da7305ead4c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 09 14:03:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 23 14:07:32 2015 -0800"
      },
      "message": "More of the concurrent copying collector.\n\nBug: 12687968\nChange-Id: I62f70274d47df6d6cab714df95c518b750ce3105\n"
    },
    {
      "commit": "040719630f33019693b5c4d9b573311b2f935c39",
      "tree": "5c3a389dd63773d21f3e7e9abdd47c7d3572d1b8",
      "parents": [
        "1ab1502093940ecc03b1be5d5e7e50b69df42165"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 02 17:00:44 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 23 11:35:05 2015 +0000"
      },
      "message": "Fix BitVector::IndexIterator::operator*() to return uint32_t.\n\nChange-Id: I3cfc028b1c3744ec85ea00eadcbccfdde6fd51d3\n"
    },
    {
      "commit": "d16d76ac64b1b9ed17e9cc17a6afb85f16ce4b51",
      "tree": "1aac196b6b0798502d0ecd2729af67c0f547c85a",
      "parents": [
        "12c03ac7575db242a6f35739bb459e8277115da4",
        "3c43f8db38858cbe1e017731cbbb6859a8051162"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Jan 16 15:59:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 16 15:59:49 2015 +0000"
      },
      "message": "Merge \"Fix comment referring to nonexistent ElementDeleter\""
    },
    {
      "commit": "5306f5d7e0b4a6ebeacdb8c73bd4335577838cad",
      "tree": "37ce79b3ec2c1e3d20939220be4646daec268b2c",
      "parents": [
        "420457e6040184a6e1639a4c84fcc8e237bd8a3d",
        "071e48ecfc95b1c67b07c975190d51f646ac4276"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 18:32:47 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 15 18:32:48 2015 +0000"
      },
      "message": "Merge \"Fix false alarm on thread suspend timeout\""
    },
    {
      "commit": "3c43f8db38858cbe1e017731cbbb6859a8051162",
      "tree": "fe0733425fd12d95ac3c34173360039ae350a014",
      "parents": [
        "cbabd3cba33662b296df7c1d392bdd35b3c978ad"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 10:27:22 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 10:27:22 2015 -0800"
      },
      "message": "Fix comment referring to nonexistent ElementDeleter\n\nBug: 18809837\nChange-Id: I40ad727907be505b7cb63f3c4bba7f395aaec727\n"
    },
    {
      "commit": "369810a98e6394b6dd162f5349e38a1f597b3bc7",
      "tree": "ec703b9fdfe57f039f833208f879d8c95b813137",
      "parents": [
        "1c1d40ab7fd856eac52e1a3be7ce60da3fc21fb5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 14 19:53:31 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 07:51:55 2015 -0800"
      },
      "message": "ART: Allow scoped adjustments to log verbosity\n\nAdd ScopedLogSeverity to adjust the logging level.\n\nSuppress warnings by default in gtests. Suppress errors in instances\nwhere errors are expected.\n\nChange-Id: If3ef865813e9505ab60bc90baed63ff11d90afbb\n"
    },
    {
      "commit": "071e48ecfc95b1c67b07c975190d51f646ac4276",
      "tree": "c873eaedf521aebaabe92d61720b81b12343f9bb",
      "parents": [
        "c40a4350daac81ddbfc5f6ceab934f2180dc4ec6"
      ],
      "author": {
        "name": "tony.ys_liu",
        "email": "tony.ys_liu@htc.com",
        "time": "Wed Jan 14 18:28:03 2015 +0800"
      },
      "committer": {
        "name": "tony.ys_liu",
        "email": "tony.ys_liu@htc.com",
        "time": "Wed Jan 14 18:28:03 2015 +0800"
      },
      "message": "Fix false alarm on thread suspend timeout\n\nRoot cause:\n  CLOCK_REALTIME will jump backward/forward when system time-of-day clock is changed.\n  It implies now_abs_ts will jump a lot across end_abs_ts.\n  Then, it makes a false alarm (process crash) on thread suspend timeout when doing ComputeRelativeTimeSpec.\n\n      if (ComputeRelativeTimeSpec(\u0026rel_ts, end_abs_ts, now_abs_ts)) {\n        return false;  // Timed out.\n      }\n\nSolution:\n  Use CLOCK_MONOTONIC instead\n\nChange-Id: I768af52b05ee1548bb291f7d5e2f389ec85e0e71\n"
    },
    {
      "commit": "ed9575441d68f11d91bd86845dbe7e69df35d6c9",
      "tree": "61d20a398d9ce90ae8b40d8a5869057623ac1380",
      "parents": [
        "fc31717951093be49fce023c895685df448650f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 07 18:01:29 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 07 18:01:29 2015 -0800"
      },
      "message": "ART: Print INTERNAL_FATAL Log messages immediately\n\nTo diagnose some problems, print out messages sent to Severity level\nINTERNAL_FATAL immediately. This avoids the buffering we do.\n\nBug: 18933933\nChange-Id: I3e536ae2e78560eb561d0b873fb4e88b9495ebbf\n"
    },
    {
      "commit": "b8f2f63c3d5f0d6fb2a165b3fb8379608076ddae",
      "tree": "37e38e233a924389408fcb1c5ede80fc36405ac7",
      "parents": [
        "ba31c3c400cfc59bfe284701763ef96c8810aa14"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 02 14:23:26 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 02 15:57:36 2015 +0000"
      },
      "message": "Implement LogLineLowStack() properly.\n\nAvoid stack-based buffers used by the log formatting in\n__android_log_print().\n\nMove the VLOG(threads) in Thread::InitStackHwm() after the\nlow stack check as it\u0027s not safe to actually log before\nthat; even the StringPrintf() is using a stack-based buffer.\n\nBug: 18830897\nChange-Id: I13b2166438e871c52ab91dabfe98f2200fd7c1cf\n"
    },
    {
      "commit": "e21dc3db191df04c100620965bee4617b3b24397",
      "tree": "2ad762c6afb024bf95e1eced3d584649a4d57d23",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 08 16:59:43 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 22 10:01:27 2014 -0800"
      },
      "message": "ART: Swap-space in the compiler\n\nIntroduce a swap-space and corresponding allocator to transparently\nswitch native allocations to memory backed by a file.\n\nBug: 18596910\n\n(cherry picked from commit 62746d8d9c4400e4764f162b22bfb1a32be287a9)\n\nChange-Id: I131448f3907115054a592af73db86d2b9257ea33\n"
    },
    {
      "commit": "70a596d61f8cf5b6447326c46c3386e0fbd5bfb5",
      "tree": "f7affe0a976165eb9ff789270d314463f6e36660",
      "parents": [
        "e9231c0aecc013c61b6cf7f88a228204651d4d41"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 14:56:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 16:03:58 2014 -0800"
      },
      "message": "Add thread suspend histogram\n\nHelps measure time to suspend.\nExample output (maps after a few seconds):\nsuspend all histogram:  Sum: 2.806ms 99% C.I. 2us-1090.560us Avg: 43.843us Max: 1126us\n\nChange-Id: I7bd9dd3b401fb3e3059e8718556d60910e541611\n"
    },
    {
      "commit": "e9231c0aecc013c61b6cf7f88a228204651d4d41",
      "tree": "e646d3e36245dd2b39de6d9654b00801f57ee95a",
      "parents": [
        "d457b9cebceecc9d54fb569ea76509341153bf5c",
        "3774335b08076117d6950cd472cdd59a167470b5"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Dec 17 22:04:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 17 22:04:19 2014 +0000"
      },
      "message": "Merge \"Add a new imgdiag tool to diff boot.art/core.art against a process\""
    },
    {
      "commit": "3774335b08076117d6950cd472cdd59a167470b5",
      "tree": "c2d24814e2d829f55ae25415b5b578cc040e0934",
      "parents": [
        "5b6912e455da798a79a4bb3235e276351b38ab58"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 13 14:38:00 2014 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Dec 16 12:00:59 2014 -0800"
      },
      "message": "Add a new imgdiag tool to diff boot.art/core.art against a process\n\nAnalyze the dirty memory pages of a running process per-object,\nthis allows is to to fine-tune the dirty object binning algorithm in\nimage writer.\n\nAlso:\n* Factor out oatdump command line parsing code into cmdline.h\n* Factor out common build rules for building variations of binaries\n* Add a gtest for imgdiag\n\nBug: 17611661\nChange-Id: I3ac852a0d223af66f6d59ae5dbc3df101475e3d0\n"
    },
    {
      "commit": "eb0a179508f3c0533dd7db86ec7ab9dfa3773256",
      "tree": "51f4f2a694627cace4b65c7018a47c994db44bfd",
      "parents": [
        "5b6912e455da798a79a4bb3235e276351b38ab58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 17:23:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 17:31:17 2014 -0800"
      },
      "message": "Add more logging to Mutex::ExclusiveUnlock\n\nBug: 18713034\nChange-Id: I9db5ca0a25592714ac9e292a2b8d46ef73779c8b\n"
    },
    {
      "commit": "8683038c1f59bea790d8c7691e40eed7f6250e4a",
      "tree": "63f168876ecb6b8416082cbc141da1d478a66988",
      "parents": [
        "29045735a55726235e5c2c5156809cdcac61d4d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 12 21:41:29 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 15 10:27:32 2014 -0800"
      },
      "message": "ART: Do not inline elf writer debug symbols\n\nUsing Clang, this pushes the frame size of the caller across our\nlimit. Thus forbid inlining. The function is only called once per\ncompile, impact is insignificant.\n\nBug: 18738594\nChange-Id: I19c3f1168a5104ab508a8dbf9f2a8c035cb97e3c\n"
    },
    {
      "commit": "cef50f0487929f72183623bc2a5819cf3a63bff6",
      "tree": "b37c68730d982b1bff28d0faa8072df0354b5dd9",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 09 17:38:52 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 09:43:29 2014 -0800"
      },
      "message": "Stop daemon threads in runtime shutdown\n\nEnsure that daemons are stopped and joins before bringing down the\nruntime. This fixes bugs related to native code still running when\nwe shutdown the runtime.\n\nAlso changed the mutex destructor to allow contenders if we are\ndeleting a monitor lock level mutex.\n\nBug: 18577101\nChange-Id: I6457b35fd69c6997b9003b5f15f39861749843a9\n"
    },
    {
      "commit": "55e681a0e659d523d0366b1805a87663a6760d4e",
      "tree": "e8de9303aec5a4b4245718bf21cbd49ef6efa36a",
      "parents": [
        "0c0e702b51397e58b9067a0f9c4254dd61a6cb2f",
        "db978719dbcb73fc6acfd193561445c4462786b8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 13:34:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 09 13:34:11 2014 +0000"
      },
      "message": "Merge \"Revert \"Tidy gAborting.\"\""
    },
    {
      "commit": "db978719dbcb73fc6acfd193561445c4462786b8",
      "tree": "be75911bfbe29a50fff685217c8ee155fb99ac10",
      "parents": [
        "015b137efb434528173779bc3ec8d72494456254"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 13:33:38 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 09 13:33:38 2014 +0000"
      },
      "message": "Revert \"Tidy gAborting.\"\n\nCreates infinite loop: b/18674776.\n\nThis reverts commit 015b137efb434528173779bc3ec8d72494456254.\n\nChange-Id: I67fe310d2e95ee2ec37bec842be06fb1123b6f4e\n"
    },
    {
      "commit": "d02bd695a024f98ea926db924a9bcb8c325c8c6b",
      "tree": "78265334074716714176f101903163e52b46f4c7",
      "parents": [
        "ab74d3eae37de79444edd1edd70400970d5e85ad",
        "0a7993ee8796e75ea7f251b7cb9e32f2f4335333"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 05 19:37:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 05 19:37:19 2014 +0000"
      },
      "message": "Merge \"ART: Fix typo\""
    },
    {
      "commit": "0a7993ee8796e75ea7f251b7cb9e32f2f4335333",
      "tree": "452019b4d87d9a27b10709240ec46f3ef12a5d81",
      "parents": [
        "aad9c0767a8f8ae6250a7b4edee52cfb6d598687"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 05 11:16:26 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 05 11:16:26 2014 -0800"
      },
      "message": "ART: Fix typo\n\nChange-Id: Ie9a242240511adae9fcdbaae8d6b5be61fb5075b\n"
    },
    {
      "commit": "015b137efb434528173779bc3ec8d72494456254",
      "tree": "2ccaba9d7465bd9995082a7251d34cf76b1ab1ea",
      "parents": [
        "a21fdd0432aa38b63d144ee4b92b6a567aab61d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 19:53:52 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 04 20:04:45 2014 -0800"
      },
      "message": "Tidy gAborting.\n\nReduce scope to Runtime::Abort and short-cut recursive case earlier. gAborting\nremains global to avoid two fatal errors in thread and the verifier.\n\nChange-Id: Ibc893f891ffee9a763c65cde9507d99083d47b3f\n"
    },
    {
      "commit": "14317f030db862bb2210135b9af510df429059fd",
      "tree": "156a4bcc6d1410001d5cf3ba3fa2fda0317146cc",
      "parents": [
        "27478e627e08ab42c43d5d934da9ea336ccaf628"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 03 10:48:05 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 03 10:48:05 2014 -0800"
      },
      "message": "Remove unused headers.\n\nPush Closure into only use in thread_pool.h.\nRemove StringFile and NullFile that existed purely for a test.\n\nChange-Id: I329892d5e1f5f017caeb3d60600f803a74114fc1\n"
    },
    {
      "commit": "90675a77fa03850ebd46280e60b0ff54b8d5eb79",
      "tree": "9a891b47e6b7e4e5f1c123a477ec2876b8183b52",
      "parents": [
        "4a9ac63ba407edc09e13b4e095e2105cf13f603b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 00:21:06 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 00:21:06 2014 -0800"
      },
      "message": "ART: Avoid recursive abort\n\nBug: 18469797\nChange-Id: Ided50bec3377034dd9a995f9f0700a795adb3940\n"
    },
    {
      "commit": "e8b547d9b4785f4804f83c07c49d3f87530747c5",
      "tree": "f31c8aff7e4c0b0d8be3e20623005f723145fdfb",
      "parents": [
        "a79da1b478e2be0d988aa021d5d4e6973c24b4a0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 21 22:52:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 21 22:57:44 2014 -0800"
      },
      "message": "Avoid some recursive aborting.\n\nBug: 18469797\nChange-Id: Ic1889a605a041bdec679ff54f8dce3842d85f2e1\n"
    },
    {
      "commit": "4303ba97313458491e038d78efa041d41cf7bb43",
      "tree": "5a5873651db918416c9ff63f4bb06b6eb7f4c71a",
      "parents": [
        "a971100be7870544360fa8a46311ef7f5adb6902"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 06 01:00:46 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 18 17:26:06 2014 -0800"
      },
      "message": "ART: Track Flush \u0026 Close in FdFile\n\nImplement a check that aborts when a file hasn\u0027t been explicitly\nflushed and closed when it is destructed.\n\nAdd WARN_UNUSED to FdFile methods.\n\nUpdate dex2oat, patchoat, scoped_flock and some gtests to pass with\nthis.\n\n(cherry picked from commit 9433ec60b325b708b9fa87e699ab4a6565741494)\n\nChange-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4\n"
    },
    {
      "commit": "4ad5cd3e7d519484559ef778d96fb3f0be8919fa",
      "tree": "9870938a0552b4fe472d9994a55a3bf761fc69d5",
      "parents": [
        "741e287b60136db49ecf8da72f2b5ca48b0a39bd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 23:08:07 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 12 15:29:12 2014 -0800"
      },
      "message": "Modify the behavior of thread suspend shootouts.\n\nThe thread doing the suspension doesn\u0027t attempt to suspend the other thread\nunless it knows another thread isn\u0027t trying to suspend it. Use the suspend\ncount, and its lock, for this purpose.\nRe-enable ThreadStress test.\nBug: 15446488\n\nChange-Id: Idd34410c7b89d8abd6973e5699a15ca699472c78\n"
    },
    {
      "commit": "f4d4da18aa1914d10264082bd0433f59bff45453",
      "tree": "16edc1787c285135a0012cfc8737a8b89987f24b",
      "parents": [
        "4c9c251c2a32cd8d1be21bc47a9188358cb9f17f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 16:10:33 2014 -0800"
      },
      "message": "Allow JNI AttachCurrentThread to fail if not enough stack.\n\nAdd unit tests and move JavaVM JNI tests into there own set of gtests.\nBug: 18330119\n\nChange-Id: I0e93dff783b1f5d787b3084d24122883e14951a1\n"
    },
    {
      "commit": "e7c9a8c2b8481aafbc6af4ce6229bd361ba24742",
      "tree": "f6d8fe8fd7aeae117a6547dc4f012cd4085cb4e8",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:35:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 11:45:06 2014 -0800"
      },
      "message": "Add hash map, reduce excessive hashing\n\nChanged the class def index to use a HashMap instead of unordered_map\nso that we can use FindWithHash to reduce how often we need to compute\nhashes.\n\nFixed a bug in ClassLinker::UpdateClass where we didn\u0027t properly\nhandle classes with the same descriptor but different class loaders.\nIntroduced by previous CL.\n\nBefore (fb launch):\n1.74% art::ComputeModifiedUtf8Hash(char const*)\n\nAfter:\n0.95% art::ComputeModifiedUtf8Hash(char const*)\n\nBug: 18054905\nBug: 16828525\n\nChange-Id: Iba2ee37c9837289e0ea187800ba4af322225a994\n\n(cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)\n"
    },
    {
      "commit": "0006f29d646f75727f792c031fc6499b7e28f153",
      "tree": "7d4549abb8cd52ac5bce71270aea7a77f25fb416",
      "parents": [
        "b7ce2074ef43ff221cdec6ddba953f0b0c67447b",
        "c2e20629c7dfdb0f679fa30c14b41fe68588697f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 00:27:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 07 00:27:44 2014 +0000"
      },
      "message": "Merge \"Add hash set\""
    },
    {
      "commit": "c2e20629c7dfdb0f679fa30c14b41fe68588697f",
      "tree": "ee428a17f93922e6f78e3482c348e6e7b81a8e4f",
      "parents": [
        "f55996d6b4a672e09fbe3a3563646a7682719b4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 03 11:41:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:27:00 2014 -0800"
      },
      "message": "Add hash set\n\nMore memory efficient than libcxx since we do not box the values.\n\nChange intern table to use new hash set. Clean up intern table by\nremoving const casts and deleting unnecessary code.\n\nChanged the class linker to use a hash set, also added a pre-zygote\nclass table.\n\n5 samples of:\nadb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 60 \u0026\u0026 adb shell dumpsys meminfo\nBefore:\n165929 kB: Native\n175859 kB: Native\n168434 kB: Native\n166559 kB: Native\n169958 kB: Native\n\nAfter:\n160972 kB: Native\n159439 kB: Native\n157204 kB: Native\n165093 kB: Native\n163039 kB: Native\n\nTODO: Add HashTable which is implemented by using a HashSet.\nTODO: Use for DexFile::find_class_def_misses_.\nTODO: Investigate using mem maps instead of native heap.\n\nBug: 17808975\n\nChange-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a\n\n(cherry picked from commit e05d1d5fd86867afc7513b1c546375dba11eee50)\n"
    },
    {
      "commit": "d6d7c3bda2068b6ae0844c9a0bbc6847a83887fd",
      "tree": "d2d467945b06effdf6ada2595d39febd60409c4a",
      "parents": [
        "1e3339ea2d40fff16ef8cb154f7bb4146af0e59b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 06 14:26:29 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 06 14:26:29 2014 -0800"
      },
      "message": "Mac host doesn\u0027t define ART_USE_FUTEXES.\n\nChange-Id: Ic2c23d267cfd56db58754f45154436a085eeaa78\n"
    },
    {
      "commit": "729c1cfd39e859d6f5a24e1010959a382474592c",
      "tree": "8b9dcf44888b60f19a07ff73af1d2b2ade4a3799",
      "parents": [
        "970a25ca627fe13ab381bc4c639868179a3c8f1f"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Nov 06 10:49:16 2014 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Nov 06 10:49:16 2014 -0800"
      },
      "message": "Move include of system headers outside namesapce.\n\nThis happened to work with old system header files.\nBut with newer glibc 2.15 header files, typedef names\nsuch as __u32 and __u64 are included into a namespace\nand could not be used in other system header files.\n\nBUG: 18275923\nChange-Id: I7c61270d08a7b1c69cee55a6a23b00372f0f51c8\n"
    },
    {
      "commit": "78a3233313260665fe82ba56257855e043bca3d4",
      "tree": "46622bf088b3f30d2c6d8a5b548519137c88c867",
      "parents": [
        "fe50a0f644bf57a92612d08ad21dc4ea5a2f652a",
        "277ccbd200ea43590dfc06a93ae184a765327ad0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "message": "Merge \"ART: More warnings\""
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "3eaa8525dadc0e17356ac201f1619a86722edc27",
      "tree": "ece788fdedaf9dd1a3b2e607774b6a5bccbfaea2",
      "parents": [
        "e03864e99f5ab0e27a48a17275122ad8f324b615"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 04 13:20:30 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 04 13:20:30 2014 -0800"
      },
      "message": "Don\u0027t define DISALLOW_COPY_AND_ASSIGN if already defined.\n\nRequired by:\nhttps://android-review.googlesource.com/#/c/113053/\n\nChange-Id: I0226afffc738a4b7c162a0d467513a35d62dbfdc\n"
    },
    {
      "commit": "575e78c41ece0dec969d31f46be563d4eb7ae43b",
      "tree": "16906df0ba0912a6cb01b3139ba7c60d5f9d09b7",
      "parents": [
        "2998e9cdc9f19c30c4944a4726ed9f147de79ebd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "message": "ART: Replace COMPILE_ASSERT with static_assert (runtime)\n\nReplace all occurrences of COMPILE_ASSERT in the runtime tree.\n\nChange-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "5a2e4ccabf4cda7050c63685be23339eac8779df",
      "tree": "ffa58c9c51de081b0f8e0916f12a025eaa223ed4",
      "parents": [
        "a8825e4b38ae01fa77d255ca423ab2f2b77c6097"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 15:13:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 15:13:22 2014 -0700"
      },
      "message": "Fix mixed signed/unsigned arithmetic in BitVector.\n\nChange-Id: I59c7f5a26e42689f77b067f4c73b086335e9273d\n"
    },
    {
      "commit": "dc8aa69496ea43f0a60f1f527822a90f6c3d6d03",
      "tree": "7c60de57e6e3e43f4c1797e58238e62f8e447134",
      "parents": [
        "dc9667e50f6adf99f2d4cfea27b4abcbf42e6a3f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 24 21:32:07 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 24 21:32:07 2014 -0700"
      },
      "message": "ART: Fix leak in bit_vector\n\nResizing leaks the original storage. Let the allocator know it\u0027s\nfree.\n\nBug: 18120044\nChange-Id: Ib95a87c3036f36377d64351173f8c04f28855663\n"
    },
    {
      "commit": "51d212ef31945743abe8a469707aaa25bab95357",
      "tree": "a93e362ca61c7d5a6dc8521551241106ff1248b2",
      "parents": [
        "e8bd8ac7fb41545ef342c8120c2e83d2fef20a50"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 23 17:48:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 23 17:49:51 2014 -0700"
      },
      "message": "Make out-of-line mutex contention dependent on ART_USE_FUTEXES.\n\nFix Mac build. Also fix Linux compilation if ART_USE_FUTEXES is disabled.\n\nChange-Id: I51cb1d70b5548ea6121ff7567b9546bad0894e01\n"
    }
  ],
  "next": "e8bd8ac7fb41545ef342c8120c2e83d2fef20a50"
}
