)]}'
{
  "log": [
    {
      "commit": "9974e3cdc1564edc3143b90d7bb2a416f1f887e7",
      "tree": "4f9746e6b237b2a17cc1e2543a141817d4946c19",
      "parents": [
        "2d19902c3d140c7b9b1d7ae905bd1023a4e649a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 10 16:27:06 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 11 10:06:12 2020 +0000"
      },
      "message": "Clean up generated operator\u003c\u003c(os, enum).\n\nPass enums by value instead of const reference.\n\nDo not generate operator\u003c\u003c sources for headers that have no\nenums or no declarations of operator\u003c\u003c. Do not define the\noperator\u003c\u003c for flag enums; these were unused anyway.\n\nAdd generated operator\u003c\u003c for some enums in nodes.h . Change\nthe operator\u003c\u003c for ComparisonBias so that the graph\nvisualizer can use it but do not use the generated\noperator\u003c\u003c yet as that would require changing checker tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifd4c455c2fa921a9668c966a13068d43b9c6e173\n"
    },
    {
      "commit": "230beda8184f4043454480e90b2ee0bb481dcb97",
      "tree": "7d8983ad336c7522ad7c7142a2921547745420f6",
      "parents": [
        "2388ae520a1d0904b4def15a8b77cef39429c883"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri May 03 16:06:52 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 15 21:04:49 2019 +0000"
      },
      "message": "Add thread state descriptive comment\n\nI would have found this comment helpful while investigating the bug below.\n\nBug: 113361290\nTest: Treehugger\nChange-Id: Ibb4299f4e9c08f9561db42ffeeec296b869fb416\n"
    },
    {
      "commit": "34857b5fd3be5ee8cf1935bd1fbaad37a8e42768",
      "tree": "eabdd26615030bde559d939eb861f02290851c9e",
      "parents": [
        "3b45890cf987c0b57965acd78958cd8eca487b8e"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "Koji.Fukui@sony.com",
        "time": "Wed Mar 20 19:13:00 2019 +0900"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 12:12:13 2019 +0000"
      },
      "message": "Revert \"Revert \"Change state to waiting during aborting the VM\"\"\n\nThis reverts commit ebb481d070e3fdbb7950580e6f6886c3231a1ad9.\n\nDex2oatWatchdogTest.TestWatchdogTrigger passed.\nApply the change again.\n\nTest: ART_HEAP_POISONING\u003dtrue make test-art-host-gtest-dex2oat_test64\nBug: 127875380\nChange-Id: If4326990cd612815ffe1511490712ca8babfec55\n"
    },
    {
      "commit": "ebb481d070e3fdbb7950580e6f6886c3231a1ad9",
      "tree": "af6986daab73dcd17dca5f4bab68024c12c40c83",
      "parents": [
        "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 09:30:35 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 12:33:11 2019 +0000"
      },
      "message": "Revert \"Change state to waiting during aborting the VM\"\n\nThis reverts commit 97b964960123d5f215a1cebbce548c8a5322c307.\n\nBug: 127875380\n\nReason for revert: Broke Dex2oatWatchdogTest.TestWatchdogTrigger on host x86_64 and heap poisoning.\n\nChange-Id: Iaebfc4a03543bff4e7239d711dd7ad8c7f880d52\n"
    },
    {
      "commit": "97b964960123d5f215a1cebbce548c8a5322c307",
      "tree": "04239f8bc25ce6f22bda774bbae37755ed8acb27",
      "parents": [
        "26a5dd6fd1d65de29ba85e4bb61d9267dd428238"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sony.com",
        "time": "Tue Mar 05 12:22:57 2019 +0900"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 18 17:19:04 2019 +0000"
      },
      "message": "Change state to waiting during aborting the VM\n\nSymptom:\nProcess freeze when multiple runtime error happen on runnable threads.\n\nRoot cause:\nWhen multiple runtime error happen, only one thread locks abort_lock_\nand other threads are blocked even if they are runnable state.\nIf an other thread tries to suspend blocked threads at the same time,\nblocked threads can\u0027t be suspended until abort_lock_ is unlocked from\nowner thread. But owner thread can be suspended even if it locks\nabort_lock_. Thus, these threads causes dead lock.\n\nSolution:\nChange state to waiting when locking abort_lock_.\n\nBug: 127875380\nChange-Id: I7e914924690bb30d6d0490cf5f8afdb1c3cd4e4a\n"
    },
    {
      "commit": "8764dc3b3eda7f6f13ed7b584475503fe5bedd59",
      "tree": "e8f6e3a4a2596595ffdc8a517daaf37030482eae",
      "parents": [
        "49b74a8c685acfe43dd33e3f51a24c486388bee1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 07 15:20:12 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Use iosfwd more\n\nUse iosfwd where an include of ostream is unnecessary. Also move\ncallee_save_type.h to runtime.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Id8995d6f524e4c491eb6f57fdffb940cf35d291f\n"
    },
    {
      "commit": "77fee87b262e969b29a9ac121a8bcbf87b68d9ce",
      "tree": "3280ba8d887045217bfbcb81eb624f571eeee7d0",
      "parents": [
        "ec995142998f6c7371734e6df95b5e2c80b18d27"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 09:57:03 2017 -0700"
      },
      "message": "Add support for JVMTI monitor events.\n\nAdds support for the JVMTI can_generate_monitor_events capability and\nall associated events. This adds support for the\nJVMTI_EVENT_MONITOR_WAIT, JVMTI_EVENT_MONITOR_WAITED,\nJVMTI_EVENT_MONITOR_CONTENDED_ENTER, and\nJVMTI_EVENT_MONITOR_CONTENDED_ENTERED events.\n\nBug: 65558434\nBug: 62821960\nBug: 34415266\n\nTest: ./test.py --host -j50\n\nChange-Id: I0fe8038e6c4249e77d37a67e5056b5d2a94b6f48\n"
    },
    {
      "commit": "76f55b030d2517d434f227bee2363c3fb760e5c6",
      "tree": "92d625bb90b05ad976ff174ac25a112a7fda3bd1",
      "parents": [
        "24011e738d77dedb28c1b4d6ff34445cc2acc4a7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 21 16:10:39 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 27 14:36:01 2015 -0700"
      },
      "message": "Synchronize JNI critical calls with the CC collector thread flip.\n\nJNI critical calls (like GetArrayElementsCritical) would need to block\nfor the whole GC run to finish if the CC collector GC is ongoing. This\nCL changes it so that they don\u0027t need to block for the GC run, but\nonly for the duration of the thread flip operation, which is much\nshorter. This is valid due to the to-space invariant.\n\nBug: 12687968\nBug: 19235243\n\nChange-Id: I1b6b4ae4fa539ddc0ec50b10ae8c8709f2a12fe8\n"
    },
    {
      "commit": "90ef3db4bd1d4865f5f9cb95c8e7d9afb46994f9",
      "tree": "3c6f8989e0c6e027382a3c08d221ba97afd72291",
      "parents": [
        "1cf85515600d298a2c9e4de137c0926949205097"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 15:19:41 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 18:56:54 2015 -0700"
      },
      "message": "Address some comments and clean up\n\nChange-Id: I538cf204f1c89d5fc81f8fc5e5800fcf1cf87359\n"
    },
    {
      "commit": "14c3bf91b2ec434295ec84d6446f495fb7de6d5c",
      "tree": "6eaa51c263b84b7a11f40f21be993987cdca80f3",
      "parents": [
        "6d3d1e3d866a880b4df95ba96ed126c1723e3dd6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 13 14:35:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 17 15:34:40 2015 -0700"
      },
      "message": "Change intern table to not use WaitHoldingLocks\n\nBug: 22423014\nChange-Id: I9e16b8cb4def72fff73f1783a182877105feb7aa\n"
    },
    {
      "commit": "b43390cb87eace4a017f672d66cfb20fb9e76aa1",
      "tree": "7d4f2f0f0d0ad561f20cac4a2aa78cba9a477c78",
      "parents": [
        "28d332c720cb7c9c0163c4844bb0c1a2a067470e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 10:47:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 12 14:59:31 2015 -0700"
      },
      "message": "Hold heap bitmap lock in Heap::GetObjectsAllocated\n\nFixes a race condition where add and remove space could cause a crash\nwhen we iterated over the spaces.\n\nTODO: Add a spaces lock or something to guard against this.\n\n(cherry picked from commit a395c0a492079d86b312c9edc796d63001576954)\n\nBug: 21031927\n\nChange-Id: I7f0d558316f8e9d9f22ffd182e8666355bf50d47\n"
    },
    {
      "commit": "0c8c303c20cdaaf54d26e45cc17dc5afb820d8ef",
      "tree": "d3289457acd74e6aa3296bbeef1f8a7619537eec",
      "parents": [
        "97d9f286971a4c1eec70e08f9f18f990d21780d5"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 16 16:54:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 20 12:40:59 2015 -0800"
      },
      "message": "Clean up the locks around Heap::VisitObjects().\n\nThis is so that we could support suspending all threads when visiting\nobjects in the presence of a concurrent, moving collector.\n\nBug: 12687968\nChange-Id: Icc8e60630465afde948ebc6ea91d4ebaff5d7837\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "bae182cbc6adc8796154162a87fc54ae804e0469",
      "tree": "d5c1fdb048edab194e948e4e90bff66703c5f55e",
      "parents": [
        "0c1734665c38b3116e38a90ad06c3f152d9316c5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Dec 17 10:42:03 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 09 16:10:45 2014 +0200"
      },
      "message": "Fix method tracing from command-line\n\nTransitions current thread to the new kWaitingForMethodTracingStart thread\nstate when starting method tracing.\n\nEnsures there is a current thread when method tracing is stopped due to runtime\nshutdown. If the current thread has been detached, we now re-attach it.\nNote: we only do this if method tracing has been activated from command-line.\n\nFixes instrumentation when forcing interpreter mode (-Xint) with method tracing\nenabled.\n\nRemoves unused parameter from UnsafeLogFatalForThreadSuspendAllTimeout.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d72094\nBug: 11683397\nChange-Id: I70f000fb46ddd95d6ad51ea0a8eee77697a045e9\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": "0aded089f565008ba5908e395e5914ca4f91f2de",
      "tree": "3b1238d956e0181d00243604c83c3a0be368437d",
      "parents": [
        "98ba6cebd22489c959d845884ee045dcbd958d41"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Nov 07 13:15:11 2013 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 07 10:58:07 2014 -0800"
      },
      "message": "Add sampling profiler\n\nThis adds a sampling profiler thread that runs every so often, gathering\nprofiling data and writing the results to a file in /data/data (specific to\napp running).  The intention is to use these files as input to the compiler\nso that it can determine the best methods to compile.\n\nBug: 11539952\nChange-Id: I0bfbb4146fb7966673c792f017ffac8107b6272d\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": "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d",
      "tree": "5fc7f5b941724a62f8e3411df09fae431ff5e3cf",
      "parents": [
        "56d947fbc9bc2992e2f93112fafb73e50d2aaa7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:40:12 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 16:49:05 2013 -0700"
      },
      "message": "Fix multiple inclusion guards to match new pathnames\n\nChange-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43\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": "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": "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"
    }
  ]
}
