)]}'
{
  "log": [
    {
      "commit": "3f52eafe5577b8489f90dc8ed5981b3455206147",
      "tree": "7155df948d345c8a5a2d801c23b396af76527ba0",
      "parents": [
        "9b417e4f0f87da6bfe8dc5f02c987acfcb6dca31"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 04 17:50:18 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 15 08:39:18 2014 +0200"
      },
      "message": "Prepare field watchpoint support\n\nAdds field read/write events in the instrumentation. The debugger now registers\nas a listener for these events so JDWP field access and field modification\nevents can be reported.\n\nThis CL will be followed by another one to report these events from the\ninterpreter. Therefore no JDWP field access and field modification events\ncan be sent for now.\n\nBug: 8267708\nChange-Id: If2a93eb590805567d69015c83cce9cd2ab712cbd\n"
    },
    {
      "commit": "491ca9e75fad381468dd7f5fdbff56d1a9738dd7",
      "tree": "4a88d05188aebbcbe868a27b58fc1a932f914ce2",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 02 18:24:38 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 13:31:40 2014 -0800"
      },
      "message": "Add ART -help and -showversion\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d62149\nChange-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "27dbc31979e9f00d65e03f8942ad554ad274c1c7",
      "tree": "36ae7008ce9b9e0a441c32a2f5dee5970c565741",
      "parents": [
        "e99f8c81be6bb3fbe4a0b5658b2c039f56d13361",
        "4044bdac490777cbc8a12d467bec675ef8aa6eb1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 19:34:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 15 19:34:35 2014 +0000"
      },
      "message": "Merge \"Add sample profiling interface to startMethodTracing.\""
    },
    {
      "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": "4044bdac490777cbc8a12d467bec675ef8aa6eb1",
      "tree": "e1f05216f500720265fa79c4dec889e7d398b69c",
      "parents": [
        "51c4550a96ff62003d5fc1df25626f578f7b7111"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 06 15:50:45 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jan 06 15:50:45 2014 -0800"
      },
      "message": "Add sample profiling interface to startMethodTracing.\n\nArt side of this change. Also changed libcore and frameworks base.\n\nChange-Id: I556678013cf1f4e9bef064a1ae43a6109303797c\n"
    },
    {
      "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": "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": "64caa7dcf46ed6139b766dbe77fbd7353899417f",
      "tree": "9606418421c5cda2116e343ae5988f98fc4fd03a",
      "parents": [
        "afbe1622c02379fb7f7835d73a5594b40d31d3ea"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 29 11:18:01 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 29 16:14:56 2013 -0700"
      },
      "message": "Change IsMethodTracingActive to GetMethodTracingMode for art.\n\nThis allows traceview to tell whether sampling or just normal\nmethod profiling is enabled.\n\nChange-Id: I518a1888a90bc50568fe56bf708d801027ac98d7\n"
    },
    {
      "commit": "23009dca63c1699e28bfeaa8b45ca48fa0e86ace",
      "tree": "33645ffca45249f4d8dc351dca17327c29613317",
      "parents": [
        "fb2451b516f8411756fe7b6f91b5534cf3ce8682"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 22 15:36:42 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 26 16:44:06 2013 -0700"
      },
      "message": "Add art support for sample profiling from traceview gui.\n\nChange-Id: I6004bf143521b872084ca4aae873bea3524aa895\n"
    },
    {
      "commit": "a95ba83db7cd598902df514caf211046e9f37bde",
      "tree": "994bac615c3b24f8dc73a162b6e59465b3f58cad",
      "parents": [
        "1edce4d5bf14ea657b99e0fee0a2a90490230b59"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 19 12:17:08 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 19 12:17:08 2013 -0700"
      },
      "message": "Change default sampling interval to 1000 samples/sec.\n\nChange-Id: Ib92aee8a91ac9d6702a1cec58130e346fd3fcade\n"
    },
    {
      "commit": "c1ff4b79a5d81b849203cc1e1c4a91223e75cfd3",
      "tree": "f7db1ecdb8ec858345391bc90f5721d1ad511f50",
      "parents": [
        "2aa25df0c41bb620c8cc239600af738855169bed"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 19 11:33:10 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 19 11:33:10 2013 -0700"
      },
      "message": "Sampling profiler reads clocks once for all events in a trace.\n\nChange-Id: I5954c5777384cebe01f913e5525481e1d127785c\n"
    },
    {
      "commit": "5bf1d38c0f0294a6632c0c6b2c0ba6bd642aa1c0",
      "tree": "f9c05d694e750d70102b4cbeed88e9086fd4d0c6",
      "parents": [
        "7d7a5c740bb8f9a0af156923af2f483bd2c15beb",
        "5ce4b178d2483df679e7f718e379305e5d42a300"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 16 23:58:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 16 23:58:25 2013 +0000"
      },
      "message": "Merge \"Clean up sampling tracing.\" into dalvik-dev"
    },
    {
      "commit": "5ce4b178d2483df679e7f718e379305e5d42a300",
      "tree": "509c9e3b79448038e7263c147fdcc3fde7708cc6",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 16 16:27:18 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 16 16:57:04 2013 -0700"
      },
      "message": "Clean up sampling tracing.\n\n- Moved maps to fields within thread.\n- Created temp trace field to lessen amount of traces allocated and freed.\n\nChange-Id: I23fe25a85ad2894cc6917f87d4046cdececf0739\n"
    },
    {
      "commit": "d2b0f33cf01601f040494f4f882e60f70b527930",
      "tree": "6497521dcfdcf2d516830d93371391e4f8f63a23",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6",
        "02e25119b15a6f619f17db99f5d05124a5807ff3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 20:30:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 16 20:30:16 2013 +0000"
      },
      "message": "Merge \"Fix up TODO: c++0x, update cpplint.\" into dalvik-dev"
    },
    {
      "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": "57dac6ed61a0a25c14d4e2fabc84435578d42360",
      "tree": "9cb004e94b313f8aae2b0a29b4b9241bd207ec74",
      "parents": [
        "a68f43fa91531b2e8fe73fa5a5731f18a80ff801"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 15 16:36:24 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 15 16:36:24 2013 -0700"
      },
      "message": "Fix sampling profiler to use thread\u0027s cpu clock.\n\nThe sampling profiler was using the sampling thread\u0027s cpu clock to\nmeasure cpu time, instead of the sampled thread\u0027s cpu clock.\n\nChange-Id: Ief1f82e07e0353192c61521f67dec7a761905f64\n"
    },
    {
      "commit": "7571e8b761ebc2c923525e12ea9fcf07e62cb33e",
      "tree": "5d90ecf4d0ba1a72b040a376f227df1ba9278889",
      "parents": [
        "2e250c826b3c405d675017efe79e5db3651c9ee6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 12 17:04:14 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 15 10:33:53 2013 -0700"
      },
      "message": "Add flock(2)ing on dex-cache files to prevent races\n\nBug: 9071417\nChange-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511\n"
    },
    {
      "commit": "e2f77e7592842cad5a59e73535b8982c35e156ca",
      "tree": "1feb9bca7a9b647f0a6168a206e5aa2da42ff6ba",
      "parents": [
        "1d1e267136732c2b123470b05c06fa536fa6dbbb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 19:19:40 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 19:19:40 2013 -0700"
      },
      "message": "Build fix.\n\nChange-Id: I75af55f6cd0f0d4b15844e427ff8057dbc26466b\n"
    },
    {
      "commit": "1d1e267136732c2b123470b05c06fa536fa6dbbb",
      "tree": "a2c4cf3b5ffa7199d38db677886926c0b9a813cf",
      "parents": [
        "a804b711f21db74f9fb0dd7a5854656b1252fb97",
        "ea46f950e7a51585db293cd7f047de190a482414"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 14 02:15:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 02:15:58 2013 +0000"
      },
      "message": "Merge \"Refactor java.lang.reflect implementation\" into dalvik-dev"
    },
    {
      "commit": "0abc72ebe356c32354b575c48189965a0edc7890",
      "tree": "7faa419cdcb44353d8f9d8b1d47499d3241924d0",
      "parents": [
        "73a79074c06d8b0a8c14946438c59c3821d88fe7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 13 13:45:14 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 13 18:22:13 2013 -0700"
      },
      "message": "Modify traceview to sample instead of instrumenting methods.\n\nDisabled the method instrumentation in traceview. Now when traceview\nis triggered, it starts up a thread which periodically samples all\nthreads instead, generating method entry/exit events that traceview\ncan understand.\n\nChange-Id: Ifc4012a4509d8eb9f54941eee2a8b42c411e5e9c\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": "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": "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": "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": "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": "c928de90ad22ecdf83c18a07008409595f13d3b1",
      "tree": "065a08f379960f7ba946318aaa742d7ddd0c94bd",
      "parents": [
        "0f827169742aad6209d830db773a101849c32a83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "message": "Remove Iceland.\n\nART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER\nis used in #ifdefs.\n\nChange-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55\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": "761600567d73b23324ae0251e871c15d6849ffd8",
      "tree": "4757cb01233394fa2e9c461a68fc37a35c12dabb",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "message": "Switch over to the google3 unix_file File*.\n\nI also moved macros.h to base/macros.h to ease google3 porting, at\nthe expense of a larger than necessary change. (I learned my lesson,\nthough, and didn\u0027t make the equivalent base/logging.h change.)\n\nI\u0027m not sure whether we want to keep the unix_file MappedFile given\nour existing MemMap, but it\u0027s easier to bring it over and then remove\nit (and possibly revert the removal) than to bring it over later.\n\nChange-Id: Id50a66faa5ab17b9bc936cc9043dbc26f791f0ca\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": "c531cefbfb5394413122e9f57d211ba436cff012",
      "tree": "f1a7183c0aa17414df90409e99dc24e84aaa2562",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 18 07:09:20 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 26 10:13:33 2012 -0700"
      },
      "message": "Eliminate #ifdef ART_USE_QUICK_COMPILER\n\nOne of several steps towards having a single compiler build.\nIn this CL, we introduce a compiler_backend command-line option\nto select between Quick, Quick w/ GBC, Portable and Iceland\nback ends.  The Iceland option is temporary, and will go away once\nwe combine with Portable.  The Quick variants are with\nand without GBC conversion.  In time, those will converge to a\nsingle option.\n\nAll uses of \"#if defined(ART_USE_QUICK_COMPILER)\" are eliminated.  All\nprevious uses in the Quick compiler have been converted to runtime\ntests.  On the llvm side, ART_USE_QUICK_COMPILER was previously\nused to differentiate between Portable and Iceland builds.  Those\nusages have been replaced with ART_USE_PORTABLE_COMPILER, and in\na following CL will also be converted to run-time tests.\n\nAs of this CL, we\u0027re still generating separate libraries for\nQuick and Portable/Iceland.  Next up is elminating the target-specific\nlibraries for Quick-arm, Quick-x86 and Quick-mips.  Once that is\ncomplete, we will consoldate Quick and Portable into a single build.\n\nTo build either Iceland or Portable, touch USE_PORTABLE_COMPILER or\nUSE_LLVM_COMPILER as usual.  Otherwise, the build will default\nto Quick (non-GBC).\n\nChange-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47\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": "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"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6",
      "tree": "3e767d037fd3e47e792b88d982ad38bce26d39e9",
      "parents": [
        "f94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 26 17:34:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 12:18:25 2012 -0700"
      },
      "message": "Include held locks in SIGQUIT thread dumps.\n\nHandy if you have an ANR that\u0027s locking related. Quick tour:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method)\n   - locked \u003c0x60135aa8\u003e (a java.lang.Class\u003corg.apache.harmony.dalvik.NativeTestTarget\u003e)\n   at java.lang.reflect.Method.invoke(Native method)\n   at C.whileTrue(Main.java:63)\n   at C.synchronizedOnClassString(Main.java:56)\n   - locked \u003c0x60002a70\u003e (a java.lang.Class\u003cjava.lang.String\u003e)\n   at C.nestedSynchronizationWithTryCatch(Main.java:44)\n   - locked \u003c0x61336b90\u003e (a java.lang.String)\n   - locked \u003c0x61336bd0\u003e (a java.lang.String)\n   at C.nestedSynchronization(Main.java:35)\n   - locked \u003c0x61336b18\u003e (a java.lang.String)\n   - locked \u003c0x61336b50\u003e (a java.lang.String)\n   at C.synchronizedOnClassC(Main.java:30)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at C.noLocks(Main.java:27)\n   at C.\u003cclinit\u003e(Main.java:24)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at Main.main(Main.java:19)\n\nA non-static synchronized native method works too:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method)\n   - locked \u003c0x613371a8\u003e (a org.apache.harmony.dalvik.NativeTestTarget)\n   ...\n\nNote that most stack traces don\u0027t look any different; the above is a\npathological example that exercises different kinds of locking. Testing\nwith system_server shows most threads don\u0027t hold any locks.\n\nFuture work (marked by TODO) is that explicit JNI MonitorEnter calls in\nnative code aren\u0027t shown.\n\nChange-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9\n"
    },
    {
      "commit": "ca190666fb11820153f74274c495ba1f913d8a69",
      "tree": "cc813b9fd3b0ad38cec0e6952bcbbbbce78494f9",
      "parents": [
        "1fb3bd3559eb6fc34f7ba429adf9bb15c05939b0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:45:57 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 19:50:52 2012 -0700"
      },
      "message": "Fix initializer lists to be Google C++ style.\n\nChange-Id: Iada52ea5cf95492684033993b3299042bdaf6cee\n"
    },
    {
      "commit": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\n"
    },
    {
      "commit": "f8349361a16a4e2796efe9f3586b994e8d4834e4",
      "tree": "0a3474cde4028e1915c59393f49c147dd76ad766",
      "parents": [
        "44335e189951a863607049a33571932fb6a2a841"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:00:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:16:21 2012 -0700"
      },
      "message": "Use static thread safety analysis when available, and fix the bugs GCC finds.\n\nIt\u0027s impossible to express the Heap locking and the ThreadList locking with\nGCC, but Clang is supposed to be able to do it. This patch does what\u0027s possible\nfor now.\n\nChange-Id: Ib64a890c9d27c6ce255d5003cb755c2ef1beba95\n"
    },
    {
      "commit": "e119a3623ffbd55ff856d4eaac4dc4ef0c90a089",
      "tree": "142ce634272fc3e2e7d8b44c564fb3d72a01a33e",
      "parents": [
        "bf1b4574dc681d49696571c59033e8c63583a029"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 22 17:37:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:31:12 2012 -0700"
      },
      "message": "Fix the TODOs in the traceview support.\n\n(cherry picked from commit cfbe73d02a024800813f8f0fc4f6a4b4532195f3)\n\nChange-Id: Ie9ee2701df665d92c544c2ac3b4eaf7209a881a5\n"
    },
    {
      "commit": "7b9d996e4cd7d154bb1a244d67139aff0c363cf2",
      "tree": "a9dabe8f910b4b8bf29c2f4285d860995e25f58d",
      "parents": [
        "934100aea5a0f498c17e2c4a1fd0193af1557b42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:48:18 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:57:19 2012 -0700"
      },
      "message": "Tidy up some C-isms.\n\nChange-Id: I53b457cab9067369320457549071fc3e4c23c81b\n"
    },
    {
      "commit": "776ac1fa61237db645adb4370a4aab888530caf4",
      "tree": "fbdfe1dec5f1c890d479f700f2b11549d5574119",
      "parents": [
        "42f302c1da4cf1abf935d7aee29ece8d90441e0c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 13 23:36:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:38:06 2012 -0700"
      },
      "message": "Separate out more of LLVM build. Move verifier.\n\nMove the verifier to its own directory and break out major components.\nAvoid compiling unused files as part of the LLVM build, increase the use\nof unimplemented for LLVM.\n\nChange-Id: Icd3b1708363fb70ae99417d06ef8669d60446533\n"
    },
    {
      "commit": "a0e180632411f7fe0edf454e571c42209ee7b540",
      "tree": "97dc85e76c5449ec1a901226c44e0f68fec89870",
      "parents": [
        "e5eb1914de86129d78e965fb9f2e1bfb2aa68640"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 15:59:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 14 11:44:21 2012 -0700"
      },
      "message": "Add a SafeMap equivalent to std::map but without the error-prone operator[].\n\nChange-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9\n"
    },
    {
      "commit": "34e069606d6f1698cd3c33b39e72b79ae27e1c7b",
      "tree": "0feb7e9bde6cfe01c0df3ef2d8de3210570f7ce2",
      "parents": [
        "e62934d85fbc2d935afdad57eeade39ecbd7440a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "message": "Remove the useless \"suspend count already zero\" message for new threads.\n\nWe can actually detect the expected case of this warning ourselves, and\nnot emit it. Then we can upgrade the WARNING to a FATAL.\n\nI also tripped over the fact that the operator\u003c\u003c for Thread::State was out\nof date, so I\u0027ve moved the Thread enums up to namespace scope so the script\ncan automatically generate correct operator\u003c\u003c implementations for us. (All\nthe high-numbered thread states have been off by one for a couple of weeks.)\n\nChange-Id: I5de573d33d641e5a3cba87b370e9620c8c66e633\n"
    },
    {
      "commit": "0791adc2249366c50684935a4c42ba5e58bc3746",
      "tree": "bc667e81a3528952ad144da7e181189eb9804727",
      "parents": [
        "540a5b768bf5f76bd71ebf66612fb2298899480f"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 04 11:14:32 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 04 11:26:11 2012 -0700"
      },
      "message": "Fix method tracing and allow alloc counting during tracing.\n\nForcing alignment on art_trace_exit_from_code was preventing the LR of\nprofiled frames from matching. Also, the merge of the different types of\nstalk walks introduced a small bug.\n\nThe metrod tracer now also supports the TRACE_COUNT_ALLOCS flag to count\nallocations during method tracing.\n\nChange-Id: Ief9e4612471a134a90eabf15432135162b633b92\n"
    },
    {
      "commit": "57b86d47b66322693a070185fadfb43cb9c12eab",
      "tree": "81d53304a63a660a683917a19f7dd83723a397ad",
      "parents": [
        "68aefb06c449df0bd8a34f3491f7594ee3f9dd0b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 27 16:05:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 29 11:51:44 2012 -0700"
      },
      "message": "Refactor runtime support.\n\nChange-Id: Id7470a4105838150d5ceb73ab2c8c83e739660df\n"
    },
    {
      "commit": "1bac54ffa933fbe9b92b62437577f2f4583eff1a",
      "tree": "a27134343ed3cd45a286c3a68b9a4469e70f13e7",
      "parents": [
        "96970cdab3e28511322ce37fa578f6eff8931d72"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "message": "Fix all our unused parameter warnings so we let GCC report them.\n\nThere were a couple of genuine bugs here (fixed), plus there\u0027s a missing\nfeature in trace.cc that I\u0027ve just added a TODO for.\n\nAlso note that I haven\u0027t touched the compilers; this warning is still\nexplicitly disabled for that code. I\u0027ll do that when there\u0027s less going\non in those directories.\n\nChange-Id: Ic3570bf82411a07c7530bfaf1995ac995b9fc00f\n"
    },
    {
      "commit": "88c5c355fc3d881f905564911d746b2313d5fc89",
      "tree": "d5b11b85131064cb6200465e674060933f48ebd7",
      "parents": [
        "141b0c75986949da0adbf9c07ad92bc675f1bfed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 18:49:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 21:14:57 2012 -0700"
      },
      "message": "Make CheckJNI and JNI workarounds mutually exclusive...\n\n...in the opposite direction; needing workarounds turns off CheckJNI.\nThis isn\u0027t necessarily a good idea, but I like the cleanup parts of\nthis change.\n\nChange-Id: I708235ea3e5cc35ef90b01dd810e097e3ff9dd26\n"
    },
    {
      "commit": "b5e81858a47dd7ed051135f6982fbc4e13d0f309",
      "tree": "7da467d2b2d18de134960b0efbf7e484c6a8e4aa",
      "parents": [
        "4d26534f6a65d7af89cc32da8fbc32beed693201"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 11:15:45 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 12 13:57:13 2012 -0700"
      },
      "message": "Added code to allow method tracing from command line.\n\nCrated a set of command line switches to allow method tracing to be\nenabled from the command line. They are -Xmethod-trace,\n-Xmethod-trace-file, and -Xmethod-trace-file-size.\n\nChange-Id: I7ecaa07aba3d7ca41f2ff3a9a9341d97833afe36\n"
    },
    {
      "commit": "ffb465f23d9549dd591e6aa62e9250523cb00233",
      "tree": "2108ba79a4ec8031faa56ef0806f93bc2217c237",
      "parents": [
        "71ac99485e79ad7eb1ba3ea2d404d53bb5784c13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 18:46:05 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 21:15:36 2012 -0800"
      },
      "message": "libcorkscrew native stacks, mutex ranking, and better ScopedThreadListLock.\n\nThis change uses libcorkscrew to show native stacks for threads in kNative or,\nunlike dalvikvm, kVmWait --- working on the runtime directly I\u0027ve found it\nsomewhat useful to be able to see _which_ internal resource we\u0027re waiting on.\nWe can always take that back out (or make it oatexecd-only) if it turns out to\nbe too noisy/confusing for app developers.\n\nThis change also lets us rank mutexes and enforce -- in oatexecd -- that you\ntake locks in a specific order.\n\nBoth of these helped me test the third novelty: removing the heap locking from\nScopedThreadListLock. I\u0027ve manually inspected all the callers and added a\nScopedHeapLock where I think one is necessary. In manual testing, this makes\njdb a lot less prone to locking us up. There still seems to be a problem with\nthe JDWP VirtualMachine.Resume command, but I\u0027ll look at that separately. This\nis a big enough and potentially disruptive enough change already.\n\nChange-Id: Iad974358919d0e00674662dc8a69cc65878cfb5c\n"
    },
    {
      "commit": "1984651929744dd603fd082e23eacd877b9bc177",
      "tree": "ffa10973a88f0f2743f3fbfaf5e7e4235d5f262d",
      "parents": [
        "f3c01c530ab3a645bd5a980522df4d396dcbf228"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 24 11:42:47 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 16:08:56 2012 -0800"
      },
      "message": "Invoke static/direct dispatch change.\n\nThere was a subtle race in static/direct dispatch via the code and methods\ntable. This patch removes the table in preparation of architectures like\nx86 which will more aggressively sink loads.\n\nRemoves unused fields, code.. Brings back resolved methods table\nshort-cut and associated fast paths to use this (such as in Proxy). Adds\na resolution method that is used as the trampoline for static and direct\nmethods.\n\nAdd source file and line number to Throwable::Dump.\n\nMethodHelper knowledge of runtime methods.\n\nChange-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "ba8eee10607a524f43b55a6f33c13924fb16d435",
      "tree": "45f3c3728bcaee9ff04baeaf1706693e677757bf",
      "parents": [
        "844f9a072454eb9dca1022299b6bf99ef4294008"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "message": "Remove more lint.\n\nChange-Id: I48714db4169d9ea0536342809361210910ee2091\n"
    },
    {
      "commit": "899e789bd4741c0172268f7838ce8ab220a5f916",
      "tree": "2936efb7335a498eeaf25b479dd00ee2b9e73b8c",
      "parents": [
        "a0cb1204543934b1f4975025cd6047eb71dc6429"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 14:57:32 2012 -0800"
      },
      "message": "Include the thread name in Thread\u0027s operator\u003c\u003c output.\n\nFor example:\n\n Thread[2,tid\u003d1692,VmWait,Thread*\u003d0x416914d0,\"Signal Catcher\"]: reacting to signal 3\n\nChange-Id: I2b00e82af2ad0f09141dbf4e418bc0582e9b966d\n"
    },
    {
      "commit": "ad6c9c3dbf7541340f22ccbb333f08556ad7e000",
      "tree": "dc11a1165c0f145cf3e6b5edc16bea8b57ba62fe",
      "parents": [
        "d1029981c8ec2341f76376c8d8e15d72dda4c45f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 19 17:39:12 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 20 14:04:02 2012 -0800"
      },
      "message": "Mac build fixes.\n\nThis gets us pretty close. There are a few problems with libraries we depend\non (system/core/liblog and external/icu4c) that I have workarounds for, and\na problem with gtest that I haven\u0027t yet worked around that prevents us from\nlinking any of the tests. But this at least gives us a Mac dex2oat binary.\n\nChange-Id: Iac39a6c2963c3d37ab2165d7d1a70e303ba22c45\n"
    },
    {
      "commit": "2692b573a56cd63a3c8c8aa1636e3766b6d8c9c4",
      "tree": "16d422b8b2d3ae8e20baa34090b7b5b2aa687cd8",
      "parents": [
        "db7d5e96d3e4090e69fac7b4ec1fc1bdcc0b436c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Dec 16 15:42:28 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 19 10:36:47 2011 -0800"
      },
      "message": "Changed tracer to use an instance to hold state instead of statics.\n\nChange-Id: I2fdcf5de7fbc745273b1a33cb409d13e72d24ab4\n"
    },
    {
      "commit": "a9ef3fd82bebc6370fc3ddbb094988feb6c83022",
      "tree": "3832d0b31fdf28b6f67e4a16148a461ba299727b",
      "parents": [
        "dbf05b722af99ba2fd2f4c4fc7eb6c3e9880e5d1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 13 18:33:43 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 15 13:10:04 2011 -0800"
      },
      "message": "Updates to tracer to log events.\n\nThe tracer can now generates traces for ddms or output to a logfile.\nAlso includes bugfixes to allow stack walking to work properly when\ntracing.\n\nChange-Id: I8894272d9a678eeb1d376734f7822daf2ab298e4\n"
    },
    {
      "commit": "e343b76af81a005ef64f5e75a555389fd9147dab",
      "tree": "f6ec517c56338244d06723c49d610b5d948c3fa7",
      "parents": [
        "5b245f344cbe8402cfe35c3a42988081e71208bc"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 05 16:36:44 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 07 16:34:28 2011 -0800"
      },
      "message": "Stub to capture method entry/exit.\n\nAdded stubs to allow traceview to do method tracing. Currently only\noutputs to logcat, and a later change will generate the proper log file.\n\nChange-Id: Icaafc50e2eaf042ddc4d882011f7e8121bdd8b1c\n"
    }
  ]
}
