)]}'
{
  "log": [
    {
      "commit": "73cca6ff8a8134ddbf56c8aef80bb3cc46b83a7d",
      "tree": "e86f0f8db05388cb9daa17df58969fa1d0c5f7fc",
      "parents": [
        "0b4e3ef67508a0b8c121b6b26ab5ea0a1d8e7141"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 02 17:40:28 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 02 17:41:59 2013 -0700"
      },
      "message": "Fix DDMS lock ordering error.\n\nRenamed kJdwpSerialLock to guard both the jdwp socket and serial.\nMoved the lock priority higher than the alloc space lock priority.\nThis is needed since walking the dlmalloc heap requires acquiring\nthe alloc space lock.\n\nChange-Id: Idce47ea8c400643829edc5aaebb57f8b686b2853\n"
    },
    {
      "commit": "5d10a87ea630b22180d3731018a70b77270c726e",
      "tree": "2fb3862dae77e6f4251b309548ececce621afac9",
      "parents": [
        "68a5e3c9115f9ba396563ce3b72df9cb036bc665"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 19:26:43 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 19:36:45 2013 -0700"
      },
      "message": "Remove the separate JdwpTransport objects.\n\nStructs containing nothing but function pointers? What are we? C programmers?\n\nChange-Id: I4fbc9dc0d8fc10557afa020b27cda85c939965c3\n"
    },
    {
      "commit": "68a5e3c9115f9ba396563ce3b72df9cb036bc665",
      "tree": "9392599e69f237afe8b0eadd1e4f785619e7c61f",
      "parents": [
        "8b788fea78e07218bd67760ca1f83335a7e63d23"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 17:13:35 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 17:13:35 2013 -0700"
      },
      "message": "More JDWP implementation cleanup.\n\ntsu was confused by some logging that turns out to have been a mistake;\nit basically meant \"DDMS is not listening\", which isn\u0027t generally interesting.\nThis patch relegates that to a VLOG(jdwp).\n\nThis patch also removes a bunch more of the adb/socket transport duplication.\n\nChange-Id: I50114da96ec32c20e11ea5ea76d5beba29f30214\n"
    },
    {
      "commit": "068193c6dd77e2204344ed75d1a25a4bc28fd7f4",
      "tree": "192ef9d004db26a45ff769a26630f7eeb58c4f3c",
      "parents": [
        "0920163b0ee4ce3fbf57db5506659de14b77be75"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 15 16:05:28 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 15 16:05:28 2013 -0700"
      },
      "message": "Add missing TEMP_FAILURE_RETRYs to the JDWP transports.\n\nBug: 8620431\nChange-Id: Id412c415c8a206a559928a8db90cf2dc01c9b7a2\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "0f827169742aad6209d830db773a101849c32a83",
      "tree": "df06bd3d9fa91757d2c87fbe891007184f823e9d",
      "parents": [
        "eb5cb608fcb0d636961653ad561b2c7ee40de1ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "message": "Fix JDWP ObjectRegistry lock ordering.\n\nAlso make debugging lock ordering violations nicer by using our\nLockLevel operator\u003c\u003c.\n\nChange-Id: Ic15ebe70363a90a09f6491bd5c336a604e9d6c48\n"
    },
    {
      "commit": "cb69306eefc1e6e42b3eaec8b479a268222b01b6",
      "tree": "5a0175557e5c17d7c1d9d0444f2c0112ca00146d",
      "parents": [
        "3afa4c1bae71f3d3cd7004b9b215facbdff22e63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 09:48:08 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 11:58:06 2013 -0800"
      },
      "message": "Clean up more of the JDWP request handling.\n\nThere are no longer any naked uint8_t*s; it\u0027s JDWP::Requests all the way.\n\nAlso remove a bunch of the adb/socket transport duplication.\n\nChange-Id: I0a33e393b54924d4ab9cc9f76fb346661931284f\n"
    },
    {
      "commit": "64f574f474aa77c72778640ab21f8cfa72546812",
      "tree": "c90d3ef8f56144e61a4a043138a5118c3c9e7b9a",
      "parents": [
        "492899e445c21f09db458c76d773d571cc6cc0ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 14:57:12 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 15:46:06 2013 -0800"
      },
      "message": "Implement EnableCollection, DisableCollection, IsCollected, and fix Exit.\n\nRewrites the object registry to not just be one big leak. We use jweaks\nby default, which means (a) the GC doesn\u0027t need to know anything about us\nand (b) we don\u0027t cause unnecessary heap retention. We promote to regular\nJNI global references if the debugger asks us to.\n\nThe problem with VirtualMachine.Exit turned out to be that you\u0027re supposed\nto send a success reply to the command before exiting. This is a bit awkward\nwith our current division of responsibilities, but it lets us pass another\ntest.\n\nAlso log a summary of our replies when -verbose:jdwp is in effect, not\njust the requests.\n\nChange-Id: Idb33e99fe7d8bee7a79152d81fee42e2af00852b\n"
    },
    {
      "commit": "a96836a4115ad08762567c10bd4d198c5b644985",
      "tree": "ae523d318a1936108b9f137af3681de930628aa1",
      "parents": [
        "fa011c82efce92a8e0e739ae9732b4c6f3903294"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:27:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:27:49 2013 -0800"
      },
      "message": "Improve -verbose:jdwp.\n\nMove toward automated logging instead of ad hoc logging in every command.\n\nChange-Id: I55427022374390745209677bae4e0b3146a9d126\n"
    },
    {
      "commit": "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461",
      "tree": "2350745da33df6fcb9fb0c9059e55ea5d5ea8f67",
      "parents": [
        "76b6167407c2b6f5d40ad895b2793a6b037f54b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:34:25 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:35:05 2012 -0800"
      },
      "message": "Move logging.h into base/logging.h.\n\nChange-Id: Id68f85f7c3a71b156cb40dec63f94d4fb827f279\n"
    },
    {
      "commit": "a77f0f68a59870ff027dad654fe31eb3fdaf3d5d",
      "tree": "c041a68efb55db65ab8f195938097a887f5fcc01",
      "parents": [
        "a169e1d8d968800380245cda450505d969ebff76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 05 17:19:31 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 06 10:14:46 2012 -0800"
      },
      "message": "Various fixes for JDWP.\n\n- Moved lock of thread list lock into DecodeThread from its callers\n- Fixed scope of various locks to prevent locking violations\n- Added transition for current thread from runnable to suspended before\n  suspending vm, and then a transition back\n- Reworked lock ordering to allow JDWP locks to be held while grabbing\n  the thread list lock\n- Moved debugger PostException until after suspension is re-allowed\n\nChange-Id: Ie53e47ff1538e6cd3125c48ddb4c13758b29be63\n"
    },
    {
      "commit": "0dfbb7ead0b6da92911b4bc78114ff0f0f9b4129",
      "tree": "24d27d299f19ec64478658c30d4f3f2da771abe3",
      "parents": [
        "bc43860b7e5326264ada842c35a840dd4cda8120"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 28 15:26:03 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 29 11:55:05 2012 -0800"
      },
      "message": "Fix some JDWP bugs related to locking and getting statics.\n\nGave all JDWP locks an explicit level to prevent them from using the\ndefault. Also made sure the class of the field would be passed to\nGetObject instead of NULL for statics. There\u0027s still a number of test\nfailures in JDWP.\n\nChange-Id: I6134be2a99d4a0968f9719f620864a3c176b4a58\n"
    },
    {
      "commit": "664bebf92eb2151b9b570ccd42ac4b6056c3ea9c",
      "tree": "783a4492b398078e8d5747f19f6019e91939c986",
      "parents": [
        "d22d54849c96760aa1efa259d6dcfbace54da2af"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 16:54:11 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 17:37:38 2012 -0800"
      },
      "message": "Fix occasional deadlock caused by checkpoint root marking.\n\nThere was a race where a new worker thread would attach during the\ncheckpoint. This caused the thread to wait since suspend count !\u003d 0.\nBut when we decremented the suspend count, we did not broadcast to\nthe resume condition.\n\nAdded a create peer parameter to Thread::Attach and\nAttachCurrentThread. This is used by the threadpool since we don\u0027t\nneed a java peer for worker threads.\n\nChange-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c\n"
    },
    {
      "commit": "c604d731730b43231f63040c8db1d58304da0cf3",
      "tree": "bb9cd6aa56eb3ba88ff27967efc3cc08da150b87",
      "parents": [
        "0b0b515934b83385e1cea448113783e0b22849ed"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 14 16:09:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 15:36:32 2012 -0700"
      },
      "message": "Implement mutex requeueing for cv broadcasts.\n\nMake the mutex guarding a condition variable part of its state. On a\nbroadcast requeue waiters on the mutex so they are awoken as the mutex\nis unlocked (thereby avoiding thundering herds). Explicit futex use\nstill guarded behind ART_USE_FUTEXES which remains disabled as I\u0027m\nunhappy with some of the warts of mutex usage. Uploading so that the API\nchanges can stabilize.\n\nChange-Id: Iedb601856ccd8bbc3a64da4ba0cee82246e7bcbf\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "15bf2d34efa2218e287b584fb3653d268b9edc8d",
      "tree": "4435664bd2c9a041d8c355940f2b5c95e03d38f7",
      "parents": [
        "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 17:33:04 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 17:22:52 2012 -0700"
      },
      "message": "Use bionic\u0027s dlmalloc 2.8.5.\n\nAlso fix free space computations for DDMS.\n\nChange-Id: Icbc045b5461af89a0516f37f01acaaa815205348\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "365c10235438607541fa2259a5fec48061b90bd8",
      "tree": "26516a4985a8bbef4c8da36b99bf1e54af3ad24d",
      "parents": [
        "147440427984816b6ed5235a9b1fb2cbf99496d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:05:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:21:01 2012 -0700"
      },
      "message": "Increase use of ScopedJniThreadState.\n\nMove the routines for changing Object* to jobject and vice-versa\n(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of\nObject*s in the Runnable thread state. In the Runnable thread state\nsuspension is necessary before GC can take place.\n\nReduce use of const ClassLoader* as the code bottoms out in FindClass\nand with a field assignment where the const is cast away (ie if we\u0027re\nnot going to enforce the const-ness we shouldn\u0027t pretend it is).\n\nRefactor the Thread::Attach API so that we\u0027re not handling raw Objects on\nunattached threads.\n\nRemove some unreachable code.\n\nChange-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97\n"
    },
    {
      "commit": "a21039c3ae2b20e44ceb2735251c04d0aac89afd",
      "tree": "66b6fa437e7e4286b50bdef224500f9049633701",
      "parents": [
        "3d9d49fa2d025a041f57ea306ea551ef990177db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 12:09:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 13:04:41 2012 -0700"
      },
      "message": "Fix a bunch more lint.\n\n(If you ignore the compilers, we\u0027ve got relatively little lint now. Fits on\na single screen.)\n\nChange-Id: I51389002894d4fd8cf46f79d2bac57079322a030\n"
    },
    {
      "commit": "748474146da0c6484fa3dca0a700f612d47550c3",
      "tree": "58837d0fa82d4099eb4b82b2fd3d2bbf4294e4aa",
      "parents": [
        "92e3134cd84c134f167175288671a1e6838c908f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 18:10:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 09:14:27 2012 -0700"
      },
      "message": "Fix a bunch of lint.\n\nThere are still about 1800 lint warnings, so don\u0027t get too excited...\n\nChange-Id: I2394bd6e750b94060231378b3a7a88b87f70c757\n"
    },
    {
      "commit": "f8349361a16a4e2796efe9f3586b994e8d4834e4",
      "tree": "0a3474cde4028e1915c59393f49c147dd76ad766",
      "parents": [
        "44335e189951a863607049a33571932fb6a2a841"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:00:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:16:21 2012 -0700"
      },
      "message": "Use static thread safety analysis when available, and fix the bugs GCC finds.\n\nIt\u0027s impossible to express the Heap locking and the ThreadList locking with\nGCC, but Clang is supposed to be able to do it. This patch does what\u0027s possible\nfor now.\n\nChange-Id: Ib64a890c9d27c6ce255d5003cb755c2ef1beba95\n"
    },
    {
      "commit": "7c6169de901fd0a39c8e0c078874dc25207f5b59",
      "tree": "dd7adafc6bcdb734c26a495e4bd923081ef637e7",
      "parents": [
        "736df0253aa65ebccb29ddb6443c31b7730ca3e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "message": "Port my AOSP QuasiAtomic rewrite to art.\n\nChange-Id: I9e8fe487b15083cfc441a90ec1ec0eb5e645229e\n"
    },
    {
      "commit": "74cdcb1b2eeca6eb2d8d12a48b6ceb83d00ddd55",
      "tree": "2527a96e8ef48cf6b3072de8a096ccf3d1107622",
      "parents": [
        "06383ad19412d477e992afbe3c29e0ad9f957b95"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 10 16:49:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 10 16:49:31 2012 -0700"
      },
      "message": "Remove cruft.\n\nChange-Id: I8d39a44427e7d737cc4a5d029f38a0bf7d82fb96\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": "460384f04f933f94546db7bfbfa02896b9e77962",
      "tree": "e95299a4a62f63c9a3ca981d26993f440f2b02c0",
      "parents": [
        "5e284224e5525ee0a8494a73d84c8ef86e022a0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "message": "Use the operator\u003c\u003c generator more widely.\n\nChange-Id: Iae3b8f32f49f4c91cd41c53bbafb95db071d57bb\n"
    },
    {
      "commit": "c0f0933249cf516b37717faa766e1e9808f7c1f8",
      "tree": "04aedbf3e8502637673b82cf181dfab1b5aca1a6",
      "parents": [
        "942df41c03ddb9f7b47a34fcfc4414d8b8ca8ce1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 13:27:06 2012 -0700"
      },
      "message": "Add the missing link between compiled code and the debugger.\n\nWhen a debugger connects and disconnects, we now let compiled code know that we\nneed to be kept informed about what\u0027s going on.\n\nAlso fix a threading bug when threads exit with a debugger attached.\n\nAlso some minor tidying, mostly involving naming.\n\nChange-Id: Iba0e8b9d192ac76ba1cd29a8b1e6d94f6f20dea8\n"
    },
    {
      "commit": "462c94449720e0dc6b93d7138d835d345ccf67ae",
      "tree": "e719ceab0e64e0cc2ca4acb6ee715623ab458215",
      "parents": [
        "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 18:47:50 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:42:04 2012 -0700"
      },
      "message": "Fix AttachCurrentThread to use the right thread group.\n\nChange-Id: I9818845c005563d894a571edc4f9be9862312380\n"
    },
    {
      "commit": "229feb7a09317919ee51c06d1c3e715cea25da75",
      "tree": "2e09c9af03d0f505391f1803404c887873f1654f",
      "parents": [
        "753d7ff905bd1d397ba6b8cb4336096535021e40"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 13:33:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 13:33:29 2012 -0800"
      },
      "message": "Consistently use hex for dex PC values in the debugger.\n\ndexdump uses hex, so there\u0027s less need for translation if the runtime does too.\n\nChange-Id: Ie44790d0b277a12d45ec6fdf11fcc20e75459b5a\n"
    },
    {
      "commit": "972a47bf0c180dee7e4c697b74dd31daaf58e008",
      "tree": "0ff325949e3aff2a3eefef05dbaf74595cf079b1",
      "parents": [
        "a656a0f6fbcf2ba3f15cae54a773b9c636dd32c1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 18:16:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 22 12:17:04 2012 -0800"
      },
      "message": "Rename JdwpLocation.idx to the more intention-revealing dex_pc.\n\nChange-Id: Ie111b1e715b701da528b0e6de87560b1eea793d1\n"
    },
    {
      "commit": "2aa2e39548e194c5514d6534149ca1078021eab1",
      "tree": "e5fc350cd4d6d048c9b4460e12d494dfdecc27b0",
      "parents": [
        "87dc6b9cbd4102152dab3d7157a3ad0816415b60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 17:15:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 17:20:43 2012 -0800"
      },
      "message": "Fix breakpoints.\n\nMy manual testing in jdb worked because I only ever set breakpoints at\noffset 0, which is the same whether you\u0027re using bytecode or 16bitcode.\n\nChange-Id: I7aae1961d08fc008af275ff0d1ae1f1e4619fa18\n"
    },
    {
      "commit": "c308a5d8c1993ff51be355531548e91409bdbd82",
      "tree": "0d0e88307b368d310be077363702c7b28b0a20f4",
      "parents": [
        "b6744c5a8a619501d89c0a137b61ca5b4ec93411"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:12:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:39:56 2012 -0800"
      },
      "message": "Fix a bug in Dbg::GetClassDescriptor.\n\nThe callers were incorrectly assuming we always returned a descriptor, which\nisn\u0027t true when handed bad input.\n\nChange-Id: I5509d18d8c234d97fa5ec2e0a01d4cdb44acfc55\n"
    },
    {
      "commit": "8696433d1b3d8ba15288483b777edd888de69135",
      "tree": "13ef61a98160430efae310c2e0fb322b1489ce68",
      "parents": [
        "83426160568b62b22a1f1559cace78b5152c7749"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 15 19:37:42 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 15 19:37:42 2012 -0800"
      },
      "message": "More JDWP functionality: breakpoints, single-stepping.\n\nBy-line still needs to be implemented. I\u0027ve also implemented\nVirtualMachine.Dispose so that it disconnects from the caller, as it\u0027s\nsupposed to. This was the cause of a lot of test hangs in otherwise\nsuccessful tests.\n\nI\u0027ve implemented ClassLoaderReference.VisibleClasses, though we don\u0027t have\nenough information to only return the classes for which the given ClassLoader\nwas an initiating class loader. We pass the tests with this, but mainly because\nthe tests aren\u0027t very thorough. Sadly, VirtualMachine.CapabilitiesNew doesn\u0027t\nlet us say we don\u0027t support this. (Though we could still just return\nERR_NOT_IMPLEMENTED...)\n\nChange-Id: I8d02c2b568a77a4c1725bc737a8ee844f4591e81\n"
    },
    {
      "commit": "c3b3e75e2ec66b16214fcd56dd08c0d9f6b1a591",
      "tree": "acce48bc3d3b77d8eec22d837612de3533ba49f3",
      "parents": [
        "699f9f42058ce438930ee0a5a9ae6451e3d8a2fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 13:48:50 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 13:48:50 2012 -0800"
      },
      "message": "Fix a jdwp assert.\n\n(From https://android-git.corp.google.com/g/161010.)\n\nChange-Id: I8d9cd2cd526c4ced5db412ce2a1fa61f921c48de\n"
    },
    {
      "commit": "0cc1bbd9247151289db88ccea89c842953323a6a",
      "tree": "8262796fbc4718980b6461da15c564955daa9be5",
      "parents": [
        "0755ec5ea1dce0b549fc1adefeb52d89f119ebec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 12 12:27:08 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 12 12:27:08 2012 -0800"
      },
      "message": "Hide some JDWP logging behind -verbose:jdwp.\n\nWe see quite a lot of this running CTS, and it\u0027s no use to anyone who isn\u0027t\nworking on our JDWP implementation.\n\nChange-Id: I847f4661e20f5f0e12ea31d379ee8bcea0bd9fba\n"
    },
    {
      "commit": "4dd9b4d95eec9db5338fb9bf132f9bb8facf6cf4",
      "tree": "f9dc6f6e6a55acea3a08f1f568ae6900c1dd7dd1",
      "parents": [
        "20a409c99a649a01cb7c65bd1089988445d8cdfd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 18:29:24 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 08:23:08 2011 -0800"
      },
      "message": "Clean up verbose logging.\n\nChange-Id: I6b01980e7145c4f8d25a5b50f620903f61a1b427\n"
    },
    {
      "commit": "3d30d9b09c16542d41554aad9f46ec9109ba5cb5",
      "tree": "fecce7ca0ea5e1fe0f5a03b917ab036a4a33b3b0",
      "parents": [
        "486013193c94b4321414c28ce9251911e14a0599"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 17:35:48 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 17:46:46 2011 -0800"
      },
      "message": "Fix detaching a debugger while threads are suspended.\n\nThe interesting part of this change is in \"thread_list.cc\".\n\nI\u0027ve done a TODO in TagFromClass, but haven\u0027t seen it make any practical\ndifference in a debugger. I also tightened up the types in GetThreadStatus\nwhile investigating the fact that we report some threads as \"RUNNING, SUSPENDED\",\nwhich makes no sense until you realize that TS_RUNNING corresponds to both\nour kRunnable thread state and our kNative thread state, the latter of which\nmay actually be a suspended thread.\n\nI\u0027ve also made us fail faster in the \"address in use\" jdwp failure case,\nand tidied up a bunch of the capitalization in logging.\n\nChange-Id: I0fe705791d07db31c4615addce44da4fdfbfd0d1\n"
    },
    {
      "commit": "d07986fad0d08cdf05505cf9230714a2cf0dd9ae",
      "tree": "731b6abf2c2e0a5e51453a80029e1a9073b12354",
      "parents": [
        "7fe2c691866ad643b9e21dd2c9d36fa79ec454c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 06 18:27:45 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 09:16:24 2011 -0800"
      },
      "message": "Implement JDWP InvokeMethod and breakpoints on exception throwing.\n\nChange-Id: I1142bee843104f0850fd7270752104d5d73a44f0\n"
    },
    {
      "commit": "cccd84f1f972f1a260c3be418c8388a5d30cf59e",
      "tree": "659537150070497c1afea72e67466619301f0bc3",
      "parents": [
        "3325596fbbcc9a0a93937976b5c128fd34851670"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 16:51:54 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 16:51:54 2011 -0800"
      },
      "message": "Implement local setting.\n\nI\u0027ve also worked out how to test CreateString and CreateObject, but\nnot CreateArrayObject yet.\n\nAlso stop saying \"cnt\".\n\nChange-Id: I26569ff6c4fa356fb91e6c22cbf8ced95094fabd\n"
    },
    {
      "commit": "dbb4079eb1e7d7738c81a97c8dd2550885c1093a",
      "tree": "733d5c08027ae65fb89132609d2aec9e6e2d747d",
      "parents": [
        "25e79a5e9ecd4bf30e0ea90a7dd4313f7f44bc3c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 17:05:22 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 17:47:00 2011 -0800"
      },
      "message": "Start implementing jdb \"locals\".\n\nThis lets us show the names and types of the locals, but all the values\nwill show up as 0/null. We\u0027re going to have to walk the whole stack and\ntake callee-save frames into account to do that right.\n\nChange-Id: Ic6e115513b6e65ae7ed4b7274e70bc514e83190a\n"
    },
    {
      "commit": "03181a828cd493545b278e0aa4f150fdaf1e3325",
      "tree": "eda89723d770a75c104170b6e1a09feb44053e3d",
      "parents": [
        "499c5133d361e7c659fc38e5ccfeb1280a7996f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 17:22:21 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 17:41:59 2011 -0800"
      },
      "message": "Implement debugger support for getting thread stacks.\n\nYou can now \"where all\" in jdb.\n\nChange-Id: Iccff0427f39b2f2ab3786f05b89850d50b87adb2\n"
    },
    {
      "commit": "761928d24e4e7ed7776b52243eaf9095ad35f448",
      "tree": "62a9d0c880c5412050e3eabe73c106c5374555dc",
      "parents": [
        "a215526d5c789cbef0f81a1f9aba22541a841cca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 18:33:03 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 09:55:08 2011 -0800"
      },
      "message": "Implement a bit more debugger functionality.\n\nThis fixes the deadlock by making SuspendSelfForDebugger not take the thread\nlist lock, making it more like the equivalent code in dalvikvm.\n\nThere\u0027s also some code cleanup, and a few more of the JDWP calls jdb makes\non startup. By fixing the deadlock, attaching jdb now causes us to hit\nunimplemented code relating to thread stacks. That\u0027s tomorrow\u0027s job...\n\nChange-Id: I7eac1b95946228fa60666587ff8766bcabb28bb1\n"
    },
    {
      "commit": "7162ad937f5f6bec32bf78d4675ff65cd6d1a233",
      "tree": "78bd960316746977400a9fc1772fbedeb821faae",
      "parents": [
        "f7c3b6625d710a8700325eea447f65e9f963b7f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 14:08:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 14:08:42 2011 -0700"
      },
      "message": "Implement DDMS heap info (\"HPIF\") chunks.\n\nThis lets you see how many bytes/objects are in your managed heap.\n\nChange-Id: Ie925207e9c48989a24968633e60b99314d220865\n"
    },
    {
      "commit": "475fc23a4a7f35d1be87ea0b06c80df317a720ac",
      "tree": "91954099b3f4168a4bb97613219d1f5e329c1597",
      "parents": [
        "6ba581a6711c4fed24828c9a294b1b49ac6bbb30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 15:00:35 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 15:00:35 2011 -0700"
      },
      "message": "More debugger support.\n\nThis gets us as far as the first DDMS-specific message, which means\nit\u0027s time to bring in a bunch more code.\n\nChange-Id: I3f9d75706d5ddde0aa21fcca558132282b94eff4\n"
    },
    {
      "commit": "6ba581a6711c4fed24828c9a294b1b49ac6bbb30",
      "tree": "d72624acfbd9ca5cc9be2996d70a526d4b6d2862",
      "parents": [
        "1158fc5479a5e7962c978a2508034d51c043ba69"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 11:45:35 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 11:45:35 2011 -0700"
      },
      "message": "Implement ThreadContinuing and detach the JDWP thread before it exits.\n\nThis fixes Calculator.\n\nChange-Id: Ic38e234a91469e9694e21bbf1507912b542bf908\n"
    },
    {
      "commit": "376a7a033d29d5f2b6e16574a340c999ff2999a0",
      "tree": "9f5207f6185b615219ede2f0125677ca80975052",
      "parents": [
        "d1cc8363d4f4bbac7568b1d02a5ca481cd10830f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 18:35:55 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 18:35:55 2011 -0700"
      },
      "message": "Turn free functions that take a JdwpState* into member functions.\n\nChange-Id: Idf96803c12e160939dbc98be2df41c35a10987da\n"
    },
    {
      "commit": "d1cc8363d4f4bbac7568b1d02a5ca481cd10830f",
      "tree": "df0c401ed6d5e4e9153268c3f336ead459a84cfc",
      "parents": [
        "4ffd31315bc0d00ec278e85feed15985de5ac3dc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 16:58:50 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 16:58:50 2011 -0700"
      },
      "message": "Wire up enough of the pieces that we can connect ddms or jdb.\n\n(And die with an UNIMPLEMENTED as soon as they connect, of course.)\n\nChange-Id: I9abb25d581384361c215b3cd96b8278c751e79ea\n"
    },
    {
      "commit": "872d4ec7225444d9400d30f9027247deb91012fd",
      "tree": "f293f31987efc6b43ab64fe043390959dc59c816",
      "parents": [
        "8f903f2c1832a93d3b479d412664e0972cc14d6a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 21 17:07:15 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 21 17:51:01 2011 -0700"
      },
      "message": "Bring across the JDWP implementation.\n\nThis compiles and links, but does nothing until we fill out the 100 or so\nunimplemented methods in \"debugger.cc\". Note that I also need to add the\nextra command-line handling for the JDWP agent stuff, and add calls from\nthe runtime to the various \"something interesting is going on\" hooks.\n\nChange-Id: I477cf3caf9e248c384ce1d739cbfadb60e2008bc\n"
    }
  ]
}
