)]}'
{
  "log": [
    {
      "commit": "cf2b2d44070de8a3baa2c19ebf3d8cef2ad7fd5b",
      "tree": "88cc67da0f94192c7fa4027bc36bfb138d0e2c50",
      "parents": [
        "04a2967e9f9375cd8395220f306e7b1a0b7d2b11"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 17:11:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 27 17:36:39 2012 -0700"
      },
      "message": "Take responsibility for translating thread states for managed code.\n\nUsing switch lets the compiler take responsibility for keeping things in sync.\n\nChange-Id: If0b4becd9c84901937a39045e373e0ef0ec48406\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": "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3",
      "tree": "eaf443fcc575d3a793af3ab3e435211981a1c1b1",
      "parents": [
        "5147733292cd0b80ca7da3099e43cc549d67526b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 20:35:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:38:34 2012 -0700"
      },
      "message": "Nomenclature improvements.\n\nChange-Id: I809ab04b6ee74bb8141791e1f3f5d7e3f4efb61c\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": "88c5c355fc3d881f905564911d746b2313d5fc89",
      "tree": "d5b11b85131064cb6200465e674060933f48ebd7",
      "parents": [
        "141b0c75986949da0adbf9c07ad92bc675f1bfed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 18:49:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 21:14:57 2012 -0700"
      },
      "message": "Make CheckJNI and JNI workarounds mutually exclusive...\n\n...in the opposite direction; needing workarounds turns off CheckJNI.\nThis isn\u0027t necessarily a good idea, but I like the cleanup parts of\nthis change.\n\nChange-Id: I708235ea3e5cc35ef90b01dd810e097e3ff9dd26\n"
    },
    {
      "commit": "530fa005e2944d3b12712f80d974f0e753f568ef",
      "tree": "0a98404cd017ee5dc1c717039d5caad02fd38f18",
      "parents": [
        "4d26534f6a65d7af89cc32da8fbc32beed693201"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 11:44:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 11:44:49 2012 -0700"
      },
      "message": "Give WalkStack\u0027s callback a way to terminate early.\n\nAlso combine WalkStack and WalkStackUntilUpcall.\n\nChange-Id: Ida25665de72e5fd8e17946886a387b27cf841457\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\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": "a15e67d5ee5aa9615596cee2be42c2b2caf128c6",
      "tree": "cd126ce1e809688011385d521abf19c9c302d1b1",
      "parents": [
        "9b5ee8837b4864b6ac114e9fead17bdeb04c6d55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 13:51:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 15:21:27 2012 -0800"
      },
      "message": "Remove pad word from arrays\n\nThis change removes the 4 byte pad from all arrays except longs and\ndoubles. It saves 76kb from the boot image, and will also reduce the\nsize of arrays in the heap (and thereby reduce garbage collection).\n\nChange-Id: I3ff277d5bf14c57c0f7552215818e588ec6cc275\n"
    },
    {
      "commit": "ad3da694bbba88662d1d1bd2cc574d6e3ab6cd42",
      "tree": "6e2ec2675d48ddc23a7eb34f612e669f54edbbe4",
      "parents": [
        "55b796c6f1fdc36494463a3deeb1e248800695e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 24 16:51:35 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 24 17:21:40 2012 -0800"
      },
      "message": "Handle all known tag types in StackFrame.GetValues.\n\nAlso add a few TODOs and slightly improve some logging.\n\nChange-Id: Ib55945d2c2a15af7633640d5af712f291b5e498d\n"
    },
    {
      "commit": "3ce4b266a8e620ae4205922d828acc5976a99006",
      "tree": "f1b1791dfce337e7c0fbaf76e3945611cc95ed9f",
      "parents": [
        "6b00e189defc8a6b1acbd736c65d46bbfaaa2cd6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 24 11:24:02 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 24 11:24:02 2012 -0800"
      },
      "message": "Fix a thread state misunderstanding.\n\nNote that this means that we now give the right answer for Object.wait(long)\nbut the wrong answer for Thread.sleep(long). It\u0027s not obvious how to easily\nfix the latter. It seems like the easiest fix will be to check the class of\nthe object that\u0027s being waited on, and using TS_SLEEPING if it\u0027s a ThreadLock;\nwe already do similar in the stack dumping.\n\nChange-Id: I83c0c54af1061e1678cefe7b07389dd10c2ea3d5\n"
    },
    {
      "commit": "0cf7433fd2a93b7f83e8b2ac91d0d1b4f0e7d0c9",
      "tree": "37246680f99ba51ec7d8f1a13c7e80cfe9b388c0",
      "parents": [
        "8be2d40d42223b515de12629216151a558895969"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 23:14:00 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 23:14:00 2012 -0800"
      },
      "message": "Fix the remaining GetValues/SetValues tests.\n\nAdd some missing checks and weaken some others. I\u0027d like to strengthen these up at some\npoint, but for now let\u0027s just pass the tests. The JDWP so-called specification is typically\nuseless about what should/shouldn\u0027t be allowed.\n\nChange-Id: Ia7390e0f18c4ac4a1697feac3d418767bdf7ebef\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": "a656a0f6fbcf2ba3f15cae54a773b9c636dd32c1",
      "tree": "94efe4a413f4aa71fe5a088d8e7f53ac0ef37ef7",
      "parents": [
        "153f448a75d82f45894e57e5ef5bf88679a2101d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 18:03:44 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 18:11:42 2012 -0800"
      },
      "message": "Fix a few more JDWP bugs.\n\nMy previous division by 2 of dex PCs was wrong-headed. I need to fix the test\ninstead to not try to set a breakpoint in the middle of an instruction.\n\nAlso, we weren\u0027t reporting some class-specific events that we should have done\nbecause of an InstanceOf/IsAssignableFrom mixup.\n\nChange-Id: I187fc0977955038270866c9d7d28b0a709408aa0\n"
    },
    {
      "commit": "45651fde99f52546e71241bb0e8a10d16a9f216a",
      "tree": "c796792c4b07027cfef0b519c4acafa307136257",
      "parents": [
        "3e2e1a2380e7b2ce402640ea4f6a177c06bd19a2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 15:48:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 15:48:20 2012 -0800"
      },
      "message": "Fix various debugger method invocation bugs.\n\n(Also fix DexFile to admit that string lengths are always non-negative.)\n\nChange-Id: I2d01ef2411b5c7e594527790daf3e0aaa3a1b67f\n"
    },
    {
      "commit": "3e2e1a2380e7b2ce402640ea4f6a177c06bd19a2",
      "tree": "270b4fc730431a0410f1094d919fe00ba9f6a1ad",
      "parents": [
        "c3a9571755f09f0b182818e6eb7294623df40974"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 11:33:41 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 11:33:41 2012 -0800"
      },
      "message": "Fix single-stepping for native methods.\n\nChange-Id: I1a70c27272aacb79871407a05d4538056f381e25\n"
    },
    {
      "commit": "3f4d58f4a39f60057ebf8ea92340ddb78317ae51",
      "tree": "39e0f6076b1eb5a0280b162f36bf5370b9f081dc",
      "parents": [
        "1a121b99fa8c5bf72cf58dcba4ecd5fd6dad417f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 18 20:05:37 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 18 20:05:37 2012 -0800"
      },
      "message": "More debugger robustness.\n\nThis fixes about half the remaining test failures, including almost all of the\nnative crashes.\n\nChange-Id: I9c3d994bfafaecca17597e442477c973e57f5979\n"
    },
    {
      "commit": "436e372e1c2b8e0bde47408e7407b4c3590f5071",
      "tree": "400ab4354ac9b1c67f2e94802f4d936e8739c163",
      "parents": [
        "2aa2e39548e194c5514d6534149ca1078021eab1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 20:01:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 20:01:47 2012 -0800"
      },
      "message": "Improve JDWP error handling.\n\nIn particular, we can\u0027t use NULL to mean \"invalid\"; some JDWP calls\nlegitimately need to handle NULL.\n\nChange-Id: Iec4fac5521994bdb1f59677bd5af153684d4e266\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": "2435a5751431152aaeaa2faaa86b2a30d3eecfe3",
      "tree": "ec5c4a2140364e6342aad6c02606dd8885d0d8be",
      "parents": [
        "dd6aa87f0484c6097df0657f242eeef9ac9ff9e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 16:07:41 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 16:07:41 2012 -0800"
      },
      "message": "Support for single-stepping by line.\n\nPlus various other test fixes.\n\nChange-Id: I2ef923e56a16a14380eda150685b5e3db944616e\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": "91bf6cd47174f5c17265320f7a350722720390a5",
      "tree": "f4823c09793162e00b2fdd43990e12f2837d7562",
      "parents": [
        "f05d0dd011d3dbcf78bf35d0771f67371f5f6b58"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "message": "More debugger support.\n\nThis wires up method-entry events and fixes a bug in exception events.\n\nChange-Id: Ia7c46786a8073434fbb4546615072622f301ef84\n"
    },
    {
      "commit": "1fe7afb88498d48d1f808ee31e986324f2a1c842",
      "tree": "08352a9caec6a5d26d5d47dfb7bd4543a2f22c39",
      "parents": [
        "cd1410aec0aff8b5cece062303311c20c23158fa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 17:23:03 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 18:32:19 2012 -0800"
      },
      "message": "Fix more JDWP bugs.\n\nChange-Id: I475d14e196a7463e70f7cce6a8b8d77f867e9e46\n"
    },
    {
      "commit": "3d1ca6de2ddf3d9e39755d629c896bfecd9640fd",
      "tree": "e44da249879ec6718d60f00b2333932f714711a3",
      "parents": [
        "d08547a802e6dbb71fde3ed3dac9aa0b03a5b17b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 15:43:19 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 15:43:19 2012 -0800"
      },
      "message": "Fix a bunch of JDWP bugs.\n\nMost of these were broken in dalvikvm too.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d20856\nChange-Id: I88bc89e00a19edc21953cd4f42833f35bb5456a8\n"
    },
    {
      "commit": "30fab40ee5a07af6b8c3b6b0e9438071695a57f4",
      "tree": "86514e3535c8b23cf52249a202076b59ac532021",
      "parents": [
        "f3778f66879fa038a7c9ebe46d5bc4167ddef7d8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 23 15:43:46 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 26 17:32:10 2012 -0800"
      },
      "message": "Upgrade to latest dlmalloc. Refactor Heap and related APIs to use STL like naming.\n\nWe fail assertions in the existing heap code, as does Dalvik. This refactoring\nis to clean the heap and space APIs and to reduce duplication of data\nand thereby solve a failing assertion in the card table.\n\nThis change also wires up clearing of soft references including before\nout-of-memory errors are reported.\n\nIn doing this change it was made clear that mspaces are buggy (and\nviolating invariants with the garbage collector). This\nchange upgrades to an un-Android molested version of dlmalloc-2.8.5 and\nimplements a version of the mspace morecore routine under ART control.\n\nrun-test 061-out-of-memory is updated for current heap sizes.\n\nChange-Id: I377e83ab2a8c78afb9b1881f03356929e2c9dc64\n"
    },
    {
      "commit": "ba8eee10607a524f43b55a6f33c13924fb16d435",
      "tree": "45f3c3728bcaee9ff04baeaf1706693e677757bf",
      "parents": [
        "844f9a072454eb9dca1022299b6bf99ef4294008"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "message": "Remove more lint.\n\nChange-Id: I48714db4169d9ea0536342809361210910ee2091\n"
    },
    {
      "commit": "844f9a072454eb9dca1022299b6bf99ef4294008",
      "tree": "f21b0a3c2418540c9c65914b6029a881ecae0747",
      "parents": [
        "e8f3212ff9d47dbe368ea7f2e243b5e9e8680620"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:19:58 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:19:58 2012 -0800"
      },
      "message": "You can\u0027t call initCause on a ClassNotFoundException.\n\nUnlike NoClassDefFoundError, ClassNotFoundException has to be constructed\nwith a cause, or it will stupidly set a null cause which can\u0027t then be\nchanged.\n\nThis patch also fixes incorrect caching of jclass local references in statics,\nwhich I noticed while fixing the test I\u0027d broken.\n\nChange-Id: I017f4a4e4158554427ccb37b650c985add28980c\n"
    },
    {
      "commit": "899e789bd4741c0172268f7838ce8ab220a5f916",
      "tree": "2936efb7335a498eeaf25b479dd00ee2b9e73b8c",
      "parents": [
        "a0cb1204543934b1f4975025cd6047eb71dc6429"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "message": "Include the thread name in Thread\u0027s operator\u003c\u003c output.\n\nFor example:\n\n Thread[2,tid\u003d1692,VmWait,Thread*\u003d0x416914d0,\"Signal Catcher\"]: reacting to signal 3\n\nChange-Id: I2b00e82af2ad0f09141dbf4e418bc0582e9b966d\n"
    },
    {
      "commit": "aa6e1cdddae8bd240c5cdc156348f2a42e045a7b",
      "tree": "bc0c10ee6e0687273fda49330b5b0713d5eca06e",
      "parents": [
        "8add92dcf59568c72c17e9a979948b1a7a0b1264"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 19:26:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 19:26:06 2012 -0800"
      },
      "message": "More Mac build fixes.\n\nChange-Id: Iaf3b974885bc205c89455ae65b1bb09641d114ec\n"
    },
    {
      "commit": "c3b77c7c2971124cbf3b2d9da64e7a8a9a649f2e",
      "tree": "b8f2b70fb281d2d8b617491755bcdb7f798af837",
      "parents": [
        "90040194a1b5c441dde5c8a8b6d637c23972e0f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 15 20:56:48 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 16 14:17:50 2011 -0800"
      },
      "message": "Avoid copying and strlen(3) in the FindClass path.\n\nChange-Id: I789f3c883596d1852a2c1954ce7a207e6f937117\n"
    },
    {
      "commit": "91250e0c3fb0ad758b9b97042a3fa86d5ae76763",
      "tree": "bb6f32bfc5178a9d56445b79ae0fd6763162e0a8",
      "parents": [
        "42298fab70318f39e53c0595e9fc570548dc253c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "message": "Knock 0.5s off the Calculator startup time.\n\nDown to 2.5s on mysid. We now only mess around with std::strings when we need\nto synthesize a descriptor. If we can just hand out a const char* straight from\nthe dex file -- which most of the time we can -- we now do.\n\nChange-Id: Iddec7062d8bd578bd25f671eb4d597e9ed064d65\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": "7b3cdfcca472b779cf8745fb8460935e56229f11",
      "tree": "e74e88286c9f121ed1312faece45981ba4e0b14c",
      "parents": [
        "6f1dfe415019de95f0305de66b3afb40005fe382"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 21:28:17 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 21:45:49 2011 -0800"
      },
      "message": "More JDWP robustness.\n\nWe pass a lot more JDWP tests with this (fewer total failures than dalvik,\nbecause although dalvik implements more requests, it assumes that the debuggers\nonly send it valid input).\n\nI\u0027ve also added some of the missing constants (there are tests of modifier 12,\nSourceNameMatch, which was added in Java 6).\n\nChange-Id: I502e87b50fb305c5c8b061421339c8ceab104640\n"
    },
    {
      "commit": "bf13d36a25ec0a217fc4440c38b03d10f6c7f642",
      "tree": "f16cf4aa7e9626607c5110fc8a1508cc584fbe0d",
      "parents": [
        "3d30d9b09c16542d41554aad9f46ec9109ba5cb5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 15:51:37 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 15:51:37 2011 -0800"
      },
      "message": "Implement ArrayType.NewInstance.\n\nFirst fruit of getting the JDWP test suite running... though it turned out\nthere was an old check-in comment explaining how to exercise this. I\u0027ve\nadded that comment to the source here.\n\nChange-Id: Iaf8beb64763773f9c756ae9a6cf6e652f4a0afba\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": "4740cdff25875c530649a670b15e8ac52bfd7252",
      "tree": "0ca835b636fe2b6854ba65bee2eee3c4ea983048",
      "parents": [
        "0ad5bb8ea378a223eb6eaf89e0be2823c6f87c0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:07:12 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 07 14:07:12 2011 -0800"
      },
      "message": "Notify the debugger of class preparation.\n\nChange-Id: Ic9863d0cc1176c474df2239a286a01393845d589\n"
    },
    {
      "commit": "0ad5bb8ea378a223eb6eaf89e0be2823c6f87c0e",
      "tree": "97615d29d2dbd727b6576a6f1fee364c31c26f3b",
      "parents": [
        "d07986fad0d08cdf05505cf9230714a2cf0dd9ae"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 07 10:16:32 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 07 10:16:32 2011 -0800"
      },
      "message": "Don\u0027t post debug exceptions if debugger not active.\n\nChange-Id: I67f0b62945f9d17ca62d45492331e55c72196631\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": "6d4d9fcb4f01e287ee29e81cd1c941ee5d11d379",
      "tree": "4c715bef86a3c5a47f9cea43c4a092cf4766ed4b",
      "parents": [
        "86b0010c79ef95b5333cd540b7d3af34a9f1a643"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 30 16:24:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 06 14:02:09 2011 -0800"
      },
      "message": "Reduce meta-data object sizes, introduce meta-data helper classes.\n\nChange-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3\n"
    },
    {
      "commit": "86b0010c79ef95b5333cd540b7d3af34a9f1a643",
      "tree": "d0285c356c0d7af5e412aa0bc19af04185dde9c1",
      "parents": [
        "cccd84f1f972f1a260c3be418c8388a5d30cf59e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 17:54:26 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 17:54:26 2011 -0800"
      },
      "message": "Implement JDWP StackFrame.ThisObject.\n\nI found a way to test this too.\n\nChange-Id: Ia9451c97d5b4269f63c6b8d75f145583db7dfff5\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": "ca9515205010099d006ac2fac244348a1e673dcb",
      "tree": "82b48d2a820db8ccdf6fe3f68c370627d1872232",
      "parents": [
        "f0e7ac44d67ddfb17bc8145eb63db95d5413a6a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 12:01:32 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 12:01:32 2011 -0800"
      },
      "message": "Implement Dbg::LastDebuggerActivity properly.\n\nDon\u0027t know why I hadn\u0027t plumbed these together already.\n\nChange-Id: I4d41dd97d67afdb70d38fb1df7bd0c59136bc0a4\n"
    },
    {
      "commit": "6fa602d614d418f38afebb4d44f42e7dc0b4bd94",
      "tree": "90a8fcbead7ee9b5536916c9750c3889d5aebe3e",
      "parents": [
        "aed4be94da51b4fbb54c728151f0daf11535f6ab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 17:54:25 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 17:54:25 2011 -0800"
      },
      "message": "Implement static field getting/setting, and basic Eclipse support.\n\nEclipse uses a few new calls that I hadn\u0027t seen from any of the other\ndebuggers.\n\nChange-Id: Iccb45f226431b6cd30a17f7b5ee8397e0838c1fc\n"
    },
    {
      "commit": "aed4be94da51b4fbb54c728151f0daf11535f6ab",
      "tree": "75b2d9b28862b1aa8529199964bf91a4b3df4c9d",
      "parents": [
        "f03b8f66511a2d8cb78d306f36feb51392232a5e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 16:16:23 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 16:16:23 2011 -0800"
      },
      "message": "Implement field getting and setting.\n\nThis lets you use \"dump\" and \"set \u003cobject\u003e.\u003cfield\u003e \u003d \u003cvalue\u003e\".\n\nChange-Id: I47aee563b26e04f4931ac1cf3de2cd2e38db35a7\n"
    },
    {
      "commit": "f03b8f66511a2d8cb78d306f36feb51392232a5e",
      "tree": "c35ac2c2e05895d1a9eb630c2b9f5eef58959810",
      "parents": [
        "4e235316b4ada4d865c544d9b4ba397139333fa6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 14:26:25 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 14:26:25 2011 -0800"
      },
      "message": "Implement \"SetArrayElements\".\n\nChange-Id: Ied1ac300a8bf9593bcd7c1340262d08f75ebe53f\n"
    },
    {
      "commit": "4e235316b4ada4d865c544d9b4ba397139333fa6",
      "tree": "bb9296420fe8ff9e44f1ddf4e95c8b5be08a1e9f",
      "parents": [
        "1bba14f20039b6e706b719fdd5754eb30088d014"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 11:34:15 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 02 11:34:15 2011 -0800"
      },
      "message": "Implement \"GetThreadGroupParent\", \"Suspend\", and \"Resume\".\n\nThis is enough to get the GUI jswat working for poking around\nthreads, stacks, and locals.\n\nChange-Id: Ib02d9666cee8d39c09e4a09cf3961cebff1768ac\n"
    },
    {
      "commit": "1bba14f20039b6e706b719fdd5754eb30088d014",
      "tree": "be62972c4ff6a9afca9cf05259b624f4cdadafd9",
      "parents": [
        "c1f143de3d0370a17a4561eb83bf10a5d7908aa3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 18:00:36 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 18:41:01 2011 -0800"
      },
      "message": "Implement getting of 64-bit locals (double, long).\n\nAlso implement the JDWP \"GetClassLoader\" request, used by jswat\u0027s \"classes\"\ncommand.\n\nAlso implement the JDWP \"exit\" request, tested with jswat\u0027s \"shutdown\".\n\nChange-Id: Ic8424a332151242211d8a772721deb3199b24682\n"
    },
    {
      "commit": "c5b734a27a64c81590015dd12a7901c396818a99",
      "tree": "d910c888f082e555381f003e19b7055a3ab70dc8",
      "parents": [
        "f8a2df7bbf1021058bc13d1f806a7fec3c89ee62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:20:58 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:20:58 2011 -0800"
      },
      "message": "Fix a dalvik bug in reporting the local variable table.\n\nThis still doesn\u0027t completely fix things; I\u0027ve added a TODO.\n\nChange-Id: I5e4eefeeac1344f3d50532b7c143c6acd3214525\n"
    },
    {
      "commit": "f8a2df7bbf1021058bc13d1f806a7fec3c89ee62",
      "tree": "4ae8df1e0867c6e127e8ca976d7b52f28ed5b46b",
      "parents": [
        "24437995cdac88b42e42b16d9aa121e833330999"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 12:19:54 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 12:19:54 2011 -0800"
      },
      "message": "Fix a couple of JDWP bugs.\n\nFirst, dalvikvm\u0027s behavior of just carrying on if it failed to set up JDWP was\nthe opposite of helpful. It\u0027s wasted loads of my time lately, and I\u0027ve already\nbenefitted in the half hour since making this a hard stop.\n\nSecond, I was accidentally reporting upcall frames. I don\u0027t know why I wasn\u0027t\nalways seeing this -- because we always make an upcall to \u0027main\u0027 -- but it was\nrepeatable if the stack was short enough.\n\nChange-Id: Iee14867f596436bed5ca0546db71e62b62d11f41\n"
    },
    {
      "commit": "24437995cdac88b42e42b16d9aa121e833330999",
      "tree": "3d6cb71a3301541f37c49fe7db3722d91a41ff90",
      "parents": [
        "8c364127225f9b0da8ab0aa817d0b6915145e60b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 14:49:33 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 16:37:22 2011 -0800"
      },
      "message": "More JDWP array support.\n\nThis lets you examine array elements in jdb.\n\nChange-Id: I74698496311015b4ba8fc5bdad15a21904106316\n"
    },
    {
      "commit": "68fdbd07fc2b8856905e06f3cc945b046c3bfcd3",
      "tree": "b8982040e6a2fe250b3db127ea0b1dfdba552616",
      "parents": [
        "8aa6fc39f5cc0279d4ba2ee064de9758560dfedd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 19:22:47 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 12:11:23 2011 -0800"
      },
      "message": "Return values for locals, so \"locals\" can show them.\n\nAlso implement a couple of other JDWP commands so jdb can show the length\nof arrays and the value of strings.\n\nChange-Id: Ib2a4dc2ee784ee10bdb924e91b0150aa8a96845d\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": "499c5133d361e7c659fc38e5ccfeb1280a7996f5",
      "tree": "1b7d865502e90b32483f3cf69f7b3217ea821e0f",
      "parents": [
        "a2e54f61453a2072181d5dd7aa2d5e845f5b53f6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 14:55:11 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 14:55:11 2011 -0800"
      },
      "message": "Implement debugger support for the \"threads\" command.\n\nChange-Id: I266d28ee00d87fdc7ecb179ddf52634db96e573c\n"
    },
    {
      "commit": "a2e54f61453a2072181d5dd7aa2d5e845f5b53f6",
      "tree": "4ca063dd40b4c246097aa31d4d79ddf14d0420a7",
      "parents": [
        "761928d24e4e7ed7776b52243eaf9095ad35f448"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 13:01:30 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 13:01:30 2011 -0800"
      },
      "message": "More debugger support.\n\nThis lets you attach jdb. Quitting will let your program run to completion.\nThis also fixes the \"class\", \"fields\", and \"methods\" commands.\n\nChange-Id: I6645f52dd8b5847454a553c31c80a2f5bf8f1000\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": "a215526d5c789cbef0f81a1f9aba22541a841cca",
      "tree": "4d6baa6e24d41027300bd22a7b7746267dd45f23",
      "parents": [
        "254db0ff7ea6509a1c2914b1d9532e2041a0c4c4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:26:58 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:56:41 2011 -0800"
      },
      "message": "Implement enough JDWP functionality that we can attach jdb.\n\nYou can also try \"classes\" and \"classpath\", though anything else\ndeadlocks because we\u0027re suspended but jdb thinks we aren\u0027t. I don\u0027t\nthink that\u0027s a new bug with this patch, though, so I\u0027ll look at that\nnext.\n\nChange-Id: I54456b6a7fe72642be696c66aa485dc0c8a7f913\n"
    },
    {
      "commit": "21f32d704a21bcd67d7b87b149b6314ff92946cb",
      "tree": "5546826bb2f700d88f3561c660b6e74eefc52b7d",
      "parents": [
        "545a064aca775ba801790fced3d713d8a87bfc61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 09 17:44:13 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 09 18:21:37 2011 -0800"
      },
      "message": "Fix some DDMS stuff I\u0027d broken, and fix HexDump\u0027s double-spacing.\n\nChange-Id: I6583458a818406197744cc640b0993f73cfd5384\n"
    },
    {
      "commit": "545a064aca775ba801790fced3d713d8a87bfc61",
      "tree": "5c7aefe4e2ec7736f1fc8eea3b99a9df05bbae1c",
      "parents": [
        "3697d2459983c1f0a3d6efaefb2b6a1110af28df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 08 19:10:03 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 09 15:58:49 2011 -0800"
      },
      "message": "Implement DDMS recent allocation tracking.\n\nChange-Id: I7cec7311ba496f93e147ae17fbce94d4d17b5269\n"
    },
    {
      "commit": "8218847294600bbfcdc041a46c2b579b6e70cf3b",
      "tree": "4beb913b0a0d3410fb1b6f9b690c63c7aefb53bd",
      "parents": [
        "6c9c06dbb0b16714079afaedbebd3d548aa832b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 18:11:48 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 18:11:48 2011 -0800"
      },
      "message": "Implement thread name change notification for DDMS.\n\nChange-Id: If63d89991951989f27ee267895244e115661dce9\n"
    },
    {
      "commit": "bbd9d830fe0eb8ce44405d7504dcf9a6fe91ffa1",
      "tree": "211747a79d87a2412c156e42713eea4638bbc340",
      "parents": [
        "c2f8006ede3d07ca53467fa73573bdbfb864a65e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 14:40:00 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 14:40:00 2011 -0800"
      },
      "message": "Fix at least two deadlocks.\n\nPretty much every caller that takes the thread list lock can then go on to\ncause allocation, which requires the heap lock. The GC always takes the heap\nlock first and the thread list lock second (to suspend/resume other threads).\nCue deadlocks.\n\nThis patch is a pretty degenerate fix that basically makes the thread list\nlock irrelevant; we now always take the heap lock first.\n\nChange-Id: I0537cffb0b841bfb5033789817793734d75dfb31\n"
    },
    {
      "commit": "6a5bd495ff2f614f1495f652c86f3902d3bde537",
      "tree": "421434975640d4ddc592ac3caba6198277f83369",
      "parents": [
        "e1fab56ffa50364fd08d4a935a2a3339f7faa509"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 28 14:33:57 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 28 15:30:08 2011 -0700"
      },
      "message": "Implement the DDMS heap walking (for native and managed heaps).\n\nThis gets you the DDMS histograms of what\u0027s on your heaps.\n\nChange-Id: I7133d044030b10a787277faf3a77e20c565e69c5\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": "f7c3b6625d710a8700325eea447f65e9f963b7f2",
      "tree": "878078368ad75616d32e03a2f380614aa8ce9c36",
      "parents": [
        "baba887a4f5d2a454ab3f8f36a26346f8fdd0670"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 12:04:56 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 12:04:56 2011 -0700"
      },
      "message": "Fix orthography of the jdwp_bits.h functions.\n\nChange-Id: I31ca68e517bcf44570ab329b55f67b29877deff1\n"
    },
    {
      "commit": "767a147529da3ee8240f3ce4cd3af22ae454be64",
      "tree": "69901f2bd7721bb48f1379734908708f2eca96c8",
      "parents": [
        "39723d3bdd9532af903efeac8908391bb94a12ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 18:49:02 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 27 10:58:05 2011 -0700"
      },
      "message": "Wire in the DDMS heap stuff.\n\n(It\u0027s still UNIMPLEMENTED at the bottom, though.)\n\nChange-Id: I0f4c1c90cafb48b045685ae67300170fd696f386\n"
    },
    {
      "commit": "bfe487be25652c5456236661b9d9c3579d2296c1",
      "tree": "03e98cfc794946a85a5dfcc3170ae138f78da9b1",
      "parents": [
        "234ab15b00f8120282d1833e5d7480eca2e35a29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 15:48:55 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 16:52:02 2011 -0700"
      },
      "message": "Makes objects known to the debugger GC roots, implements the THST message, and lets DDMS request stack traces.\n\nThis fills out correct data in all columns of the \"Threads\" table, and\ndouble-clicking on a thread shows that thread\u0027s stack.\n\nChange-Id: I48f63c3612e12d35269158dc3a283f07db28c8e7\n"
    },
    {
      "commit": "234ab15b00f8120282d1833e5d7480eca2e35a29",
      "tree": "80f30c5cc581a1522369ebbae3e81182aad89dfd",
      "parents": [
        "c37e9a5c68724d09539f0b6bc3e4877faa597b39"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 14:02:26 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 14:24:38 2011 -0700"
      },
      "message": "Implement Dbg::Disconnected and Dbg::UndoDebuggerSuspensions.\n\nYou can now start and stop oatexec-based apps with DDMS running, with\nno UNIMPLEMENTEDs.\n\nChange-Id: Ic53e7bdd4ddd3ed93f9d807499d991ea30f48810\n"
    },
    {
      "commit": "47fce01c0f27dba716fa6b97242562fbc5c26eea",
      "tree": "4a95d4bbc2a53ec765000e73cf026d404a667f73",
      "parents": [
        "ed6d78ed93c9b5b1988af6ca502a7e2eee0f2aaf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 18:37:19 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 18:37:19 2011 -0700"
      },
      "message": "Basic DDMS thread support.\n\nDDMS can now see our running threads...\n\nChange-Id: I42d2fce4db9eb846fa0b4aac46ca6bb3443a6c9f\n"
    },
    {
      "commit": "f6a1e1e44b94221c4e6b063b36921c712a33910b",
      "tree": "868c28cb66e1a1d34dd4060592e48e1a598342ed",
      "parents": [
        "94e60fb48459f3173c8abd6afcee85df68ab1b55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 16:28:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 25 16:28:04 2011 -0700"
      },
      "message": "Implement more DDMS support.\n\nYou can now launch DDMS without killing running oatexec processes...\n\nChange-Id: I13e1d6df4f0cbd0c06b69471823a13e4e820b93b\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": "4ffd31315bc0d00ec278e85feed15985de5ac3dc",
      "tree": "9008b944618f4d422cb050d7d1c5aeb74fb39dd9",
      "parents": [
        "d81871cbbaa34c649e488f94f61a981db33123e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:06:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 12:06:42 2011 -0700"
      },
      "message": "Implement the zygote debug options (late-enabling -Xcheck:jni and so on).\n\nChange-Id: I03772e7fb95fce1a19dac13f6c5f870164a4d874\n"
    },
    {
      "commit": "3bb81563481d02b5a6349b8ed918392454e761d8",
      "tree": "d409347516f215acba0ac7090a44e0b536cba100",
      "parents": [
        "4514d3c0e69a49f5dbe19138330a2bb2aee36d63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 21 18:52:59 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 21 18:52:59 2011 -0700"
      },
      "message": "Basic JDWP option parsing...\n\n...and just enough code to silence all the UNIMPLEMENTED warnings you get\nduring normal usage.\n\nChange-Id: I56820ac971b88581c4cb1f462c13331d8fa04c43\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"
    }
  ]
}
