)]}'
{
  "log": [
    {
      "commit": "d4a02cfc59a449d216faa687cfdaa4252b4a433f",
      "tree": "dc0f23e71354403028b30f1592637e2d66db6210",
      "parents": [
        "0022bdf71533a300deebe6b9cf287eaceeb0620c",
        "33d6903e570daf8f3cf7c1f6ebd9a6dd22c7c23c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 23 13:53:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 23 13:53:55 2015 +0000"
      },
      "message": "Merge \"Replace some run-time assertions with compile-time ones in ART.\""
    },
    {
      "commit": "33d6903e570daf8f3cf7c1f6ebd9a6dd22c7c23c",
      "tree": "8069008292fe085d051300f1a871392dc413f820",
      "parents": [
        "822c00d0fe3b70d1f1fe5bac03713674d45f8173"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 18 18:20:59 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 18 18:20:59 2015 +0100"
      },
      "message": "Replace some run-time assertions with compile-time ones in ART.\n\nChange-Id: I16c3fad45c4b98b94b7c83d071374096e81d407a\n"
    },
    {
      "commit": "41f9cc28f2c9edd3903ba6ca1c75b022445552ad",
      "tree": "92e485e7bbf4e43ef4e40fd2824610074888a8ce",
      "parents": [
        "c4977a58b1feca22a83fd5239aa266c7ce16ab87"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue Jun 16 17:57:37 2015 +0600"
      },
      "committer": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Wed Jun 17 16:28:57 2015 +0600"
      },
      "message": "ART: Compiler generated GC map should take care of temp registers.\n\nIf the compiler use a temp register as a reference it should be\nadded to generated GC map along with other SSA regs.\n\nChange-Id: I3c79896dcd72228c9cf2bbbe737642d9ffb7684d\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\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": "f795869da0a1fa006fdcdacd8afb6149a63fc1a7",
      "tree": "b4cd23012e62b80788870f2c85c30fc6032299fa",
      "parents": [
        "430afefe1cced35cf5eb12ce7a6dcbfc5007c97e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 14:09:14 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 17:17:09 2015 +0200"
      },
      "message": "Follow up on CL 151605\n\n- Fixes return type of StackedShadowFrameRecord::GetType\n- Makes StackedShadowFrameType an enum class (scoped enum)\n- Moves DeoptimizationReturnValueRecord and StackedShadowFrameRecord\n  to thread.cc file and use forward declaration in thread.h header\n- Fixes tools/generate-operator-out.py for scoped enum classes.\n\nBug: 20845490\nChange-Id: I6b67e288b1db563699161e58ec2e2330d42dd8f5\n"
    },
    {
      "commit": "1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6",
      "tree": "af6ae612d43c50703292d39a8a0b37dda3f919a6",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 18 12:12:50 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jun 08 00:53:55 2015 -0700"
      },
      "message": "Fix nested deoptimization.\n\nHandle nested deoptimization cases. Create a stacked shadow frame\nrecords to keep track of deoptimization shadow frames. Shadow frames\nunder construction can be tracked in the same stack.\n\nBug: 20845490\nChange-Id: I768285792c29e7c3cfcd21e7a2600802506024d8\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "449357d3f61bdd134967ecdacc3516e1707cf882",
      "tree": "650ef203d23926485398200888cadfc9aa7608fc",
      "parents": [
        "2519fc40d4ae89322d28d1ff610fe81bb90fb564"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 01 22:29:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 03 16:10:33 2015 -0700"
      },
      "message": "ART: Refactor Thread::Init\n\nThis refactor allows the parent thread to allocate the JNIEnvExt\nfor the child (with a fallback in place in Init). This allows to\nthrow an OOME in CreateNativeThread instead of aborting in the\nchild.\n\nBug: 21291279\n\n(cherry picked from commit 520abbd0edcf333f07164539620ce65258c72383)\n\nChange-Id: Iccc1a5c202999f5bfacec706d9833e53135ba2fa\n"
    },
    {
      "commit": "415fd0833fe44b99ed57353f4bd7572681506daa",
      "tree": "5c798549945457a86faf181495337722335ae4b0",
      "parents": [
        "a96bea54b7e3def5490d169f2bf92be2e68dd001"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 11:42:27 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 01 12:27:32 2015 +0200"
      },
      "message": "Fix JDWP tests after ArtMethod change\n\nFixes Throwable::GetStackDepth for exception event detection after\ninternal stack trace representation change.\n\nAdds missing ArtMethod::GetInterfaceMethodIfProxy call in case of\nproxy method.\n\nBug: 19264997\nChange-Id: I363e293796848c3ec491c963813f62d868da44d2\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": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "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": "e12997fbce8e22431be58cac9db2535f7b4a7ac3",
      "tree": "ae167aa833e1ef249d121b179c95827fa4e7ec6c",
      "parents": [
        "aa49c23d47e5fdfcf51380550ee864e9d30d082b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 14:01:33 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 22 14:01:33 2015 +0100"
      },
      "message": "Return an invalid StackMap when one cannot be found.\n\nThis avoids aborting when handling a crash.\n\nChange-Id: Ie5b5d48061fa9258b349b0284f7b00c5855d9fbd\n"
    },
    {
      "commit": "39b6c24ce68cf05db0f82f454b4401cfb03d675f",
      "tree": "29e15d2597cd05419a1c0faedfe6977af9a7dfa3",
      "parents": [
        "768b19b6bbddaa2262f6532e7fcb96fecbfee981"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 19 20:30:23 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 20 18:40:43 2015 -0700"
      },
      "message": "Intercept JNI invocation of String.\u003cinit\u003e methods.\n\nlibmono uses JNI AllocObject and CallNonvirtualVoidMethod to create and\ninitialize a string instead of using the recommended NewObject. This\nchange adds an intercept to change the String.\u003cinit\u003e call to a\nStringFactory call instead. Then, it uses the object id of the original\nstring object referrer and maps it to the result of the StringFactory.\n\nBug: 21288130\n\n(cherry picked from commit 15e9ad1d028d7f12cb598b075453173532a00d91)\n\nChange-Id: I3421c43722c07397da4a398c2ca9110e1d40bcfa\n"
    },
    {
      "commit": "1d316adafda81cb2f30e210d3d108b97c7c11f15",
      "tree": "57aa3ebf536ce612281523ce385cedf583afa93a",
      "parents": [
        "bd0cfef567012fa6c75243d9157ddceaab7cdaac",
        "1cc71ebf333ca323ae0e130fefbce4593e385c10"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon May 11 18:04:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 11 18:04:10 2015 +0000"
      },
      "message": "Merge \"Insert a read barrier in the JNI bridge.\""
    },
    {
      "commit": "8e5bd18fc665d7ec5461ea068e98740a65da754c",
      "tree": "83441cdfdab06709b573aad2ab731cc65c10b9f1",
      "parents": [
        "cdeb0b5fede4c06488f43a212591e661d946bc78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 06 11:34:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 11 15:23:25 2015 +0100"
      },
      "message": "Add a flag to StackVisitor for inlining.\n\nThe flag tells whether the stack walk needs to include inlined\nJava frames.\n\nThis does not do anything just yet, as we\u0027re not inlining anyways.\n\nChange-Id: I716e25094fe56fa335ca1f9a398c1bcdba478e73\n"
    },
    {
      "commit": "50030ef998be09789da4a9a56738362852068f12",
      "tree": "02df1bd0954f9b970434d1363466b0cfe182bc12",
      "parents": [
        "6727a48193db2a0cf01af971cccffe1a6518c247"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 08 14:19:26 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 08 15:09:17 2015 -0700"
      },
      "message": "Check IsReferenceVReg during deopt\n\nRequired since the quick GC maps may not agree with the verifier\nones. Without this check we may copy stale object references into\nthe shadow frame.\n\n(cherry picked from commit f00baf56ef647684888a407dbb6adadd704a2039)\n\nBug: 20736048\nChange-Id: I7783c8a8ee45cf601b08b4c38f1dec7f7d11380c\n"
    },
    {
      "commit": "1cc71ebf333ca323ae0e130fefbce4593e385c10",
      "tree": "e94897ebb36a21f1c276fc69c44f6a3522cbe093",
      "parents": [
        "35b6625c21e9304dd79700f4ff1c26a7e30d2b2d"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 07 10:47:27 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 07 11:28:08 2015 -0700"
      },
      "message": "Insert a read barrier in the JNI bridge.\n\nBug: 20720510\nBug: 12687968\nChange-Id: Ia9edb614853bad45ec25d6e2142361a8bda1eccf\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "b28412e3fcc97fbcd0a11d25703a4ad64c3d9552",
      "tree": "9e4df825a6ef666ee714c782421dfb826e2703df",
      "parents": [
        "76f1413492c228bfa710e1eaa4c60370eaffbb8a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 24 15:28:36 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 24 15:28:36 2015 -0700"
      },
      "message": "Guard against name \u003d\u003d null in ShortDump\n\nBug: 20561804\nChange-Id: If1e4adb74d5b936cf171f2402bf4525bf8c2d209\n"
    },
    {
      "commit": "a61894d88fabe45677f491c9f6bde30059a49026",
      "tree": "b9d8b09e5f90792867b6720a1fb4ab5c76cdfa5f",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 16:32:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 23 17:21:26 2015 -0700"
      },
      "message": "Fix reflection handling and test flakiness\n\nFixed reflection invoke to handle exceptions which occur from\nFindClass or NewObject by throwing these instead of\nthe expected InvocationTargetException.\n\nAdded test case to 080 for this reflection invoke.\n\nFixed println throwing OOM in 104-growth-limit.\n\nChange-Id: I65766e7c3478e299da06fdc3a521fe3f3e8fdba9\n"
    },
    {
      "commit": "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": "9086b65b2ad35dd39a8afc62d535be8217208d08",
      "tree": "3abc6e3297b840289bc240e3a9bc7e61b7a99cbc",
      "parents": [
        "8d20011a9de7cd94bee59db3ae8c0cbbf55911d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 09:35:18 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 11:06:34 2015 -0700"
      },
      "message": "Fix valgrind tests\n\nDelete large objects in space destructor. Also some cleanup.\n\nChange-Id: I4c4e90149841a156b7a3236201b37683e14890fb\n"
    },
    {
      "commit": "1561e1b4029cc25a653e17b36663ae047345fad0",
      "tree": "dfcb3db9060f9e05be6109616811bbe97f20b40c",
      "parents": [
        "6c7bd25b2b2a07740bcd838c2f4024e67be83fd1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 13 23:18:02 2015 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 13 16:22:01 2015 -0700"
      },
      "message": "Revert \"ART: Turn of native stack dump on x86 on-device\"\n\nThis reverts commit 2f0751ea75e5f093d9ce7b8587e65a2ca3de0855.\n\nBug: 20040863\n\nChange-Id: Ibd40916c0f84512b0ba13af09d4fd345be39e227\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": "d0ad2eea51850ed5972c23d03380b2305cdf7cb7",
      "tree": "533baced17c6dc3860e0e2121ce06acde57b8f4d",
      "parents": [
        "917f0866f66d3465fa41ddcf9ab09eba2fa78dd3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 31 14:59:59 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 09 15:18:14 2015 -0700"
      },
      "message": "Add support for nested method verifiers\n\nCan occur in the following scenario:\nMethodVerifier::Verify -\u003e MethodVerifier::GetStaticField -\u003e\nResolveFieldJLS -\u003e  ThrowNoSuchFieldError -\u003e EnsureInitialized -\u003e\nVerifyClass\n\nAlso fixed another case where we can be requested to dump for ANR\nwhile we are suspended in one of the AllowSuspension points.\n\nBug: 20140397\n\nChange-Id: Ib17f6b98954caa5d1ea1c1dcde66091cc6d11c25\n"
    },
    {
      "commit": "3f5881fda3606b27e30bf903052c73b03910f90b",
      "tree": "0c60e00a3923d47658e2d224997ab2742c113877",
      "parents": [
        "1576be32be4a99a1cffdaaf209a3cd67e8b2f88a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 08 10:26:16 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 09 09:09:11 2015 -0700"
      },
      "message": "ART: IRT refactor\n\nIRT creation might fail. Add a path that allows to bypass the aborts\nand instead signal validity. Hide this path with a private constructor,\nrewrite users to use a static Create method.\n\nBug: 20110201\n\nChange-Id: I440499c3372cd7557eb970b70ce2c4543da520e4\n"
    },
    {
      "commit": "4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96",
      "tree": "12853aa2c6a6238cac7c66b5d5610735a2f31591",
      "parents": [
        "63a99fce3ceac3c9de1f47b88a75094e3e1ffba3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 07 10:39:04 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 07 10:42:46 2015 -0700"
      },
      "message": "Fix CC root visiting bug\n\nAlso some cleanup.\n\nChange-Id: Ia3de8f2d409770be3619ec116e8b06ecd82338fe\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "2f0751ea75e5f093d9ce7b8587e65a2ca3de0855",
      "tree": "df99d69761aa9c5ace190f4970c0952009c1713d",
      "parents": [
        "698385411e5db8c7ac9bd4471f152b8c6ea7f7bf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 14:36:07 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 14:36:07 2015 -0700"
      },
      "message": "ART: Turn of native stack dump on x86 on-device\n\nTemporary workaround for bug.\n\nBug: 20040863\nChange-Id: Ifdde68c66b94ebc2f13c7983f38700c8bcf41559\n"
    },
    {
      "commit": "d43b3ac88cd46b8815890188c9c2b9a3f1564648",
      "tree": "6c599c3f40d57e92786bd7f41c0541d9eaa2643b",
      "parents": [
        "a109632b240f3c9355ca95500f6f48e4478e3c51"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:03:04 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:05:13 2015 -0700"
      },
      "message": "Revert \"Revert \"Deoptimization-based bce.\"\"\n\nThis reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.\n\nChange-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006\n"
    },
    {
      "commit": "0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "e295e6ec5beaea31be5d7d3c996cd8cfa2053129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "message": "Revert \"Deoptimization-based bce.\"\n\nThis breaks compiling the core image:\n\n Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.\n\nThis reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.\n\nChange-Id: Ieeb48797d451836ed506ccb940872f1443942e4e\n"
    },
    {
      "commit": "e295e6ec5beaea31be5d7d3c996cd8cfa2053129",
      "tree": "4d8a657d23d511743ce35bee596544d7f652efdb",
      "parents": [
        "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sat Mar 07 06:37:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 23 16:39:37 2015 -0700"
      },
      "message": "Deoptimization-based bce.\n\nA mechanism is introduced that a runtime method can be called\nfrom code compiled with optimizing compiler to deoptimize into\ninterpreter. This can be used to establish invariants in the managed code\nIf the invariant does not hold at runtime, we will deoptimize and continue\nexecution in the interpreter. This allows to optimize the managed code as\nif the invariant was proven during compile time. However, the exception\nwill be thrown according to the semantics demanded by the spec.\n\nThe invariant and optimization included in this patch are based on the\nlength of an array. Given a set of array accesses with constant indices\n{c1, ..., cn}, we can optimize away all bounds checks iff all 0 \u003c\u003d min(ci) and\nmax(ci) \u003c array-length. The first can be proven statically. The second can be\nestablished with a deoptimization-based invariant. This replaces n bounds\nchecks with one invariant check (plus slow-path code).\n\nChange-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569\n"
    },
    {
      "commit": "004c230b4cfc856690c61faabc41864061813c88",
      "tree": "40d95445eaa2eb248fa639755689c797a5e0c2ae",
      "parents": [
        "735dc87c92bee338d0638b3290c2b93a122429f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 10:06:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 14:55:15 2015 +0000"
      },
      "message": "Compress the StackMaps.\n\nFirst step towards the compression of the StackMap (not\nthe DexRegisterMap). Next step will be to just use what is\nneeded (instead of byte -\u003e word).\n\nChange-Id: I4f81b2d05bf5cc508585e16fbbed1bafbc850e2e\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": "15b9d5274399736ac09705f0507df24fac4f00c1",
      "tree": "04564a9265f5dccefdd32ea7bdd25adc0267f80b",
      "parents": [
        "8bc616d09f93523f4bc982cc60c377b00161522a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 15:05:13 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 10:26:47 2015 +0000"
      },
      "message": "API change in StackVisitor::GetVReg*.\n\n- Remove GetVReg() and SetVReg() that were expecting to always succeed.\n- Change Quick-only methods to take a FromQuickCode suffix.\n- Change deopt to use dead values when GetVReg does not succeed:\n  the optimizing compiler will not have a location for uninitialized\n  Dex registers and potentially dead registers.\n\nChange-Id: Ida05773a97aff8aa69e0caf42ea961f80f854b77\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3",
      "tree": "ea27dd630728cfa994ce2c5da522538744a7a8a9",
      "parents": [
        "54a8cc689dc23f346c9aac0d5fc6f47e61df8cad",
        "1558b577907b613864e98f05862543557263e864"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 10 08:48:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 10 08:48:47 2015 +0000"
      },
      "message": "Merge \"JDWP: allocate DebugInvokeReq only when requested\""
    },
    {
      "commit": "ee0770379ab3e328fdd5a733e62f05b9f5216e38",
      "tree": "e37dfb0e4530395abad5a6c344651645b56e3082",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 14:56:37 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 17:23:01 2015 +0000"
      },
      "message": "Use the current Java stack instead of the ThrowLocation.\n\nThe ThrowLocation contains information we can actually retrieve\nfrom the current stack.\n\nChange-Id: I7e5b2f519f95830c457cb31ea10a581aa9c973ee\n"
    },
    {
      "commit": "1558b577907b613864e98f05862543557263e864",
      "tree": "5498d8d15f198341fe46a8badc7e7591611a09b5",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Feb 25 15:05:59 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Mar 09 15:19:49 2015 +0100"
      },
      "message": "JDWP: allocate DebugInvokeReq only when requested\n\nOnly allocates thread-local DebugInvokeReq when the debugger requests\na thread to invoke a method. The JDWP thread allocates that structure\nthen attaches it to the target thread. When the thread is resumed, it\nexecutes the method. Once the invocation completes, the thread\ndetaches the DebugInvokeReq, signals the JDWP thread then suspends.\nFinally, the JDWP thread wakes up, prepares the reply with the invoke\nresult (or exception) and deallocates the DebugInvokeReq.\n\nAlso ensures GC safety for object returned by the invoke. We add the\nobject to the JDWP object registry right after the invoke. We now\nreference that object with a JDWP ObjectID instead of an Object* in\nthe DebugInvokeReq struct. This prevent from accessing a stale\nreference if the GC runs and moves the Object*.\n\nThis CL includes the following changes:\n- Move former DebugInvokeReq::ready flag to\n  Thread::tls_32bit_sized_values::ready_for_debug_invoke. It\u0027s needed\n  to know whether a thread has been suspended by an event, thus ready\n  to invoke a method from the debugger.\n- Remove DebugInvokeReq::invoke_needed: we now test if we attached a\n  DebugInvokeReq* to the thread.\n- Rename misleading FinishMethod function to RequestMethod.\n\nBug: 19142632\nBug: 18166750\nChange-Id: I351fb4eb94bfe69fcafb544d21d55ff35a033000\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0",
      "tree": "807b3c797483310ac23954c5eddb7441b91749c5",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 26 10:56:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 17:50:49 2015 +0000"
      },
      "message": "Change how we report exceptions to the debugger.\n\nThis is only a refactoring/cleanup. Bug fixes with respect\nto catch location, and more cleanups will follow.\n\nChange-Id: I30d3c6260b0c8f8115a811621397225b88f2063a\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": "e4301ffb56f9be6f6c2640bfb1870b74f4a37ad2",
      "tree": "b21393462212ed0cf6a19e6a4454db9548ab48a2",
      "parents": [
        "17609db47537ea6da03db1be530ad13e67cf24db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 17 19:25:29 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 17 19:25:29 2015 -0800"
      },
      "message": "ART: Make run-tests more verbose\n\nMake run-tests log ERROR level on host. Adjust some internal LOG(ERROR)\nto LOG(WARNING). Add check scripts to adjust for other LOG(ERROR)\nmessages.\n\nBug: 18713034\nChange-Id: I2a3e055baa6a0e31f106364c300c20963a59ed94\n"
    },
    {
      "commit": "597c4f0aeafed2b6fa69e53ece4be4f53115d707",
      "tree": "71e374bcc1600810fcf0b25b3194bb65ef2dbf2a",
      "parents": [
        "081d27817608c2ea035f2473c4ea1062a79bccef"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jan 26 17:37:14 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jan 26 20:15:02 2015 +0100"
      },
      "message": "JDWP: allocate single step control only when active\n\nOnly allocates SingleStepControl when a single step is requested in\na thread.\n\nBug: 19142632\nChange-Id: I830b7eaea86b516d3fac80ce14d41c66b4bd5415\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": "988939683c26c0b1c8808fc206add6337319509a",
      "tree": "876e94428276547a29c27ccf17509a42dfe7cda1",
      "parents": [
        "59add47cabce3735ccd470cd3b5dac8b112e09ab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 12:32:32 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 21 18:50:25 2015 +0000"
      },
      "message": "Enable core callee-save on x64.\n\nWill work on other architectures and FP support in other CLs.\n\nChange-Id: I8cef0343eedc7202d206f5217fdf0349035f0e4d\n"
    },
    {
      "commit": "e34fa1df67fbe0173b4ea9abddcc3ae3d0537037",
      "tree": "a5148f079b5671a95f60910c41981ebf91db3a02",
      "parents": [
        "9f06b1946ae3ef1d2fd75bbf7f0a288bc611fe58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 14 14:55:47 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 12:23:28 2015 -0800"
      },
      "message": "Print more info in MarkSweep::VerifyRoot\n\nRefactored old root callback to use a new class called RootInfo.\nRootInfo contains all the relevant info related to the root\nassociated with the callback. The MarkSweep::VerifyRoot function\nnow uses this info to print the StackVisitor\u0027s described location\nif the GC root is of the type kRootJavaFrame.\n\nSome other cleanup.\n\nExample output:\nE/art     (12167): Tried to mark 0x123 not contained by any spaces\nE/art     (12167): Attempting see if it\u0027s a bad root\nE/art     (12167): Found invalid root: 0x123 with type RootJavaFrame\nE/art     (12167): Location\u003dVisiting method\n\u0027void java.lang.Runtime.gc()\u0027 at dex PC 0xffffffff (native PC 0x0)\nvreg\u003d0\n\n(cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a)\n\nBug: 18588862\nChange-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f\n"
    },
    {
      "commit": "1de532495b2669ce4fae9b9d20848d78d83813d8",
      "tree": "362fff8964f1f2cd52beaf5b7445cb117f9c2dc4",
      "parents": [
        "25d034cedea702c1f9ecb7a3a3ca977b07b9c3ba",
        "0a18df82f4dea95b7398f8c934341fccbf04eeee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "message": "Merge \"Clean up some #ifdefs.\""
    },
    {
      "commit": "0a18df82f4dea95b7398f8c934341fccbf04eeee",
      "tree": "125c8285763ffc6d9c00b27eaed6a7aad5b317ee",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "message": "Clean up some #ifdefs.\n\nOnly the Mac doesn\u0027t have POSIX clocks. (And it still doesn\u0027t, a decade\nlater.)\n\nglibc gained pthread_setname_np in 2.12.\n\nOnly the Mac doesn\u0027t have prctl.\n\nChange-Id: I218e409f7e133736e15fb68e8a254cdc5799d667\n"
    },
    {
      "commit": "bef89c910dc40f7e82ee56c3c8e8fdaa0cd5562b",
      "tree": "42a5a28ce6c8f3a0f51067397f989a0be457ec6c",
      "parents": [
        "46af48acf4221a7f819d58dfffb576d0523ae285"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 09 09:46:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 09 10:01:41 2015 -0800"
      },
      "message": "Fix HandleScope with wrong thread error\n\nPossibly fixes\n+art F  5127  6995 art/runtime/handle_scope-inl.h:43]\nCheck failed: top_handle_scope \u003d\u003d this\n(top_handle_scope\u003d0x2b449293c770, this\u003d0x2b4492d6a0a8)\nSeen in tests. A possible cause was that the thread dumping stacks\nwas running checkpoints on a suspended thread but putting a\nHandleScope on that thread instead of itself. This isn\u0027t safe if the\nsuspended thread is doing HandleScope stuff in a non runnable state.\n\nChange-Id: Icdaadabca5aff8d380d5cc9570b9e899fe790a62\n"
    },
    {
      "commit": "e6a8eec3a5db28de7d5db6d78e38033b80740e49",
      "tree": "a87d70ae8935be1a9ad90a718d977a9169936fbd",
      "parents": [
        "af56baf94d0573df89b97f441df7ff4dea42786e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:17:57 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:25:27 2015 -0800"
      },
      "message": "Fix frequent gcstress ThreadStress crash\n\nCalling IdentityHashCode before PrettyTypeOf was causing occasional\nstale root errors since IdentityHashCode can cause thread suspension.\n\nCleaned up VisitLocks.\n\nBug: 18766916\nChange-Id: I7679539877e48a8c9aadb8a34718404ebce98d25\n"
    },
    {
      "commit": "4306ef8a7ec8e3887e51f64e80d940d974cc3ac3",
      "tree": "5afff3c97de1458886154aa5e84e1c0ae0edf11f",
      "parents": [
        "d30feca670d0af02783bbdfd4a29c5078c18bdc5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 19 18:41:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:12:18 2015 -0800"
      },
      "message": "Don\u0027t allow suspension from FindLocksAtDexPc\n\nTransitioning to suspended from runnable sometimes runs dump\ncheckpoints in ThreadStress which can cause deadlocks. This happens\nsince FindLocksAtDexPC runs the verifier which calls\nAllowThreadSuspension. This results in a blocked thread which holds\nthe monitor lock, and if another thread tries to do a monitor enter,\nit deadlocks while holding the mutator lock (assuming the GC is\nsuspending all).\n\nThe fix for avoiding this deadlock is not calling\nAllowThreadSuspension from FindLocksAtDexPc.\n\nBug: 18576985\nChange-Id: I7e5faaf3bbbd5b5f680de95d53c33b5106705b0c\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": "a1b94c6d06e3cf2aa4f3aa42a1133995a4d8a1fb",
      "tree": "f17b6e4a2182a1678a0a52f6728ed1624ec1d1a9",
      "parents": [
        "e9231c0aecc013c61b6cf7f88a228204651d4d41"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Dec 17 15:49:56 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Dec 17 19:29:10 2014 -0800"
      },
      "message": "Fix a race condition during the rosalloc verification.\n\nSince an exiting thread could revoke its thread-local runs without\nholding the mutator lock, when rosalloc verification is running at a\npause, the thread could concurrently modify runs and cause a race\ncondition/verification check failure.\n\nNow an exiting thread acquires the mutator lock when it revokes its\nthread-local runs, which should avoid the race condition.\n\nBug: 18734151\nBug: 18577084\nChange-Id: Ic8af558b96dff6fb6f5ace65351e2824a6ff4629\n"
    },
    {
      "commit": "956af0f0cb05422e38c1d22cbef309d16b8a1a12",
      "tree": "b558c804d206dad8da648b815750f1b3c97610ae",
      "parents": [
        "407d77f344cfbdbbfb50531c5f0766bc0892e2fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 11 14:34:28 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 09:33:34 2014 -0800"
      },
      "message": "Remove portable.\n\nChange-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc\n"
    },
    {
      "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": "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": "957ca1cd025104fccb0b08928f955f9bdb4ab91c",
      "tree": "913ceffe992bb25898ac79977b47dc2af8b3354b",
      "parents": [
        "4d3ed1a6f34bd31ed30faaca0433cf2a4b19bb7b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 21 16:51:29 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 24 10:44:33 2014 -0800"
      },
      "message": "Delete ArtMethod gc_map_ field\n\nMoved the gc_map field from OatMethod to OatQuickMethodHeader.\nDeleted the ArtMethod gc_map_ field.\n\nBug: 17643507\n\nChange-Id: Ifa0470c3e4c2f8a319744464d94c6838b76b3d48\n\n(cherry picked from commit 807140048f82a2b87ee5bcf337f23b6a3d1d5269)\n"
    },
    {
      "commit": "e26310320e7ee7bdfcdf340d2e66f216f1d90aa6",
      "tree": "09fd909f736572ef8a2fd54f5fc2bbe7e08e53ed",
      "parents": [
        "022b46cb09a6189797fb3e77dbe7673a3d59249f",
        "acbb30867482986e02a7cc53c099b8d56d32acee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Nov 22 02:23:05 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Nov 22 02:23:06 2014 +0000"
      },
      "message": "Merge \"Fix UnimplementedEntryPoint initialziation.\""
    },
    {
      "commit": "a7dd0386f35c0ba4aef3f5b16bc84c6f4e2fc702",
      "tree": "86bcc8c05fb3f868dbdae3dcacbf95de880d4d64",
      "parents": [
        "af6dad6cbb6685f92d7274f9e8c45baa98232c79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 20 17:08:58 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 21 10:11:41 2014 -0800"
      },
      "message": "Fix oatdump to use OatHeader pointer size\n\nBug: 18473190\nChange-Id: If505b4f62105899f4f1257d3bccda3e6eb0dcd7c\n\n(cherry picked from commit c934e483ceabbd589422beea1fa35f5182ecfa99)\n"
    },
    {
      "commit": "445120568460cae68d37a27ac39477fbf20952fc",
      "tree": "0b36b90a5fe22ab58d220b282f9fd34c9d7a3e31",
      "parents": [
        "59321e0e10ea09694efecf6154704e2743b9bffd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 12 15:41:57 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 12 16:03:21 2014 +0000"
      },
      "message": "Fix bad OOM check in Thread::CreatePeer().\n\nBug: 18342629\n\n(cherry picked from commit 7bcea103af7cd130254835a30b45d5277a478074)\n\nChange-Id: I5d5c7511bbc705d040095f4934d98d326d54d39e\n"
    },
    {
      "commit": "b5c49cf896480e993aa0e087646b40ac325876f8",
      "tree": "48e82f095bd018e0a83e4f12752c4823aa661214",
      "parents": [
        "3eb2abbe3ddb419ff5b2c16d7c5dee15c755af62",
        "f4d4da18aa1914d10264082bd0433f59bff45453"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 12 00:15:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 12 00:15:58 2014 +0000"
      },
      "message": "Merge \"Allow JNI AttachCurrentThread to fail if not enough stack.\""
    },
    {
      "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": "e07fd17f3c45034470eb6f5a265152a39854995c",
      "tree": "5271ec9726d821aa23a6573ed5bd50083ebd11f4",
      "parents": [
        "4c9c251c2a32cd8d1be21bc47a9188358cb9f17f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 16:58:19 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 11 09:42:17 2014 -0800"
      },
      "message": "Add null check for thread name creation\n\nPreviously we didn\u0027t check for null which could result in check jni\nfailures if we tried to throw another OOM in the next allocation.\n\nBug: 18297817\n\n(cherry picked from commit a7ade888ab99b1453571d14c41d4a0322c400fcd)\n\nChange-Id: Ideef46f4900e546e81fbd9a5225c06698f36e9ac\n"
    },
    {
      "commit": "a0b34518cf3f3801407624d95846f8ff90c05d25",
      "tree": "1f1df690f6018c415215792a96cb7c7ded9dd9fd",
      "parents": [
        "88af00a788002196e6f98acd3748f3f4956032bf"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Oct 07 12:51:26 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Nov 07 12:51:48 2014 +0000"
      },
      "message": "Fix thread priorities for unstarted threads.\n\nCalls to Thread.setPriority for unstarted threads now behave\nsimilar to dalvik. Note that there\u0027s still some inconsistent\nbehaviour carried over from dalvik.\n\n- high priority threads from bg_non_interactive processes are\n  not always moved to the SP_FOREGROUND cgroup.\n- we do not attempt to adjust the cgroup of a native thread\n  that\u0027s attaching.\n\nNote that on android, the system_server will change the\ncgroups for all running threads in a process when it moves\ninto the foreground and background. It\u0027s by design that\nthreads in a background process can request to be moved\nto the foreground by setting a higher priority.\n\nbug: 17893086\n\n(cherry picked from commit 1bd326a5e2aaff06a5bcae9cb2c42a4e8de31401)\n\nChange-Id: Iad362f7c5c8697c349f2b6d7fcba69a4e141883e\n"
    },
    {
      "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": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "aea6888b056be21adf762e066c7f33b8939b8a06",
      "tree": "bfa17655ed3060b41e1cfd1583e590e9d9042f0a",
      "parents": [
        "b08f4dcf90215ed49e0b796ab3e609bd605be8ba",
        "c7dd295a4e0cc1d15c0c96088e55a85389bade74"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 19:10:23 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 22 19:10:24 2014 +0000"
      },
      "message": "Merge \"Tidy up logging.\""
    },
    {
      "commit": "c7dd295a4e0cc1d15c0c96088e55a85389bade74",
      "tree": "0c08a2236bc9ba5d9a4dc75d4dd0ed2d76f8f1c6",
      "parents": [
        "94e5af8602150efa95bde35cc9be9891ddf30135"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 23:31:19 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 12:06:23 2014 -0700"
      },
      "message": "Tidy up logging.\n\nMove gVerboseMethods to CompilerOptions. Now \"--verbose-methods\u003d\" option to\ndex2oat rather than runtime argument \"-verbose-methods:\".\nMove ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc\nexcept for a forward declaration.\nRemove ConstDumpable as Dump methods are all const (and make this so if not\ncurrently true).\nMake LogSeverity an enum and improve compile time assertions and type checking.\nRemove log_severity.h that\u0027s only used in logging.h.\nWith system headers gone from logging.h, go add to .cc files missing system\nheader includes.\nAlso, make operator new in ValueObject private for compile time instantiation\nchecking.\n\nChange-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641\n"
    },
    {
      "commit": "2da28f2a9e79a09a4044521dc4d00320fcdcd041",
      "tree": "e583356c63ba21bfbbbb55b5c57ac2e5f3ce7fbe",
      "parents": [
        "099dbe841ebc39cee24f1245f86657b193f2c5cc",
        "dfafeef139dbc77e86fdb465d960b4a17a7ac4a0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Oct 22 12:59:46 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 22 12:59:47 2014 +0000"
      },
      "message": "Merge \"Fixed debugger for threads attached from JNI\""
    },
    {
      "commit": "1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5",
      "tree": "6a1b0f49aee5a97b513bd0becc734d284aa7fb65",
      "parents": [
        "1c1786f193323d3bd706463894001117f3471595"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 22 22:51:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 20 16:01:28 2014 -0700"
      },
      "message": "Refactor quick entrypoints\n\nRemove FinishCalleeSaveFrameSetup.\nAssembly routines write down anchor into TLS as well as placing runtime\nmethod in callee save frame.\nSimplify artSet64InstanceFromCode by not computing the referrer from the\nstack in the C++ code.\nMove assembly offset tests next to constant declaration and tidy arch_test.\n\nChange-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8\n"
    },
    {
      "commit": "dfafeef139dbc77e86fdb465d960b4a17a7ac4a0",
      "tree": "2eaaa8b16f58ba8e7c73167b0996f373d84009ad",
      "parents": [
        "8946e41dcce414dc3359c23d93e001f91d186612"
      ],
      "author": {
        "name": "Daniel Mihalyi",
        "email": "daniel.mihalyi@mattakis.com",
        "time": "Mon Oct 20 11:47:56 2014 +0200"
      },
      "committer": {
        "name": "Daniel Mihalyi",
        "email": "daniel.mihalyi@mattakis.com",
        "time": "Mon Oct 20 11:50:52 2014 +0200"
      },
      "message": "Fixed debugger for threads attached from JNI\n\nDbg::PostThreadStart was not invoked in Thread::Attach,\nthus when attaching existing native thread to JNI, JDWP\nevents from that thread are not handled correctly by the\ndebugger, because the thread keeps being unannounced.\n\nThe issue was reproduced on Eclipse 4.3 and 4.4.\n\nChange-Id: I9a330f5cb96857862b18f37047ef87646a1f2aa2\nSigned-off-by: Daniel Mihalyi \u003cdaniel.mihalyi@mattakis.com\u003e\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "acbb30867482986e02a7cc53c099b8d56d32acee",
      "tree": "349d95679955ff98c2a570cbbe45b3d3466d8040",
      "parents": [
        "8fd9bc91c0511c3d17618b1f33df0ee85ef429ab"
      ],
      "author": {
        "name": "Xingxing Pan",
        "email": "xxingpan@gmail.com",
        "time": "Thu Oct 16 13:41:58 2014 +0800"
      },
      "committer": {
        "name": "Xingxing Pan",
        "email": "xxingpan@gmail.com",
        "time": "Thu Oct 16 13:41:58 2014 +0800"
      },
      "message": "Fix UnimplementedEntryPoint initialziation.\n\nChange-Id: I16c4a8869a210008eede244fc3e5388d882ccaf5\nSigned-off-by: Xingxing Pan \u003cxxingpan@gmail.com\u003e\n"
    },
    {
      "commit": "5eaff90846d34434c1a67f61ccd09a3d52e4246b",
      "tree": "62935cac22b0df592d61e16f243132682be0b95c",
      "parents": [
        "986c6fbb5f65006165f8b7fed1fd105fb3a83bd9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 15:57:19 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 12 14:11:57 2014 -0700"
      },
      "message": "Handlerize throw location in DumpJavaStack\n\nHandlerize this object and method during DumpJavaStack.\nBug: 17669899\n\n(cherry picked from commit 79ffe35fa0784f26c2d25242ea1b3ce300a009cb)\n\nChange-Id: Id090daaa2eef8cd445e52cbbe71b2e2ed7fef2fe\n"
    },
    {
      "commit": "986c6fbb5f65006165f8b7fed1fd105fb3a83bd9",
      "tree": "c28ceb501be5d846b4f3fb7ad45b0f9e8c04b4bd",
      "parents": [
        "b71c9d7a6a26070d302b97a95a0fecc0acc73e87"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 02 21:00:06 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 12 14:11:29 2014 -0700"
      },
      "message": "ART: Stash any exception before dumping a stack\n\nDumping a managed stack entails dumping held locks, in the process\nof which the verifier will be run. The verifier works under the\nassumption that there were no exceptions when started. This\nassumption is violated for example on certain JNI aborts.\n\nThe solution is to stash any pending exception before dumping the\nstack, and re-installing it afterwards.\n\nBug: 17669899\n\n(cherry picked from commit d87bc135dba41f0f21cf0018a3b2cb46809890d7)\n\nChange-Id: Ic44780bad90a8e1ba80858c807e2bef3bf6651c6\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "c8ccf68b805c92674545f63e0341ba47e8d9701c",
      "tree": "fb360323538cb242ebf7c5c0aca27d3a0bce0abb",
      "parents": [
        "fcabfbe577c0fd40910b565beb681bd4b66f6c5d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:07:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:13:48 2014 -0700"
      },
      "message": "ART: Fix some -Wpedantic errors\n\nRemove extra semicolons.\n\nDollar signs in C++ identifiers are an extension.\n\nNamed variadic macros are an extension.\n\nBinary literals are a C++14 feature.\n\nEnum re-declarations are not allowed.\n\nOverflow.\n\nChange-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a\n"
    },
    {
      "commit": "2366f4e4432d8644404de8c9f9d6a8f2f0b329ff",
      "tree": "6abf280dc5ba3ff568b3c11368b2ad481dee7022",
      "parents": [
        "4266fd721b17f1a95de619c55f69dff16f768662"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 19 17:23:59 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Sun Sep 21 16:17:56 2014 -0700"
      },
      "message": "Dump kernel/native stacks of pure native threads.\n\nBug: 16463406\n\n(cherry picked from commit 7da37cca5a5f71a0cd2442b2a119f76fa62e84b5)\n\nChange-Id: I22a26d4ec4e3048ddcfd668eee4fccd8b2b3b727\n"
    },
    {
      "commit": "b2f5dbb85bef25eb911dbea119ed8d6450fd6f8c",
      "tree": "dfbb860b60e5108489a94701177aab61c8b32b31",
      "parents": [
        "a20b7b3ecf90bb761d7085403782721f2fb474c5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 16 15:15:13 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 17 14:47:29 2014 -0700"
      },
      "message": "ART: Avoid recursive abort on thread dump\n\nAlso clean up unused variable.\n\nBug: 15567083\nChange-Id: Id83a3784bbe88520a4ffe654b2553d36a7b8e5bc\n(cherry picked from commit 2f9e21503c2b6958213f9a2610023c7ab8a01707)\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "3946844c34ad965515f677084b07d663d70ad1b8",
      "tree": "0d85bfba2ff69c34a2897351d1e50a1464509305",
      "parents": [
        "e2c23739c6395a83b30ece38f8a2e9e1bf7cf3ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 02 15:17:15 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 08 12:15:07 2014 +0100"
      },
      "message": "Runtime support for the new stack maps for the opt compiler.\n\nNow most of the methods supported by the compiler can be optimized,\ninstead of using the baseline.\n\nChange-Id: I80ab36a34913fa4e7dd576c7bf55af63594dc1fa\n"
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "839cc30467d51414e8185eee6101e19f5ab20871",
      "tree": "dc6ff18729eb3180140bb1cd71e17b8ab9c443b7",
      "parents": [
        "83c115930b403db2b6b38d9dcb4828e31feb792f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 10:24:44 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 10:27:43 2014 -0700"
      },
      "message": "Move the glibc unlimited stack hack into GetThreadStack.\n\nOptional cleanup that was previously a TODO.\n\nBug: 17111575\nChange-Id: I7c20dbf1fdbcaf4604d7b55552930c10e166539d\n"
    },
    {
      "commit": "6d3fc5615612e500a00aba0a0d331436fae8d996",
      "tree": "5a6426ee19d6398dbc38175b53a71a0b1fb7fad0",
      "parents": [
        "dbc0ca70bcee22561c2f0ab7129a7721369e9aea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 27 11:47:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 28 09:56:32 2014 -0700"
      },
      "message": "Actually ask the pthread implementation for the stack guard size.\n\n(cherry-pick 307091dc306c34ce9e4ee6cc3b467807b3a3bd12.)\n\nBug: 17111575\nChange-Id: I23919b1e8aeff627a65daf57f1109bec60b196cc\n"
    },
    {
      "commit": "8ce6b9040747054b444a7fa706503cd257801936",
      "tree": "04712170addb252d307ef9015abfc9bfc2b73581",
      "parents": [
        "a0a0da29e7d4d5c1bd471c49f1a4b6ec98fb767a"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Aug 26 11:07:58 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Aug 27 12:47:44 2014 -0700"
      },
      "message": "Handle nested signals\n\nThis allows for signals to be raised inside the ART signal handler.\nThis can occur when the JavaStackTraceHandler attempts to generate\na stack trace and something goes wrong.\n\nIt also fixes an issue where the fault manager was not being\ncorrectly shut down inside the signal chaining code.  In this\ncase the signal handler was not restored to the original.\n\nBug: 17006816\nBug: 17133266\n\n(cherry picked from commit fabe91e0d558936ac26b98d2b4ee1af08f58831d)\n\nChange-Id: I10730ef52d5d8d34610a5293253b3be6caf4829e\n"
    },
    {
      "commit": "8e219ae27624116b6d23e858fb21e93342f81d66",
      "tree": "a685be4079ff6c506630b720eb50226d16848005",
      "parents": [
        "0b05ec674139c2b2e0914b0bb0e1898f93a9c852"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 19 14:29:46 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 26 15:28:07 2014 -0700"
      },
      "message": "Reduce interpret-only compile time.\n\nBefore:\n39.04user 5.18system 0:29.24elapsed 151%CPU (0avgtext+0avgdata 164176maxresident)k\n38.87user 5.16system 0:29.14elapsed 151%CPU (0avgtext+0avgdata 164144maxresident)k\n\nAfter:\n36.26user 3.25system 0:27.00elapsed 146%CPU (0avgtext+0avgdata 162592maxresident)k\n36.25user 3.28system 0:26.28elapsed 150%CPU (0avgtext+0avgdata 162688maxresident)k\n\nDisabled implicit stack protection for the compiler, this reduces page faults.\n\nAdded support for not timing every method compilation and verification. NanoTime is\nslow and adds ~2 seconds of real time. This is currently enabled since people want\nto know which methods are slow to compile.\n\nBug: 16853450\n\nChange-Id: I349ffb3f36db8c437137387aa6914dc17d743f09\n"
    },
    {
      "commit": "0b05ec674139c2b2e0914b0bb0e1898f93a9c852",
      "tree": "6194445d3ff4a6e629612b25a0a09c93b94e4955",
      "parents": [
        "3b6711faf7b0b10eaa6c48ba854160bcecd00166",
        "d9efea646485fe996c967f4680a3fc4cdc40b251"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 26 17:55:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 26 17:55:56 2014 +0000"
      },
      "message": "Merge \"ART: Improve error message on oat writer failure\""
    },
    {
      "commit": "d9efea646485fe996c967f4680a3fc4cdc40b251",
      "tree": "3fd198f4c7a21e34d1130d5bcda20d892fb21b07",
      "parents": [
        "e18aa4316eb9a15cd6b1051f27a1ce49967c170e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 22:56:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 26 10:54:56 2014 -0700"
      },
      "message": "ART: Improve error message on oat writer failure\n\nTry to log the pending exception to help resolve issues.\n\nBug: 16406811\nChange-Id: I035ae9e59a5ee02b9e90c35c0644ec088d3c7d12\n"
    },
    {
      "commit": "37f05ef45e0393de812d51261dc293240c17294d",
      "tree": "7c7793862efa52e1deb42babbdcb652c245ab941",
      "parents": [
        "e25826e28ea65d9c1aa23f84788a091c677b20c7"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jul 16 18:38:08 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 11:16:53 2014 -0700"
      },
      "message": "Reduced memory usage of primitive fields smaller than 4-bytes\n\nReduced memory used by byte and boolean fields from 4 bytes down to a\nsingle byte and shorts and chars down to two bytes. Fields are now\narranged as Reference followed by decreasing component sizes, with\nfields shuffled forward as needed.\n\nBug: 8135266\nChange-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752\n"
    },
    {
      "commit": "216cf23663789b06508f65f6dc0a72f181c9c03a",
      "tree": "50d22e90c580654957d616208cdafdb53f9e5b18",
      "parents": [
        "10dac8ee833a297ad0ffc5877305f2d132259478"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Aug 18 15:49:51 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Aug 19 19:00:43 2014 -0700"
      },
      "message": "Workaround problem reading main stack on intel devices.\n\nThis works around a problem where ART can\u0027t read the lowest page\nof the main stack.  The workaround is to add 4K to the stack\nstart address on the main stack on Intel.\n\nPlease see https://b2.corp.google.com/issues/17111575 for\nunderlying cause.\n\nCherry picked from d970bac690baa6f735b0cd187440546869088a0f\n\nBug: 17031544\nChange-Id: Ifc3216e10160bb1eec9d989fd57b10345bc89537\n"
    },
    {
      "commit": "b090a18e4292dc339a3b2668bf6dc855928dee3a",
      "tree": "fa12ca73ca33f48e2d2a1539db830a63996f8161",
      "parents": [
        "75dd98835859ca98c9f98339da8b64640d09a175"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Aug 14 17:02:48 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Aug 19 09:30:39 2014 -0700"
      },
      "message": "Merge stack usage reduction for overflow checks\n\nCherry pick from: b038ba66a166fb264ca121632f447712e0973b5b\n\nChange-Id: I19999e72ff731d4fc73d91b9ff767de5858c15ee\n"
    },
    {
      "commit": "3ea69c0abce1b81b3c45033867d49b00e6d6b709",
      "tree": "0bad76473a1c146a9ddc2d9fcaec32c945365d4d",
      "parents": [
        "506a79fd8a698911b5a82575eed59b9320ae97cd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 18 15:38:34 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 18 15:39:27 2014 -0700"
      },
      "message": "AttachCurrentThread should only warn on missing thread name if CheckJNI is enabled.\n\nBug: 17108693\nChange-Id: I346cc090e091605c552e5954d7ea1ca4874cea5f\n"
    },
    {
      "commit": "956a5228276693a7317ae6b41bfe7a7f0f3cbe6b",
      "tree": "4fb359d422d2d7af04f1b9dc9b8b5d6f268b138b",
      "parents": [
        "078f4ea927b3259d698ca3dd542a096943e2cccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 16 13:41:10 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 09:40:40 2014 -0700"
      },
      "message": "ART: Do not recursively abort when visiting locks in a bad state\n\nThis avoids a nested abort in VisitLocks.\n\nBug: 17080621, 16382675\n\n(cherry picked from commit 760172c3ccd6e75f6f1a89d8006934e8ffb1303e)\n\nChange-Id: Id604976ac9dcac0e319fb25cab4d2cbc98d7ee24\n"
    },
    {
      "commit": "7b1bf42dbc765524d54d45a70cb7eb1cccf0c617",
      "tree": "bb545f5a5586e6e249c9dbf892292c9bb463c108",
      "parents": [
        "e8bf3df2bcc61c12a7e66b4995a083f9ed3939e0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 19:54:09 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 19:54:09 2014 -0700"
      },
      "message": "ART: Fix mac build\n\nis_main_thread is unused in the case of a mac.\n\nChange-Id: Ib0658b622f261e09dbe1c7592fa802a484ba7f94\n"
    }
  ],
  "next": "648d7112609dd19c38131b3e71c37bcbbd19d11e"
}
