)]}'
{
  "log": [
    {
      "commit": "e4f983c808b0b7d2d9c39f34f67971bba1354b08",
      "tree": "80dd518ac4e7ea00670f2ebdb70efbe8b1f577cd",
      "parents": [
        "5f2f289b64f163e491b9b53364ce04874f82b4e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 12 15:53:27 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 13 12:14:13 2021 +0000"
      },
      "message": "Remove mterp.\n\nTest: test.py\nChange-Id: Id800bcf86965ab19cf1e79ecbfa8996a6a6c335e\n"
    },
    {
      "commit": "e300c4e4eabe3388b730efe35561e54f1c306710",
      "tree": "1866d5772e2c3643f30aa32b7bf0c02cec2e4c18",
      "parents": [
        "f761f5887918375b842e4cc62ed9cbe7521c8444"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 08 16:00:05 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 10 13:47:14 2021 +0000"
      },
      "message": "Faster Class::FindField().\n\nChange `Class::FindField()` to take dex cache and type index\narguments instead of strings and optimize it similarly to\n`Class::FindClassMethod()`, namely search by indexes when\npossible (except when searching interfaces where we only add\na TODO comment for now) and avoid `strlen()` calls for ASCII\nnames and type descriptors.\n\nUpdate `ClassLinker::FindResolvedFieldJLS()` to pass the new\narguments and replace all other `Class::FindField()` calls\nwith more direct calls as we know the classes where those\nfields are defined.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Iba798819043eb1b53b0dbc41ef8d7fd1c5d2164d\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": "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb",
      "tree": "99fd71a3ef398a471507ed815c4a175805ad51f3",
      "parents": [
        "0ccc970b3c00b172e3cff8e10da13dd6323ccd52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 16:16:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 14:34:43 2021 +0000"
      },
      "message": "Do not create HandleScope for JNI transitions.\n\nWe previously crated a HandleScope in the JNI transition\nframe to hold references passed as jobject (jclass, etc.)\nto the native function and these references were actually\nspilled twice during the transition.\n\nWe now construct the jobject as a pointer to the reference\nspilled in the reserved out vreg area in the caller\u0027s frame.\nAnd the jclass for static methods is just a pointer to the\nmethod\u0027s declaring class. This reduces the amount of work\nrequired in the JNI transition, both on entry (in compiled\nstubs) and exit (in JniMethodEnd*).\n\nSome additional work is required when GC visits references\nof a native method as we need to walk over the method\u0027s\nshorty which was unnecessary for a HandleScope.\n\nAlso fix Thread::InitStackHwm() to calculate correct stack\nsize needed by the new Thread::IsJniTransitionReference().\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\narm64 (medians from 3 runs) before after\ntimeGetBytesAscii EMPTY     447.33 436.86\ntimeGetBytesIso88591 EMPTY  440.52 431.13\ntimeGetBytesUtf8 EMPTY      432.31 409.82\narm (medians from 3 runs)   before after\ntimeGetBytesAscii EMPTY     500.53 490.87\ntimeGetBytesIso88591 EMPTY  496.45 495.30\ntimeGetBytesUtf8 EMPTY      488.84 472.68\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --gcstress\nTest: testrunner.py --host --jit-on-first-use\nTest: testrunner.py --host --jit-on-first-use --gcstress\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: boots.\nBug: 172332525\nChange-Id: I658f9d87071587b3e89f31c65feca976a11e9cc2\n"
    },
    {
      "commit": "1b3fb625b682bf2ee22563cb42e37411b64b050d",
      "tree": "d5d88a9420c1e9160e7d7bf2cdce8b0bc9a18d5c",
      "parents": [
        "5bcecf0a13c97d578321d1c7e067e28ad5e1322e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 10:54:38 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 09 14:16:36 2021 +0000"
      },
      "message": "Do not dump details of OOME for thread peer.\n\nTest: testrunner.py --target --optimizing -t 004-ThreadStress\nBug: 154100060\nChange-Id: I69582d7d1e4f5ced71ac32210ad7a0e4402da510\n"
    },
    {
      "commit": "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af",
      "tree": "c81fb19ae8c7a12ffb70ea6caa62bcc6c637a742",
      "parents": [
        "b6dda5a1fa90b08d3ebf83a5d1f882e5355bc68b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 04 21:20:30 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 06 15:59:32 2021 +0000"
      },
      "message": "libartpalette: Use fixed width typedef rather than enum for status\n\nAs the NDK guidelines note, the size of an enum is a compiler choice\nso an enum of unqualifed width cannot be considered stable ABI.\n\nBug: 122824298\nTest: TH\nChange-Id: I63d42fdb5a989aab15ec995529781b1b8c3ddb7a\n"
    },
    {
      "commit": "b5a10be6153d9bf09e4edf4a645da4085b4436bf",
      "tree": "ebf5a4b90f6c3ef45bc7342405f808a71be8a38e",
      "parents": [
        "bfd622abc23c77ffc8799f376df7241f15d6550a"
      ],
      "author": {
        "name": "Wessam Hassanein",
        "email": "wessam@google.com",
        "time": "Wed Nov 11 16:42:52 2020 -0800"
      },
      "committer": {
        "name": "Wessam Hassanein",
        "email": "wessam@google.com",
        "time": "Fri Feb 05 03:10:12 2021 +0000"
      },
      "message": "ART/Perfetto Java Heap Profiler\n\nAdding a Sampling Java Heap Profiler to ART and its interface to Perfetto.\nThis cl is the first cl (CL1) in a series of cls described as below to implement the full ART/Perfetto Java Heap Profiler.\nCL1: ART Java Heap Profiler. This is the main ART sampling profiler code. Tested using the ART testrunner as below as well as VLOG.\nCL2: Uncomment APEX code ART side. CL3: Add APEX code Perfetto side.\nCL2 and CL3 will be submitted simultaneously to avoid build failures and to add APEX dependencies.\nCL4: Uncomment Perfetto API code. To be reviewed by fmayer@ (Perfetto Team). Further Testing, could be full feature testing including Perfetto at this point.\nCL5: Further tests and/or optimizations can be added as needed.\n\nTest: Passing Tests\ntest/testrunner/testrunner.py --host --debug -b\ntest/testrunner/testrunner.py --host --debug -b --64 -t 004-ThreadStress\ntest/testrunner/testrunner.py --host --runtime-option\u003d-XX:PerfettoJavaHeapStackProf\u003dtrue --debug -b\ntest/testrunner/testrunner.py --host --runtime-option\u003d-XX:PerfettoJavaHeapStackProf\u003dtrue --debug -b --64 -t 004-ThreadStress\nIndividualized and VLOG testing.\n\nBug: 160214819\n\nChange-Id: I2be4c4e715ce8c3c8ac545e3e14332198b9c2295\n(cherry picked from commit 7b149d585b4627ebb389e987c14fe808f2fe698b)\nMerged-In: I2be4c4e715ce8c3c8ac545e3e14332198b9c2295\n"
    },
    {
      "commit": "2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea",
      "tree": "203b76db53f102d031e43ea0632194d4517d6bec",
      "parents": [
        "350c2ff41ff234c71b21f8e653e44be0e23504d9"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jan 14 19:54:23 2021 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jan 21 00:33:57 2021 +0000"
      },
      "message": "Disable the public SDK Checker during exception throwing\n\nThe compiler will try to throw exception when it cannot\nresolved methods/classes or when there\u0027s an incompatible class\nchange. While doing so, it requires the thrown exception class\nto be initialized.\n\nHowever, when verifying with a public SDK Checker installed,\nit\u0027s possible that the exception class may not initialized due\nto private member access (e.g. serialVersionUid).\n\nSince during verification the exceptions are simply mechanism\nfor the compiler to propagate the verification error it is OK\nto disable the SDK Checker and allow the class to be initialized.\n\nBug: 177017481\nTest: m test-art-host \u0026 manual\nChange-Id: I3765897bf9885b7e26b3ab044002df88866cd3cd\n"
    },
    {
      "commit": "17491ac89fffc79452c4a88b39a9b74f342508d3",
      "tree": "07f6feb62355a281591e62aad6480e68ee2eb326",
      "parents": [
        "45aa2affa521190d5b619b6a9e3b3d20b719c076"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 12:02:29 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 09:29:24 2020 +0000"
      },
      "message": "JNI: Faster jobject decoding by avoiding checks.\n\nAvoid costly runtime checks in Thread::DecodeJObject() and\nIndirectReferenceTable::Get() that it calls and replace them\nwith DCHECK()s and checks in CheckJNI. This improves the\nperformance of JNI interface in release mode for processes\nthat do not use CheckJNI (default for non-debuggable apps).\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\n(medians from 3 runs)       before after\ntimeGetBytesAscii EMPTY     477.70 408.18\ntimeGetBytesIso88591 EMPTY  473.00 412.15\ntimeGetBytesUtf8 EMPTY      468.96 402.78\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: blueline-userdebug boots.\nBug: 172332525\nChange-Id: Ibea788bb54879d1fca0608c30fde008063aaafcc\n"
    },
    {
      "commit": "f1e1dd135c086a15c0e683c5778add033f97e4d9",
      "tree": "3146a9f0c4dd769a741641f1da34dff7df649480",
      "parents": [
        "ca8343842f9094fd5eb86569d293250e783f582c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Aug 21 15:38:12 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 28 17:00:06 2020 +0000"
      },
      "message": "Enable -Wconversion for thread.cc\n\nThis should help prevent bugs due to unexpected implicit integer\nconversions.\n\nSome collateral changes were needed as well to limit the number of casts\nthat had to be introduced.\n\nBug: 165843530\nTest: m test-art-host-gtests\nChange-Id: I091122827001ab335c7e140864f67cdf90fcf8b4\n"
    },
    {
      "commit": "ca8343842f9094fd5eb86569d293250e783f582c",
      "tree": "c4e040eff9f8528626535106a88fe4e7bb317a00",
      "parents": [
        "49a19f38c35605e675eee271691ed465802859bf"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Aug 26 21:41:13 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Aug 28 15:47:40 2020 +0000"
      },
      "message": "Avoid NanoSleep overflow\n\nNanoSleep with a very large argument could cause it to fail on 32 bits.\nIt doesn\u0027t appear to me that this was ever exposed to client code.\nSo this was probably not an observable bug.\n\nRemove redundant uses of \"constexpr inline\" instead of adding another\none.\n\nBug: 161006928\nTest: Treehugger\nChange-Id: I2ad3b92d01c764915ab2aac17cc72ac5c6907ed4\n"
    },
    {
      "commit": "33701432b2abbc85db0eaf9e3016bc01da0a12a4",
      "tree": "92379598bc8049f8aa315e65e9635b5d1ca8a9d1",
      "parents": [
        "a553226c2f10dc5887769d7c98708b3593072ca5"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Aug 19 15:05:03 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Aug 20 04:34:31 2020 +0000"
      },
      "message": "Avoid tv_sec overflows in Park()\n\nBug: 161006928\nTest: Built and booted AOSP\nChange-Id: I567b87505eb3d85fa3ec9e8c45277238b213c2d5\n"
    },
    {
      "commit": "5439f051a950f0281eeafb8e8064839f2aea6e38",
      "tree": "889efef779fa462357f77cb2166c600cb0d60679",
      "parents": [
        "483bf78ae61ab43a3d513cef0de0072e86d0b0b1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 10:03:46 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 13:58:15 2020 +0000"
      },
      "message": "Revert^3 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit e886d68b9c40c941d8966b9c90d0e265c75fb19e.\n\nReason for revert: simulator implemention is not ready yet.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nTest: art/test.py --run-test --optimizing --host\nChange-Id: I03c8c09ea348205b0238d7a26caef3477cd6ae3b\n"
    },
    {
      "commit": "72e27b0b29fd1bdea6747f62c5bd865d26a0bdcd",
      "tree": "970bdf71ef5272a231df09a0818a08d81920e5c2",
      "parents": [
        "a462fa67f88a2b893e1543a763821d483247011d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 27 12:59:58 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 28 16:13:40 2020 +0000"
      },
      "message": "Remove deprecated debug_suspend_count TLS value\n\nThe debug_suspend_count TLS value has been dead for a while and was\naccidentally left in. Remove it entirely.\n\nTest: ./test.py --host\nChange-Id: Ie2ead0d30e5ff3885cdd83242cad2c826c7fb732\n"
    },
    {
      "commit": "a462fa67f88a2b893e1543a763821d483247011d",
      "tree": "516ef2225beacf37ac856cfe5f33fdab435cf7b6",
      "parents": [
        "b9e34802274e445b8040b93f122e508c9e4a181c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 27 12:58:33 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 28 16:13:40 2020 +0000"
      },
      "message": "Replace debug_suspend_count with user_code_suspend_count in log\n\nThe debug_suspend_count is not used anymore. Remove logging it from\nsuspend_log and instead put the user_code_suspend_count that is more\ngenerally relevant.\n\nTest: ./test.py --host\nChange-Id: I30d2c51d80ebaf83d12375c26ea37938ff9046f4\n"
    },
    {
      "commit": "346fd964a826cfb5626582452b7519c04aee2f8a",
      "tree": "49fb6cf2ab865391ba4027389b0049474df38c7b",
      "parents": [
        "d3ee902ed06b635eedebc796543a67299eb6cd05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 27 16:51:00 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 28 11:13:37 2020 +0000"
      },
      "message": "More inclusive language in the runtime\n\nTest: m\nBug: 161896447\nBug: 161850439\nBug: 161336379\nChange-Id: Iabc29fa43b4b5a403699d6bca95e9a2cb8945d77\n"
    },
    {
      "commit": "e886d68b9c40c941d8966b9c90d0e265c75fb19e",
      "tree": "ad78c4e375c95a96e200baa2786e748505ab928b",
      "parents": [
        "f12dd5861e0eaf1822c12137fd353b5e79761a6c"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 15:09:38 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 17 11:04:27 2020 +0000"
      },
      "message": "Revert^2 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 3060bb919cd2f37c6a97e87c1581ac5294af72b3.\n\nReason for revert: relanding original change. The fix is setting\n`device_supported: false` for libart(d)-simulator module in the .bp\nfile (`m checkbuild` attempted to build it for arm32 and failed).\nOriginal commit message:\n\nVIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas caused the following increase of the APEX size (small, about 0.13%\nfor release APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nChange-Id: I461c80aa9c4ce0673eef1c0254d2c539f2b6a8d5\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n"
    },
    {
      "commit": "3060bb919cd2f37c6a97e87c1581ac5294af72b3",
      "tree": "6a2b517812ff83cd10cc3b055635d0746157b345",
      "parents": [
        "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "message": "Revert \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96.\n\nReason for revert: broken build 6685551 on aosp-master on full-eng\nBug: 161440641\n\nChange-Id: I849fe53f56c4786f0f2a1605cbfd215559f11072\n"
    },
    {
      "commit": "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96",
      "tree": "87ff5251f8f843e64e3f3632c423856ba14ceadf",
      "parents": [
        "cfea667ed9bfbdd21bf9812d1598603fc359d2e1"
      ],
      "author": {
        "name": "Xueliang Zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Mar 07 14:48:55 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 13:31:48 2020 +0000"
      },
      "message": "VIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas cause the following increase of the APEX size (small, about 0.13% for\nrelease APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n\nChange-Id: I078812dde9aaf7128d9f262b2102251927596b7f\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "a977689a7a8d49a66fa1e2d9de80344dc8b7588a",
      "tree": "83d19609af06b18e14068ec301de608ec46b0133",
      "parents": [
        "94a810be73cea8f7c34df572fbdf5d2fbb2d6f87"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu May 07 19:51:03 2020 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri May 08 22:48:26 2020 +0000"
      },
      "message": "Remove extra logging added to debug\n\nBug: 140119552\nTest: art/test/testrunner/testrunner.py\nChange-Id: I3b5f6b8208b17d4ebcab3b5f9fd7949103e06e45\n"
    },
    {
      "commit": "d34b73b4ac478462acc03c4cd42ae7568c832eb8",
      "tree": "27f1c4599178ba57451c29d0156c232768711b6d",
      "parents": [
        "4a48775376a4c0b180a7d32ad2cdf00bd0dca140"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 10:07:59 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 13:34:31 2020 +0000"
      },
      "message": "Clean up internal stack trace construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ia91d3274398b0ca0f5b0040dcf323921d915b657\n"
    },
    {
      "commit": "7e678d3c0f564e44638e27c411b2cc0ef8ee145a",
      "tree": "82789a1653ecfaabea517a56c2cba4fd59ca9203",
      "parents": [
        "bb3560d58538d7172b058853d471a876ddd86467"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Apr 28 16:17:49 2020 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Apr 30 20:22:39 2020 +0000"
      },
      "message": "Assert allocator-type is known on OOME\n\nWe should always be using a known allocator-type. So instead of being\nconditional about this, assert it.\n\nThis change also simplifies updation of alloc entrypoints for CC\ncollector. Earlier we used to choose TLAB allocator on x86_64 targets\nto avoid a read-barrier in allocation path. Now that it\u0027s not there, we\ncan simplify to always use RegionTLAB allocator for CC.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 154100060\nChange-Id: Ic692794c3dab80a67c2c4b3274adf00f879ad21b\n"
    },
    {
      "commit": "fa458ac21af98b3bdde2c62ed86b9c192b994372",
      "tree": "5fa7543c9fd5edd0e950b19a70412002e10bba47",
      "parents": [
        "99d91d18f9f73427eced2f22642520d50c3c3b83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 14:08:07 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 19 16:08:34 2020 +0000"
      },
      "message": "Allow late lookup for @CriticalNative methods.\n\nTest: Add and enable tests in 178-app-image-native-method\nTest: Add and enable tests in jni_compiler_test\nTest: Manually step through the new stub in GDB and check\n      that backtrace works at various points.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 112189621\nChange-Id: If094e5062acbb99eefa88f2afb4815f93730cb82\n"
    },
    {
      "commit": "e91e795a77b96d58276f75b1b244a5509ef8c215",
      "tree": "d34f8164bb7adb8ed46e3c989877012555e194c3",
      "parents": [
        "aa6f6f1c86705fe3cedf929bd30d1e6f51524594"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 23 10:15:56 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 31 08:20:57 2020 +0000"
      },
      "message": "Replace instrumention id with stack pointers.\n\nReplace instrumentation ids for instrumentation frames, which are\ninherently broken (see b/72608560), and use stack addresses instead\nto properly identify which frames to pop / unwind.\n\nBug: 72608560\nBug: 148166031\n\nTest: ./art/test/testrunner/testrunner.py --trace --debuggable --ndebuggable --optimizing --interpreter --jit --debug --ndebug -j32\nTest: run-libjdwp-tests.sh\nTest: 2011-stack-walk-concurrent-instrument\nTest: ./art/test/run-test --host --dev --runtime-option -verbose:deopt,plugin --prebuild --compact-dex-level fast --jit --no-relocate --create-runner --runtime-option -Xcheck:jni 1965-get-set-local-primitive-no-tables\n      art/tools/parallel_run.py -j80 /tmp/path/to/runit.sh --out failure.txt\n\nChange-Id: I71f6e55b9da608796cd3142b147f7b50bbd292ec\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": "469016b2ba86f46fd0d3b4a9b7d42591dbc1d91f",
      "tree": "4561f438aa6f3ef8f8443386a6ed8e9306b23963",
      "parents": [
        "b78f919c658563a613bf0e2204bade5ad5058330"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 22 17:50:41 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 23 16:31:31 2020 +0000"
      },
      "message": "Don\u0027t pattern-init an unused variable that overallocates the stack\n\nART is intentionally walking to the stack top (lowest address), but the\npattern initialization is accidentally triggering a sanitizer failure\nfor an overflow. Removing the pattern initialization from that unused\n(and uninitialized) variable restores the original functionality of\naccessing every page of the available stack.\n\nFixes: 148125929\nBug: 131390872\n\nTest: m checkbuild ASAN_OPTIONS\u003ddetect_leaks\u003d0 SANITIZE_HOST\u003daddress\nChange-Id: I2b1e8bdc44044e8165a14a8e7b36dd8616d4a5b3\n"
    },
    {
      "commit": "e0c6d439271c94feb3fb38728d1b4743a7ed0b9e",
      "tree": "c7f9176cacb9e362d0dd3bbeabeca8b42e42d184",
      "parents": [
        "721e40283793649b4750c05da4fe972bd372f7f9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 22 22:04:20 2020 +0000"
      },
      "message": "Revert \"Fix stack-walking race\"\n\nThis reverts commit 721e40283793649b4750c05da4fe972bd372f7f9.\n\nReason for revert: Wanted more discussion.\n\nTest: none\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nChange-Id: Id0fb201018a0d0bdca11d51ec156a41d6d7fe4ae\n"
    },
    {
      "commit": "721e40283793649b4750c05da4fe972bd372f7f9",
      "tree": "9af2c2c583900e9a35c6adf7fef277d0221c0571",
      "parents": [
        "df7e5b836e78ab38101dde45399c8de51df4042e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 14 14:45:40 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 21:56:30 2020 +0000"
      },
      "message": "Fix stack-walking race\n\nDuring stack walking it was possible for a walking thread to race with\nthe InstrumentationInstallStack. In this case the stack changes made\nby InstrumentationInstallStack could cause the other thread to\nincorrectly parse the stack data-structures, leading to\nfailures/crashes.\n\nTo fix this we increment an ID whenever instrumentation changes the\ninstrumentation stack. Other stack-walkers then check this id and\nrestart whenever it changes. Note that although the stack-walk\nrestarts we keep track of how many java frames we\u0027ve visited already\nand refrain from calling VisitFrame until we are at the same position\nagain. This means that as far as the Visitor writers are concerned the\nstack-walk is only done once, just like always.\n\nAdded a test (2011) that forces the race to occur.\n\nAlso Disabled Dex2oatSwapUseTest#CheckSwapUsage. It seems that the\nincrease in Thread* size has caused it to fail. Disable while we\ninvestigate. See b/29259363\n\nBug: 72608560\nBug: 29259363\nBug: 148166031\nTest: ./test.py --host\nTest: ./test/run-test --host --dev --runtime-option -verbose:deopt,plugin --prebuild --compact-dex-level fast --jit --no-relocate --create-runner --runtime-option -Xcheck:jni 1965-get-set-local-primitive-no-tables\n      parallel_run.py\nChange-Id: I77349dfc6fa860b7f007dee485e9fea1d8658090\n"
    },
    {
      "commit": "c4bf6679e14a54fde5bc7a994f0f1d4e4564fa23",
      "tree": "84b91c9be72c197d1692d5daa091cd8842833fe6",
      "parents": [
        "4681f2034034435d47eb0b5ef03bde69a1e4dde6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 13 13:07:16 2020 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 13 13:14:00 2020 -0800"
      },
      "message": "Use ResetTlab instead of setting to null\n\nAdded a function ResetTlab to reset the TLAB to empty. This is\nin case the empty TLAB doesn\u0027t have null values.\n\nBug: 139805154\nTest: make\nChange-Id: Ife2225fc534999e53f2ecad41fc29e46c90a8817\n"
    },
    {
      "commit": "013d1ee96b928f3bda9031e94d4a69f827133ce6",
      "tree": "4e374c043330f123dc3888922b554fd1291349b4",
      "parents": [
        "9ca8b2bf46978e3a5698f8a27b48aa7eff3514df"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 16:18:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 09:43:08 2019 +0000"
      },
      "message": "Introduce the notion of an nterp frame.\n\nSee comments in nterp_helpers.cc. An nterp frame follows the\ncalling conventions and exception handling of the compiler. There are\nno ManagedStack transitions, and the compiler and interpreter can\njust call each other directly.\n\nFor the stack walker, an nterp frame looks like a compiled frame.\n\nThis CL introduces an nterp frame, another CL will contain an\nimplementation for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie9b691f58908b7f283b4cd63b84b651526155d27\n"
    },
    {
      "commit": "4847a071380288033e128986947d445e97827e5e",
      "tree": "6dd09fa436f1be772713f39926701ad266c337e3",
      "parents": [
        "92e99406d1704a14a1969e2909986f590e980010"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 12 16:13:47 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 13 23:15:02 2019 +0000"
      },
      "message": "Fix issue with observing invalid thread state.\n\nThreads have two references to their java.lang.Thread peers,\n\u0027tlsPtr_.opeer\u0027 and \u0027tlsPtr_.jpeer\u0027. The opeer is a direct\nmirror::Object* which is used while the thread is running. The jpeer\nis a global jobject used during early thread startup. As part of\nthread startup the new thread will delete and clear the \u0027jpeer\u0027 and\nonly use \u0027opeer\u0027 from then on. A minor (DCHECK\u0027d) consistency\nguarantee is that only one of these fields can be observed to be set\nat a time. Using JNI function table replacement it is possible to\nexecute JNI functions just before the DeleteGlobalRef of the jpeer. If\none calls other thread functions (such as through GetThreadInfo) these\nfunctions may DCHECK that jpeer is cleared. This would fail since\njpeer wasn\u0027t cleared until after the DeleteGlobalRef returns.\n\nThis fixes the bug by clearing the \u0027jpeer\u0027 field before calling\nDeleteGlobalRef.\n\nTest: ./test.py --host\nBug: 146170834\nChange-Id: I7e7941912a69fad9e75bbb55643eee0fa5d8a47d\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": "9317031cd016e02a26cdeea8045df9925b33ffe2",
      "tree": "b1278f6d99c2e4c1375c1d9031d552c9875a4e3c",
      "parents": [
        "a0b4631f73547b44bff5c0c01b605d867cd083cc"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Dec 04 13:46:11 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 05 01:53:26 2019 +0000"
      },
      "message": "Move thread-local mark-stack revocation outside SOA\n\nRevoking mark-stack inside a ScopedObjectAccess scope could potentially\ncall checkpoints in its destructor, which may trigger read-barrier,\nafter the mark-stack is revoked.\n\nTest: art/test/testrunner/testrunner.py --target\nBug: 140119552\nChange-Id: I90d62cbf5edbaf953de73aeb2b3b59612b6897d3\n"
    },
    {
      "commit": "a0b4631f73547b44bff5c0c01b605d867cd083cc",
      "tree": "c3463a2d168385e9441801002e96d43dd42f30c3",
      "parents": [
        "13e951d2bf4f989b0c561b96eed967e8f84d64ea"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Dec 04 22:06:48 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 05 00:50:37 2019 +0000"
      },
      "message": "Revert submission\n\nReason for revert: b/140119552 has been fixed. The change no longer needed.\n\nChange-Id: I66c4744d8d72992bf01042a5043bd3dcfbbbe005\n"
    },
    {
      "commit": "a00b54b74bee06c006b8bebfbef85e2801de293c",
      "tree": "6edb2a96c1f89ae913e6b5f190b117cb290239e8",
      "parents": [
        "e571a283b73fb4621c401811f523503b3266564b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:36:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 12:04:36 2019 +0000"
      },
      "message": "Helpers and refactorings to prepare for interpreter optimizations (x64)\n\n- Add data structure offsets that will be used in assembly code.\n- Be explicit about a stack overflow in a fault handler.\n- Move assembly helper code in asm_support so interpreter can use it.\n- Support putting literals in InterpreterCache.\n- Fix artHandleFillArrayDataFromCode for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21\n"
    },
    {
      "commit": "c6ca1170904c9f5bbdf0ee5b12d6d4cb093739fc",
      "tree": "b87de8f1391ed8ff0763f9d02f110edd032d7a91",
      "parents": [
        "be52a17c0f6af1c7563d8b9736ac4ace9b7ae0f0"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Nov 27 15:47:02 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 18:22:10 2019 +0000"
      },
      "message": "Assert mutator doesn\u0027t get mark-stack assigned once destroyed\n\nWrite a non-null value to thread-local mark-stack pointer when\na mutator revokes the previously assigned thread-local mark-stack\nso that we can catch the mutator if it ever invokes the read-barrier\nor executes the flip function, both of which may assign mark-stack\nto the mutator.\n\nTest: art/test/testrunner/testrunner.py\nBug:140119552\nChange-Id: I82f43c8a3aab6dacb0f6bd35471fc2cdd969b154\n"
    },
    {
      "commit": "047081a1509762879a9eb51981982af65f419bac",
      "tree": "d4a4460d88c4ccda074017f25f7869b7a1bc780c",
      "parents": [
        "f585c1e4f8b011b7399668800da53ec726fbeb40"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Nov 27 02:51:25 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 27 04:23:51 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Revoke CC\u0027s thread-local mark stack in ~Thread\"\"\n\nThis reverts commit add69acb7db965bd8d817a185e962e5474f690d1.\n\nBug: 140119552\nReason for revert: Causes b/144408451\n\nChange-Id: Ifaa78a3a13cbcc0524fa0fb8e25d377b6fd6ed2b\n"
    },
    {
      "commit": "add69acb7db965bd8d817a185e962e5474f690d1",
      "tree": "ed5f5c469eeeaedf9fc7c102b728046eaf28bbe0",
      "parents": [
        "dd49278c4a8c476f6af832ac0f9fe71752a742d6"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Nov 06 18:21:43 2019 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Nov 06 14:41:20 2019 -0800"
      },
      "message": "Revert^2 \"Revoke CC\u0027s thread-local mark stack in ~Thread\"\n\nThis reverts commit 93e5ae90697d879a82103b492c6853cda11d0925.\n\nMove revoking thread-local mark stack from Thread::Destroy() to\nThread::~Thread. We also don\u0027t need to perform this revocation with\nScopedObjectAccess.\nAlso, updated the assertion in RevokeThreadLocalMarkStack for cases\nwhere an exiting thread during marking phase of the 2-phase full-heap GC\ninvokes it.\n\nReason for revert: Removed assertion that will no longer be true with\nthis change.\n\nBug: 140119552\nTest: art/testrunner/testrunner.py\nChange-Id: Ic827fcc9729e19c0a9af772287ea3e96dbdd5ff9\n"
    },
    {
      "commit": "93e5ae90697d879a82103b492c6853cda11d0925",
      "tree": "bf4b87ff633803e09dad62adae5e3193a880c89a",
      "parents": [
        "c7c711bb7303586e66c8c0ce18a4cc8f9d5d904c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 06 09:16:44 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 06 09:17:01 2019 +0000"
      },
      "message": "Revert \"Revoke thread-local mark stack for CC in ~Thread\"\n\nThis reverts commit 129d61b4c45ee2cf14a9ea964ec97bca1441b621.\n\nBug: 140119552\nReason for revert: Test failures\n\nChange-Id: If31d47973c442bed57415cc55341602274e5851b\n"
    },
    {
      "commit": "129d61b4c45ee2cf14a9ea964ec97bca1441b621",
      "tree": "b914dcccd298e118964392080fcd0455b7f752ac",
      "parents": [
        "0d7232c1b332377b251d1d3c05f7d843fe201571"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Nov 04 12:22:47 2019 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Nov 06 01:35:40 2019 +0000"
      },
      "message": "Revoke thread-local mark stack for CC in ~Thread\n\nMove revoking thread-local mark stack from Thread::Destroy() to\nThread::~Thread. We also don\u0027t need to perform this revocation with\nScopedObjectAccess.\nAlso, updated the assertion in RevokeThreadLocalMarkStack for cases\nwhere an exiting thread during marking phase of the 2-phase full-heap GC\ninvokes it.\n\nBug: 140119552\nTest: art/testrunner/testrunner.py\nChange-Id: I64c6cc52ca802bd3ddfb210ac9254f37f059ea03\n"
    },
    {
      "commit": "faeaeaf068e5ac1a9944a93001a2df61a6fbd8ab",
      "tree": "2b3508ddf34ec45aff27f9ab8e32ec66bda67d09",
      "parents": [
        "409736f166dbdde2e4fed3631d73bf55eb543737"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Oct 22 17:25:00 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Oct 23 18:24:18 2019 +0000"
      },
      "message": "Print mark stack address in ~Thread()\n\nPrint thread-local mark stack\u0027s address in the assertion that it\nshouldn\u0027t exist in Thread destructor. This is to confirm if there is\nmemory corruption causing the bug.\n\nBug: 140119552\nTest: art/test/testrunner/testrunner.py\nChange-Id: Iad6998a64f240a8e621e5d3e46baad7b56833f19\n"
    },
    {
      "commit": "289e7124653b58a42a9cb431117362890f584945",
      "tree": "de68a507103f87c7e23335c22e3be89f11b370ce",
      "parents": [
        "ad390fab9e0a724790337674692b4ef15cb4ccb2"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Oct 17 12:57:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 19 01:09:48 2019 +0000"
      },
      "message": "pooled_mark_stacks: Add extra logging\n\nMaintain a map of thread and its associated mark stack. Everytime when\nthe pooled_mark_stacks_ is of same size as kMarkStackPoolSize, this map\nshould be empty. Also, there should not be any entry in the map for a\ndestroying thread.\n\nThis change is to be reverted once the bug is fixed.\n\nBug: 140119552\nTest: art/test/testrunner/testrunner.py\nChange-Id: I415ccd210985878dd6689ee2ef1e35712d464150\n"
    },
    {
      "commit": "44465f79ebe37fc4dc7daf18af5cfa7ab9eb49d4",
      "tree": "6e817702fc1f9521592f6cf627da5dba567df984",
      "parents": [
        "2bd8bfd716d4b07d7df017596af7b8394006cf38"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Oct 17 11:40:24 2019 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Oct 17 21:10:58 2019 +0000"
      },
      "message": "Add checks for pooled_mark_stacks in CC GC\n\nAdding some CHECK regarding thread-local mark stacks.\n\nBug: 140119552\nTest: art/test/testrunner/testrunner.py\nChange-Id: I0b10851ff4cf94791da08363546647c2294524e5\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": "0054aa59c50374751cc65e8de31a1d813912e67d",
      "tree": "e09f2fdc04fdfda86b2c7ecb3b980a3687323597",
      "parents": [
        "4945b29e6ea494fffc924f5940601af58d2b28ab"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 10 16:46:48 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 11 17:17:22 2019 +0000"
      },
      "message": "Have JavaFrameRootInfo give more info about provenance of root.\n\nIt can be useful to differentiate between java frame roots being the\nmethods declaring class, from a proxy method, being unknown due to\nan imprecise walk or being indeterminable. This passes that\ninformation with the Vreg.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I74842d3eeedee5c836511e046652502a53de0f7e\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": "fa595885339140c3507f26d93cdc6b99081e23c5",
      "tree": "19d6240afee048aa37a778f09996c6ecad5266a6",
      "parents": [
        "918e9af6a7259e7178ec10257f568a60e832a962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 06 17:40:09 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 09 07:36:39 2019 +0000"
      },
      "message": "Fix setting/getting the native priority of a thread.\n\nBug: 138415922\nTest: 720-thread-priority\nChange-Id: I6e1f34fce3838b7904281be00f315e5b7ade0c78\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": "1cbac5c38ca1cb9bbdf3bc1489701a9c841764fe",
      "tree": "0d98c44d61c3c47e54f906e70ded54c1aa9e8f09",
      "parents": [
        "af8647023ea8e90fd37814f2da7aa3a901de8484"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 18 20:05:32 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 24 13:13:48 2019 +0000"
      },
      "message": "Try to avoid expensive stack walk in QuickDeliverException\n\nStack popping is a debug feature. We can skip the\nstack walk if no stack pops have been requested.\nThis makes PMD benchmark about 10% faster.\n\nBug: 136438735\nTest: test.py -b --host --64 --interpreter\nTest: run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I09b9a444c110434d9bb7253776128bd3fe9c28ab\n"
    },
    {
      "commit": "2808be84a8f86542450670acdb5e6b55498ff5f0",
      "tree": "f41b63e3109a6a6a9bd534f32b8d92f20eb9ef35",
      "parents": [
        "460f05480379d5c75555d06c4938bc990ce6ff83"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Dec 20 19:15:11 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 15 09:30:36 2019 +0000"
      },
      "message": "ART: Introduce stackmap with no DexRegInfo.\n\nSome of safepoints don\u0027t need to have DexRegisterMap info;\nthis will decrease the stackmap size.\n\n.oat file size reduction:\n - boot.oat:           -233 kb (-5.4%)\n - boot-framework.oat: -704 kb (-4.9%)\n\nTest: 461-get-reference-vreg, 466-get-live-vreg.\nTest: 543-env-long-ref, 616-cha*.\nTest: test-art-target, +gc-stress.\n\nChange-Id: Idbad355770e30a30dcf14127642e03ee666878b8\n"
    },
    {
      "commit": "4d71e55eb7616b2f2dc6f39377be72fdfbf01b2a",
      "tree": "26ca50a97736ef59b2ad3a867c0ae377209f092c",
      "parents": [
        "e2d24beb1a9d9b718b0443b1eec63090c6fc19a4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 01 16:06:14 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 02 11:19:22 2019 +0000"
      },
      "message": "Remove ShadowFrame::HasReferenceArray()\n\nIt is always true.\n\nChange-Id: I96ddeeb87b8166d0fc08edafd1800b539eec3a7d\n"
    },
    {
      "commit": "0d4567f26701abae84b02389c379843c1dc851a8",
      "tree": "f665e6d5db5af79a4afa3b97cd7cdb7a2069da3f",
      "parents": [
        "cc08c50948d8b2a93b53a327717c7b2a146ac754"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 22:45:40 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 30 18:04:44 2019 +0000"
      },
      "message": "Stack maps: Refactor constructors.\n\nCreate dedicated static methods instead of passing flags.\nThis creates dedicated methods for the purpose and merges\nconstructor and decoding into single optimized method.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\n\nTest: ./art/test.py -b --host\nChange-Id: Ic7d43e22bca0be9fb13bc2c7544ebfdf46798cfe\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "01fbfbebceb00b94cc54738ebf425b6c4a79211a",
      "tree": "9061436a555042c12ea6d4fe4cd35df971e0ce37",
      "parents": [
        "88f3fd910cb0fbc1c2233fc65d2a30542cc62921"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 10:47:04 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Avoid useless EncodeArtMethod followed by DecodeArtMethod\n\nIn a handful of places we would perform an EncodeArtMethod to call a\nreflection invoke function which would immediately Decode the method.\nThis could cause issues when using opaque-jni-ids:true since the\nEncode can cause an OOM exception.\n\nTo avoid this (and because Encode and Decode are perfect inverses) we\nchanged the Invoke* reflection functions to also accept ArtMethod*s\ndirectly and changed callers to use these functions when appropriate.\n\nTest: (with child CL) ./test.py --host --jit --debuggable\nBug: 134162467\nChange-Id: Id2f5b0f49a99405e238ce5b61a22ef9245e523a5\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "7d42cdd5052d3d7dec62df03c3512e9e12d4035d",
      "tree": "ce4aea642eba51c7beaa8f2660a69024578a15ce",
      "parents": [
        "ba26b51e2e74bf8c4f87e99dc60f1cbca033ecac"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 31 16:54:46 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 03 13:27:02 2019 -0700"
      },
      "message": "ART: Allow thread suspend lock to be held when dumping a thread\n\nOnly dumping a thread\u0027s suspend state requires holding the lock.\nSpecialize the code to recognize if the lock is already held,\nand remove the negative capability from the callers.\n\nBug: 134037466\nBug: 134167395\nTest: m\nTest: m test-art-host-gtest-runtime_test\nChange-Id: Ib55eafba72c5d15de01719840ba3f223ae4af8c7\n"
    },
    {
      "commit": "cc3a12158e81cb1fa38bac0e4c1e8c8b4d0c244a",
      "tree": "c45c45b3c102a4e4bf33911e4f19b605c0546b36",
      "parents": [
        "e42a4b95eed312e6f7019645f4c66b2d77254433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 28 11:09:58 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 28 11:09:58 2019 -0700"
      },
      "message": "ART: Fix exception stash in stack dump\n\nIt is the executing thread that needs its exception stashed. This\nmay be different from the dumped thread, which, in case it is not\nthe same thread, the verifier does not care about.\n\nUse RAII for stashing. Make the code simpler by removing the flag\nand instead use a non-null exception object as flag.\n\nBug: 133764636\nTest: m test-art-host\nChange-Id: I2b6a44f41880c96a0cf9bb343db22963dca0a758\n"
    },
    {
      "commit": "43e72433fd2115b4213b5db06568ebd1c550e7d1",
      "tree": "32b71a387354aaa09cbc07a146fc6f16a0eb6882",
      "parents": [
        "391be3ab96ebe8d9cc00849a3bb8058708416000"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 14 16:15:24 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 16 01:00:21 2019 +0000"
      },
      "message": "ART: Remove file_utils\u0027 ReadFileToString\n\nReplace with libbase.\n\nTest: mmma art\nChange-Id: Id042f4879485e743e3dc7548434be1634370ee66\n"
    },
    {
      "commit": "19711d479cd4bc4c2d02edf37526cd4e2a6235f7",
      "tree": "53851b37097ffe2b11e42fd271eb27869956f2c0",
      "parents": [
        "8311489bcaa94a4527d8e010df6a78d457273b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:05:34 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify instrumentation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I95d9e1c9c9a0c9e460048c686c229618126b66d5\n"
    },
    {
      "commit": "81dc7ab1df59021463757e06a95b2abc937a73db",
      "tree": "3ae773ed2d58546cfd0bfd8c07f659985d75bdd6",
      "parents": [
        "fe9181db92a778c4ef3c4d25e0302553bf970e26"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 19 17:34:31 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 25 16:06:24 2019 +0000"
      },
      "message": "Speed up and slightly simplify Mutex\n\nEliminate the separate seqentially consistent contention counter load\nin Mutex::ExclusiveUnlock by putting the contenion counter in the\nMutex\u0027s state word.\n\nReplace some CHECK_GE checks with CHECK_GT. We were checking quantities\nintended to be non-negative against \u003e\u003d 0 just before decrementing them.\n\nRemove a pointless volatile declaration.\n\nIntroduce constants for the first FUTEX_WAKE argument. Remove all uses\nof -1 as that argument, everywhere in ART. It appears to work, but the\ndocumentation says it\u0027s wrong.\n\nThis does not yet address the ReaderWriterMutex issue, which is handled\nin a different way in a separate CL.\n\nBenchmark runs with and without this CL weakly suggest a tiny, not\nstatistically significant, improvement in both time and space with this\nCL.\n\nBug: 111835365\nTest: Build and boot AOSP. TreeHugger.\nChange-Id: Ie53c65f2ce774a8cb4d224e2c1b3a110eb880f0c\n"
    },
    {
      "commit": "f52d92fce224c86491d9b0fd6fca805564119426",
      "tree": "fbf38f272a980e965627918d9dc6bbb536395c00",
      "parents": [
        "e660f7232a19a2c173f562b8e0987755a78ee298"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 12:33:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify Monitor/-Pool.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I2d2ebc5ef56e73e5678e0cfcd84c479611dfcca8\n"
    },
    {
      "commit": "39402548017c99f9b33afaa851f412371013e911",
      "tree": "80c4d53cb7ae12ab9f4800cb358e53d5109593da",
      "parents": [
        "2fde9bdc252e209d722f83410f2ced42ab73e8a4"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sun Mar 24 02:47:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 18:18:00 2019 +0000"
      },
      "message": "Modernise code to use override specifier\n\nGenerated by clang-tidy, with IgnoreDestructors option enabled.\n\nTest: m checkbuild\nBug: 116509795\nChange-Id: I5dafa10c2cf605165581b8cf7dd2633ed101ed65\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d",
      "tree": "b967f1a2f8768f9bf70dfd238e895b28a1bc4aad",
      "parents": [
        "6e7a72c5baa322f57fe6a52303dac45fba8edd25"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 18 16:54:25 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 18 16:54:25 2019 -0700"
      },
      "message": "ART: Use kNormThreadPriority for UnstartedRuntime\n\nNormalize the compiler thread\u0027s perceived priority to make the\nresult independent of the compilation environment.\n\nBug: 128865240\nTest: m\nChange-Id: I5f8bc144d05453c5df603fef221ce22d66eff546\n"
    },
    {
      "commit": "3dacdd6343ea9a6471692914c7a9dff66d6453c7",
      "tree": "5e0a3b8f99e914a7fbd49822e5c8fb1bd4709f5c",
      "parents": [
        "939798e6a565a92e597136c589428e89c28bffd5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:45:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 09:52:59 2019 -0700"
      },
      "message": "Revert^4 \"Remove Global deopt requirement for several jvmti events\"\n\nIt was possible for the top frame of a thread to enter the\nartQuickToInterpreterBridge during runtime shutdown. This could be\ncaused by the libjdwp agent. If this happens the caller of the frame\nwill be \u0027null\u0027, which could cause a segv if not detected correctly.\n\nThis reverts commit 939798e6a565a92e597136c589428e89c28bffd5.\n\nReason for revert: Fixed issue that could cause crash during process\n                   shutdown.\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\n\nChange-Id: I2aad1705c761edb4ed788cec4fc8a3068d67aee5\n"
    },
    {
      "commit": "939798e6a565a92e597136c589428e89c28bffd5",
      "tree": "3274ff355163df18cd2d7343ce0d34214f9d09c9",
      "parents": [
        "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:42 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Remove Global deopt requirement for several jvmti events\"\"\n\nThis reverts commit a75e5892fba6d0208f33e9ab8e19e732daf94996.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: Ic883f4f0108b07f1609c6c6a9565eae5903bfd2c\n"
    },
    {
      "commit": "a75e5892fba6d0208f33e9ab8e19e732daf94996",
      "tree": "3daff8c3ce1608bacba7358711ccf9bd61c0bb05",
      "parents": [
        "dd83a40a3c4fea0d917577de96742900a61ab548"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:49:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 11 21:59:44 2019 +0000"
      },
      "message": "Revert^2 \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0.\n\nJit-on-first-use would cause the runtime to skip sending FramePop\nevents for exceptions in some circumstances due to longjmp-ing over\nthe frames. This requires forcing jit off from the first instant a\nthread can get frame popped events, which is unfortunate.\n\nReason for revert: Fixed issue causing 1925 to fail on\n                   jit-on-first-use and redefine-stress\nTest: ./test.py --host\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use\n\nChange-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc\n"
    },
    {
      "commit": "ad344b6a14feba90a06a205760e9bc766c56cab0",
      "tree": "47801fc5b432b0baf544bb8fd522a9fd3b567a7e",
      "parents": [
        "739383c80684eeb41d380ca5d18e1e9a1fe9fd7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:49:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 21:13:15 2019 +0000"
      },
      "message": "Revert \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit 334630ee9dffdd1932c1ee641d938f25362a4c1a.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: I5ed3846e0dfff09c67a468f319ff516e14c44e61\n"
    },
    {
      "commit": "334630ee9dffdd1932c1ee641d938f25362a4c1a",
      "tree": "81957d634aa76967d97c89014eb69158682b0128",
      "parents": [
        "5b76c16cca1984209e838ada4d79e370d7fda431"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 04 15:08:04 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Remove Global deopt requirement for several jvmti events\n\nThe JVMTI_EVENT_SINGLE_STEP, JVMTI_EVENT_FIELD_MODIFICATION,\nJVMTI_EVENT_METHOD_EXIT, JVMTI_EVENT_SINGLE_FIELD_ACCESS, and\nJVMTI_EVENT_FRAME_POP events would all deoptimize all threads in all\ncases when enabled. This changes the behavior to instead only\ndeoptimize individual threads when possible. This should make some\ndebugger interactions faster.\n\nTest: ./test.py --host -j72\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I42513cb17fd1144aeb03ca11afd3e3b05e918ce2\n"
    },
    {
      "commit": "d388390c556181942b78a5384c3c66afd1d34222",
      "tree": "ca62bd886f00c53260abe3053dd8c058354984d6",
      "parents": [
        "817a47faba3b9150fd9345fbbda1320b02ebfa01"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "message": "\"Revert^3 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 817a47faba3b9150fd9345fbbda1320b02ebfa01.\n\nReason for revert: Breaks build.\n\nChange-Id: I51a38e47186f778b4c1c119e9f21a5d5a1b786a8\n"
    },
    {
      "commit": "817a47faba3b9150fd9345fbbda1320b02ebfa01",
      "tree": "51d0876c8cb667384a25ee6a2eede761a121d455",
      "parents": [
        "e173798b890e3fdd2bbd68cda997d7b3d1a5a902"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 08 14:05:37 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 11:08:41 2019 +0000"
      },
      "message": "Revert^2 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 9fd68f6795eab7085986f80b1c4d00dc45a68485.\n\nTest: art/test.py -b --host --64\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nTest: art/tools/run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I9d2faeb8b88ce7cf42915890c6089c725907e6dd\n"
    },
    {
      "commit": "c816d24f1e35ff8e10d5eadc77d5a75d6be5e776",
      "tree": "7be1f416621883f2b4b3bc646dc4c1dabb7def8b",
      "parents": [
        "bc0c48496cb9d22a9e0ee7e1c3d3016289f8150a",
        "e0b2ce413367c9266e9b0657a0505c1ef776b7ae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 22 20:49:03 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 22 20:49:03 2019 +0000"
      },
      "message": "Merge \"Revert^2 \"Prevent agents from delaying system daemon threads\"\""
    },
    {
      "commit": "e0b2ce413367c9266e9b0657a0505c1ef776b7ae",
      "tree": "ea17b0478011d74009177bf9cf568718b3482777",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 21 19:23:42 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 22 08:56:22 2019 -0800"
      },
      "message": "Revert^2 \"Prevent agents from delaying system daemon threads\"\n\nIt looks like there might be a race between DetachCurrentThread and\nruntime shutdown that the original CL exposed with test 1919. I\u0027m not\nsure why this test exposed this issue, possibly it\u0027s due to the\nremoval of the Daemon events making the test faster, thus more likely\nto get to runtime-shutdown without the testing thread having fully\ndetached.\n\nThis reverts commit c08c10713e8884e8adfbf6a8e370a9ec96c1883f.\n\nReason for revert: (Hopefully) made test 1919 resistant to the flake\n                   it was experiencing.\nTest: ./test.py --host --ndebug -j80\n\nBug: 123696564\nBug: 124284724\n\nChange-Id: I2e58a71aa174f6b89e57c31378b0fe5bb41a8844\n"
    },
    {
      "commit": "ed19c670d77bf52454c4be88e05f6f3d5b88454f",
      "tree": "24ebe39500709ff813c7fdf6570a5f2f3a6952a0",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Feb 21 15:32:32 2019 -0800"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Feb 22 00:09:55 2019 +0000"
      },
      "message": "Fix errno handling to avoid being overwritten\n\nBug: 124468627\nTested: m build-art-host\n\nChange-Id: I4c9fba1ddd6374b8f4451b82ccfc7aed666c6ebc\n"
    },
    {
      "commit": "c08c10713e8884e8adfbf6a8e370a9ec96c1883f",
      "tree": "84dc682b40f38d0377639befe6f3d43e5655a43c",
      "parents": [
        "3611fdf703a6417c08a2e3d6e642d5936318de18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "message": "Revert \"Prevent agents from delaying system daemon threads\"\n\nThis reverts commit 3611fdf703a6417c08a2e3d6e642d5936318de18.\n\nBug: 123696564\nBug: 124284724\nReason for revert: b/124284724\n\nChange-Id: I546758b4cbb5e3f62f7b66a2faed544abce0d9c2\n"
    },
    {
      "commit": "3611fdf703a6417c08a2e3d6e642d5936318de18",
      "tree": "ef152ff80f42b6486e5a02eee3fb7a02fbef15e7",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 06 15:10:58 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 11 11:03:22 2019 -0800"
      },
      "message": "Prevent agents from delaying system daemon threads\n\nThe runtime starts several important daemon threads that are\nresponsible for various GC related tasks (i.e. FinalizerDaemon, etc).\nThe runtime cannot be considered fully started until these threads\nhave been started or will be started soon.\n\nIt was possible for agents to delay the startup of these daemons\narbitrarily (while calling arbitrary java code) by never leaving the\nVMInit event or by never returning from the daemons ThreadStart\nevents. This could cause deadlocks or other errors when using some\nagents, such as libjdwp.\n\nIn order to prevent these issues and more closely match other java\nlanguage runtimes we launch these threads before sending the VMInit\nevent and suppress their ThreadStart events. The openjdkjvmti plugin\nthen waits for the Daemon threads to actually begin executing before\ncalling the VMInit event or any other agent code. This prevents the\nagents from seeing threads appear from nowhere.\n\nBug: 123696564\nTest: while atest CtsJdwpTestCases; do; done;\n\nChange-Id: I7e07187f3e8670f32df0490cb419585c13d81765\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": "e5d2398fa5be5effbc552b244387119dc53a9671",
      "tree": "f32b3f3d67c469d9bdc83961ef9c4d863c351f0a",
      "parents": [
        "639b2b1f3a675135d443fc380323fbc48639a7eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:26 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Forward-declare Context\n\nMove deletion to thread.cc, which allows to forward-declare\nContext.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ifd9006cd3457d4ab708a289a7f6e1cdf2591c596\n"
    },
    {
      "commit": "d77abd9e128f60917f712b8da84bab46e3ed5870",
      "tree": "40d3108c1190860ef119e85f9c94688ca8036c39",
      "parents": [
        "bec232eb2f07d53c4dbf510b3fbb80f092d02681"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 16:10:20 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Forward-declare Instrumentation\n\nAvoid header include in a very common header.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I6a6f09ad62d61684969635f8cb98b072f3ea781c\n"
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "3a0cd34fccf6ea9ecf8c7d943e239eebe6ef83e8",
      "tree": "c4b4c15734d23522cb7c64c358bafa3645760f5f",
      "parents": [
        "9e72ebe9cbc262a452ee5ed4911558044e325d87"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 13 13:45:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 17 18:05:48 2018 -0800"
      },
      "message": "Add extra traces to Thread startup\n\nHelp diagnose what takes time during thread creation.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I738b0f987bdef077bca148c3cf06ef126f11022a\n"
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "d57c51e9cffd3684401286a1c8797015ce52b77c",
      "tree": "51c3662e77caed93c16df30321723ee51e2a2d86",
      "parents": [
        "95c591573686f75e32e9edd01777b8a42b186208"
      ],
      "author": {
        "name": "Evan Cheng",
        "email": "evan.cheng@mediatek.com",
        "time": "Fri Jan 26 15:43:08 2018 +0800"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Dec 10 09:54:16 2018 +0000"
      },
      "message": "Fix scheduler_stats may resize to negative value\n\nscheduler_stats will be empty when thread had been exited.\n\nTest: This issue occurred on MTBF-Monkey test, however,\nthe root cause can be verified on the source code.\n\nChange-Id: Ie8e61683126432aa03edef9ebbbf4baaadbdeafd\n"
    },
    {
      "commit": "d5ae80c223a2aa51b6a54faa0f014acdd013103f",
      "tree": "25b44b63625d83f36dc405d9ef9ff00b8dfc8fe3",
      "parents": [
        "f355ec703f519c3091853d85f61904be6dfb68aa",
        "813a86307e1f3437ed9d17aeea2c5c6ffcda5c67"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 23:36:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 23:36:04 2018 +0000"
      },
      "message": "Merge \"Use ArtMethod::GetDex{File,Cache}() more.\""
    },
    {
      "commit": "813a86307e1f3437ed9d17aeea2c5c6ffcda5c67",
      "tree": "6ab0118464a3f721dc967d52a9607a96ce6e4188",
      "parents": [
        "7e09737125ddb8c6f243ac1882d2a23da3f109c4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 16:17:01 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 17:54:54 2018 +0000"
      },
      "message": "Use ArtMethod::GetDex{File,Cache}() more.\n\nDo not go through the declaring class when it can cause\na DexFile or DexCache mismatch for obsolete methods.\n\nAlso fix similar potential mismatch in hiddenapi.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/834082 ,\n    https://android-review.googlesource.com/836008 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119830111\nChange-Id: I3fdf1aa1bc7bab816d5d8034b107506a32438b77\n"
    },
    {
      "commit": "c7d878d4be3f0971d4b86266308c7540a26c2856",
      "tree": "041a6d897df81ae64f25c211f16e8640959a35f5",
      "parents": [
        "d295a75d952742604eaae0530daea19dd6fd782c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 18:42:06 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 17:09:07 2018 -0800"
      },
      "message": "Revert^4 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit ec43a01e0ac948c59d5b1f9c3812f2901b48942a.\n\nReason for revert: Added missing code.\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: Id30ccdf9aa9a6e56a914254793e399f2712c882d\n"
    }
  ],
  "next": "ec43a01e0ac948c59d5b1f9c3812f2901b48942a"
}
