)]}'
{
  "log": [
    {
      "commit": "0376e6b62bfb43b515b791f0a7afed2d0d8030bc",
      "tree": "776dc23a8313dac196ac485975aa6d8f228d7756",
      "parents": [
        "78c0bb9bc0668be07baa0bde1e82a475a0ac1f86"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Feb 06 18:12:59 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Feb 06 18:13:54 2014 +0100"
      },
      "message": "Fix JDWP thread crash.\n\nFix a crash happenning when JDWP thread attempts to process incoming packets\nfrom a closed socket. It happens when the runtime shuts down while JDWP thread\nis still running and waiting for incoming JDWP packets.\n\nWhen we close the JDWP connection from runtime destructor, we wake up the JDWP\nthread. To avoid this, we call Dbg::Dispose before closing the connection.\n\nBug: 12578041\nChange-Id: I8d03478b6c3f5f49e08899d476f292b7a401d5f3\n"
    },
    {
      "commit": "65637ebbb3c5bdf3f287a76df29a0340c10414c8",
      "tree": "b9f365900059818cb0dedd4acef38c8cd78143d7",
      "parents": [
        "49c670f268218f3b71dbdd99f26606487713f864"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 10 17:40:02 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jan 14 10:30:37 2014 +0100"
      },
      "message": "Fix JDWP IsCollected command handling.\n\nUpdate the handling of the JDWP IsCollected command for \u0027null\u0027 object id and\ninvalid object id.\n\nWe follow the RI where \u0027null\u0027 object id triggers an INVALID_OBEJCT error but\nan invalid object id does not trigger error and return \u0027true\u0027 result.\n\nAlso fix handling of \u0027null\u0027 object id to avoid confusion with valid object id.\nWe used to rely on ObjectRegistry::Get returning NULL to detect null object id\n(in which case we return an INVALID_OBJECT error). The issue is this method\nmay also return NULL for a valid object id if the corresponding object has\nbeen collected. In this case, we must not return any JDWP error and the result\nof the command should be \u0027true\u0027 meaning the object identified by the given id\nhas been collected.\n\nBug: 12221035\nChange-Id: I013f3759bac7cf5b1e9ee3e8c0d1bb2a11f1b654\n"
    },
    {
      "commit": "138dbfc3336e379d74d157086f69a0fbe830089b",
      "tree": "f5fa88466e6ab339d2a6faf9c9105bafcaee3ea7",
      "parents": [
        "62e45483db4aa1be096d3ce91903e01ef52fb901"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Dec 04 18:15:25 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jan 13 15:08:24 2014 +0100"
      },
      "message": "Selective deoptimization.\n\nUpdate the instrumentation to allow selective deoptimization.\n\nSeparate instrumentation listener registration from stubs configuration. A\nlistener is now responsible for configuring the appropriate stubs.\n- The method tracing listener installs instrumentation entry/exit stubs or\nthe interpreter depending on the accuracy of events we want (controlled by\nkDeoptimizeForAccurateMethodEntryExitListeners).\n- The debugger registers itself as an instrumentation listener but does not\nmodify methods entrypoints. It only does this on demand when deoptimizing one\nmethod or all the methods.\n\nThe selective deoptimization is used for breakpoint only. When a breakpoint is\nrequested, the debugger deoptimizes this method by setting its entrypoint to\nthe interpreter stub. As several breakpoints can be set on the same method, we\ndeoptimize only once. When the last breakpoint on a method is removed, we\nreoptimize it by restoring the original entrypoints.\n\nThe full deoptimization is used for method entry, method exit and single-step\nevents. When one of these events is requested, we force eveything to run with\nthe interpreter (except native and proxy methods). When the last of these\nevents is removed, we restore all methods entrypoints except those which are\ncurrently deoptimized.\n\nDeoptimizing a method requires all mutator threads be suspended in order to\nwalk each thread\u0027s stack and ensure no code is actually executing while we\nmodify methods entrypoints. Suspending all the threads requires to not hold\nany lock.\nIn the debugger, we deoptimize/undeoptimize when the JDWP event list changes\n(add or remove a breakpoint for instance). During the update, we need to hold\nthe JDWP event list lock. This means we cannot suspend all the threads at this\ntime.\nIn order to deal with these constraints, we support a queue of deoptimization\nrequests. When an event needs selective/full deoptimization/undeoptimization,\nwe save its request in the queue. Once we release the JDWP event list lock, we\nsuspend all the threads, process this queue and finally resume all the threads.\nThis is done in Dbg::ManageDeoptimization. Note: threads already suspended\nbefore doing this remain suspended so we don\u0027t \"break\" debugger suspensions.\n\nWhen we deoptimize one method or every method, we need to browse each thread\u0027s\nstack to install instrumentation exit PC as return PC and save information in\nthe instrumentation stack frame. Now we can deoptimize multiple times during\nthe execution of an application, we need to preserve exisiting instrumentation\nframes (which is the result of a previous deoptimization). This require to push\nnew instrumentation frames before existing ones so we don\u0027t corrupt the\ninstrumentation stack frame while walking the stack.\n\nBug: 11538162\nChange-Id: I477142df17edf2dab8ac5d879daacc5c08a67c39\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": "6054239c1d10e35dfa953c9c3d414db366e86650",
      "tree": "3f06f1636d4142ef9c518374d82999a527fb7781",
      "parents": [
        "19031d51ab9edfc3b1996891d654a6b86ca937c0",
        "0630ab5239a7d7be24dedbc3f66c822332446fc3"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 12 08:33:37 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 12 08:33:37 2013 +0000"
      },
      "message": "Merge \"Fix null argument handling during invoke from JDWP.\""
    },
    {
      "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": "8755359a35a4aa915fe3753633015263c7e97b74",
      "tree": "57c0b62f7e9b6cacfbd18d1e33f437b69621fa48",
      "parents": [
        "0b5a3fe08213dff52b73b2388b50a87d09b7da4f",
        "c528dba35b5faece51ca658fc008b688f8b690ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 11 20:25:08 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 11 20:25:09 2013 +0000"
      },
      "message": "Merge \"Enable moving classes.\""
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "123756a041baf8421ed933312605daa5ef082f6f",
      "tree": "0b9524660399b9e42adcc178027c9ddd8a61bd38",
      "parents": [
        "315ab6c077c4db2031f1ffa40b78722d8269dc9b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 27 15:49:42 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 05 15:02:35 2013 +0100"
      },
      "message": "Fix JDWP class-only modifier.\n\nFix Dbg::MatchType which is used for class-only and exception-only modifiers.\n\nAlso fix crash happening when notifying an exception. A debugger may walk the\nstack of the current thread so we need to keep the instrumentation stack frame\nsynced with the native stack.\n\nBug: 11856587\nChange-Id: Ibf95f8a83ce9ee640abf945e498b42cc88ea92a0\n"
    },
    {
      "commit": "87118ed6f3f99e7df33214c277cf200a7b9a7499",
      "tree": "ffcd467906f1e23dfcce6ec58327bf878b6a75ae",
      "parents": [
        "5da3778746375b73e7e77c5f1371f29684674776"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 26 17:57:18 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 26 17:57:18 2013 +0100"
      },
      "message": "Fix JDWP single-step removal.\n\nChange-Id: I4b977ea7c60b32723009e571269ca5fc1c6e264e\n"
    },
    {
      "commit": "dc10addb338cabc936462b889f5be63030299eb4",
      "tree": "75d583b2e3bab97c77ca37c8e6e28c860f536095",
      "parents": [
        "d9cffeaa478bd30ad89a9dfc9680a27ce5efaadf",
        "d38667a055d507492fd05f78519a7e1f0b85ea03"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Nov 25 16:23:26 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 25 16:23:27 2013 +0000"
      },
      "message": "Merge \"Minor field name cleanup in debugger.\" into dalvik-dev"
    },
    {
      "commit": "d38667a055d507492fd05f78519a7e1f0b85ea03",
      "tree": "d71f7695f0ec3f4fa5beae55a81789592b295502",
      "parents": [
        "2054553237998043f0cd3d6b9fef799a4e6d95c0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Nov 25 15:43:54 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Nov 25 17:02:54 2013 +0100"
      },
      "message": "Minor field name cleanup in debugger.\n\nUse the same naming convention for all fields of DebugInvokeReq structure.\n\nChange-Id: Ieaf65eef592f96efa47975eef15334279ed4fc8a\n"
    },
    {
      "commit": "34a0e6a6d315999ddf6b64bb10b6ece25b90b25a",
      "tree": "03a1c591da3ff125afa391869bcdd9df95821b67",
      "parents": [
        "2054553237998043f0cd3d6b9fef799a4e6d95c0",
        "cbb2d20bea2861f244da2e2318d8c088300a3710"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 19:34:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 20 19:34:11 2013 +0000"
      },
      "message": "Merge \"Refactor allocation entrypoints.\" into dalvik-dev"
    },
    {
      "commit": "cbb2d20bea2861f244da2e2318d8c088300a3710",
      "tree": "9735d496716cf165ea0ee2d7e2f62d723ffc7734",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 14 17:45:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 11:14:11 2013 -0800"
      },
      "message": "Refactor allocation entrypoints.\n\nAdds support for switching entrypoints during runtime. Enables\naddition of new allocators with out requiring significant copy\npaste. Slight speedup on ritzperf probably due to more inlining.\n\nTODO: Ensuring that the entire allocation path is inlined so\nthat the switch statement in the allocation code is optimized\nout.\n\nRosalloc measurements:\n4583\n4453\n4439\n4434\n4751\n\nAfter change:\n4184\n4287\n4131\n4335\n4097\n\nChange-Id: I1352a3cbcdf6dae93921582726324d91312df5c9\n"
    },
    {
      "commit": "2054553237998043f0cd3d6b9fef799a4e6d95c0",
      "tree": "417ccbc5f75eaf36cfd0b62c8eb169b29975dddc",
      "parents": [
        "212d2ab3f5b92095e90008f27293531fc311e96d",
        "61b7f1b05d1fe12d4009316263bf990903e4edff"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 20 08:47:55 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 20 08:47:56 2013 +0000"
      },
      "message": "Merge \"Move single-step control into thread.\" into dalvik-dev"
    },
    {
      "commit": "212d2ab3f5b92095e90008f27293531fc311e96d",
      "tree": "67d62c792372509e65070cbfc284790d2126dc8b",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641",
        "579b02416e05e32e535126e1ed61613a2cdb030e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 19 21:55:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 19 21:55:36 2013 +0000"
      },
      "message": "Merge \"Add support for JDWP METHOD_EXIT_WITH_RETURN_VALUE events.\" into dalvik-dev"
    },
    {
      "commit": "61b7f1b05d1fe12d4009316263bf990903e4edff",
      "tree": "7929d410750a8099ef254d3858d1da87d595bac8",
      "parents": [
        "03aca12cc4b15a4d2fe1c6acbcb1d62b2baa9eb4"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Nov 15 15:59:30 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 19 21:13:27 2013 +0100"
      },
      "message": "Move single-step control into thread.\n\nThis CL moves single-step control into the Thread structure. This is stored in\nThread::single_step_control_ member. This allows to support single-stepping of\nmultiple threads at the same time.\n\nSince each thread holds its single-step information, we no longer need to use\nthe breakpoint lock to support single-stepping. It helps reduce lock contention\non this lock while debugging.\n\nAll JDWP tests passed on the host and on the target with this CL.\n\nBug: 11667502\nChange-Id: I886d5c8c625ca5a072803e296c32eec5f7e9e82d\n"
    },
    {
      "commit": "579b02416e05e32e535126e1ed61613a2cdb030e",
      "tree": "4431587a30c1d5a3e7c0435decbd7ac21104bf7a",
      "parents": [
        "e4a50ee34695a9d90cf03fbb1e8afd1e434f6ee1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 18 13:16:49 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 19 11:16:44 2013 -0800"
      },
      "message": "Add support for JDWP METHOD_EXIT_WITH_RETURN_VALUE events.\n\nBug: 11569539\nChange-Id: Ibc7a80df83470ffd726d73695a05f4938248f292\n"
    },
    {
      "commit": "e24fa3e678b1432f8e7325b9b5718d5a31cb74e1",
      "tree": "1711c7ef571a4ac030d4995de0c53fbeb7c6ea88",
      "parents": [
        "d08a4984b4153f3be3d65d339eaac985da7e17ab",
        "51db44a194bafc3810a41164a8b39614f10e79df"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 19 18:38:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 19 18:38:59 2013 +0000"
      },
      "message": "Merge \"Propagate \u0027this_object\u0027 for method unwind event.\" into dalvik-dev"
    },
    {
      "commit": "51db44a194bafc3810a41164a8b39614f10e79df",
      "tree": "c5a02ad6cafe66b10f98957cb17db469fb008ede",
      "parents": [
        "03aca12cc4b15a4d2fe1c6acbcb1d62b2baa9eb4"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 19 10:00:29 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 19 10:06:03 2013 +0100"
      },
      "message": "Propagate \u0027this_object\u0027 for method unwind event.\n\nPropagates the \u0027this_object\u0027 to InstrumentationListener::MethodUnwind callback.\n\nChange-Id: I12561f1a611b8399b94e669f9b8a6eaaf1a58631\n"
    },
    {
      "commit": "cf58d4adf461eb9b8e84baa8019054c88cd8acc6",
      "tree": "c49fa473b17e299bc649688076e7d69938741e4e",
      "parents": [
        "be56c9e63335ce99f1042e8660aeac4690b965a9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 26 14:21:22 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Sat Nov 16 21:35:03 2013 -0800"
      },
      "message": "A custom \u0027runs-of-slots\u0027 memory allocator.\n\nBug: 9986565\nChange-Id: I0eb73b9458752113f519483616536d219d5f798b\n"
    },
    {
      "commit": "b7cefc7f5cac99a62fd4e662c1bdeec750434e28",
      "tree": "4d5a37f95ef3af6fa1febfa62bf0af207724077c",
      "parents": [
        "ffcd9d25199a944625bd3c9a766349c23dcbdb66"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 14 14:51:09 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 14 15:42:55 2013 -0800"
      },
      "message": "Put arguments first in debugger variable table and fix name bug.\n\nBug: 11569468\n\nChange-Id: I63d45427ded0937c3ab2456fe5cec22da5558e53\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "fa82427c68b09f4aedbee319dc71579afbfc66f5",
      "tree": "b8ae1c7be4a00dce290887ee857be5e466a0902b",
      "parents": [
        "6b98c91275d4361d1b74effad36995cc2d687a55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 05 16:12:57 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 06 12:00:14 2013 -0800"
      },
      "message": "Fix oatdump and valgrind.\n\nBug: 11531382\nMove allocation instrumentation out of runtime into instrumentation. Don\u0027t\nattempt to suspend threads in unstarted runtimes.\nMake indentation support sputc returning eof, on which it will sync and try\nagain. A further failure likely means the disk is full.\nMove the dump-oat output directory to be art as now there\u0027s too much output to\nfit all the dump-oat data in our standard /tmp.\n\nChange-Id: I8ea848ace318552c180e2efa46570288ff1ca62c\n"
    },
    {
      "commit": "4598669063e65a66b7a35f63ba035139d4c795d2",
      "tree": "b48c2ac07195d931351ae95987c105e2ad1fec24",
      "parents": [
        "05c487d13791ffa238bef540dc11af1113ff1966",
        "e2946917852af9d2ec643c7c987d2bb66cf2f086"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 30 21:26:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 30 21:26:12 2013 -0700"
      },
      "message": "am e2946917: am ebaa337a: am c3b800aa: Merge \"Fix JDWP line table output.\" into klp-dev\n\n* commit \u0027e2946917852af9d2ec643c7c987d2bb66cf2f086\u0027:\n  Fix JDWP line table output.\n"
    },
    {
      "commit": "dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111",
      "tree": "0b63738b04404f42015da7164dfe5ec506452b02",
      "parents": [
        "eda6df7374bf61c933d4a36635e2a9a30c9892a0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 30 01:00:44 2013 -0700"
      },
      "message": "Don\u0027t use UTF16 length as length for MUTF8.\n\nBug 11367555.\n\nChange-Id: Ia0b07072a1a49d435c3b71ed9a668b316b7ff5d8\n"
    },
    {
      "commit": "f2910eef247b45ce1d489e323b36b5de6b6157aa",
      "tree": "cd7e7bef7b016180ce90df635b907201c346bf5c",
      "parents": [
        "bcf09e40f1b5edb7c7e90a96efadba5482b13551"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Sat Oct 19 16:39:24 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Sat Oct 19 16:39:24 2013 +0200"
      },
      "message": "Fix JDWP line table output.\n\nBug: 11238911\nChange-Id: I952fba04393b23b1d42dc6a2d22cd583ce2512ce\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": "d91d6d6a80748f277fd938a412211e5af28913b1",
      "tree": "5c45f4ae53aab3f530284a97dc328b4e38ce7c94",
      "parents": [
        "9c11b56296b8cffc94b0b854ce6cff7e014b8d57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 25 20:26:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 26 21:08:25 2013 -0700"
      },
      "message": "Introduce Signature type to avoid string comparisons.\n\nMethod resolution currently creates strings to then compare with strings formed\nfrom methods in other dex files. The temporary strings are purely created for\nthe sake of comparisons. This change creates a new Signature type that\nrepresents a method signature but not as a string. This type supports\ncomparisons and so can be used when searching for methods in resolution.\n\nWith this change malloc is no longer the hottest method during dex2oat (now its\nmemset) and allocations during verification have been reduced. The verifier is\ncommonly what is populating the dex cache for methods and fields not declared\nin the dex file itself.\n\nChange-Id: I5ef0542823fbcae868aaa4a2457e8da7df0e9dae\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f",
      "tree": "5cfbe05084351576e9659cb8f7b66dcb6163a37b",
      "parents": [
        "576fe9d4181c749aa510e32d2521ed4192bdfda0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 23 23:51:32 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 17:07:24 2013 -0700"
      },
      "message": "StringPiece clean up.\n\nProfile guided clean up.\nTry to avoid creating StringPieces with the contents of a dex file where\nthe length is known.\nTry to avoid RegTypeCache::FromDescriptor when there\u0027s a class available.\nMake ConstantType::ConstantValue inlinable.\nSaving of about 50ms from a 2 threaded ThinkFree compile on host.\n\nChange-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85\n"
    },
    {
      "commit": "3e47a748eb646b8d2fc8e8c4f11b270d9ae2c607",
      "tree": "fe03f35aa83f71059294944796ebf6c077ab1eae",
      "parents": [
        "3b99337ec2a92ca5fc0b3bd1d44be40e5eb2a30f"
      ],
      "author": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Mon Sep 09 17:56:07 2013 -0700"
      },
      "committer": {
        "name": "Ruben Brunk",
        "email": "rubenbrunk@google.com",
        "time": "Tue Sep 10 17:26:49 2013 -0700"
      },
      "message": "Remove dependency on JNIHelp header side effects.\n\nBug: 10680559\nChange-Id: I2f8ab34803a4554dac35c941ed58c0c845754655\n"
    },
    {
      "commit": "920af3e556c730a5fbdab90a6d0ec1a2dbe8940b",
      "tree": "29d7aa78d4a4fec87a403c8e2c93214d19b7cc99",
      "parents": [
        "10cc81056261625902a8a073bafb9f499eec4ff7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 28 15:46:38 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 29 10:03:52 2013 -0700"
      },
      "message": "Fix thread status in THST chunk to use JDWP thread state.\n\nBug: 10492287\n\nChange-Id: I830a2ce71d02c5b09c7040583be98d818eef9385\n"
    },
    {
      "commit": "02e25119b15a6f619f17db99f5d05124a5807ff3",
      "tree": "7be4cbbf28033e5ee0621565b410fe5d8170a8fb",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 14 16:14:24 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 13:15:37 2013 -0700"
      },
      "message": "Fix up TODO: c++0x, update cpplint.\n\nNeeded to update cpplint to handle const auto.\n\nFixed a few cpplint errors that were being missed before.\n\nReplaced most of the TODO c++0x with ranged based loops. Loops which\ndo not have a descriptive container name have a concrete type instead\nof auto.\n\nChange-Id: Id7cc0f27030f56057c544e94277300b3f298c9c5\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": "166db04e259ca51838c311891598664deeed85ad",
      "tree": "5ffa63c1b3bf58e92be2890c54f0ba6fdec2059e",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 26 12:05:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 09:52:11 2013 -0700"
      },
      "message": "Move assembler out of runtime into compiler/utils.\n\nOther directory layout bits of clean up. There is still work to separate quick\nand portable in some files (e.g. argument visitor, proxy..).\n\nChange-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351\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": "f52935278fca8c7aa220543eef4544e3d1105d91",
      "tree": "16f1882fc07c3a8a7dcd271919bb3a7823ebc520",
      "parents": [
        "05eecea70b64095db2bc5f9f8aef7475964a9d7b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 19 00:24:00 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 19 00:24:00 2013 -0700"
      },
      "message": "Move JDWP to std::vector\u003ciovec\u003e to remove runtime/arrays warning\n\nChange-Id: I8494a25a65de4ebac2b1f4f41c0f5eedf117b7ac\n"
    },
    {
      "commit": "2d88862f0752a7a0e65145b088f49dabd49d4284",
      "tree": "3fac6bbd9a0ff3836f361e46579151c8a93420b6",
      "parents": [
        "751d4ed43e8118f145edf18db4d987daf7dabbae"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 17:02:00 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 17:02:52 2013 -0700"
      },
      "message": "Fixing cpplint readability/casting issues\n\nChange-Id: I6821da0e23737995a9b884a04e9b63fac640cd05\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c",
      "tree": "525a0f99f9381156367c988133b5d51d5dfef6f7",
      "parents": [
        "f69863b3039fc621ff4250e262d2a024d5e79ec8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 23:40:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:12:43 2013 -0700"
      },
      "message": "Fix cpplint whitespace/blank_line issues\n\nChange-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2\n"
    },
    {
      "commit": "93ba893c20532990a430741e0a97212900094e8c",
      "tree": "019990a1957562c1f573c77297df5923cce98f47",
      "parents": [
        "b1eba213afaf7fa6445de863ddc9680ab99762ea"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:31:49 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 21:46:12 2013 -0700"
      },
      "message": "Fix cpplint runtime/explicit issues\n\nChange-Id: I352ba0b427f1ff9b22887693952b180eae0839ba\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": "3d92d523089bdd7881d2319414a29bf77172b432",
      "tree": "e11d0af1421cfd41966b892722cfa8d5fa787524",
      "parents": [
        "1581766afea0b31de0ed0f9f677fc3b92a29daae"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 09:03:08 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 09:03:08 2013 -0700"
      },
      "message": "Add HAVE_ANDROID_OS check around cutils/properties.h include\n\nChange-Id: Ibe3ffd4a829d3ec0e41f861b09da0990e603f2c2\n"
    },
    {
      "commit": "b1a5879d2c87a5af9f8dbd63a112b138b87135e4",
      "tree": "663098cb9c72b39ae76f3b8d8dec6b5166772431",
      "parents": [
        "d3d41ba95c7760891a1ca4fc02e3f88baaa25dda"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 11 18:10:58 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 11 18:10:58 2013 -0700"
      },
      "message": "Port 1778d17feda232e5f794ba1ebdf400a600a17fd8 to art.\n\nIncrease the default alloc tracker maximum, and add a new system\nproperty \"dalvik.vm.allocTrackerMax\" that allows developers to choose\nan arbitrary limit.\n\nChange-Id: I8b3fcfb00ba87d1cf515d5835c101b5375b1d8a2\n"
    },
    {
      "commit": "46e811b07533a4c21f8c9abe22d22d6a3d8b18b0",
      "tree": "45415fdee46c30737742663d0389d6ce21fa77ac",
      "parents": [
        "534f2b6f430c7984fda9333f8e72b37962b144b4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 10 17:09:14 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 11 09:19:00 2013 -0700"
      },
      "message": "Fix DDMS allocation tracker.\n\nThe allocation tracker previously did a NewByteArray while holding the\ngAllocTrackerLock. This was problematic due to the fact that this new\nallocation would also try to acquire said lock. Fixed the issue by\nmoving the newByteArray call outside of the lock.\n\nBug: 9767557\n\nChange-Id: I7e94e631d9c96aa642637de52f100b371f813294\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "33e9566255c426e7a2c8fca5b8a1b6a94a5d352c",
      "tree": "80965d3d329c09ec5a574863a356562e42f639ff",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:29:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 21:16:03 2013 -0700"
      },
      "message": "Various GCC 3.6 and clang build fixes.\n\nRemove #error in common_test.h that fires with clang build and replace with\nruntime error.\nFix bit rot caused by not compiling with Wthread-safety.\nFix clang build issues in compiler relating to missing header file definitions\nin object files.\nOther minor build and tidying issues.\n\nChange-Id: Ife829ab0664581936155be524de46e6181c750b0\n"
    },
    {
      "commit": "cfa9cfa3a94b33d300e1b08b48b3cb72de343dbd",
      "tree": "0367ee9bfed2d80ca750606ee491e597f67d8043",
      "parents": [
        "ee9889502a34a08741a6f8ecc02917202de9d773"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 16:52:01 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 16 16:52:01 2013 -0700"
      },
      "message": "Fix JDWP log spam.\n\nIf you have a breakpoint that logs an expression, this spam makes\nthe output unreadable.\n\nBug: 8191824\nChange-Id: I0bbb9ac3a6165cbbd770adf75139f87079f87410\n"
    },
    {
      "commit": "0920163b0ee4ce3fbf57db5506659de14b77be75",
      "tree": "b098097d5e8477a200d158f92c1153f12c6f6d55",
      "parents": [
        "449db33fafa29578df60e8a323f78d5eb6247e76"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 15 15:50:07 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 15 15:50:07 2013 -0700"
      },
      "message": "Fix ObjectReference.InvokeMethod.\n\nThis probably broke when I rewrote the object registry, but because\nthe test was so crap, we may have gotten away with passing bad pointers.\n(Though for me, CheckJNI was catching this.)\n\nWhile I\u0027m here, fix the argument checking, which was previously\nvery weak; we\u0027d accept any reference type rather than instances of\nthe parameter\u0027s specific type.\n\nChange-Id: I08c001cabde02a0509fe28df17523a2d2519d1ca\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": "14dd5a82ad85a28612bf86e755ff929d767cea4c",
      "tree": "59643b02b8931887e6b00589e41af137ee13a149",
      "parents": [
        "4b4d711852982716ac478288f210bb2a2f504589"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 11 10:23:36 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 11 11:22:36 2013 -0700"
      },
      "message": "Fix exception caught listeners and frame type for deopt.\n\nChange-Id: I5792ebe9a7772d068b6ec556b4fc27ddd44d7ca1\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "6474d190d5604898354ebf767f1944b6e3e9b445",
      "tree": "ac4be675c62fd8129fe85f740dcd2e3bfee424e2",
      "parents": [
        "52003fe9e2020e9d68cee1300fdb4a3f55be85a5"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 14:08:09 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 16:03:53 2013 -0700"
      },
      "message": "Remove use of compiled invoke stubs from portable.\n\nNow the invoke stubs can be safely removed. Tested and working on ARM,\nbasic testing done on x86/MIPS, but portable is currently broken for them\neven without the change.\n\nChange-Id: Ib73f2b7aa9d81f5f0e1e817d16b9bec464c5a5aa\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": "5d9173014c1ca09f7249a6b07629aa37778b5f8f",
      "tree": "80543dbe9af6795212373bb12532b638ff3b22f3",
      "parents": [
        "aed0716b9592bb3095cdfc4b111011f9ed74877d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 27 17:57:33 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 15 14:18:28 2013 -0700"
      },
      "message": "Changes to remove need for compiled invoke stubs for quick.\n\nARM, x86, and MIPS implementation complete, though MIPS is untested.\n\nThe ArgArray is changed to be a uint32_t array instead of a JValue array.\nAlso, a separate result for float/double was needed for x86/MIPS. The invoke\nstubs are currently still there, but only used for portable.\n\nChange-Id: I0647f8d5d420cea61370e662e85bdc0c13b5e378\n"
    },
    {
      "commit": "4b9702c6912c6f8745a77f5b5af56e7fe196e7c2",
      "tree": "02fee3631b7f3b60eb15f791b5dd004b27d6a571",
      "parents": [
        "64f574f474aa77c72778640ab21f8cfa72546812"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 18:13:24 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 07:41:59 2013 -0800"
      },
      "message": "Add a JDWP::Request type to replace the old uint8_t* and int.\n\nThis also lets us check that all the data in a (successful) request\nis actually read, though doing so caught two bugs in the tests, and\nmay well catch bugs in the actual debuggers.\n\nChange-Id: Ibed402e6f1c0c7a1d19d61f0be9bddd0c2f5a388\n"
    },
    {
      "commit": "64f574f474aa77c72778640ab21f8cfa72546812",
      "tree": "c90d3ef8f56144e61a4a043138a5118c3c9e7b9a",
      "parents": [
        "492899e445c21f09db458c76d773d571cc6cc0ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 14:57:12 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 20 15:46:06 2013 -0800"
      },
      "message": "Implement EnableCollection, DisableCollection, IsCollected, and fix Exit.\n\nRewrites the object registry to not just be one big leak. We use jweaks\nby default, which means (a) the GC doesn\u0027t need to know anything about us\nand (b) we don\u0027t cause unnecessary heap retention. We promote to regular\nJNI global references if the debugger asks us to.\n\nThe problem with VirtualMachine.Exit turned out to be that you\u0027re supposed\nto send a success reply to the command before exiting. This is a bit awkward\nwith our current division of responsibilities, but it lets us pass another\ntest.\n\nAlso log a summary of our replies when -verbose:jdwp is in effect, not\njust the requests.\n\nChange-Id: Idb33e99fe7d8bee7a79152d81fee42e2af00852b\n"
    },
    {
      "commit": "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": "d636b0623307a379e255a9aaa682c12a2acc3a92",
      "tree": "ac5a98eab337b23b6f14b750683b6540f8883166",
      "parents": [
        "d75afb99f0c8b8a27ad84e2e31010383ecf72120"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 18 17:51:18 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 18 17:51:18 2013 -0800"
      },
      "message": "Avoid crash in HeapChunkContext::Flush post Reset.\n\nPort to ART of 22d8dba8ae5be7aecb07322a410712206896fa15.\n\nChange-Id: I74445f2aac22a037533f13aa894ae4f6cea1abc9\n"
    },
    {
      "commit": "a96836a4115ad08762567c10bd4d198c5b644985",
      "tree": "ae523d318a1936108b9f137af3681de930628aa1",
      "parents": [
        "fa011c82efce92a8e0e739ae9732b4c6f3903294"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:27:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:27:49 2013 -0800"
      },
      "message": "Improve -verbose:jdwp.\n\nMove toward automated logging instead of ad hoc logging in every command.\n\nChange-Id: I55427022374390745209677bae4e0b3146a9d126\n"
    },
    {
      "commit": "9777ba230c83a0edcbda2cf7b208339e77bf171b",
      "tree": "253559eb1e962c3b21cf55cd59addc10823d65c4",
      "parents": [
        "ff7ae7adf223b3485f4153442e4841189601af1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 09:04:19 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 09:04:19 2013 -0800"
      },
      "message": "Implement Method.Bytecodes.\n\nChange-Id: Ib24c1244818c1d5aa10606a4998c0e52fa2b70bd\n"
    },
    {
      "commit": "0cbaff584244ee767027aff35cd3c625aaee2994",
      "tree": "6209981f3814b9d43f8152f261455eb3f1fab15d",
      "parents": [
        "f9a52cd81ad39aacd1a5c41478d5ee0cb6dff1bf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 16 15:28:01 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 16 16:42:41 2013 -0800"
      },
      "message": "Implement ObjectReference.ReferringObjects.\n\nBug: 4159882\nChange-Id: Iac145715bec80b5900256d3f6bdb18e283eb9a12\n"
    },
    {
      "commit": "3b78c949ab839d21454bc6f18c7640d2ae8c22f3",
      "tree": "0a12766007b742f208f2ec8617c8d2a6d6d955a9",
      "parents": [
        "ec0f83d95e2174c97e93279ffa71642be7e12b60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 15 17:35:41 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 15 17:35:41 2013 -0800"
      },
      "message": "Implement ReferenceType.Instances.\n\nChange-Id: I6a72fc4c748e7041fedcb615eca2b86b1f28bb63\n"
    },
    {
      "commit": "ec0f83d95e2174c97e93279ffa71642be7e12b60",
      "tree": "b8ac0c238f6dddff2e49fb2002834a369594abb1",
      "parents": [
        "4028312f6f4b49fd69992daf28cd37dd32e79a47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 15 16:54:08 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 15 16:54:08 2013 -0800"
      },
      "message": "Implement JDWP VirtualMachine.InstanceCounts.\n\nChange-Id: I6df66787dee8af67f65460023bcf223eec1ec7da\n"
    },
    {
      "commit": "734b8c62cc637c25f4c2481ca6a48adbd7209c6c",
      "tree": "1e3176c62b1155f58b157dd965d8b64e26ccaaf2",
      "parents": [
        "d2ece2e84931dbfaddb1f77c9dba4bd1a8762b5f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 11 15:32:45 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 11 15:32:45 2013 -0800"
      },
      "message": "Implement ThreadReference.OwnedMonitorsStackDepthInfo.\n\nChange-Id: I5e1ac7b2aeef7b1eac9518eba14a8f6555acd712\n"
    },
    {
      "commit": "f9501700f51586cb6ba7cc0ffcb5a920bd64adf1",
      "tree": "e619fc67e4197452b45e5382af4247629da5387c",
      "parents": [
        "67efe8cb257d3f687fe46b68f4fc8aca352b2f0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 11 11:22:27 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 11 11:40:18 2013 -0800"
      },
      "message": "Implement ThreadReference.CurrentContendedMonitor and ThreadReference.Interrupt.\n\nThe JDWP test for CurrentContendedMonitor also uses Interrupt.\n\nChange-Id: Id1f6add29b578a0494da672d21dd54f23e866475\n"
    },
    {
      "commit": "4993bbc8eda377804e585efd918f8ab9d9eab7d4",
      "tree": "bc49a14ce0c2718155444ac67152382e8c313326",
      "parents": [
        "16848f6c5c4d8394d491e887d7d805beddf173ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 15:41:25 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:05:44 2013 -0800"
      },
      "message": "Implement ThreadReference.OwnedMonitors.\n\nFix the method verifier so it can cope with not being able to resolve\ntypes in the application class loader, so we can find monitors held in\napplication code (this will improve SIGQUIT too).\n\nAlso remove the sort|uniq of dex pcs by just recording the last work\nline we see.\n\nChange-Id: I86ff27b42800a858489d112931c9aed2fb85ebdc\n"
    },
    {
      "commit": "16848f6c5c4d8394d491e887d7d805beddf173ad",
      "tree": "15263d5d6309ce059f0c6bfeee6b2cf992208678",
      "parents": [
        "f327e07b37e349b1ec5eaad6dc294a9b7a081d20"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 07:49:35 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 07:49:35 2013 -0800"
      },
      "message": "Remove unnecessary logging.\n\nWe don\u0027t normally log when returning this status, and the log message is\nidentical to the one in Thread::SuspendForDebugger.\n\nBug: 7537655\nChange-Id: I57dc64eb448f0ec9fe528d1ad6f1d53dc52ec9c4\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": "9e0c175a0cea5c8c88a6927e6375554118f74a82",
      "tree": "8ebbbb647959bf84663a5fdcab074d1d057b89f4",
      "parents": [
        "c5dc2ff2d1beb3ff84f93d2c7ebe07c46b76956a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 14:02:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 14:02:58 2013 -0800"
      },
      "message": "Rationalize the remaining suspension checks in debugger.cc.\n\nChange-Id: I0ebd13cef6cc32f9629f24a1e6c2447c3ee87457\n"
    },
    {
      "commit": "f15f4a0136a7b797117355768851bc421b3afc93",
      "tree": "160e0a242b91520ddd005af35680a40fab400449",
      "parents": [
        "88d630950cb5c6a1cb6457ce03a17c074ae13628"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 10:09:38 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 10:28:56 2013 -0800"
      },
      "message": "Remove Dbg::IsSuspended, which was checking the wrong thing.\n\nIt was also unnecessarily racy.\n\nChange-Id: I9d59ac81ffb5b178ca9d2a00d895a272321adec9\n"
    },
    {
      "commit": "88d630950cb5c6a1cb6457ce03a17c074ae13628",
      "tree": "1d6b9741bc621d1f2ea5894cbc2ac4c56293d8dc",
      "parents": [
        "8b64424860a5625782c363adba41825e5af6357f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 09:55:54 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 09:55:54 2013 -0800"
      },
      "message": "Clean up debugger orthography.\n\nMainly just for ids, and not in the JDWP code. Fixing everything at\nonce is just not practical.\n\nChange-Id: I06464d5765b33dca65eb3c24bdd8aaf84b9631a5\n"
    },
    {
      "commit": "221229cb523f849f165fdafbf9785010963715da",
      "tree": "87f4b27cd85b40dad97d87780440a8b4225d7dda",
      "parents": [
        "162fd33474038f0de0388338ca007ecf400bb3df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 18:17:50 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 18:17:50 2013 -0800"
      },
      "message": "Handle zombie threads in JDWP.\n\nMostly a matter of making DecodeThread more robust and passing JDWP::JdwpError\nstatuses around, but enough work that I feel justified in having left this as a\nTODO for so long.\n\nChange-Id: I779b6fcc6355dc6288355742f4b7babc531b8e38\n"
    },
    {
      "commit": "4cd121ef0cb35fced70c7d9de378277be7a727d9",
      "tree": "c786e70cfe50147749d9dd7494dd7112271c8f60",
      "parents": [
        "1a25aa432314bcf008c11e3514afc0b7aeb64d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 17:35:41 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 08 11:06:02 2013 -0800"
      },
      "message": "Implement the Thread.sleep native method.\n\nThis makes returning TS_SLEEPING from JDWP simple and cheap, and\nmakes the stack dumps for sleeping threads more easily understood\nby app developers (because there\u0027s no Object.wait magic going, and\nthe thread state is \"Sleeping\" rather than \"TimedWaiting\").\n\nAlso make Object.wait() a native method in its own right, so every call into\nMonitor::Wait can explicitly pass the most appropriate ThreadState: kSleeping,\nkWaiting, or kTimedWaiting.\n\nAlso add Thread.sleep and Object.wait(long, int) calls to the ThreadStress test.\n\nChange-Id: I49adb45dbcd669eba7cf3def45e6cbfc461a3254\n"
    },
    {
      "commit": "e5fe0f7c3e859a90bf1ed5bd24ce8fbb3027b81c",
      "tree": "4f675dae88f8e50d72edcc02aadedbbf4d826510",
      "parents": [
        "6641ea12b98dda9ec45d29f20e43f85698b88a02"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Jan 04 17:05:30 2013 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Jan 04 17:36:24 2013 -0800"
      },
      "message": "Fix debugger to properly return TS_SLEEPING.\n\nThread.sleep is implemented with Object.wait, so the code can\u0027t\ndistinguish the two. I added a check to see if Thread.sleep\nis somewhere on the stack, indicating that the thread is actually\nsleeping instead of waiting.\n\nChange-Id: I288befc1b3dc76e30c0620ab9c850c66b81c7a6d\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": "14f0db92225d34622fa5cb1a6dc9287334aaf6c7",
      "tree": "7771b1fa7b9a3553d3ad220e45bea926819ab33c",
      "parents": [
        "4c5b265e66bebf890b6f9e53cddeb512774b1613"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 14 17:50:42 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 17 13:49:12 2012 -0800"
      },
      "message": "Fixes to interpreter and debugger for JDWP.\n\n- Fixed off-by-one error for MethodEndCodeIndex.\n- Changed first instance of dex_pc 0 in interpreter Execute to output\n  METHOD_ENTRY event.\n\nChange-Id: I4854cb7cbde0db53db23d8b1c5bb9f08bf8409f1\n"
    },
    {
      "commit": "c1e0490a2a0293fdfc5f654482339ccc71d9952b",
      "tree": "1f64aef3d618caf8ae697cb1cd9574ff5ccda455",
      "parents": [
        "b7eb10825af77b60cdae0d58232075a0704071da"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 13 12:41:10 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 13 12:41:10 2012 -0800"
      },
      "message": "Changed IsInDesiredThreadGroup to never return null threads.\n\nChange-Id: I1907fbbd319156be0311243d0e3ba997ba862b22\n"
    },
    {
      "commit": "09bfc6a50bdc9366b13ac3ab479d9278c853d90a",
      "tree": "f3d528939b038e5f0a6d16cbb83934ddc2b6ffc0",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 11 18:11:43 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 12 13:25:25 2012 -0800"
      },
      "message": "Some fixes for JDWP with the interpreter.\n\n- GetStackDepth checks if the thread is suspended, unless the thread is\n  itself.\n- Scoped the breakpoints lock during UpdateDebugger to prevent it being\n  held during PostLocationEvent.\n- Removed locking of breakpoints lock in DebugCallbackContext since it\u0027s\n  already holding it.\n- Added level for breakpoints lock to prevent lock level violations.\n\nChange-Id: I3588c9696bb57ada3c8c64dc1d95ae23cdf2b107\n"
    },
    {
      "commit": "a77f0f68a59870ff027dad654fe31eb3fdaf3d5d",
      "tree": "c041a68efb55db65ab8f195938097a887f5fcc01",
      "parents": [
        "a169e1d8d968800380245cda450505d969ebff76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 05 17:19:31 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 06 10:14:46 2012 -0800"
      },
      "message": "Various fixes for JDWP.\n\n- Moved lock of thread list lock into DecodeThread from its callers\n- Fixed scope of various locks to prevent locking violations\n- Added transition for current thread from runnable to suspended before\n  suspending vm, and then a transition back\n- Reworked lock ordering to allow JDWP locks to be held while grabbing\n  the thread list lock\n- Moved debugger PostException until after suspension is re-allowed\n\nChange-Id: Ie53e47ff1538e6cd3125c48ddb4c13758b29be63\n"
    },
    {
      "commit": "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": "0dfbb7ead0b6da92911b4bc78114ff0f0f9b4129",
      "tree": "24d27d299f19ec64478658c30d4f3f2da771abe3",
      "parents": [
        "bc43860b7e5326264ada842c35a840dd4cda8120"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 28 15:26:03 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 29 11:55:05 2012 -0800"
      },
      "message": "Fix some JDWP bugs related to locking and getting statics.\n\nGave all JDWP locks an explicit level to prevent them from using the\ndefault. Also made sure the class of the field would be passed to\nGetObject instead of NULL for statics. There\u0027s still a number of test\nfailures in JDWP.\n\nChange-Id: I6134be2a99d4a0968f9719f620864a3c176b4a58\n"
    },
    {
      "commit": "2bcb4a496b7aa00d996df3a070524f7568fb35a1",
      "tree": "8422ab8d65b7422008094b2eaadec0dad87b2df3",
      "parents": [
        "efc6369224b036a1fb77849f7ae65b3492c832c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 08 10:39:18 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 16 14:01:34 2012 -0800"
      },
      "message": "Add \"kind\" argument to Get/SetVReg.\n\nIn order to determine where a register is promoted its necessary to know\nthe kind of use of the register.\nExtend notion of precise-ness to numeric verifier register types.\nDump verifier output in oatdump.\nDump vregs with their location or constant value.\nIntroduce indenting ostream utility.\n\nChange-Id: Ia3d29497877976bc24465484743bca08236e1768\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": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    },
    {
      "commit": "c604d731730b43231f63040c8db1d58304da0cf3",
      "tree": "bb9cd6aa56eb3ba88ff27967efc3cc08da150b87",
      "parents": [
        "0b0b515934b83385e1cea448113783e0b22849ed"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 14 16:09:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 15:36:32 2012 -0700"
      },
      "message": "Implement mutex requeueing for cv broadcasts.\n\nMake the mutex guarding a condition variable part of its state. On a\nbroadcast requeue waiters on the mutex so they are awoken as the mutex\nis unlocked (thereby avoiding thundering herds). Explicit futex use\nstill guarded behind ART_USE_FUTEXES which remains disabled as I\u0027m\nunhappy with some of the warts of mutex usage. Uploading so that the API\nchanges can stabilize.\n\nChange-Id: Iedb601856ccd8bbc3a64da4ba0cee82246e7bcbf\n"
    },
    {
      "commit": "1c23e1edb7361bbaec6e57fca86d8d3797960ad2",
      "tree": "af8aa791777271fc5105f19a70aa972768493856",
      "parents": [
        "ed6d5ed3494648780b9e91422c90d6bc22c16b79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 14:14:11 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 17:34:08 2012 -0700"
      },
      "message": "More space refactoring.\n\nAdd common interface, AllocSpace.\n\nRenamed the old AllocSpace to DLMallocSpace.\n\nAdded an new option enforce_target_size_, which when enabled, doesn\u0027t let\nthe heap grow past ideal heap size calculated during last Gc.\n\nRemoved redundant AllocationSize calls.\n\nMoved large object space to its own file instead of being in space.h/cc.\n\nChange-Id: I15e60531114bf213800599737cbd66ef44b46b15\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "4445a7e3398a6143939168097a3aa275b734504d",
      "tree": "9eda34219b4a840125694a86ddba49077e15b944",
      "parents": [
        "50b35e2fd1a68cd1240e4a9d9f363e11764957d1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 17:19:13 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Oct 06 09:48:02 2012 -0700"
      },
      "message": "Class clean-up.\n\nMove Class code out of native and into Java.\nRemove ClassLinker::FindDexFile.\n\nChange-Id: Idd9c4563d2c32e76690675242ff491276ace9848\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "1f5393447b9f45be7918042d9ee7b521376de866",
      "tree": "1793cb0ae00b38a63f8cfd3a25b6cb0ee4edca16",
      "parents": [
        "870ea4772199f8d4cbd9a269f9093620ee50a59c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 21:09:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 09:27:04 2012 -0700"
      },
      "message": "Make PopSirt inlinable, pass self to SirtRef.\n\nChange-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\n"
    },
    {
      "commit": "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": "e0f0cb3d855cb5e926452b5e1ec8457adc4e454e",
      "tree": "20d9b12d5c27761905c3e8aed007d53734b55556",
      "parents": [
        "23435d0df17e19fe312a08ff151464d4b9f83e81"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 11:26:00 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 14:05:08 2012 -0700"
      },
      "message": "Large object space\n\nThe large object space helps prevent fragmentation by putting large objects in mem maps insead of the alloc space.\n\nInstead of mark and live bitmaps it uses mark and live sets.\n\nChange-Id: Iada5db70b88a1572007d8af921fa353681a55dc7\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    }
  ],
  "next": "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
}
