)]}'
{
  "log": [
    {
      "commit": "530552ac735c59a3ae44b16f751df265e820dad2",
      "tree": "2ca5654c5152df395af60811ceb0dc891e1137b7",
      "parents": [
        "bbc4dc3f98bdc2f984371b39ea5a96d85a3ab2a1"
      ],
      "author": {
        "name": "wangguibo",
        "email": "wangguibo@xiaomi.com",
        "time": "Sun Jun 06 09:26:07 2021 +0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun Jun 06 18:35:48 2021 +0000"
      },
      "message": "Fix DumpUnattachedThreads logic for CTS.\n\nThe thread should not be in thread list when dumping from\nDumpUnattachedThread.\n\nBug:140968481\nBug:188918448\nBug:188918454\nTest:CtsWindowManagerDeviceTestCases android.server.wm.AnrTests\n\nSigned-off-by: wangguibo \u003cwangguibo@xiaomi.com\u003e\nChange-Id: Icc4c7907c5386280c04d8e56496361e32cbac350\n"
    },
    {
      "commit": "9d27fbc8ced914f4726187920a7794b07eca3e71",
      "tree": "0fd6eb99d0766ac78513d650d629f217273ab294",
      "parents": [
        "e3124d26d725a2b042b4409abfb30a39bb76794d"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri May 21 09:23:38 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue May 25 16:34:18 2021 +0000"
      },
      "message": "Improve suspension timeout diagnostic and fix race\n\nFix a data race on state_and_flags. Since the access was volatile\nand there are system calls in the loop, this is extremely unlikey\nto have casused the bug here, but ...\n\nSo, assuming this is still broken, produce more informative\noutput once we time out.\n\nRemove unused argument from SuspendThreadByPeer(). It made the\nlogic more complicated and made it harder to reason about\ncorrectness.\n\nRemove dead code after LOG(FATAL, ...)\n\nBug: 181778559\nTest: TreeHugger, temporarily paste log message into hotter path.\nChange-Id: I6f3455925b3a3f4726a870150aeb54ea60a38d67\n"
    },
    {
      "commit": "0d290721a8d63d5e0d38a64d3ecf922a91becb10",
      "tree": "02daf3bb3ae703da0a9b99a307f8bbfb2c03c748",
      "parents": [
        "c63d9672264e894d8d409e8d582b4e086b26abca"
      ],
      "author": {
        "name": "wangguibo",
        "email": "wangguibo@xiaomi.com",
        "time": "Sat Apr 24 11:27:06 2021 +0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 17 18:19:16 2021 +0000"
      },
      "message": "Dump java backtrace when contending lock too long time.\n\nIt’s easy to cause a problem when execute time-consuming work inside\na synchronized method/block. Previously, we use \"dvm_lock_sample\" in\nevent log to help us look into.\n\nBut it\u0027s always after the event, \"dvm_lock_sample\" is printed after the\nowner thread exited the critical section, we don\u0027t know more details\nthat which statement get stuck or more time-consuming.\n\nThis implementation provides a lot more information about what the\ncontending thread is doing. when a thread contend for a long time,\nwe will print backtrack which thread holding the lock.\nMaybe many threads waiting this lock, those threads will request\nprinting backtrack many times, which is helpful for finding and\nlocating problems.\n\nThis mechanism is only suitable for very long wait times, not lots of\nshort wait times.\nThis feature is heavyweight, it\u0027s not enabled by default. we can\nturn on by \"-XX:MonitorTimeoutEnable\" in AndroidRuntime::startVm.\n\nBug:140968481\nTest: Manually check contention log messages.\n\nSigned-off-by: wangguibo \u003cwangguibo@xiaomi.com\u003e\nChange-Id: I29784d11355ae3c581723254848a87cd80e71456\n"
    },
    {
      "commit": "891cb8897612a156e631825615781c537032a3f3",
      "tree": "c0206a93a2480388764113184e9118a8c0a120ea",
      "parents": [
        "270e10a8122d4a2abe4d92db55451e2b62f32188"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 31 12:06:58 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Sep 28 18:35:14 2020 +0000"
      },
      "message": "Add mutator collector coordination documentation\n\nThis affects a lot of ART and should thus be documented.\n\nIt is sufficiently low level that I believe it belongs in the source\ntree. It should only be of interest to ART developers, in a broad sense\nthat includes anyone trying to understand failures involving ART.\n\nVarious comment improvements around thread suspension and checkpoints.\n\nTest: Built AOSP.\nChange-Id: I77338ff1d6f7c6aefb7be849449770438c15c982\n"
    },
    {
      "commit": "6127ace4619f735a7f9555947329edddb9e627f9",
      "tree": "89d84565e05a45884d6caacd734eeb1a94b66550",
      "parents": [
        "2816cfcf7766c22f287ffe86d378c5f4509d3eee"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Apr 21 20:38:14 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 23 18:15:50 2020 +0000"
      },
      "message": "Increase shutdown time constants\n\nWait longer before and after setting runtime deleted flag. This gives\ndaemons a longer time to reach an idle state, and\n2033-shutdown-mechanics a better opportunity to observe changes during\nthe shutdown process. Slows down \"normal\" shutdowns with running user\ndaemons. That shouldn\u0027t normally occur in production and is rare during\ntesting.\n\nIn 2033-shutdown-mechanics, wait longer to make sure the child thread\nis ready and waiting when we shut down.\n\nTest: Ran 2033-shutdown-mechanics a few times.\nChange-Id: I2b5b420cf8dfc37fa154c4624bcdc66acb78258d\n"
    },
    {
      "commit": "28aaf24b59931d40945413772f89aeef8637c014",
      "tree": "f0609b2f06944627469a62e22574d7a00025ae25",
      "parents": [
        "d68580ee6508bd9d5aa6bbdef33f79b8c2cbcf85"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 17 17:46:48 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Apr 20 19:00:44 2020 +0000"
      },
      "message": "Call SetRuntimeDeleted() unconditionally\n\nWe were failing to call it when thread suspension attempts timed out.\nWe should call it even then. We\u0027re occasionally seeing suspension\ntimeouts because daemon threads already wedged themselves because\nwe\u0027re already in a partially shutdown state. In particular any dameon\nmaking a JNI call from a fastnative call will prematurely enter\nSleepForever and not respond.\n\nBug: 147804269\nTest: .../testrunner.py --host -b --64\nChange-Id: I84f35476e678a71529f10d9836669cd4f785c750\n"
    },
    {
      "commit": "dc77ca3d54bd83faee98591474728a5e3ecfc551",
      "tree": "f8f1fb9444b9ceed31a5c24f4408920bb30c56ab",
      "parents": [
        "948f0624554f3811020daadc5413f87dace964c3"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 31 16:29:35 2020 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Feb 06 00:00:30 2020 +0000"
      },
      "message": "Wait sooner for non-daemon threads\n\nWhen the main thread returns, we attempt to shut down the runtime.\nSometime during that process we always waited for non-daemon threads\nto complete as required. But previously we only did so after\nthe runtime was partially shut down, potentially causing the\nremaining threads to deadlock.\n\nThis explicitly waits before we start destroying the runtime.\n\nAdd test to make sure that a long running child thread finishes\nproperly.\n\nBug: 148126377\nBug: 147619421\nTest: New test fails without waiting call, passes with.\nChange-Id: Ic60d695c8a03543b51d8532156f19fff00a58edc\n"
    },
    {
      "commit": "fc58809f7b932d86234130be15487017dc37b0cf",
      "tree": "d003dedec73d77473aff6b2039860bc76a69d898",
      "parents": [
        "d00f129f1b7148f01efe6e9283a72d6ec8f0edd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 23 15:39:08 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 29 23:31:10 2020 +0000"
      },
      "message": "Remove old JDWP implementation from ART\n\nThe old \u0027internal\u0027 JDWP implementation hasn\u0027t been used for a few\nreleases and it\u0027s a lot of code that\u0027s barely being tested and is at\nrisk of bit-rot. To simplify the runtime and remove potentially buggy\ncode this removes it.\n\nWe also needed to rewrite the DdmThreadNotification code since it\nrelied on the suspension functionality from the old debugger and was\ngenerally unsafe.\n\nTest: ./test.py --host\nTest: atest --test-mapping cts/tests/jdwp/TEST_MAPPING\nTest: atest --test-mapping cts/hostsidetests/jdwptunnel/TEST_MAPPING\nTest: Manual ddms\n\nBug: 119034743\n\nChange-Id: I775f310a009141296b730e4a6c2503506a329481\n"
    },
    {
      "commit": "ff5ce16585a904eca17b08138d1dcf9fa4098129",
      "tree": "1c819b3631aca93b9e6c6d626d58ff9307b28f1a",
      "parents": [
        "f6c69e53da3d1a065b6403573e3d5344944a2820"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 17 18:06:41 2020 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Jan 21 19:11:12 2020 +0000"
      },
      "message": "Sleep longer in shutdown with asan\n\nThis reduces the probability of an unavoidable race.\n\nBug: 147804269\nTest: Toy experiments with feature tests.\nTest: Build with and without asan,\nChange-Id: I11d2efa7b2419f56e2e92654c3d5e7effdac1bf7\n"
    },
    {
      "commit": "65c18a21e7cb0d48327788df498f15ae195e9e3c",
      "tree": "ba49c1f07e7cd2bc6d9ffbafc184bcad85e9ce45",
      "parents": [
        "c4d13ae39ec6f4b6b76b152818516081beb6bb56"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 23:37:13 2020 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Jan 07 17:40:19 2020 +0000"
      },
      "message": "Revert^4 \"Add spin loop to mutex, overhaul monitor\"\n\nThis reverts commit ead89ef62768faa06fedd279b86bccbed1464673.\n\nPS1 is identical to Revert^2.\n\nThis fixes a shutdown issue caused by prematurely hanging when we\nblock while trying to acquire system mutexes during shutdown.\n\nOnly refuse to wake up after shutdown is well under way.\n\nBug: 140590186\nBug: 121302864\nTest: Build and boot AOSP.\nTest: art/test/testrunner/testrunner.py --host -b -t 1932-monitor-events-misc\nTest: art/test/testrunner/testrunner.py --host -b -t 004-ThreadStress\nTest: art/test/testrunner/testrunner.py --host -b -t 132-daemon-locks-shutdown\nTest: 132-daemon-locks-shutdown repeated with increased thread counts and multiple\nconcurrent tests.\n\nChange-Id: Ic19d32652a2a05c1ca843b3e9c6e29e6770262da\n"
    },
    {
      "commit": "ead89ef62768faa06fedd279b86bccbed1464673",
      "tree": "27e3bef919a0775f45c0dfc08b6a26d7688e8a98",
      "parents": [
        "8d94dddfd60ab8122b0abb1a0d90fb13d752a7b6"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 21:37:10 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 03 22:50:59 2020 +0000"
      },
      "message": "Revert^3 \"Add spin loop to mutex, overhaul monitor\"\"\n\nThis reverts commit 3d52abe40e619497b1b59cfce92c74b5a417add5.\n\nReason for revert: Causes asan build timeout; Apparently the runtime\ngoes away while we\u0027re holding a system mutex. We now sleep forever\nwithout releasing it.\n\nBug: 140590186\nBug: 121302864\nChange-Id: I9e4dcaf820815c751aa803473809955451988ebd\n"
    },
    {
      "commit": "3d52abe40e619497b1b59cfce92c74b5a417add5",
      "tree": "50c67eb9a980b1525f78e03d0941605bb9fa3887",
      "parents": [
        "eac38a141a95adc273059ba2f6ad26f073391ed3"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Nov 19 18:49:50 2019 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 19:15:21 2020 +0000"
      },
      "message": "Revert^2 \"Add spin loop to mutex, overhaul monitor\"\n\nThis reverts commit d56f7d1086b16f32c0771a41a4afb376b5fd3076.\n\nReason for revert: PS2 fixes the problems I identified.\n\nPS1 is straight revert^2 of, and thus identical to aosp/1111800.\n\nPS2 in addition:\n- Reduces the size of the test, when not modified to run as benchmark.\n- Disables the test in slow-running configurations, which timed out.\n- Stops using the mutex recursion count, and instead reintroduces\n  one at the monitor level. The plan is to eliminate the one in mutex\n  in a future CL.\n- Avoids modifying various monitor fields in suspended state.\n  MonitorInfo, deflation, etc., may look at the state of a suspended\n  thread and expect not to race. I don\u0027t think the original code had\n  this completely correct either, but PS1 made it worse.\n- Documents some aspects of the code that confused me at times.\n- Avoids dereferencing the monitor owner Thread* unless it holds the\n  thread list lock, and thus knows that the thread won\u0027t go away.\n- Stores a Thread* instead of a thread_id with the monitor owner method\n  and dex pc information used for debugging. This is required to avoid\n  extra thread list lock acquisitions, since we need to dereference the\n  owner to get the thread id.\n- Makes the thread list Contains method public, again in order to\n  support the above. (This ignores C/C++ restrictions on dangling\n  pointer use. We already rely on violating those elsewhere, and\n  the committees are trying to get their story straight about this.)\n- Causes the spin loop to give up immediately if the process is\n  shutting down. This gets us to an actual idle state sooner in that\n  case, and should hopefully mitigate the shutdown issues somewhat.\n  (We tried not spinnning in \"suspended\" state, but that reintroduced\n  some performance issues.)\n- Makes runtime shutdown code more defensive. Clear fields pointing to\n  deallocated objects. Always wait for quiescence AFTER all threads\n  are suspended.\n- Consistently checks for a runtime that\u0027s shutting down or missing\n  after waking up from a futex wait, thus avoiding touching deallocated\n  memory. I believe this was the cause of b/121302864, which PS1\n  managed to aggravate.\n- SleepForever() was a very light sleeper, waking up once a second.\n  Fix that, so the daemon threads we leak on runtime shutdown cost\n  us less.\n- Remove a data race from the \"was the runtime deleted\" logic.\n\nBug: 140590186\nBug: 121302864\nTest: Build and boot AOSP.\nTest: art/test/testrunner/testrunner.py --host -b -t 1932-monitor-events-misc\nTest: art/test/testrunner/testrunner.py --host -b -t 132-daemon-locks-shutdown\nTest: art/test/testrunner/testrunner.py --host -b -t 004-ThreadStress\n\nChange-Id: I6667c61beed2ba68c84cd4c0821fb8e21e188bbc\n"
    },
    {
      "commit": "e3f775bace85f4fe02dfd4042091d2f7d6fcbc25",
      "tree": "41446ada658dc05abb073edc5c2c134e83802619",
      "parents": [
        "621738039bbca55a2513bddb6ea66d4934fa7089"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 14:41:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 05 13:34:57 2019 +0000"
      },
      "message": "Address comments from aog/1180224.\n\nMove handling of objects in interpreter cache to weak objects.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie7b2b2e285607a7c1460fd4f0b4ea690f9a16594\n"
    },
    {
      "commit": "e41eec3b193d594577cbe8afc7c3dc6608c2f201",
      "tree": "a9914bbb64b8fc87a90ccf165368b6b33475322f",
      "parents": [
        "98e97c6953e970ce99e53640c963fa79a525b1eb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 14:41:54 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 21 09:24:58 2019 +0000"
      },
      "message": "Fix deadlock in ThreadList::RunCheckpoint().\n\nBe smarter about the situation when a thread races the\nsuspend request to become Runnable. In that case we try to\nreschedule the checkpoint on that thread and, if successful,\nwe clear the suspend request. Thus we never have to wait for\na Runnable thread to become suspended.\n\nThis avoids a deadlock where the ThreadList::RunCheckpoint()\nwas waiting for a Runnable thread which was waiting for the\nGC to allow weak ref access while the GC thread was actually\nsuspended by the suspend request, trying to become Runnable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit --interpreter\nBug: 138852758\nChange-Id: I746b00160e09ac9e55ee6214faee6447025615b9\n"
    },
    {
      "commit": "55eccdf61f46bd2a633f489f8d09cf78e1de1938",
      "tree": "e60d91c8fc48dfe70956ec9febd346b9dc9fcf77",
      "parents": [
        "49df715faf3700e874fbe246b339a8e426549216"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 07 13:51:13 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 18:59:55 2019 +0000"
      },
      "message": "Revert^4 \"Walk internal ArtField/ArtMethod pointers\"\n\nSeveral of the new tests make use of the invoke-custom opcode. This\nopcode is not supported by dexter/slicer causing the tests to fail.\n\nThis reverts commit c34eab45161c51bf63e548e44645cbcc59d01268.\n\nReason for revert: Added tests to redefine-stress known failures\nTest: ./test.py --host --redefine-stress\nBug: 134162467\n\nChange-Id: Ic1b375a0cb1e44d0252c17115af92c269fb8efc5\n"
    },
    {
      "commit": "c34eab45161c51bf63e548e44645cbcc59d01268",
      "tree": "1b2a0eb85865d2cf6b1627cb5d64869e72412505",
      "parents": [
        "623d4f1ba4f4218c5472e3d9e1e9bf707795878d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:15:53 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:16:18 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\"\n\nThis reverts commit ea2a3d949354c8b054983ba629c81bc5ff7163da.\n\nBug: 134162467\n\nReason for revert: Fails redefine stress\n\nChange-Id: If487c0bcacaf3a3f565ff475b6dad8321e3428b9\n"
    },
    {
      "commit": "ea2a3d949354c8b054983ba629c81bc5ff7163da",
      "tree": "dc94a9c92b254d3f94d96ad0dc27f195d5a7767c",
      "parents": [
        "7fca6ef7b9dbe5a54f2c93a3484035f48ebae27a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 20:34:46 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 14:21:21 2019 -0700"
      },
      "message": "Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit 712fa800b2b78e527d36c88dc369bf4b723587ea.\n\nWe incorrectly didn\u0027t check if a method was obsolete before giving its\nclass\u0027s MethodIds array. We then incorrectly used this array and the\n(placeholder) -1 index to try to find the previous method-id. Since -1\nis not a valid array index we got check failures. To fix this we\nsimply added a check that the method is not obsolete and if it is we\ngo to the slow-path.\n\nReason for revert: Fixed issue causing out-of-bounds array access\nTest: ./test.py --host --debuggable --ndebuggable\nBug: 134162467\n\nChange-Id: Iaffefeab6e889b4fb6554a11452d0af051001cb7\n"
    },
    {
      "commit": "712fa800b2b78e527d36c88dc369bf4b723587ea",
      "tree": "ccc4573a3c6bef136ef6da022350ebb5c17a1892",
      "parents": [
        "f70dfec27cae2625c199f1b8ecf1ef1f23580a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:11 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:38 2019 +0000"
      },
      "message": "Revert \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c.\n\nBug: 134162467\n\nReason for revert: Test fails on debuggable.\n\nChange-Id: I240d58fafcc7434749947330b64c67d65b9b7a1e\n"
    },
    {
      "commit": "c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c",
      "tree": "1380b353e0d3b5015c9d1ef29fd4c2534828f97b",
      "parents": [
        "8679fd5e938d7bed67d3ab67c55b7f4fb2cdd92a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 24 14:36:50 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 20:44:33 2019 +0000"
      },
      "message": "Walk internal ArtField/ArtMethod pointers\n\nDuring structural class redefinition we sometimes need to update some\nof the ArtMethod/ArtField pointers held by runtime frames. This adds\nsupport for doing this through a StackReflectiveHandleScope similar to\nthe StackHandleScope used for holding object references. This also\nupdates various places where reflective-handles to ArtMethods and\nArtFields are needed, for example the JniIdManager, field Read/Write\noperations and events, field resolution, and the old debugger.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I4ea73e85956a07735c6d7b125c5828a4233670bc\n"
    },
    {
      "commit": "c88c1d0fbbc4bc230f08fd1e0fe7b652519c9236",
      "tree": "7295e7e39530096cfe42a24326c28e22f7d4efdc",
      "parents": [
        "4ec4d48940696de077f88f9f8e9abdb178772301"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 27 08:18:46 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 27 18:09:57 2019 +0000"
      },
      "message": "Fully remove DumpKernelStack.\n\nAs explained in the previous commit touching this code, these days only\nroot can get the kernel stack trace anyway.\n\nTest: treehugger\nChange-Id: I9924951afa1f8511720c479598c3bd74f5a55c66\n"
    },
    {
      "commit": "82372004427646e048b47ca507e7409d8edfeaf5",
      "tree": "6f109e4b2428b2a2340bf4ed93d8fc9f30b0f0dc",
      "parents": [
        "a47a6e89407fa9f0234d44c2be8451f4838c0780"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 24 15:42:09 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 21:38:53 2019 +0000"
      },
      "message": "ART: Use thread_local on the host for ART Thread*\n\nUse thread_local instead of a pthread key for Thread::Current().\nRetain the pthread key as we are still using it for some sanity\nchecks in ThreadExitCallback.\n\nBug: 138329277\nTest: m test-art-host\nChange-Id: Idfe43bc279459e307e2165d3a3762af09230bdfd\n"
    },
    {
      "commit": "a47a6e89407fa9f0234d44c2be8451f4838c0780",
      "tree": "8977c4976486381c4f63aa602a98fac611898a95",
      "parents": [
        "a0fc13a97a22604c5587a30d3b92cf22e68079a7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 24 09:46:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 25 16:56:41 2019 +0000"
      },
      "message": "ART: Extend bionic TLS use to host bionic\n\nUse __BIONIC__ instead of ART_TARGET_ANDROID for bionic TLS usage.\n\nBug: 138329277\nTest: m test-art-host\nTest: art/test/testrunner/run_build_test_target.py art-linux-bionic-x64\nChange-Id: I7dc605c6700323303d9c9503d3aecc4fddef8d45\n"
    },
    {
      "commit": "5a832258726e3dfa148a1ddf63e987ca0cbab17a",
      "tree": "3a8f5deece4fe5992a3bb79d362b59d9ddfdf754",
      "parents": [
        "08417350b78b975a7fed36d3360e0f926abae385"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 28 07:31:16 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 28 16:24:36 2019 +0000"
      },
      "message": "Address comments for aog/934603\n\nTest: TH\nChange-Id: I6b54cfbaa49d320c3c9e97ebaeeb97e285f9bf43\n"
    },
    {
      "commit": "4f1e3288a845b91a5ce369865ec7e249f4f94622",
      "tree": "58dadb1c056709e85481197bf61e61818d69c4db",
      "parents": [
        "ad7fa6ec6bfe4b04d3985ad896274a4511fcfdef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 27 14:41:32 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 28 01:48:49 2019 +0000"
      },
      "message": "Stop verifying barrier count for thread dumping\n\nFor ANRs, some threads may not pass through the barrier. Prevent\na crash for this case.\n\nThis behavior is consistent with checks in the dump code.\n\nBug: 128490284\nTest: test-art-host\nChange-Id: I5dc681d00c29d20755020c35a18fb9912cc08d57\n"
    },
    {
      "commit": "36dfa4177e0cced1741e7d4d7a629681b9786d89",
      "tree": "d6dc9dadb8303618c67a18bea06fed3bbc902da7",
      "parents": [
        "f74d4cb0e294c22de347bf2879f3a8f47398321e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 22 17:24:49 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 23 04:13:43 2019 +0000"
      },
      "message": "Delete RunCheckpointOnRunnableThreads\n\nNo longer used.\n\nTest: TH\nChange-Id: I2dd988d45dd081869928ff297ab53d03e89bde75\n"
    },
    {
      "commit": "119733d87242414100df7b9eedb6d1672a03ead6",
      "tree": "19ba75bd42d3c94a4de0684ae66f4078da1546a6",
      "parents": [
        "8a64e773d4d1221166c6a8206315b450e448705a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 15:14:41 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 31 15:39:55 2019 +0000"
      },
      "message": "Revert \"Revert \"ART: introduce PALette abstraction layer\"\"\n\nThis reverts commit e6e01a0a00de80704ccb21c48d5d8bdee4470b77.\n\nBug:  122824298\nTest: art/test/testrunner/run_build_test_target.py -j50 art-test-javac\nTest: m out/target/common/obj/PACKAGING/hiddenapi-stub-flags.txt\nTest: frameworks/rs/build_rs.py\nChange-Id: If7b9ddca3daa80b75b3541abd283bf47d5b81118\n"
    },
    {
      "commit": "e6e01a0a00de80704ccb21c48d5d8bdee4470b77",
      "tree": "8f9cc651764686140accaadcfb8f77bf7572c24b",
      "parents": [
        "4b9d00aca9b025b545c9633b4605334c22fc4d2d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "message": "Revert \"ART: introduce PALette abstraction layer\"\n\nThis reverts commit 4b9d00aca9b025b545c9633b4605334c22fc4d2d.\n\nReason for revert: breaks renderscript mac and run_host_tests in master.\n\nChange-Id: I6024894a384c65f3e7d81b9c5bba8ebe8ce1b420\n"
    },
    {
      "commit": "4b9d00aca9b025b545c9633b4605334c22fc4d2d",
      "tree": "7984bf247f908d145b7c6b48df99f3f0a80ae148",
      "parents": [
        "4ee4561f2153f3b0bc3be2e781488a97c73ca58e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 03 17:04:02 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 09:00:27 2019 +0000"
      },
      "message": "ART: introduce PALette abstraction layer\n\nThis change decouples direct dependencies on system libraries.\n\nBug: 122824298\nTest: art/test.py --host --64\nTest: art/test.py --target -j8\nTest: m -j100 \u0026 flashall -w \u0026 device boots\nTest: art/build/apex/runtests.sh\nChange-Id: Iae927ed9aaa228a941cd444cef04e6ec53955299\n"
    },
    {
      "commit": "3fef44a2455912bc471fd7408ab3bcd8b76ef635",
      "tree": "92c1ecc703448e1ab2d4b2219cdc5257877d49f2",
      "parents": [
        "1cc5dc8f0c990afeda0993dd088fc4c8432aa46f"
      ],
      "author": {
        "name": "Juju Sung",
        "email": "juju.sung@mediatek.com",
        "time": "Mon Jan 07 18:18:16 2019 +0800"
      },
      "committer": {
        "name": "juju sung",
        "email": "juju.sung@mediatek.com",
        "time": "Mon Jan 07 11:51:45 2019 +0000"
      },
      "message": "Relocate usleep for Thread::Unregister\n\nPrevent the thread delay to get the release from thread_list_lock_\n\nBug: 122442055\nTest: make\nChange-Id: Icf158033ddbc1a9297fdcfac6303119df6171ffe\n"
    },
    {
      "commit": "a1358e600fa9f06548298406c17a868fbf1fb095",
      "tree": "f4e7f363b7e9373e605d85a32e05b0d96cadffa4",
      "parents": [
        "26c140f01048b7b87c6eebcf4b219ab63c32b9ce"
      ],
      "author": {
        "name": "Yuntao.Xiao",
        "email": "yuntao.xiao@unisoc.corp-partner.google.com",
        "time": "Mon Nov 26 14:28:51 2018 +0800"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 21 16:54:20 2018 +0000"
      },
      "message": "ART: log threads not suspending in SuspendAllInternal\n\nUnisoc bug #936294 add log to print thread\n\n[root cause  ] add log to print thread\n[changes     ] add log to print thread\n[side effects]no\n[self test   ]:yes\n[download normally]:yes\n[power on/off normally]:yes\n[do common repository/branch inspection]:yes\n[is there dependence]:no\n[confirm dependent commit]:no\n[board]:sharkle\n[test case]:monkey\n[reviewers   ] cheney.chen\n[change_type ] debug_log\n[tag_product ] common\n\nUnisoc_Owner: Jasson.Zhang@unisoc.com\nTest: make libart\nBug: 121370289\n\nChange-Id: If4c4b94d60ad03d1641694e859b217b41c74cf9e\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "7530bae4f286d828d6394303ee2622c1b01b7e43",
      "tree": "6232fa29b6ce0dd2d4ac4cc47615ee08d9da59a9",
      "parents": [
        "97d40f9c7b1157783d09861ce76d3a0b3da73cbe"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Oct 29 20:03:51 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Wed Oct 31 18:40:21 2018 +0000"
      },
      "message": "Use _PRIVATE versions of futex ops.\n\nThis flag allows some performance optimizations in the kernel for futex\nwords that are only used in one process.\n\nTested: art$ grep FUTEX_  **/*.cc **/*.h\n\nChange-Id: I490b9592ca0f0ab5ab5431682e8b2104f5c917ca\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "cea421597f26b2afb2d82d72a46c5dc905496ca5",
      "tree": "60f2a4df80e1fdf8aeb42e9dafca96d75aa43d2f",
      "parents": [
        "e9f61035e7077032a17d7d0e9035b6ef3995273f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 18 22:51:55 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:06 2018 -0700"
      },
      "message": "Revert \"Allow threads to be marked as unsuspendable by kForUserCode\"\n\nThis allows any thread (including jit-threads) to be suspended by\nkForUserCode and the will stop executing at the next suspend-point.\n\nThis reverts commit 53570676750d74416cecdf5a8e01f3cf9a8d4169.\n\nReason for revert: This marking was not sufficient to prevent\ndeadlocks and there is a better solution in simply preventing the jit\nthread from making this situation possible.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I8314904cc35f66bdf287ac7b9ec69510310a3474\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "3408ff220f030d24b92938a9b418c5947d83aaed",
      "tree": "0437f7f230b16f96229a6a53f554c284dc98a085",
      "parents": [
        "0dc3eca64a7c5f826484d41ccf95955cb81d6e6b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 21 15:45:17 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 22 09:59:27 2018 -0700"
      },
      "message": "Add usleep for Thread::Unregister\n\nPrevent possible bad behavior for realtime threads.\n\nBug: 111277984\nTest: make\n\nChange-Id: Ib558a4e1289675f88ef4d999277287e4dd7ed6d3\n"
    },
    {
      "commit": "53570676750d74416cecdf5a8e01f3cf9a8d4169",
      "tree": "8de1c48dd0a83091ffef6bf321ffc4ffc05b1147",
      "parents": [
        "b7f10d59557cb6b6cd6824f3bf4d77f961248846"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 12 11:09:59 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 17 11:03:20 2018 -0700"
      },
      "message": "Allow threads to be marked as unsuspendable by kForUserCode\n\nThere was a possible deadlock between jit-threads being suspended and\nanother thread waiting for the jit-thread to finish their work. If the\njit-thread hit a suspend-point the process would deadlock. This fixes\nthis by allowing threads to be marked as unsuspendable by user-code.\nThis prevents the issue by marking jit and gc threads as unsuspendable\nby user code. Agents attempting to suspend them using JVMTI will\nsucceed (and see the thread as suspended) but internal runtime methods\nwill not see the thread as suspended and the thread will not be\nprevented from moving into the kRunnable state. A thread that is\nunsuspendable trying to suspend itself using JVMTI will get\nERR(INTERNAL) and a log message.\n\nDoing this requires that we rewrite the JVMTI thread suspension code\nsomewhat so it will now perform an unconditional kInternal suspension\nprior to trying to suspend the thread kForUserCode. The kInternal\nsuspension is then lifted. This ensures that everything is done\natomically even if the kForUserCode won\u0027t stop the thread.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I91211641b82416664bf5abd8546efebf4f672f12\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "6ee497188b0e8c7bcf5126cefad04090f956616a",
      "tree": "db2d06b01d255811726ea748db8eb6f62cd7b71c",
      "parents": [
        "642e9d8249be5aff68022cabdc8ba576a57ff8d6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "message": "Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nBug: 74121887\n\nStill failing :(\n\nThis reverts commit 642e9d8249be5aff68022cabdc8ba576a57ff8d6.\n\nChange-Id: I603ca9fdd2d8f2f759527130b3288efe5b23b5c3\n"
    },
    {
      "commit": "642e9d8249be5aff68022cabdc8ba576a57ff8d6",
      "tree": "1fa53cee639241bd3968997e55e38ed282235569",
      "parents": [
        "b939805d9d4b0957274c562fb8053512d04138b2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 20:30:55 2018 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 22:36:09 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\"\n\nThis reverts commit 74d25c9040dfd1e0985987eb38817e526878a3db.\n\nReason for revert: The original failing condition appears to be gone.\n\nBug: 74121887\n\nTest: Ran 004-ThreadStress many times against the target.\nChange-Id: Ie5bd050112e654a99bdfea7d6dd673882ca35567\n"
    },
    {
      "commit": "88591fe82f499de10591f5b77efac71f8954eae2",
      "tree": "bfa126ad55ee091e3b615bd3bb60d5f8cfb6e37a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 06 13:35:43 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 23 15:01:15 2018 +0000"
      },
      "message": "ART: Simplify atomic.h\n\nPrefer std::atomic operations over wrappers in atomic.h. Exceptions\nare cases that relate to the Java data memory operations and CAS\noperations.\n\nBug: 71621075\nTest: art/test.py --host -j32\nTest: art/test.py --target --64 -j4\nChange-Id: I9a157e9dede852c1b2aa67d22e3e604a68a9ef1c\n"
    },
    {
      "commit": "74d25c9040dfd1e0985987eb38817e526878a3db",
      "tree": "e63323329298a7cc67799324a6edc2378cfb6822",
      "parents": [
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "message": "Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\n\nBug: 27185632\nBug: 74121887\n\n\nGot flakes on device for 004-ThreadStress and 141-static-field-sigquit\n\nThis reverts commit 8b089742252e827d863218413e8855e1bae75af5.\n\nChange-Id: Ie76c84a1889e85b885d5f4123d60e8a760cf186d\n"
    },
    {
      "commit": "8b089742252e827d863218413e8855e1bae75af5",
      "tree": "bbfe333fced26fbc42f87a4469c59822611acd9f",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 11:47:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 13:43:15 2018 -0800"
      },
      "message": "Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nThis reverts commit a73280df8cac1279b6dea0424722f42ef0048613.\n\nBug: 27185632\nBug: 74121887\nTest: m test-art-host\nChange-Id: I24af48619577a78371c93cbad24d307d4d7a217d\n"
    },
    {
      "commit": "4531aae45b32e33481352613d6017916147f1b6d",
      "tree": "709f476e46f10eff03f245a3ade5004abf2fa3c1",
      "parents": [
        "ed416f76ae679d92f0bc648581de2684ff93e29a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 02 14:01:14 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 14 16:56:35 2017 -0800"
      },
      "message": "Re-enable dumping unattached threads.\n\nBug: 31666428\n\nTest: Ran unit tests, kill -3 on bluetooth process.\nChange-Id: I8db4923278a9302ab83ff53e61549b63bac67ec8\n"
    },
    {
      "commit": "9b827ab7e63cf8b24987e75186434348d0dbf4e8",
      "tree": "7be2f4c9a19d809d8c77e2d516fbd2b62f41c672",
      "parents": [
        "c654816053ae07fb1f129d705e94b76e59f37454"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 19:32:48 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 08 12:22:36 2017 -0800"
      },
      "message": "ART: Clean up ATRACE use\n\nRemove old ATRACE_BEGIN \u0026 _END pairs, where possible. Remove\nATRACE_CALL and replace it with ScopedTrace.\n\nRemove utils/Trace.h include.\n\nTest: m\nChange-Id: I3a5123202f4e373074bfe0f7359ee6c60a70352a\n"
    },
    {
      "commit": "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8",
      "tree": "1da7bdc834fbc2f11243fa2b936f0d7a67d982c1",
      "parents": [
        "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 15:44:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Factor out gAborting\n\nCut dependencies on base/logging.h by moving gAborting to its\nown header. Leave the static storage in logging.cc.\n\nTest: m\nChange-Id: Ib2ca880e15f9cb50cb9aab803784826bb46efb5e\n"
    },
    {
      "commit": "a16fec549253638268dda3d83e6e34a500cbfc1c",
      "tree": "f4390e4b356b35c91ed0f1916b86913e6f8d19e4",
      "parents": [
        "8871585b9b637127907702d8ee010a3a21653e59",
        "446c6b240dadab9893e4dc0a4b81ba284da3bafa"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Nov 10 16:40:13 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 10 16:40:13 2017 +0000"
      },
      "message": "Merge \"Comment lack of return check on usleep\""
    },
    {
      "commit": "767d0397b07e3f1e75c4fd754632e73369b9399e",
      "tree": "ce41f16597f12d981d37f995d59fccdf14d1230e",
      "parents": [
        "66946a2cbf55d36fa7b9232a8a381a19f65b2fcb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 14:06:43 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 15:01:38 2017 -0800"
      },
      "message": "Increment gAborting for UnsafeLogFatalForThreadSuspendAllTimeout\n\nIncrement gAborting before doing the thread list dump since we don\u0027t\nwant any failures from AssertThreadSuspensionIsAllowable in cases\nwhere thread suspension is not allowed.\n\nBug: 69044468\nTest: m\n\nChange-Id: I87d09f07fa8379fb121ced5c2086d1de78c6eec6\n"
    },
    {
      "commit": "446c6b240dadab9893e4dc0a4b81ba284da3bafa",
      "tree": "9ff0b53b35cffc2ff53bc70fbf1ba797d86f6e0d",
      "parents": [
        "66946a2cbf55d36fa7b9232a8a381a19f65b2fcb"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Nov 09 14:08:19 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Nov 09 14:08:19 2017 -0800"
      },
      "message": "Comment lack of return check on usleep\n\nAs the usleep calls used in thread_list are during shutdown and other\nnon-correctness related locations, add a comment to that effect.\n\nBug: 29527582\nTest: make -j 50 test-art-host\nChange-Id: I9c72564a13e28db6681b21d676a62f63ba052937\n"
    },
    {
      "commit": "b1b0ed2b2889d42dcf800a3bdfe734759909482d",
      "tree": "655028ee6fb94d38d2569a6ef5577b9b5370c504",
      "parents": [
        "5751dc831ffd8acb089c2aff2e2ddf18f89da975"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 24 15:38:14 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 27 11:17:55 2017 -0700"
      },
      "message": "Use the backtrace interface to skip java maps.\n\nThis has no effect until the new unwinder is used. When the new\nunwinder is enabled this will have nearly the same behavior as the\nold unwinder. The difference is that the old unwinder ignored the\nminidebug information (compressed section data) completely. The new\nunwinder will not ignore minidebug information in system libraries,\nit will only ignore them in .oat or .odex maps.\n\nThere will be a small difference between the new and old unwinder. The\nnew unwinder when dumping in an ANR trace file looks like this:\n\n  native: #00 pc 0000000000069abc  /system/lib64/libc.so (__epoll_pwait+8)\n  native: #01 pc 000000000001feb4  /system/lib64/libc.so (epoll_pwait+52)\n  native: #02 pc 0000000000015cec  /system/lib64/libutils.so (android::Looper::pollInner(int)+144)\n  native: #03 pc 0000000000015bcc  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+108)\n  native: #04 pc 0000000000110d98  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)\n  at android.os.MessageQueue.nativePollOnce(Native method)\n  at android.os.MessageQueue.next(MessageQueue.java:325)\n  at android.os.Looper.loop(Looper.java:142)\n  at android.app.ActivityThread.main(ActivityThread.java:6569)\n  at java.lang.reflect.Method.invoke(Native method)\n  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)\n  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)\n\nThe old unwinder looks like this:\n\n  native: #00 pc 0000000000069abc  /system/lib64/libc.so (__epoll_pwait+8)\n  native: #01 pc 000000000001feb4  /system/lib64/libc.so (epoll_pwait+52)\n  native: #02 pc 0000000000015cec  /system/lib64/libutils.so (android::Looper::p\nollInner(int)+144)\n  native: #03 pc 0000000000015bcc  /system/lib64/libutils.so (android::Looper::p\nollOnce(int, int*, int*, void**)+108)\n  native: #04 pc 0000000000110d98  /system/lib64/libandroid_runtime.so (???)\n  native: #05 pc 00000000001d1e1c  /system/framework/arm64/boot-framework.oat (J\nava_android_os_MessageQueue_nativePollOnce__JI+140)\n  at android.os.MessageQueue.nativePollOnce(Native method)\n  at android.os.MessageQueue.next(MessageQueue.java:325)\n  at android.os.Looper.loop(Looper.java:142)\n  at android.app.ActivityThread.main(ActivityThread.java:6569)\n  at java.lang.reflect.Method.invoke(Native method)\n  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.jav\na:438)\n  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)\n\nTest: kill -3 of android process.\nChange-Id: If9d282d1a7a303c4f2af296bd98b1994b9bc2660\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "5544e721c3e2a3e344c26b9e1c9ad9472fb8cd58",
      "tree": "58e65b9003f06166bb330b395cd8017dd79ab2b8",
      "parents": [
        "4f101e5b6ae214a73bdd912374f5dc565d336e47"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:01:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:02:55 2017 -0700"
      },
      "message": "ART: Replace some \u0027\\n\u0027 with std::endl\n\nInduce flushing the ostreams at strategic points to improve\nlog visibility.\n\nBug: 62337922\nTest: m test-art-host\nChange-Id: Ic4b4c698b568575b55160fff0ad5c31fa6b4018a\n"
    },
    {
      "commit": "ae4c845b2aadc1e5bc098d54f1ba4914096b9c83",
      "tree": "f1da5fba969e751a415f1e3cbe53dbf94b2e35f5",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 01 18:45:10 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 09:31:56 2017 -0700"
      },
      "message": "Revert \"Change thread suspend timeout to be fatal for non-debug\"\n\nFor overloaded systems, 10s might not be enough. Infinite seconds\nwill be though.\n\nBug: 37221387\n\nTest: test-art-host\n\nThis reverts commit d69f82e155118654d989f0b436c019fb6d517341.\n\n(cherry picked from commit 111b0e05d130d345857ad875be484e3839ce25d4)\n\nChange-Id: Id17d94c71360f5de3bb67eb22d05e148dd5238d3\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "6e6444508de1afaeaf612970fad608b58b89b009",
      "tree": "ea42cbed1450be598869ef406bb1a6c31a7e4f77",
      "parents": [
        "270970e660d3c99e62a88b18144d159dd8699c55"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 09 16:30:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 10 10:07:32 2017 -0700"
      },
      "message": "ART: Make GC Pause Listener more precise\n\nRefactor code to call the listener in FlipThreadRoots, after all\nthreads have been suspended.\n\nBug: 37283268\nTest: m test-art-host\nChange-Id: I313db07e014e65a997d0b58c8a70e4505425def0\n"
    },
    {
      "commit": "824fd239f7260d9cc0e9ce95e512bacfb156a81b",
      "tree": "0a713814863c6fbcb4fb4a5f3fd124b5822f8770",
      "parents": [
        "d4a68c85f6e6395d18d4ced9b99099490e407c59",
        "3768adec2f819cb506577618fdde158ba659ddd4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 03 23:18:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 03 23:18:33 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add concurrent card graying for immune spaces\"\"\""
    },
    {
      "commit": "3768adec2f819cb506577618fdde158ba659ddd4",
      "tree": "38f929a1ec79088f1f4d3a205672acfb261af94b",
      "parents": [
        "55e8cd14fdbe257f4ecdd5d629eef6b8c93567c9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 02 14:04:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 02 19:42:39 2017 -0700"
      },
      "message": "Revert \"Revert \"Add concurrent card graying for immune spaces\"\"\n\nAdded an additional checkpoint before the concurrent graying to set\nthe mark entrypoints to non-null.\n\nBug: 37876887\n\nTest: test-art-host\n\nThis reverts commit c83dd7bfde2171c879efb92a31a363505385ffb9.\n\nChange-Id: I961c4631c9595c52cd7765f61b22b8291fef2088\n"
    },
    {
      "commit": "c4bed16daa6689eaa2148261b19662291417ced6",
      "tree": "56d03d48010091acb6f2551e1381097b6148d106",
      "parents": [
        "7113885fcd983b33ee1e350865d21517d6297843"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 01 13:46:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 02 14:01:41 2017 -0700"
      },
      "message": "ART: Change shutdown order\n\nAdd explicit Shutdown method to ThreadList, doing the work that\nwas previously in the destructor. Call sid method before unloading\nplugins and stopping the debugger.\n\nModulo daemon threads, this ensures that thread events will have\nquiesced when plugins stop.\n\nBug: 37763974\nTest: m test-art-host\nChange-Id: I11d22f2c89a68e9f6720d61967b8e5aea41188dc\n"
    },
    {
      "commit": "1c8f4ff04062407db3d2dd834dd6bc24f6662c4d",
      "tree": "a116c7d55fc1bcff2b451028f46a1196ee15d990",
      "parents": [
        "c1be9f2b776b4900e0603013f7c4d84e534f0bb0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 14 15:05:12 2017 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 18 18:06:54 2017 +0200"
      },
      "message": "Always check result of Thread::ModifySuspendCount\n\nEnsures that we never ignore the result of ModifySuspendCount so that\nwe can react if the suspend count is not updated as expected.\n\nThis CL does the following:\n* Adds __attribute__((warn_unused_result)) on the method to raise an\n  error at compilation time if the result is ignored.\n* Wraps calls with DCHECK where the result used to be ignored.\n\nBug: 27385848\nTest: make -j test-art-host\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: I2d0e1ab7158c70ec8076c8bae6e4b814aee75af6\n"
    },
    {
      "commit": "d69f82e155118654d989f0b436c019fb6d517341",
      "tree": "86cca66b3b69aedcc7ee8dd544ac08e52d255797",
      "parents": [
        "f9806373ca50896ac54cb9da49a030c13ec14769"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 21 08:40:57 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 21 08:41:34 2017 -0700"
      },
      "message": "Change thread suspend timeout to be fatal for non-debug\n\nRight now it just loops forever and doesn\u0027t give any stack traces\nregarding probable deadlocks.\n\nBug: 36408743\n\nTest: test-art-host\n\nChange-Id: Ib8919f4be540291d8226dd0e7eb88c7faf7cdde9\n"
    },
    {
      "commit": "a222404a5832ab16786931576d52825d08eed3ca",
      "tree": "7350e5efbb6ef72c33e82753d79f7f4bed92d9d4",
      "parents": [
        "1561de49b382627ddd277b8ad7e5e8f4cec32f0b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 08 16:35:45 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 10 16:15:01 2017 -0800"
      },
      "message": "Fix the empty checkpoint timeout.\n\nThe problem happens when a thread is indirectly blocked on a mutex\nthat another thread holds and is blocked on a weak ref access.\n\nAdd a way to do a dummy wakeup on a thread that\u0027s blocked on a mutex\nso that the thread will respond to the empty checkpoint request. Do\nthis for the mutexes that are expected to be held when a weak ref is\naccessed. Add a check that detects an unexpected case.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host.\nChange-Id: Iefec69b9a21aa25a928cb31fcf4fb872f867a8c2\n"
    },
    {
      "commit": "e9429c8c5f8c5541dcbe97e03c55cba175bce182",
      "tree": "9f030b57193e34f87088249d8f1ad4151a197233",
      "parents": [
        "a0305a27fc2da2bff16415e2edf733db2adf202f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 15:22:56 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 15:32:09 2017 -0800"
      },
      "message": "Add to time to suspend in FlipThreadRoots to histogram\n\nAdd the time to suspend to the suspend_all_historam_ to determine if\nGC pauses are caused by GC or bad mutator activity.\n\nAlso exclude ThreadFlipBegin time being counted as paused since it\nhappens before threads are suspended.\n\nTest: test-art-host\n\nChange-Id: Ia55db0ebbdc7ba6f23d7212c0e42c7806b297c2b\n"
    },
    {
      "commit": "3fceaf500d570722122f2d092f302d27769e3a51",
      "tree": "1c38d3a72559cb2f9454e445e3d5ddc7168170df",
      "parents": [
        "388df9e0943fd4c858b99f268d9655336df17062"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 22 13:33:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 22 13:45:44 2017 -0800"
      },
      "message": "Use higher default thread suspend timeout for run tests\n\nIncrease the default for tests from 10s-50s to 500s. This is done\nby adding a run-test option \"--suspend-timeout\" that defaults to\n500000.\n\nExample when passing a low value of 100:\ntest/run-test --host --suspend-timeout 100 --dev 004-ThreadStress\n\nResults in:\ndalvikvm32 F 01-22 13:33:31 12067 12118 thread_list.cc:669] Timed\nout waiting for threads to suspend, waited for 100.114ms\n\nThis should fix some of the recent test flakiness.\n\nTest: test-art-host\n\nChange-Id: I303c4f198e560e9f38ec375e9d7a80a5e61f776e\n"
    },
    {
      "commit": "32c8337f9fcb8e7026b7ee67dc4ff3e1ca74830e",
      "tree": "54b1f794ae537ed43b1bedf560bfd992b3b3697a",
      "parents": [
        "a28ddf5140cd1f4a2ae93dbf8be2f200b1552003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 11 10:09:30 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 11 10:36:57 2017 -0800"
      },
      "message": "Increase thread suspension timeout for debug builds\n\nThe current timeout may be causing some test failures. Also print how\nlong we waited.\n\nTest: test-art-host -j32\n\nChange-Id: Ib8a9c68ab4571efc8456c098b03bf35f648bfaf1\n"
    },
    {
      "commit": "35af2ad461e9745252bdc2c1c5a0cad1386626d4",
      "tree": "9ce6b0191a6ea443047aa534d4f0594c76c83941",
      "parents": [
        "c51c7ca7a779563d153c137c6bf01c3ea532a6c9"
      ],
      "author": {
        "name": "rock.yeh",
        "email": "app1_test@weckout.com",
        "time": "Fri Dec 23 15:11:13 2016 +0800"
      },
      "committer": {
        "name": "rock.yeh",
        "email": "app1_test@weckout.com",
        "time": "Mon Jan 09 01:48:01 2017 +0000"
      },
      "message": "Use relative futex timeout in SuspendAllInternal.\n\nThis erroneously used an absolute timeout for FUTEX_WAIT, potentially \ncausing it to block for MUCH longer than 10 seconds.\nhttp://man7.org/linux/man-pages/man2/futex.2.html\nNote: for FUTEX_WAIT, timeout is interpreted as a relative value.\n\nError case:\nkernel time: 15842.476344\nnsec: 31694950164731\n12-22 20:25:48.020043     0     0 F [15842.476344][HeapTaskDaemon:3008]\nfutex_wait 00000070fcdf8980 1 1 31694950164731\n\nNormal case:\nkernel time: 15842.476344\nnsec: 15842476344\n\nBlock backtrace:\n\"HeapTaskDaemon\" sysTid\u003d3008\n  #00 pc 000000000001bcac  /system/lib64/libc.so (syscall+28)\n  #01 pc 0000000000461db0  /system/lib64/libart.so\n(_ZN3art10ThreadList18SuspendAllInternalEPNS_6ThreadES2_S2_b+720)\n  #02 pc 000000000046249c  /system/lib64/libart.so\n(_ZN3art10ThreadList10SuspendAllEPKcb+532)\n  #03 pc 00000000001e8fc8  /system/lib64/libart.so\n(_ZN3art2gc9collector9MarkSweep9RunPhasesEv+232)\n  #04 pc 00000000001e1694  /system/lib64/libart.so\n(_ZN3art2gc9collector16GarbageCollector3RunENS0_7GcCauseEb+332)\n  #05 pc 0000000000211500  /system/lib64/libart.so\n(_ZN3art2gc4Heap22CollectGarbageInternalENS0_9collector6GcTypeENS0_7Gc\nCauseEb+3048)\n  #06 pc 0000000000218acc  /system/lib64/libart.so\n(_ZN3art2gc4Heap12ConcurrentGCEPNS_6ThreadEb+124)\n  #07 pc 000000000021fbf4  /system/lib64/libart.so\n(_ZN3art2gc4Heap16ConcurrentGCTask3RunEPNS_6ThreadE+36)\n\nThis is a fix patch log and each timeout log interval of 10 seconds:\n12-27 03:27:46.153744 1631 1713 E art : Unexpected time out during \nsuspend all. \n12-27 03:27:56.154401 1631 1713 E art : Unexpected time out during \nsuspend all. \n12-27 03:28:06.154956 1631 1713 E art : Unexpected time out during \nsuspend all.\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "585da955bc8e5040705dcfd941b2131025ebcef8",
      "tree": "d22555ab3b33b446271fcbbd1676177d21d7221f",
      "parents": [
        "ce29d1813914ee9a9e9b04b034968f09694dd557"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:52:29 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 11:47:02 2016 -0800"
      },
      "message": "ART: Add precise root visiting\n\nAdd VisitRootFlags::kVisitRootFlagPrecise to signal a\nrequest for precise RootInfo objects.\n\nMove VisitRootFlags to gc_root.h. Refactor VisitRoot\nfunctions to pass flags. Add code in Thread visiting\nto decode vregs in compiled code.\n\nBug: 31385354\nTest: m test-art-host\nChange-Id: I8e7280f0ab682871f729f2a1c6b18670cf2dbf82\n"
    },
    {
      "commit": "a82769c1168d38fb4d36eaecfc186aecb17d4b16",
      "tree": "ae5056ff9a92f17b54e40f3410626198772b1612",
      "parents": [
        "5eb1e1e7341f4e7febf77c04f8649a9566b31c03"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 02 17:01:51 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 02 18:15:10 2016 -0800"
      },
      "message": "Dump more debug info for b/33006388.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host with CC.\nChange-Id: Id9d67bc603c6ff7bc8e346e181e3e09ffbda43b3\n"
    },
    {
      "commit": "39ce7d2907edb978f1ab6cd75884be48ab11cd77",
      "tree": "7d2f0c56bd8a7dd483b5c1ede7047b623d0e35d7",
      "parents": [
        "5302bd999afee6db5b0cfd63e6a49b0fcbf92dd4",
        "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "message": "Merge \"Make empty checkpoint work while weak ref access is disabled.\""
    },
    {
      "commit": "fe814e89965ddf9a8b603863bd28259f8dd7be35",
      "tree": "32ecc282f176d0e2a98f41f6e4b116d26cf58bee",
      "parents": [
        "977919fbcbfbf0c1c3fa97e51490bc678da646d2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 14:32:49 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 10 14:41:28 2016 -0800"
      },
      "message": "Use entrypoint switching to reduce code size of GcRoot read barrier\n\nSet the read barrier mark register entrypoints to null when the GC\nis not marking. The compiler uses this to avoid needing to load the\nis_gc_marking boolean.\n\nCode size results on ritzperf CC:\narm32: 13439400 -\u003e 13242792 (-1.5%)\narm64: 16380544 -\u003e 16208512 (-1.05%)\n\nImplemented for arm32 and arm64. TODO: Consider implementing on x86.\n\nBug: 32638713\nBug: 29516974\n\nTest: test-art-host + run ritzperf\nChange-Id: I527ca5dc4cd43950ba43b872d0ac81e1eb5791eb\n"
    },
    {
      "commit": "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a",
      "tree": "19e2d9d5e8476bf526dd5924ef05b1d727b75f8b",
      "parents": [
        "e7b46e22c7f4f6f503501b3b2ad99113289d142b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 03 13:06:52 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 09 18:14:08 2016 -0800"
      },
      "message": "Make empty checkpoint work while weak ref access is disabled.\n\nFix a potential race on PushOntoMarkStack for CC by running an empty\ncheckpoint (while weak ref access is disabled).\n\nBug: 32508093\nBug: 12687968\nTest: test-art-host with CC/CMS, libartd boot with N9, Ritz EAAC.\nChange-Id: I3749bb525e7734804307ee16262355f3fc730312\n"
    },
    {
      "commit": "18f7de841fee3ca6f0c04e7caa57c3ce76b36231",
      "tree": "b1cfc982706e78b70bac215a4a7643374f5ace5e",
      "parents": [
        "83805a2c02289a4e234fa6cbbc6766fbfabbc308",
        "3f386d55f7e37eaefa828a55c8aa8c4f8788e6cf"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 06 18:24:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 06 18:24:19 2016 +0000"
      },
      "message": "Merge \"Allow early abort logging\""
    },
    {
      "commit": "81c6c8e6ded6d19c6196205a1b19fafa77993850",
      "tree": "c1e7fb8317e2075c437b65dce5323956a3d3a0d6",
      "parents": [
        "765dee21f34e8c191c247506cf8bc73a3c3fed36",
        "02e7f1a46d8dbb277d045182cd1fa4b058d55162"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 06 02:57:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 06 02:57:58 2016 +0000"
      },
      "message": "Merge \"Fix a deadlock between thread flip and suspend request.\""
    },
    {
      "commit": "3f386d55f7e37eaefa828a55c8aa8c4f8788e6cf",
      "tree": "0606c2468df283260d56efa6d10cd6ffcb28173b",
      "parents": [
        "78c6fefdb9008cb6dc9f0014d4616b457009c6c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 14:12:45 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:23:58 2016 -0700"
      },
      "message": "Allow early abort logging\n\nPrint unattached threads with native stack traces for early abort.\n\nBug: 31855501\n\nTest: test-art-host -j32\nTest: thread_list_-\u003eDump in Runtime::Start.\nChange-Id: I5364625e798356c4fa1f88a8c646e374e59d93b0\n"
    },
    {
      "commit": "02e7f1a46d8dbb277d045182cd1fa4b058d55162",
      "tree": "bd14cec6d5c4a545c2b9081d72b6e1b49ec7ef1e",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 03 15:32:01 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 05 17:52:29 2016 -0700"
      },
      "message": "Fix a deadlock between thread flip and suspend request.\n\nSee 31683379#9 for the deadlock scenario.\n\nMake ModifySuspendCount(+1) retry if the thread flip function is set.\n\nBug: 31683379\nBug: 12687968\nTest: test-art, N9 libartd boot, Ritz EAAC with CC.\nTest: 129-GetThreadId with gcstress and CC.\nChange-Id: Id5cdfcd90a08a2ff497f9f0e2842fa4c613549bc\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "b737745c79cbfa4fb3f9dfcb4560c5179f94851b",
      "tree": "28470f0ac6af58402ea1c43070cded51a27ed58e",
      "parents": [
        "05ce52b406dcf6b9a24287d14f0e611211e0db3d",
        "15af34cc172d9ae652da35a864190585cb6717a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 27 23:53:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 27 23:53:08 2016 +0000"
      },
      "message": "Merge \"Fix a CC deadlock in 129-ThreadGetId.\""
    },
    {
      "commit": "15af34cc172d9ae652da35a864190585cb6717a6",
      "tree": "bdf02e7dc6f0edaafff3c4164e2b1bdf2791d08a",
      "parents": [
        "35505bfe62f667cc84549b4ded81818d5ea2447e"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Sep 26 16:56:24 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 27 10:19:12 2016 -0700"
      },
      "message": "Fix a CC deadlock in 129-ThreadGetId.\n\nGC should consider a thread as \"waiting for GC thread flip\" or\n\"transitioning to runnable\" only if its suspend count is 1.\n\nSee 31683379#7 for the deadlock scenario.\n\nBug: 31683379\nBug: 12687968\nTest: test-art with CC and gcstress, N9 libartd boot, Ritz EAAC.\nChange-Id: Icd2548bd6d9a4f8d7b54ed20150a4801af9e26a3\n"
    },
    {
      "commit": "d6e54bbc09595465309aa7909b7a3965defe4419",
      "tree": "9c12c8a0192119725e8659f593704bc416b222e0",
      "parents": [
        "a4850b0fa18c8b92dd5c20c166856cfe87aec72f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "message": "ART: Fix nits\n\nFollow-up to commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: Ia50f450bef144167b946224c26242c529302996e\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "febd0cf9b5070ecc54ba433b951b65e14a54ccde",
      "tree": "75d96af58e255b442a45e2fa611e62851a1dc0ce",
      "parents": [
        "26ead4975e1752e8ae2f5ed6fda73876c4f9ff59"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 14 19:31:25 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 15 18:00:09 2016 -0700"
      },
      "message": "Fix a deadlock in the CC collector.\n\nFix a deadlock between CC GC disabling system weaks and thread attach.\n\nSee 31500969#2 for more details.\n\nBug: 31500969\nBug: 12687968\nTest: test-art-host with CC. N9 libartd boot. Ritz EAAC.\nChange-Id: Ic9a8bfb1c636643a03f4580b811fe890273576b6\n"
    },
    {
      "commit": "7e6df6e5fb9d3bfbef873d0cf006141d1fcf7d5e",
      "tree": "0a333e6c159e37a51907b71efb8ad2a7fb49b997",
      "parents": [
        "af2f2b90fdb5da2dbf51875e94d976169a76ebdd",
        "0b10387ced51d8ac1495fabe646c570fb1c378a4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 22 21:13:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 22 21:13:36 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Improve the thread flip.\"\"\"\nam: 0b10387ced\n\nChange-Id: I4695d621868558df12e072bf7055a9f78e752b58\n"
    },
    {
      "commit": "ee23582af60b36f982de2ad16f485a61f35ae817",
      "tree": "ae35b6885b345e210c66acdd992103e345202131",
      "parents": [
        "bf042503dc2c2d328a6331baf33697a7d06acccf"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:03:27 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 22 11:33:58 2016 -0700"
      },
      "message": "Revert \"Revert \"Improve the thread flip.\"\"\n\nThis reverts commit db3204f87c3f7c4de89762ce9e8502a9dc25c2d8.\n\nImprove the thread flip.\n\n- In addition to the threads that are suspended in FullSuspendCheck(),\n  prioritize the resume of threads that are blocking for the thread\n  flip at the JNI critical section entry and threads are about to\n  transition to runnable (eg. blocking at the SOA entry from JNI).\n- Shorten the length of the thread flip critical\n  section (ThreadFlipBegin/End).\n- Add some systrace scopes.\n- Add a read barrier for the locked objects during the thread dump in\n  case the thread is in the middle of flipping.\n\nBug: 30980189\nBug: 29517059\nBug: 12687968\nTest: test-art-host, Ritz EAAC, N9 libartd boot\nChange-Id: I3a903c47c0fcc746664ec376cc31dee8af3c3ecb\n"
    },
    {
      "commit": "ec70e9623e0063807d35357d25f8a6de92e85a62",
      "tree": "b59d429aaea8eb01458e5ffdebbabefd3b22dc62",
      "parents": [
        "bbcb1f7d7a52798d3b93ac7b50dba5e6083d5dc3",
        "bf042503dc2c2d328a6331baf33697a7d06acccf"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 22:18:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 19 22:18:36 2016 +0000"
      },
      "message": "Merge \"Revert \"Improve the thread flip.\"\"\nam: bf042503dc\n\nChange-Id: I12000152e9c2752b64d75297328f9521bb26b56a\n"
    },
    {
      "commit": "bf042503dc2c2d328a6331baf33697a7d06acccf",
      "tree": "160ccff4ec3a0c00c0b31fa382ae0ebfd9349b1b",
      "parents": [
        "7a687680e2127d351bbdb3b301ec5d27b68c7d14",
        "db3204f87c3f7c4de89762ce9e8502a9dc25c2d8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 19 22:12:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 19 22:12:40 2016 +0000"
      },
      "message": "Merge \"Revert \"Improve the thread flip.\"\""
    },
    {
      "commit": "db3204f87c3f7c4de89762ce9e8502a9dc25c2d8",
      "tree": "abb3aa17279c6a9edc9dd1c0691738a7f7c69a10",
      "parents": [
        "e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:56:11 2016 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 17:56:11 2016 +0000"
      },
      "message": "Revert \"Improve the thread flip.\"\n\nThis reverts commit e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69.\n\nThreadStress failing.\n\nBug: 29517059\nBug: 12687968\nChange-Id: I0ee8ef04f77c5f9378e4bd21c5dedb4e435a2dc6\n"
    },
    {
      "commit": "0fcddda9e6ff19212debe6aaa04a8f87b92fcd69",
      "tree": "d7600fd09e6f0814a72a3d798936b3a22515a533",
      "parents": [
        "9ffb2dbdc3b2df0e36921bd3506c67d189ea2720",
        "f606c3a687e3eae94296ba74d2d820b6e37692ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 19 01:36:35 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 19 01:36:35 2016 +0000"
      },
      "message": "Merge \"Improve the thread flip.\"\nam: f606c3a687\n\nChange-Id: I93770b75a2d9e3ae3f3d53f37985d031425efe98\n"
    },
    {
      "commit": "f606c3a687e3eae94296ba74d2d820b6e37692ff",
      "tree": "dabcc702018af666b912dee5057ee51ce9e9b13a",
      "parents": [
        "96954301ee5b6603a4423854d02d87b28b6f4721",
        "e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 19 01:29:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 19 01:29:51 2016 +0000"
      },
      "message": "Merge \"Improve the thread flip.\""
    },
    {
      "commit": "e61e6fdd404b8f04bd33fc3ea49e38e92e31ad69",
      "tree": "a7d97c2a67dc1f8337f002a6748f50c9d32e303e",
      "parents": [
        "d16ae7fe70d74091778e5952b7920df14866287f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 02 16:03:06 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 17 20:24:46 2016 -0700"
      },
      "message": "Improve the thread flip.\n\n- In addition to the threads that are suspended in FullSuspendCheck(),\n  prioritize the resume of threads that are blocking for the thread\n  flip at the JNI critical section entry and threads are about to\n  transition to runnable (eg. blocking at the SOA entry from JNI).\n- Shorten the length of the thread flip critical\n  section (ThreadFlipBegin/End).\n- Add some systrace scopes.\n\nBug: 29517059\nBug: 12687968\nTest: test-art-host, Ritz EAAC, N9 libartd boot.\nChange-Id: Idecec9936ae432c23d5f83321ba13339852018df\n"
    },
    {
      "commit": "db8309bf8ac4e9a5aa4d4cc9d0335779a0b9b27b",
      "tree": "a49bc42e25ff22059bb37702da5ee1046fb9d80e",
      "parents": [
        "5637c8569d9ed874475c2ec612d3a566ba1654f0",
        "c10ad423024432df36f6360eafca8332d07b946a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 06 02:59:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 06 02:59:06 2016 +0000"
      },
      "message": "Merge \"ART: Factor out native stack dumping\"\nam: c10ad42302\n\nChange-Id: I6d19b60d96f6a795f728f9ee2be20f8f459c4421\n"
    },
    {
      "commit": "5dd44d0da7999ab62f09a1bf03345280811736d4",
      "tree": "18dc0029caf5791b0bf831dcc6e38f623fe14eb4",
      "parents": [
        "20b975cc5c5a1f4e6f0a8e525b5d2e63abc413df"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 02 17:20:03 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 04 18:19:02 2016 -0700"
      },
      "message": "ART: Factor out native stack dumping\n\nMove DumpNativeStack and DumpKernelStack into a new file to keep\nconcerns separated. Clean up the file.\n\nIn preparation for modifications to how we use addr2line.\n\nBug: 30351473\nTest: m test-art-host\nTest: manual host testing with a test that times out\nChange-Id: I02d5645952fe94fd8e73bcf0522721547f6cef66\n"
    },
    {
      "commit": "79d44a96da0c741777b36be5c06eca5b8e357c3a",
      "tree": "35e9d4fa0cf1ab3131f425772105de4f6fe2a184",
      "parents": [
        "25c522cfeab396f760d44754034611029097c263",
        "94aaec95445ac06ed5ec065a7e21ddd752652cee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 06 12:20:11 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 06 12:20:11 2016 +0000"
      },
      "message": "Merge \\\"Expect spurious wake-up from futex(2)/FUTEX_WAIT call.\\\"\nam: 94aaec9544\n\nChange-Id: Ib4d8108456da7b765ad5a3a081d798f9917d7b73\n"
    },
    {
      "commit": "d778cd68c5d093c2fb95f91608deb36fea8e8bad",
      "tree": "1e064bbc8743fadda81f6bae332aac6104c36846",
      "parents": [
        "74c0d1bb67f9c6ee8306f0318ab7251d56dc99d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 05 17:29:55 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 05 17:55:07 2016 +0100"
      },
      "message": "Expect spurious wake-up from futex(2)/FUTEX_WAIT call.\n\nTest: Run standard ART test suite.\nBug: 27913630\nChange-Id: I742544f7a0a7f896e47293d209a874782577e971\n"
    },
    {
      "commit": "bf3cdef5800f02c64b692d671f526c1ed0c65280",
      "tree": "6f0ffc6e7f649afd33eeda984e1d752b8dd9d6cb",
      "parents": [
        "d14ac1d521d9c4dc0969e7056c22f241c419fc52",
        "bbcf0728f0ff051ff549df3c7153e179cb516593"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 21 11:26:00 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 21 11:26:00 2016 +0000"
      },
      "message": "Merge \\\"Release the thread_list lock while waiting for daemons.\\\"\nam: bbcf0728f0\n\nChange-Id: Icf9b891a9efe2c7108f8b2a37c44f58b039b57b8\n"
    }
  ],
  "next": "aa45daaddee752fcc7f1e5b0e207748bc6bed0a4"
}
