)]}'
{
  "log": [
    {
      "commit": "692063955ae845d8bd9fa2d22a50a1e06513bdcf",
      "tree": "39771e7a445ec9ff5d6c79bb37ff268e44d8ef64",
      "parents": [
        "1b8e8cac2c96f6d2af8e7217f997a30e11c098b5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 07 15:54:25 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 08 12:13:28 2015 +0200"
      },
      "message": "JDWP: fix thread_list deadlock\n\nLimits the scope of Locks::thread_list_lock_ locking in the debugger\nso we do not try to lock it twice when creating a JDWP id (because\ncalling Object::IdentityHashCode may need to take the lock).\n\nBug: 20048099\nChange-Id: I305dd72ccc4d2d007d1603b0d52bcfa94b6842a7\n"
    },
    {
      "commit": "e4266c511ffe6a1ed472292bea06881dcbf06f7a",
      "tree": "107bf68179b24919f284246cba181a0113119660",
      "parents": [
        "0b6daeb0f0014474b542cbba1f713eb0dbefb7f9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Oct 29 12:06:51 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Feb 24 18:00:29 2015 +0100"
      },
      "message": "JDWP: assert no pending exception when using JNI\n\nChecks there is no pending exception when creating new JDWP ids using\nJNI routines. We can create JDWP ids when executing code and report\nan event like a breakpoint.\n\nBug: 17491155\nChange-Id: I4e5851bf2261510b7776a709a2388e7ff586a77c\n"
    },
    {
      "commit": "55f6534f260ec82ef2d69a0667b1883f13d11399",
      "tree": "6e00c7f32242baf3a1482db3656816a0b2f134a4",
      "parents": [
        "8fccea249b1a6f1469eeea42c2b2cca06ce1c70d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jan 13 22:48:34 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jan 13 23:11:06 2015 +0100"
      },
      "message": "JDWP: fix deadlock with GC\n\nThis CL fixes a deadlock where JDWP thread and running GC thread are\nwaiting for each other. Here is the sequence of the deadlock:\n1. GC thread disables access to weak global references, then releases\n   mutator lock.\n2. JDWP thread takes mutator lock exclusively after suspending all\n   threads.\n3. GC thread waits for shared mutator lock which is held by JDWP\n   thread.\n4. JDWP thread clears weak global references but need to wait for GC\n   thread to re-enable access to them.\n\nTo avoid that situation, we ensure the JDWP thread does not attempt\nto delete weak global references while holding the mutator\nexclusively so GC thread is not blocked.\n\nBug: 18995321\nChange-Id: Ia7e82f463c27ffdcfd730c3117337a6a33d111e7\n"
    },
    {
      "commit": "7d95565c84d91ae5dcec4b89728ada208633de0c",
      "tree": "3d45e97f3ca520a07c5005974b092e10fee0a433",
      "parents": [
        "f610c0597e001cb1043aa4074afe25ae79a800e3"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Oct 22 10:57:10 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Dec 17 09:38:28 2014 +0100"
      },
      "message": "Cleanup JDWP event matching\n\n* Use std::vector for the event match list.\n* Make event reporting methods void since result is never used.\n* Use nullptr keyword instead of NULL.\n\nChange-Id: Icd6f47e46cefc2cc63325df00037cd4b6a475259\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "e2d628b5b0a1b9c29c173f3cbad3ef6cb6c24d2d",
      "tree": "b1fa6ef18e26a5bad38dde6735b673a54194a6e8",
      "parents": [
        "8fc5acfd382bdc0d7920e8a13439b64344a8988a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Oct 23 15:39:33 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Oct 23 16:31:58 2014 +0200"
      },
      "message": "Make ObjectRegistry::InternalAdd GC safe\n\nBecause a call to IdentityHashCode may cause GC, the object pointer\nmay become invalid (if the object has been moved) on next uses. We\nnow access the object through a Handle to be GC safe.\n\nAlso remove unused methods.\n\nBug: 18098424\nChange-Id: I38fb55c3a6be62c4d98d4c94272a9cfeba327598\n"
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "a032870e19e4a6c8d62b7dab806261006fa711ee",
      "tree": "46092c2a7b5614e0f7d750f1f4b3257440e705de",
      "parents": [
        "ebeaf8f7c88af0917f4b7b1137dd78d56d66dd59"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 25 22:06:12 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 25 22:19:11 2014 +0200"
      },
      "message": "Fix memory leak in JDWP object registry\n\nDeletes ObjectRegistryEntry objects before clearing the maps.\n\nChange-Id: Iaa30941fb8768b7294366a8f9855580cb29dadf5\n"
    },
    {
      "commit": "b5a9e3d1cc1fd66683e43e365afc8c900e2800c4",
      "tree": "5b259807b4c5c67c532050939458a8390234a7a0",
      "parents": [
        "3b95d23f44485d207aa6ef298dc744fa2355578b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jun 09 12:11:20 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 11 14:46:13 2014 -0700"
      },
      "message": "Remove Object* weak roots from the debugger.\n\nThe weak roots were converted to JNI weak refs.\n\nSince the weak roots are now normal JNI weak refs, we eliminate the\nneed to insert read barriers for those weak roots in the debugger and\nthe need for the GC to have a separate step to update them as part of\nthe system weak sweeping.\n\nBug: 12687968\nChange-Id: If16396d4713457b8af4f1ea6a0c6ec6799cb615e\n"
    },
    {
      "commit": "83c8ee000d525017ead8753fce6bc1020249b96a",
      "tree": "d5167ed15dee2629905ac3640b6ea0578d4ae312",
      "parents": [
        "7cba217ab0661d74deccbb97160cdf60b74d4ea3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 28 14:50:23 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 10:40:10 2014 -0800"
      },
      "message": "Add root types and thread id to root visiting.\n\nEnables us to pass the root type and thread id to hprof.\n\nBug: 12680863\nChange-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb\n"
    },
    {
      "commit": "412c7fced915fc8d4d5e4166e977d55c809168a6",
      "tree": "b8efee7f46a440f3e89765b1e9b2aa6454839c87",
      "parents": [
        "109e2b34799a377a0407781fc32ec1ec607d6c41"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 07 12:18:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 08 15:23:36 2014 -0800"
      },
      "message": "Make debugger / jdwp compaction safe.\n\nFixed GetInstances, GetReferringObjects, CountInstances to use\nVisitObjects instead of the live bitmap.\n\nWe now treat the object registry as system weaks and update the\nobjects when/if they move. Also added the recent_allocation_records_\nas roots.\n\nBug: 12936165\n\nChange-Id: I615c289efbf2977ceab5c4ffa73d216d799e6e33\n"
    },
    {
      "commit": "f288bd1b268bbbd94c163c9c23bdd20e42bbc36b",
      "tree": "9e70a2778d34bfd5ca096d27c254c2639346b033",
      "parents": [
        "ff8d298c9a937822492e85b264bc0c4a3b3642a9",
        "e96060aa2483529d087031f7cdcc0405f1ef9218"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 12 15:52:24 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 12 15:52:26 2013 +0000"
      },
      "message": "Merge \"Manage JDWP errors related to garbage collection.\""
    },
    {
      "commit": "e96060aa2483529d087031f7cdcc0405f1ef9218",
      "tree": "72812d15a71818a8b197b17e48199560bc83a8ae",
      "parents": [
        "315ab6c077c4db2031f1ffa40b78722d8269dc9b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Dec 11 12:06:28 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 12 10:03:39 2013 +0100"
      },
      "message": "Manage JDWP errors related to garbage collection.\n\nReturns INVALID_OBJECT error in case of invalid object ID or null object ID in\ncommands ObjectReference.DisableCollection, ObjectReference.EnableCollection\nand ObjectReference.IsCollected.\n\nNote: JDWP specs do not state ObjectReference.EnableCollection must return any\nerror code. We choose to be more strict so these three commands all behave the\nsame.\n\nChange-Id: I06fb75b75f7d33cf4d23e121d9541bfd70b778bb\n"
    },
    {
      "commit": "0630ab5239a7d7be24dedbc3f66c822332446fc3",
      "tree": "3043efa35ae177db590340138b52772bf71642dd",
      "parents": [
        "315ab6c077c4db2031f1ffa40b78722d8269dc9b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Nov 28 18:53:35 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 12 09:29:04 2013 +0100"
      },
      "message": "Fix null argument handling during invoke from JDWP.\n\nFix a crash when passing null argument to a JDWP invoke.\n\nChange-Id: I167f93f3a411f0de8458db3ba5bed3169d557ee9\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "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": "449db33fafa29578df60e8a323f78d5eb6247e76",
      "tree": "a868b59dc78593b140d65239b087b77f59bdebed",
      "parents": [
        "ed1790e83352e54420018d1495eb010f7cd48a64"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 12 18:30:52 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 12 18:35:01 2013 -0700"
      },
      "message": "For JDWP, suspend thread before configuring it for single stepping.\n\nChange-Id: I05a7c28c9e977885195797a78a492aa0f72801b7\n"
    },
    {
      "commit": "5d021c7399fa8090910d5b47ed00465a4e0e7e0f",
      "tree": "08d4827c361e15cbc6f332def6d4e15a0aa48535",
      "parents": [
        "3f47c12487250f61f3be95e9f275e3b08e2c49fb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 07 00:53:12 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 07 01:12:21 2013 -0800"
      },
      "message": "Fix sdk_x86-eng build error about possible use of uninitialized fields\n\nChange-Id: I03864b2e97ba968c0826d1f62d87e6c894b4e31f\n"
    },
    {
      "commit": "0f827169742aad6209d830db773a101849c32a83",
      "tree": "df06bd3d9fa91757d2c87fbe891007184f823e9d",
      "parents": [
        "eb5cb608fcb0d636961653ad561b2c7ee40de1ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "message": "Fix JDWP ObjectRegistry lock ordering.\n\nAlso make debugging lock ordering violations nicer by using our\nLockLevel operator\u003c\u003c.\n\nChange-Id: Ic15ebe70363a90a09f6491bd5c336a604e9d6c48\n"
    },
    {
      "commit": "64f574f474aa77c72778640ab21f8cfa72546812",
      "tree": "c90d3ef8f56144e61a4a043138a5118c3c9e7b9a",
      "parents": [
        "492899e445c21f09db458c76d773d571cc6cc0ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 14:57:12 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 15:46:06 2013 -0800"
      },
      "message": "Implement EnableCollection, DisableCollection, IsCollected, and fix Exit.\n\nRewrites the object registry to not just be one big leak. We use jweaks\nby default, which means (a) the GC doesn\u0027t need to know anything about us\nand (b) we don\u0027t cause unnecessary heap retention. We promote to regular\nJNI global references if the debugger asks us to.\n\nThe problem with VirtualMachine.Exit turned out to be that you\u0027re supposed\nto send a success reply to the command before exiting. This is a bit awkward\nwith our current division of responsibilities, but it lets us pass another\ntest.\n\nAlso log a summary of our replies when -verbose:jdwp is in effect, not\njust the requests.\n\nChange-Id: Idb33e99fe7d8bee7a79152d81fee42e2af00852b\n"
    }
  ]
}
