)]}'
{
  "log": [
    {
      "commit": "ee1d79a603c77c0667b27c075a983579d5c51f7e",
      "tree": "7b23516402105319ab4736cd179a1de9101eeb46",
      "parents": [
        "78bd9b2198f0ccc48036c1517b2d9a9023157dfb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Feb 21 15:46:30 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 09:21:12 2014 +0200"
      },
      "message": "Cleanup transaction support\n\nUpdates Thread::CreateInternalStackTrace to support both transactional and\nnon-transactional modes using template.\n\nGeneralizes non-transactional mode for invariant fields (which are set only\nonce).\n\nRemoves ArrayLog::VisitRoots as we never create Array logs of ObjectArray. As\nObjectArray elements are set using Object::SetFieldObject, they are already\nrecorded in the object logs: the object is the array itself and the offset\ncorresponds to the element index in this array. And also checks we never log\nObjectArray in array logs.\n\nFixes location of thrown exception when calling native method during class\ninitialization.\n\nChange-Id: Idbc368d3b8292b85ff40bc8a7c559e085477bf89\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "1eb512d33f94d1dd7ea38263307ba0f7a0dfa653",
      "tree": "b4d4d9b16013ab90fb4b40d23013d7ef44bb5852",
      "parents": [
        "b917ea1a62aa0ab8eca3f689ef64b5be34e11abb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 18 15:42:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 20 14:55:26 2013 -0700"
      },
      "message": "Fast JNI support.\n\nUse a modifier to signal a native method is a fast JNI method. If the\nmodifier is set then don\u0027t perform runnable transitions.\n\nChange-Id: I7835b4d837bfdd1cb8e2d54b919c0d5e6cf90499\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "7a22fa657b972e8323692368975bc5a7be1cc0f5",
      "tree": "4fe55837daae4e252eeaccf1be931f2e7ed434cb",
      "parents": [
        "87b185f3bfd766001dcd5977fc0ee0489e5a8a28"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:16:16 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:21:05 2013 -0800"
      },
      "message": "Refactor StackVisitor to take a Thread*.\n\nThis allows assertion checking on the thread, principally that we never try to\nwalk the stack of an unsuspended thread.\nFix bug in the OwnedMonitorVisitor where GetVReg could be called on a\nStackVisitor with no context.\n\nChange-Id: I06539b624b253b6fb7385e7be11a4bced1d417b2\n"
    },
    {
      "commit": "f327e07b37e349b1ec5eaad6dc294a9b7a081d20",
      "tree": "2c64b1f6212045a529c18d1dbe04b3da8fd1d6e9",
      "parents": [
        "9e0c175a0cea5c8c88a6927e6375554118f74a82"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 16:01:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 18:07:12 2013 -0800"
      },
      "message": "Implement ObjectReference.MonitorInfo.\n\nChange-Id: Iefc276939b9e569f4ea4d7a5af9a28276a3fb632\n"
    },
    {
      "commit": "306057fd278d75bf3794bd5243a3b6652c487d18",
      "tree": "62652a97caace11e50408d15688ced3514039219",
      "parents": [
        "2d76b041be770102fc912effc398e629a18180d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 12:45:53 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 02 11:15:42 2013 -0800"
      },
      "message": "Support for deoptimization needed for debugging.\n\nThe deoptimization code is untested, and some sanity checks in the\ninstrumentation are disabled because they need debugging.\n\nChange-Id: I1b60a65a60bddc9b107ad4659da097b55ce901c3\n"
    },
    {
      "commit": "cfaa455374aae0a08c8cb28b5bb306b17866d652",
      "tree": "ca8f25a06f234385b6e62bb774085f1324e5d519",
      "parents": [
        "3676aeb03d5f70933891bb3b21abb8e31a81e36c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 21:00:08 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 30 16:38:21 2012 -0800"
      },
      "message": "Turn the thread peer_ into a Object*.\n\nDon\u0027t use a JNI global ref for the thread peer_ so that we can\nsupport more threads than we can global refs. This fixes run-test 51.\nFix a race in thread destruction where a thread may be requested to\nsuspend while deleting itself.\n\nChange-Id: Id8756a575becf80d2a0be0a213325034556927f1\n"
    },
    {
      "commit": "725a957985171d712d5c048cc3d00ff14968784b",
      "tree": "3bd4b161268ecd477aa471665316fb27a3dda145",
      "parents": [
        "35883cc623fdf475a4ead1dafcba9e9becc1ed11"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 13 18:20:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 14 11:42:33 2012 -0800"
      },
      "message": "Pulled out instrumentation into its own class separate from trace.\n\nThis is in preparation for Ian\u0027s debugger changes. The instrumentation\nstill needs support for debugging, which I\u0027ll add later.\n\nChange-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72\n"
    },
    {
      "commit": "dbe6f4613ae0161b169f4fca8a616b0b393370ab",
      "tree": "bcf21fa802f8ae261522e8c9bab3685020908d13",
      "parents": [
        "474b6da273c7ce6df50a4e51eb9929a77e1611c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 25 16:54:50 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 22:36:20 2012 -0700"
      },
      "message": "Change Thread::peer_ to be a jobject instead of an Object*\n\nFixes issue where GC was freeing the java peer if the parent thread exited before the child thread got registered.\n\nChange-Id: I6fbe74865d5827d243ac55fc396679afa97ff2f9\n"
    },
    {
      "commit": "15bf2d34efa2218e287b584fb3653d268b9edc8d",
      "tree": "4435664bd2c9a041d8c355940f2b5c95e03d38f7",
      "parents": [
        "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 17:33:04 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 17:22:52 2012 -0700"
      },
      "message": "Use bionic\u0027s dlmalloc 2.8.5.\n\nAlso fix free space computations for DDMS.\n\nChange-Id: Icbc045b5461af89a0516f37f01acaaa815205348\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "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": "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": "eac766769e3114a078c188ea26776a81f0edb3cf",
      "tree": "4b9b8dfc89725173431817baba4455c013e40577",
      "parents": [
        "3f9ace8d90bfc48c8d7bf35af66de8ce8238de7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:56:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 25 12:04:43 2012 -0700"
      },
      "message": "DO NOT MERGE Fix all unsafe caching to be like libcore.\n\nThis way, if a runtime is restarted within a process, we re-initialize all\nthe cached data.\n\nConflicts:\n\n\tsrc/native/java_lang_Runtime.cc -- nativeExit lost an argument in dalvik-dev\n\n(cherry picked from commit 7756d5473fa27ce7e6ac7c31770eef7030431da4)\n\nChange-Id: I6184fc20c2a9ec16c4b053584a4d1c3b64452d0f\n"
    },
    {
      "commit": "0dae08ead9112adb81ad507b81187f00f77bc168",
      "tree": "5c09e5ab16fa544360e6354796f999cfeaf991e7",
      "parents": [
        "776ac1fa61237db645adb4370a4aab888530caf4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:55:11 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:55:11 2012 -0700"
      },
      "message": "Move JNI methods out of top-level.\n\nChange-Id: Ia9c883ba9a13b205cda7b72024e2939f02583acb\n"
    },
    {
      "commit": "3f9137d85b3c2c0800fb26e3415ace1a6b7cc4de",
      "tree": "7b2c72c1ccf3512fb52fc48ecfb84f9c5c680a82",
      "parents": [
        "6ac6a365a9bdb00e85b46eb8fadfb0cebf653cba"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 08 15:59:19 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 04:49:44 2012 -0700"
      },
      "message": "Fix NPE message in LLVM.\n\nChange-Id: Ie65060d065d747a6c9ad22c61d5fb29f6cf3c249\n"
    },
    {
      "commit": "6a144338023bdc0ca6954fc71a1f9b4d94088ee4",
      "tree": "51efa8edbf277f2fa73f7e21b36fec4cb1a3339d",
      "parents": [
        "cb67388650ac7cedfc80b524adebd595147d4d3f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 13:07:11 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 13:07:11 2012 -0700"
      },
      "message": "Switch to Thread::WalkStack rather than manual Frame::Next.\n\nAlso fix test 039.\n\nChange-Id: I07d0559bb86d67a7f7947768bd8370fb4cf06c26\n"
    },
    {
      "commit": "ee0d3fb2fbd736484fe8c3177a4e965ea86d1c65",
      "tree": "ea4c94a803007cb51faca6b520073e95d9f5de1a",
      "parents": [
        "f058c0fc5c32b45620d8e3ddc2758faf3be22a2c"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 01 14:55:33 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Apr 01 18:25:21 2012 -0700"
      },
      "message": "LLVM doesn\u0027t use Frame.\n\nChange-Id: I34200a874739598c33cc8fe17db4f70d29073310\n"
    },
    {
      "commit": "0512f02dd6623c0870c11fbf3274d7462f732136",
      "tree": "c90b32c42b285d3cea45272601b5cf007b4ea264",
      "parents": [
        "88c5c355fc3d881f905564911d746b2313d5fc89"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 22:10:52 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 22:10:52 2012 -0700"
      },
      "message": "Remove anonymous namespaces.\n\nNo one likes them and we\u0027re pretty inconsistent at using them. We\u0027re\nmuch better with \u0027static\u0027.\n\nChange-Id: I65eeffd0fb60633edca30923af0caedb06a0105d\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": "5cb71bb4437db51f415e57e6002ba1ef023e7de1",
      "tree": "6fcbe0549c759dde4e6513da373fdda8fb605815",
      "parents": [
        "55c02cd377ada856e4ca12f8a433da0f9888a667"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 09 14:57:37 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 10 23:20:18 2012 -0800"
      },
      "message": "Fix VMStack_getClosestUserClassLoader\n\nFixes failure in libcore.java.io.OldAndroidSerializationTest#testSerialization\n\nChange-Id: I13187f081ea87402be88d59a48ec3890505342ae\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": "3c92a1833dcf1bda1b6180e053ffa4334866d1f9",
      "tree": "b70fb71bae37e2297e7f20de733e33da44a583a4",
      "parents": [
        "c27273f0508fb56ba35bead311151fbe45724d35"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 02 15:21:41 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 02 15:21:41 2012 -0800"
      },
      "message": "Fix VMStack::getClosestUserClassLoader to ignore NULL\n\nNULL is the bootstrap loader, getClosestUserClassLoader was incorrectly\nnot ignoring it.\n\nChange-Id: I8b18bb01d3a5ae8b9f34ccbbfa5fc25750d91716\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": "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": "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": "6bbe8b053c1b6177c6fbe0ff88a96d863ce76d3b",
      "tree": "18079645c3280d4dbf31eeafd8e907b9fbd2140a",
      "parents": [
        "01158d7a57c8321370667a6045220237d16e0da8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 13:15:00 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 13:15:00 2011 -0700"
      },
      "message": "Implement VMStack.getClosestUserClassLoader for art.\n\nChange-Id: Ia26650984f289b1c5c63a9501f3304d970739a46\n"
    },
    {
      "commit": "01158d7a57c8321370667a6045220237d16e0da8",
      "tree": "f62e0bef39f7f04c969327f6a8540d7cff6e373d",
      "parents": [
        "6699709cf27b706b5221527d9815dd9365911710"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 19 19:47:10 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 11:48:27 2011 -0700"
      },
      "message": "Implement most of VMStack and some of Zygote.\n\nChange-Id: I07e18259a0452a2a9b077148f4f1ca67d3f63427\n"
    },
    {
      "commit": "8daa0929f08a3080ea64dbd4e997e72f411e6fc9",
      "tree": "cecee23131d5e0357c17c44bcccc7ddcfb31b925",
      "parents": [
        "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 13:46:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 14:01:57 2011 -0700"
      },
      "message": "More threads work.\n\nAdds stubs (and sometimes implementations) for dalvik.system.VMStack and\njava.lang.Thread native methods. There was a bug in the dalvik\nthread priority setting code, where the current thread and the passed-in\nthread were confused.\n\nI\u0027ve also pulled Mutex and ThreadList out into their own files, and\nmoved some functionality around (with the aim of having more stuff\nprivate, especially locks).\n\nChange-Id: Ieb0f22669cac3df44ca34f7868f8e7d4dfa09ab6\n"
    }
  ]
}
