)]}'
{
  "log": [
    {
      "commit": "0ec569a3e653e0358fcb59c89f2aad708843db53",
      "tree": "d2526757d84632c3dfd0848873438ce3de9a299c",
      "parents": [
        "02a1e359707c4b4d091ec7b4b5cda3848a6bd8a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jul 01 16:43:46 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jul 01 16:43:46 2012 -0700"
      },
      "message": "Disable dex register descriptions.\n\nDisable dex register descriptions. Make GetVReg and SetVReg frame\nroutines fail in unimplementeds.\n\nChange-Id: I0f05a188d3c81c424018b52e2dcea40891cd307e\n"
    },
    {
      "commit": "caf7654a0e6c76c7489970b1a246fccf220f9982",
      "tree": "bdf74befb18407a3cb5ec4bd406059314b0434a7",
      "parents": [
        "5d96a7168dd3e2a4acf1a947ef12efa8f82b95c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 16:08:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 18:53:55 2012 -0700"
      },
      "message": "Fix posting exceptions when a debugger is attached, fix UpdateDebugger, fully implement ThreadGroupReference.Children.\n\nPosting exceptions and UpdateDebugger were broken by the recent stack-walking\nrewrite.\n\ndalvikvm never did ThreadGroupReference.Children correctly; it only admitted\nthat \"system\" is the parent of \"main\".\n\nChange-Id: I386f2fa5e01fba56cb2a1af4f136dbf31da0ff07\n"
    },
    {
      "commit": "08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6",
      "tree": "3e767d037fd3e47e792b88d982ad38bce26d39e9",
      "parents": [
        "f94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 26 17:34:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 12:18:25 2012 -0700"
      },
      "message": "Include held locks in SIGQUIT thread dumps.\n\nHandy if you have an ANR that\u0027s locking related. Quick tour:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method)\n   - locked \u003c0x60135aa8\u003e (a java.lang.Class\u003corg.apache.harmony.dalvik.NativeTestTarget\u003e)\n   at java.lang.reflect.Method.invoke(Native method)\n   at C.whileTrue(Main.java:63)\n   at C.synchronizedOnClassString(Main.java:56)\n   - locked \u003c0x60002a70\u003e (a java.lang.Class\u003cjava.lang.String\u003e)\n   at C.nestedSynchronizationWithTryCatch(Main.java:44)\n   - locked \u003c0x61336b90\u003e (a java.lang.String)\n   - locked \u003c0x61336bd0\u003e (a java.lang.String)\n   at C.nestedSynchronization(Main.java:35)\n   - locked \u003c0x61336b18\u003e (a java.lang.String)\n   - locked \u003c0x61336b50\u003e (a java.lang.String)\n   at C.synchronizedOnClassC(Main.java:30)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at C.noLocks(Main.java:27)\n   at C.\u003cclinit\u003e(Main.java:24)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at Main.main(Main.java:19)\n\nA non-static synchronized native method works too:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method)\n   - locked \u003c0x613371a8\u003e (a org.apache.harmony.dalvik.NativeTestTarget)\n   ...\n\nNote that most stack traces don\u0027t look any different; the above is a\npathological example that exercises different kinds of locking. Testing\nwith system_server shows most threads don\u0027t hold any locks.\n\nFuture work (marked by TODO) is that explicit JNI MonitorEnter calls in\nnative code aren\u0027t shown.\n\nChange-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9\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": "044288fb8f69e154862763a6b3bfea2bac1b397e",
      "tree": "d8950711187ab4bb72dfb10191a524134af169d2",
      "parents": [
        "57b47f9b59b8850c5cf7ddba587cc0cb094ca878"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:46:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:46:39 2012 -0700"
      },
      "message": "Move LockOwnerFromThreadLock into monitor.cc, the only place it\u0027s needed.\n\nChange-Id: I2836cc96fb7d8d46f237dc403e19c50fc0f19d49\n"
    },
    {
      "commit": "2542d6690824d27e5894a635b40237ee91a412ca",
      "tree": "edc3f95d6aa7b746befc1631ac4fbbb5f183de63",
      "parents": [
        "008fa5114f356861f74f086f0b0c50fe42ef2891"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 21 17:14:11 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 22 09:47:36 2012 -0700"
      },
      "message": "Add additional support for Thread::Current() \u003d\u003d NULL.\n\nAdded checks for Thread::Current() \u003d\u003d NULL so that we don\u0027t crash in Runtime::~Runtime() when we have to wait for a concurrent GC to complete.\n\nChange-Id: I3164c01f3eb668c7e8fa29c8a0d5a48b8f0e4fb1\n"
    },
    {
      "commit": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\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": "8f751ab92664926a36427a642d79b3a54d4c5e94",
      "tree": "666a48ce867b41c383c3a86d72b38f77c2dd3e19",
      "parents": [
        "7834cbd5d8a0e61db14339910d2223a3e59d7efc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 15 17:12:40 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 15 17:12:40 2012 -0700"
      },
      "message": "Make the epoch-related \"can\u0027t happen\" situation easier to spot.\n\nChange-Id: If174c7424f7a71a994cb06ce5484fe0cf34702f1\n"
    },
    {
      "commit": "7b9d996e4cd7d154bb1a244d67139aff0c363cf2",
      "tree": "a9dabe8f910b4b8bf29c2f4285d860995e25f58d",
      "parents": [
        "934100aea5a0f498c17e2c4a1fd0193af1557b42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:48:18 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:57:19 2012 -0700"
      },
      "message": "Tidy up some C-isms.\n\nChange-Id: I53b457cab9067369320457549071fc3e4c23c81b\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": "64277f38032208a0c1081ff9e466c04009b96383",
      "tree": "a7c2e92907584521c1caedbf5e6a798f5984c9e9",
      "parents": [
        "6e41d42f6b7977325a87a125c344c1c9cdf6c949"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 26 23:53:34 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 27 00:03:43 2012 -0700"
      },
      "message": "Additional check to catch BooksTablet monkey issue\n\nChange-Id: I9dfe695b008b2ca23998d2cfb29e5ba04354a029\n"
    },
    {
      "commit": "398f64b5805246765b699839b439e18c0dfbf2ee",
      "tree": "de3f86de82289b1734b12cdc7c4292f4aff16f55",
      "parents": [
        "ee0fa76b2e5d39ad36d1ff144b2d0270df81e606"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "message": "Remove more lint, mostly C-style casts.\n\nChange-Id: Iaf1f23290e35ed48e5795fb20690953a9a834457\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": "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": "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": "b8d2eeb212d55483db97a510656da6114a0e6006",
      "tree": "1f57ea62e46b6e57cf0ff018557595e9ade4c570",
      "parents": [
        "88894ee835411de72025cd8a5d8d111a6f2a004a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 29 16:44:41 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 29 16:44:41 2012 -0800"
      },
      "message": "Trivial cleanup of monitor code.\n\n(The unused code was used for heap trimming in dalvikvm.)\n\nChange-Id: I9087726629f442a54952cc0495daaa6066430141\n"
    },
    {
      "commit": "d423741f91526cada9d081c64ee295ec9863032d",
      "tree": "9926bbeb9444d13b85515e6dc637734dbf1e1bbc",
      "parents": [
        "8dfcbea64ef8c9279329119e42a626771669044d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 11:24:45 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 11:24:45 2012 -0800"
      },
      "message": "Show useful thread information in IllegalMonitorStateExceptions.\n\nPreviously we were just throwing the Thread* address.\n\nChange-Id: I511a1e0d4348832d1d6d5b802d579448617fb389\n"
    },
    {
      "commit": "6d0b13e931fb73d5e964d14b0a7ecd1f3f5db547",
      "tree": "56c2c2a889df39662397c7fe97acf77b90d0ff8d",
      "parents": [
        "fe1b29c35c7bbfa102ae48c5159056634bc28a08"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 07 09:25:29 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 07 11:30:53 2012 -0800"
      },
      "message": "Increase debug information for failed monitor exits\n\nCTS has shown IllegalMonitorStateExceptions where they shouldn\u0027t occur.\nRatchet up the debug information in the case of unlocks so the kind of\nproblem can be better diagnosed. This code is only executed in\nexceptional cases and so better debugging wins out over performance.\n\nAlso, add helper to dump thread state as something human readable.\n\nAlso, JNI internal unit test of monitor enter/exit.\n\nChange-Id: I9c06fbce7e6c9ebbb950a4e400f65c791ebe2ba4\n"
    },
    {
      "commit": "160f3e20e81a9137e75a18a8613c09c51c8c004f",
      "tree": "df4865e6400221834d6dcd239e2426634b18f716",
      "parents": [
        "9e921bc034450e35c2b5d45cc09a26920ad0d6e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 11:56:36 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 11:56:36 2012 -0800"
      },
      "message": "Remove some now-incorrect and now-obsolete DCHECKs.\n\n~Mutex already checks that the mutex isn\u0027t locked, and already has an\nexception for the case where we\u0027re shutting down.\n\nChange-Id: Ide2343fb5fe06ee8a5014023bc1817ec142e5ec8\n"
    },
    {
      "commit": "9e921bc034450e35c2b5d45cc09a26920ad0d6e6",
      "tree": "f473e0e54aa1d55c229360e717180cb369e932de",
      "parents": [
        "f3e6deb07657623716ec2742e89af03a76423560"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 11:07:49 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 11:07:49 2012 -0800"
      },
      "message": "Remove Mutex::ClearOwner.\n\nThis was a bad idea (of mine) badly implemented (by me). I went a different\nand better route in Heap::Destroy, and that fix -- allowing us to destroy\na locked mutex during shutdown -- makes this code obsolete.\n\nChange-Id: I79452a26b4cbf131b37bf9ca131e46500f1e5a5e\n"
    },
    {
      "commit": "e65a6c99b0fd8908484b61c3c8f5a43cf0081f3c",
      "tree": "210b7c9fab7846ae58c97b445101f4f7500f912d",
      "parents": [
        "e689d51969fe1ab682a6a937973ec1e16ea8adcb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 23:48:31 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 23:48:31 2012 -0800"
      },
      "message": "Mac build fixes I missed in my previous patch.\n\nChange-Id: Ibf63e77b9e18374fa802b508c9e489105a88e017\n"
    },
    {
      "commit": "12c51e3e5a8b5655351539618f1cf2331f52d1ab",
      "tree": "c43410d90d36fb5eb2f2e6b956ab28000792626e",
      "parents": [
        "b4807ec95e8ba663b47c13da3e065874b1b586e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 20:25:05 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 17 20:25:05 2012 -0800"
      },
      "message": "We use NULL to mean \"unknown source\", but you can\u0027t pass NULL to C string functions.\n\nFound by the stability monkeys.\n\nBug: 5880980\nChange-Id: I2775024a5038d3716f4e7c6beac02c3f5e0a3f3a\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": "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": "0571d357843c53e042f370f5f2c2e9aa3fe803a9",
      "tree": "197e5b1c0b1bf0ee8cc0e1960470d0a8d203b4af",
      "parents": [
        "33dc7717cd16592bcc825350bea6305be9eb2ea1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 03 19:51:38 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 11:57:18 2011 -0800"
      },
      "message": "Refactor the use of Method by the compiler.\n\nRemove the dependence on the Method object in dex2oat, allowing lazier\nresolution.\nIntroduce new find and iterators in DexFile to simplify common\noperations and avoid misuse of class data items.\n\nChange-Id: I39fb8252190f543d89d8b233076355cec310fe08\n"
    },
    {
      "commit": "33dc7717cd16592bcc825350bea6305be9eb2ea1",
      "tree": "da0643d598a30d0fb3e63ba036f53cbda1e011fd",
      "parents": [
        "72db0d77d6c476c71c5bbaa14a80ca77f23a47f3"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 09 17:54:24 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Nov 11 10:51:43 2011 -0800"
      },
      "message": "Changed monitor to contain method and return pc values for logging.\n\nThe monitor saves method and return pc for logging, instead of the\nsource filename and line number. This saves it from having to do a\nlookup every time a fat lock is acquired.\n\nChange-Id: I88871abc90626b9e4dffc9677c093fd24937385c\n"
    },
    {
      "commit": "4514d3c0e69a49f5dbe19138330a2bb2aee36d63",
      "tree": "f5bd420d6e5f1f2daeb418561c7adf016c161810",
      "parents": [
        "872d4ec7225444d9400d30f9027247deb91012fd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 21 17:01:31 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 21 17:55:30 2011 -0700"
      },
      "message": "Fixes for ThreadStress test\n\n- Fix deadlock when ThreadGroup.remove(Thread) was run with\n  thread_list_lock_ but needed to GC to allocate an iterator\n- Fix ~MonitorList to clean ownership of any locks that might be held\n  by JNI or daemon threads on shutdown.\n\nChange-Id: I95e23c3b7c745f6a8387789949f3ec849458a27d\n"
    },
    {
      "commit": "fc86162ce2a3467acb690e18cc8bd9b3daafc606",
      "tree": "949145ce27225c93a41354460fa76cdc62647076",
      "parents": [
        "24a3c2e9924e8765c4a9b4d383cb8f3b922f9c9f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 17:57:47 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 20:21:27 2011 -0700"
      },
      "message": "Implement lock contention event logging.\n\nChange-Id: I88b30985590157bb5d04229a97f191b898f141bb\n"
    },
    {
      "commit": "24a3c2e9924e8765c4a9b4d383cb8f3b922f9c9f",
      "tree": "1f61ecb377be4abcba4838651bc9d98b548a3f81",
      "parents": [
        "3535c22d05bb4600255db90b490e625eda874b53"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 18:07:52 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 18:17:36 2011 -0700"
      },
      "message": "ClassLinker changes\n\n- Add ClassLinker::LockOwner for SignalCatcher\n- ClassLinker::ResolveMethod now sets CodeAndDirectMethod when code is available\n\nChange-Id: I404b80d1994808e018d00e0b30e8ba4f9d08fecc\n"
    },
    {
      "commit": "f8e012785ee61a3d2f43f74a249d66e1381bdb83",
      "tree": "00d86f07a48653065bc77fffb4561a7072370499",
      "parents": [
        "2ced6a534157d5d963693346904389c19775d2da"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 11:29:05 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 11:29:05 2011 -0700"
      },
      "message": "Add -verbose to dex2oat, and improve -verbose:monitor output.\n\nChange-Id: Iec19eb45a600e80855d25a1a02d2351f628c3a1a\n"
    },
    {
      "commit": "c33a32bccc4c66ed82ce3a580b16636399385cb4",
      "tree": "ef101d11157784c0724998d39e988a275ed4f69c",
      "parents": [
        "a465c2034094eeb827ff9204951703dc5f269d60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 18:18:07 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 18:18:07 2011 -0700"
      },
      "message": "Sweep the monitor list.\n\nChange-Id: I343261206f8bbabd245b404dd95d532255e5d870\n"
    },
    {
      "commit": "32d6e1e5654433d7eadede89e1c770b2c839aee9",
      "tree": "6534711910fe730d700e9f747252b800dfc143e0",
      "parents": [
        "231a01597f561b4d4841ac3bb494c8a55b43fdd0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 14:47:44 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 14:47:44 2011 -0700"
      },
      "message": "Add -verbose:monitor and silence the monitor logging by default.\n\nChange-Id: If05c4853c6c072759fb6b7f301a583d6b8c55b9f\n"
    },
    {
      "commit": "5cb5ad27944efb08d4556b3c0d362302e37e832b",
      "tree": "63334f19072ca2ba7179973f0ce62101ee89605d",
      "parents": [
        "d6fe38d96b6116bd53cf2cb14734af8d69e08661"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "message": "Fix exception throwing to support no detail message.\n\n(The empty string as a detail message is distinct from a NULL detail message,\nand is treated differently by Throwable.printStackTrace.)\n\nChange-Id: I8c65deac9f18c5782dcf6e72e4c37e6dd4174fe9\n"
    },
    {
      "commit": "8e4aac52962d54cb4be2078b9cd95685e067133a",
      "tree": "bb85a52e0326bef05acf9abe5e3d3b396c1d3795",
      "parents": [
        "03f034949fa7b44aa49e6603d8d5e7a55bf07795"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 17:03:36 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 17:03:36 2011 -0700"
      },
      "message": "Add the \"- waiting on\"/\"- waiting to lock\" lines to the SIGQUIT output.\n\nChange-Id: I0a8ab2e9e54c390e0d499ef464d82c2f2c628cbe\n"
    },
    {
      "commit": "4681c809ba35d50fab92c592ce8d2c7f8b2731f7",
      "tree": "218759bc9564bdbaa49d1be89d257ecddd3a8a14",
      "parents": [
        "54643083afd5b99f4d52a32b4030aec0db8d0e2f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 25 18:04:37 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 25 18:04:37 2011 -0700"
      },
      "message": "Various things.\n\nChange-Id: I6911c995d7635b95e6dc6b9112bf4e1adf85e830\n"
    },
    {
      "commit": "dc33ad5db2dc6ed9b76d5219888626a604debbe1",
      "tree": "8b9e612cd44b77ae26c44bc23615f34ecded1004",
      "parents": [
        "7011e675bf585909aa9f6599102afcd66e0a6738"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 19:46:51 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Sep 17 10:27:12 2011 -0700"
      },
      "message": "Initialize all of class Thread\u0027s fields.\n\nChange-Id: I28f1539bbcfebe06e62de692d306b479ed3eaead\n"
    },
    {
      "commit": "85d1545e985ac689db4bad7849880e843707c862",
      "tree": "dbda9214657085a3cbb77b323766da585e133a36",
      "parents": [
        "dcb3dd8bfd6e2d5935442fe8671a2f6326a1e4e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:33:01 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:38:56 2011 -0700"
      },
      "message": "Add packing to class Thread.\n\nOtherwise, code compiled on the host can use different offsets than\nwe need for the same structure on the target.\n\nAlso add commented-out code to start up the various GC daemon threads.\nMore Class native methods need to be implemented before that will work.\n\nChange-Id: I618b647b92378eec1b25cee469c8cfccf42f21fd\n"
    },
    {
      "commit": "54e7df1896a4066cbb9fe6f72249829f0b8c49c6",
      "tree": "c7889163c116637001c98270f897d41ca02ce8a5",
      "parents": [
        "a0a764a1f5757f0f7ffa695b855b9d0ac8c2e455"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "message": "Various bits of cleanup.\n\nMost notable: PrettyField now includes the type (but, like PrettyMethod,\nlets you turn this off), and there\u0027s a new PrettyClass, and PrettyType\nhas been renamed to PrettyTypeOf.\n\nI\u0027ve also moved the dalvik \"sync\" stuff into files named \"monitor\", and\nmade some of the implementation details private.\n\nChange-Id: I39ea79b45e173f9ebbf9878bcead207766a5653f\n"
    },
    {
      "commit": "5f79133a435ebcb20000370d56046fe01201dd80",
      "tree": "974c4610e30e8cc950e6e461e66b939361cb2bbe",
      "parents": [
        "78128a63b2615744760b7f8ab83df9764a5d4a95"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 17:45:30 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 10:56:44 2011 -0700"
      },
      "message": "Implement monitors.\n\nChange-Id: Ifc7a801f9cbcdfbc1e1af5c905261dfadaa60f45\n"
    }
  ]
}
