)]}'
{
  "log": [
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "c60e1b755c5632dfeb04c333489ede52ee5c945f",
      "tree": "9582a0ffc99e4ad11dcd5d95dd97b09bc6acc5bf",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "message": "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS\n\nUse the proper define.\n\nChange-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085\n"
    },
    {
      "commit": "e34c71ce21dbc9fac3427df887e90e1311b6fa8e",
      "tree": "567e525f1b38049e39a93a734d136cd34f0ac2bd",
      "parents": [
        "f16474d08ed51a3ccfaa70360aefdf12ebc79da1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 24 09:37:39 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 24 09:42:27 2015 -0700"
      },
      "message": "Increase alt signal stack to 32K on host.\n\nOn host, when there is a crash, the code tries to do an unwind\nfrom the signal handler. Under some conditions this can require\na stack larger than 16K, so increase this value to 32K.\n\nThe symptom of this is that you get an empty backtrace running\nart tests when there is a crash.\n\nBug: 21949571\nChange-Id: I8306da55e35212a0f349e43a7f2ad546e8da8c76\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": "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": "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": "c24a1e00b13a7ebf10dd896f6a18b1ad09617ec7",
      "tree": "51ba2eb0a5c77ad8c347544be58f3512a827f30c",
      "parents": [
        "e39a5e1ced3d2b87974c646678dd719c02a9a010"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 13 14:37:26 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 13 14:37:26 2014 -0700"
      },
      "message": "Ensure alternate signal stack is minimum size.\n\nOn Mac a sigaltstack may need to be 32KB, setting it to 16KB causes\nsigaltstack to fail.\n\nChange-Id: I87f315ae2fb6be4db40a34b350ad5789ff76c113\n"
    },
    {
      "commit": "dfd3b47813c14c5f1607cbe7b10a28b1b2f29cbc",
      "tree": "b71dbae2ef905c08eb4cf615c8b44868cc314531",
      "parents": [
        "8b62dc0f993d0445401655fc274e5225498fa81c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Jul 16 16:04:32 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Aug 07 09:26:35 2014 -0700"
      },
      "message": "Add implicit checks for x86_64 architecture.\n\nThis combines the x86 and x86_64 fault handlers into one.  It also\nmerges in the change to the entrypoints for X86_64.\n\nReplaces generic instruction length calculator with one that only\nworks with the specific instructions we use.\n\nBug: 16256184\n\nChange-Id: I1e8ab5ad43f46060de9597615b423c89a836035c\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\n"
    },
    {
      "commit": "0025a86411145eb7cd4971f9234fc21c7b4aced1",
      "tree": "933b8b96ea970c23a7b3ce313c7c6d46f807dadd",
      "parents": [
        "7fb36ded9cd5b1d254b63b3091f35c1e6471b90e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 11 08:26:40 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 11 08:26:40 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add implicit null and stack checks for x86\"\"\"\n\nBroke the build.\n\nThis reverts commit 7fb36ded9cd5b1d254b63b3091f35c1e6471b90e.\n\nChange-Id: I9df0e7446ff0913a0e1276a558b2ccf6c8f4c949\n"
    },
    {
      "commit": "7fb36ded9cd5b1d254b63b3091f35c1e6471b90e",
      "tree": "eb1e3b96efd67cc6b84a6f7e35522f33973ca8db",
      "parents": [
        "93279da4a8475d187a0a2e75d50c88def5b4b8a5"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 02:05:10 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 21:24:47 2014 +0000"
      },
      "message": "Revert \"Revert \"Add implicit null and stack checks for x86\"\"\n\nFixes x86_64 cross compile issue.  Removes command line options\nand property to set implicit checks - this is hard coded now.\n\nThis reverts commit 3d14eb620716e92c21c4d2c2d11a95be53319791.\n\nChange-Id: I5404473b5aaf1a9c68b7181f5952cb174d93a90d\n"
    },
    {
      "commit": "3d14eb620716e92c21c4d2c2d11a95be53319791",
      "tree": "aadce4d6bb70e549b74b537c6f75617cf533576a",
      "parents": [
        "34e826ccc80dc1cf7c4c045de6b7f8360d504ccf"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 01:54:57 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Jul 10 01:54:57 2014 +0000"
      },
      "message": "Revert \"Add implicit null and stack checks for x86\"\n\nIt breaks cross compilation with x86_64.\n\nThis reverts commit 34e826ccc80dc1cf7c4c045de6b7f8360d504ccf.\n\nChange-Id: I34ba07821fc0a022fda33a7ae21850957bbec5e7\n"
    },
    {
      "commit": "34e826ccc80dc1cf7c4c045de6b7f8360d504ccf",
      "tree": "76901cff2cddd6d30cb7a4e83ad4e0c9bb673fe1",
      "parents": [
        "c21dc06adc8c8447561208a3fb72ccf6d0443613"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu May 29 08:20:04 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Jul 09 16:19:59 2014 -0700"
      },
      "message": "Add implicit null and stack checks for x86\n\nThis adds compiler and runtime changes for x86\nimplicit checks.  32 bit only.\n\nBoth host and target are supported.\nBy default, on the host, the implicit checks are null pointer and\nstack overflow.  Suspend is implemented but not switched on.\n\nChange-Id: I88a609e98d6bf32f283eaa4e6ec8bbf8dc1df78a\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "d6a23bd327c38b08aaf6846d426fd6824fe9780b",
      "tree": "73dd31e20ce3a6cf13d55e91bc89ab0638dbd5d1",
      "parents": [
        "1754938e68bf53d674ffac364336a5dd2f3a60f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 14:19:52 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 14:19:52 2013 -0700"
      },
      "message": "Don\u0027t manually mess with sigaltstack on Android any more.\n\nBionic now takes care of things.\n\nBug: 8557703\nChange-Id: I0510a193f2433eaf54c9c6ac3415c85b50a7f1d2\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "00e446e5d912100b831fdcdbc276e7c31447f0c4",
      "tree": "d21452a2da952a25aa2bd06d4e8f3bd921804252",
      "parents": [
        "335889ac12794803d6b2d72037b6a90fcdb1081a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 15:10:45 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 16:14:10 2012 -0700"
      },
      "message": "Switch to libcorkscrew for native stack traces.\n\nThis is both for the current thread (which backtrace(3) could do) and other\nthreads, which is functionality we didn\u0027t have on x86 before.\nWe jump through the appropriate hoops to get static symbols as well as dynamic\nones.\n\nAlso unify the existing native stack dumpers so they can share the best code.\n\nExample x86 check failure:\n\n  *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n  Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) fault addr 0xdeadd00d\n  Registers:\n      eax: 0x00000000    ebx: 0x55a966f0    ecx: 0x55d523c0    edx: 0x09225a50\n      edi: 0x559d9b84    esi: 0xfffd8bcc    ebp: 0x55a9aba0    esp: 0xfffd8b90\n      eip: 0x558e2e98                    eflags: 0x00010246 [ PF ZF IF ]\n       cs: 0x00000023     ds: 0x0000002b     es: 0x0000002b     fs: 0x00000007\n       gs: 0x00000063     ss: 0x0000002b\n  Backtrace:\n  \t#00 unwind_backtrace_thread+536 [0x55d76bb8] (libcorkscrew.so)\n  \t#01 art::DumpNativeStack(std::ostream\u0026, int, char const*, bool)+79 [0x55924fcf] (libartd.so)\n  \t#02 art::HandleUnexpectedSignal(int, siginfo*, void*)+1431814659 [0x5597cc23] (libartd.so)\n  \t#03 __kernel_rt_sigreturn [0x55573410] ([vdso])\n  \t#04 art::Runtime::Abort()+600 [0x558e2e98] (libartd.so)\n  \t#05 art::LogMessage::~LogMessage()+1052 [0x5580c16c] (libartd.so)\n  \t#06 art::EnsureResolved(art::Class*)+336 [0x5570dad0] (libartd.so)\n  \t#07 art::ClassLinker::FindClass(char const*, art::ClassLoader const*)+144 [0x5571bc90] (libartd.so)\n  \t#08 art::ClassLinker::FindSystemClass(char const*)+43 [0x5572287b] (libartd.so)\n  \t#09 art::ClassLinker::FinishInit()+82 [0x557228d2] (libartd.so)\n  \t#10 art::ClassLinker::InitFromImage()+1469 [0x5572451d] (libartd.so)\n  \t#11 art::ClassLinker::CreateFromImage(art::InternTable*)+60 [0x5572583c] (libartd.so)\n  \t#12 art::Runtime::Init(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e const\u0026, bool)+943 [0x558e882f] (libartd.so)\n  \t#13 art::Runtime::Create(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e const\u0026, bool)+119 [0x558e9057] (libartd.so)\n  \t#14 art::Dex2Oat::CreateRuntime(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e\u0026, art::InstructionSet)+42 [0x80ac68a] (dex2oatd)\n  \t#15 art::Dex2Oat::Create(std::vector\u003cstd::pair\u003cstd::string, void const*\u003e, std::allocator\u003cstd::pair\u003cstd::string, void const*\u003e \u003e \u003e\u0026, art::InstructionSet, unsigned int, bool)+60 [0x80ac87c] (dex2oatd)\n  \t#16 art::dex2oat(int, char**)+3167 [0x80894cf] (dex2oatd)\n  \t#17 main+17 [0x8086a01] (dex2oatd)\n  \t#18 __libc_start_main+230 [0x55c12bd6] (libc-2.11.1.so)\n\nExample x86 SIGQUIT dump (note the three stacks, and note the absence of all\nthe crap that makes dalvik\u0027s attempt so unreadable):\n\n  \"Thread-10\" prio\u003d5 tid\u003d11 VmWait\n    | group\u003d\"main\" sCount\u003d1 dsCount\u003d0 obj\u003d0x612d6620 self\u003d0x884f8f0\n    | sysTid\u003d30512 nice\u003d0 sched\u003d0/0 cgrp\u003ddefault handle\u003d1458686832\n    | schedstat\u003d( 1249502 8995 26 ) utm\u003d0 stm\u003d0 core\u003d14 HZ\u003d100\n    | stackSize\u003d1044KB stack\u003d0x57905000-0x57906000\n    kernel: futex_wait_queue_me+0xcd/0x110\n    kernel: futex_wait+0x1e5/0x310\n    kernel: do_futex+0x101/0xb00\n    kernel: compat_sys_futex+0x75/0x160\n    kernel: sysenter_dispatch+0x7/0x2e\n    native: __kernel_vsyscall+14 [0x5557342e] ([vdso])\n    native: pthread_mutex_lock+54 [0x55cd8bf6] (libc-2.11.1.so)\n    native: art::Mutex::Lock()+86 [0x55823a86] (libartd.so)\n    at java.lang.AbstractStringBuilder.\u003cinit\u003e(AbstractStringBuilder.java:75)\n    at java.lang.StringBuilder.\u003cinit\u003e(StringBuilder.java:54)\n    at java.lang.Thread.create(Thread.java:427)\n    at java.lang.Thread.\u003cinit\u003e(Thread.java:223)\n    at ThreadStress$1.run(ThreadStress.java:134)\n\nChange-Id: Id263e51a167bcfc623634f910e9d138a1f472db7\n"
    },
    {
      "commit": "ae80b493748c5b6ffe310a91c651e7043f4b2dae",
      "tree": "cb84ce54ebf1a29dc20889039af4219fcd09f9dd",
      "parents": [
        "b6636b8ef90221eaf7f4779eb2c2256f560d3e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 10:43:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 24 10:54:55 2012 -0700"
      },
      "message": "Include JNI details in the SIGQUIT output.\n\nAlso include the original command line (framework apps deliberately clobber\ntheir argv[]).\n\nChange-Id: I63e04cb637fa89764e8963f3d086806ae230e953\n"
    },
    {
      "commit": "34e069606d6f1698cd3c33b39e72b79ae27e1c7b",
      "tree": "0feb7e9bde6cfe01c0df3ef2d8de3210570f7ce2",
      "parents": [
        "e62934d85fbc2d935afdad57eeade39ecbd7440a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "message": "Remove the useless \"suspend count already zero\" message for new threads.\n\nWe can actually detect the expected case of this warning ourselves, and\nnot emit it. Then we can upgrade the WARNING to a FATAL.\n\nI also tripped over the fact that the operator\u003c\u003c for Thread::State was out\nof date, so I\u0027ve moved the Thread enums up to namespace scope so the script\ncan automatically generate correct operator\u003c\u003c implementations for us. (All\nthe high-numbered thread states have been off by one for a couple of weeks.)\n\nChange-Id: I5de573d33d641e5a3cba87b370e9620c8c66e633\n"
    },
    {
      "commit": "1bac54ffa933fbe9b92b62437577f2f4583eff1a",
      "tree": "a27134343ed3cd45a286c3a68b9a4469e70f13e7",
      "parents": [
        "96970cdab3e28511322ce37fa578f6eff8931d72"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "message": "Fix all our unused parameter warnings so we let GCC report them.\n\nThere were a couple of genuine bugs here (fixed), plus there\u0027s a missing\nfeature in trace.cc that I\u0027ve just added a TODO for.\n\nAlso note that I haven\u0027t touched the compilers; this warning is still\nexplicitly disabled for that code. I\u0027ll do that when there\u0027s less going\non in those directories.\n\nChange-Id: Ic3570bf82411a07c7530bfaf1995ac995b9fc00f\n"
    },
    {
      "commit": "ffb465f23d9549dd591e6aa62e9250523cb00233",
      "tree": "2108ba79a4ec8031faa56ef0806f93bc2217c237",
      "parents": [
        "71ac99485e79ad7eb1ba3ea2d404d53bb5784c13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 18:46:05 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 21:15:36 2012 -0800"
      },
      "message": "libcorkscrew native stacks, mutex ranking, and better ScopedThreadListLock.\n\nThis change uses libcorkscrew to show native stacks for threads in kNative or,\nunlike dalvikvm, kVmWait --- working on the runtime directly I\u0027ve found it\nsomewhat useful to be able to see _which_ internal resource we\u0027re waiting on.\nWe can always take that back out (or make it oatexecd-only) if it turns out to\nbe too noisy/confusing for app developers.\n\nThis change also lets us rank mutexes and enforce -- in oatexecd -- that you\ntake locks in a specific order.\n\nBoth of these helped me test the third novelty: removing the heap locking from\nScopedThreadListLock. I\u0027ve manually inspected all the callers and added a\nScopedHeapLock where I think one is necessary. In manual testing, this makes\njdb a lot less prone to locking us up. There still seems to be a problem with\nthe JDWP VirtualMachine.Resume command, but I\u0027ll look at that separately. This\nis a big enough and potentially disruptive enough change already.\n\nChange-Id: Iad974358919d0e00674662dc8a69cc65878cfb5c\n"
    },
    {
      "commit": "8daa0929f08a3080ea64dbd4e997e72f411e6fc9",
      "tree": "cecee23131d5e0357c17c44bcccc7ddcfb31b925",
      "parents": [
        "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 13:46:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 14:01:57 2011 -0700"
      },
      "message": "More threads work.\n\nAdds stubs (and sometimes implementations) for dalvik.system.VMStack and\njava.lang.Thread native methods. There was a bug in the dalvik\nthread priority setting code, where the current thread and the passed-in\nthread were confused.\n\nI\u0027ve also pulled Mutex and ThreadList out into their own files, and\nmoved some functionality around (with the aim of having more stuff\nprivate, especially locks).\n\nChange-Id: Ieb0f22669cac3df44ca34f7868f8e7d4dfa09ab6\n"
    }
  ]
}
