)]}'
{
  "log": [
    {
      "commit": "1d326f94a3fdd6292ccdf0022cedfb2a2b8acfee",
      "tree": "17fde709095f46eff040585e694b621676e5d0c0",
      "parents": [
        "654f01cd509ca11eae22177d4e764f1241fb3a53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 09:26:55 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 12:50:50 2021 +0000"
      },
      "message": "Avoid race on Thread::tlsPtr_::top_handle_scope.\n\nRequire mutator lock for that field and update tests to hold\nthe mutator lock when needed. This prevents GC thread that\nexecutes a thread roots flip on behalf of suspended threads\nfrom racing against construction or destruction of handle\nscopes by those threads and possibly seeing invalid values.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 189439174\nChange-Id: I268a0ef6e5aa838347956febca0d3b6e02fe3ae5\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": "6e1b7d85d9b86971885d13a464482e9f42870709",
      "tree": "bd1eb101c3f2d97565c1e1085cc72020ffe4f654",
      "parents": [
        "0877daf3a4c81a3b7508851b751d3e4a4cd1d7aa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 06 09:58:46 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 06 20:31:01 2021 +0000"
      },
      "message": "Add heterogenous lookup to Thread::custom_tls_\n\nThis avoids needing to allocate strings when performing lookups.\n\nTest: ./test.py --host\nBug: 135266723\nChange-Id: I4eb4d890816ed25199077ab017723078a531e09e\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": "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": "01b65526c1dce94abb8ed98d473ddcd2b8fcd692",
      "tree": "edc3f88f666415ffb459bad64a585fa576dc65ab",
      "parents": [
        "908759b00ba0d84445636cc7cfcaf830b45e7b73"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 15:43:54 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 04 18:06:08 2020 +0000"
      },
      "message": "Implement Reference.getReferent() intrinsic.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: I4762f7c1cf3d61de2215ec8f1d14be80289c2372\n"
    },
    {
      "commit": "891cb8897612a156e631825615781c537032a3f3",
      "tree": "c0206a93a2480388764113184e9118a8c0a120ea",
      "parents": [
        "270e10a8122d4a2abe4d92db55451e2b62f32188"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 31 12:06:58 2020 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Sep 28 18:35:14 2020 +0000"
      },
      "message": "Add mutator collector coordination documentation\n\nThis affects a lot of ART and should thus be documented.\n\nIt is sufficiently low level that I believe it belongs in the source\ntree. It should only be of interest to ART developers, in a broad sense\nthat includes anyone trying to understand failures involving ART.\n\nVarious comment improvements around thread suspension and checkpoints.\n\nTest: Built AOSP.\nChange-Id: I77338ff1d6f7c6aefb7be849449770438c15c982\n"
    },
    {
      "commit": "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": "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": "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": "9974e3cdc1564edc3143b90d7bb2a416f1f887e7",
      "tree": "4f9746e6b237b2a17cc1e2543a141817d4946c19",
      "parents": [
        "2d19902c3d140c7b9b1d7ae905bd1023a4e649a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 10 16:27:06 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 11 10:06:12 2020 +0000"
      },
      "message": "Clean up generated operator\u003c\u003c(os, enum).\n\nPass enums by value instead of const reference.\n\nDo not generate operator\u003c\u003c sources for headers that have no\nenums or no declarations of operator\u003c\u003c. Do not define the\noperator\u003c\u003c for flag enums; these were unused anyway.\n\nAdd generated operator\u003c\u003c for some enums in nodes.h . Change\nthe operator\u003c\u003c for ComparisonBias so that the graph\nvisualizer can use it but do not use the generated\noperator\u003c\u003c yet as that would require changing checker tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifd4c455c2fa921a9668c966a13068d43b9c6e173\n"
    },
    {
      "commit": "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": "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": "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": "4f9d62b549ef755c5b77d09b1da2a8403f58b376",
      "tree": "c3af4e8008e8214016b88bb9127157c912fa23e8",
      "parents": [
        "b885d8b631ad0a72ade32cb6b07a2ddd062a664b"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Mon Jan 06 15:06:04 2020 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Jan 15 19:50:46 2020 +0000"
      },
      "message": "Utilize partially used TLABs\n\nCurrently, once a mutator tries to allocate an object bigger than the\nTLAB size, it attempts to acquire another TLAB. The previous TLAB is not\nutilized again. This leads to blocking GCs when mutators get created and\nkilled very frequently, as could happen in the case of Zygote.\n\nIn this change, we maintain a separate list of partially used TLABs\nwhich can be reused whenever any mutator attempts to allocate a new TLAB\nfrom region space.\n\nTest: forrest hermatic test\nBug: 146706834\nChange-Id: I8076663628e49fc10e33f30de937833f6812fdca\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": "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": "270db1ce48377e3d9ca0c3dcec834ac807ca885b",
      "tree": "ffc553c6ff1ad37bdc3caca01ad686fa41ca0688",
      "parents": [
        "42b9c19772542457701d5efea26aae4449dec8c7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 03 12:20:01 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 11 18:46:44 2019 +0000"
      },
      "message": "Revert^4 \"Allow structural redefinition on non-final classes.\"\n\nThis reverts commit 664999a12d6fc8a8ef5c0519b12ec1e8a51bb085.\n\nFixed issues with GC and quickened instructions in parent CLs.\n\nReason for revert: Fixed issues with GC CHECK fail and device SEGVs.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 134162467\nBug: 144168550\nChange-Id: Ibacddaf45beb72184f97d53d5d048bd442578658\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": "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": "664999a12d6fc8a8ef5c0519b12ec1e8a51bb085",
      "tree": "f4ae1b0844ac075807229db9695ead7dec07ff8a",
      "parents": [
        "642af13b1b14794d8ab0db5cc82206213e648fa1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 08:47:26 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 08:47:45 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Allow structural redefinition on non-final classes.\"\"\n\nThis reverts commit f1b809ce611e943f926fff97cefe0930226ffcc2.\n\nReason for revert: Tests still fail\n\nBug: 134162467\nBug: 144168550\nChange-Id: Icdebc826b8630920b716afbfd6f338a29669fcc2\n"
    },
    {
      "commit": "f1b809ce611e943f926fff97cefe0930226ffcc2",
      "tree": "f75675383cf8018f9f333e608df35edbacf1c913",
      "parents": [
        "20b7a9b8aeaf76fc8f3248f211489fd00af73170"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 26 18:52:06 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 18:34:20 2019 +0000"
      },
      "message": "Revert^2 \"Allow structural redefinition on non-final classes.\"\n\nWe were incorrectly racing with the rest of the runtime in a couple of\nplaces. First we would return an ObjPtr of a newly defined class after\nholding it over a suspend point. This could lead to DefineClass\nreturning an obsolete class in some cases.\n\nWe also failed to ensure the class-status was synchronized between the\nold and new classes during structural redefinition. This could lead to\na class appearing to go backwards in status.\n\nThis reverts commit 88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d.\n\nReason for revert: Fixed issues causing test failures.\n\nTest: ./test.py --host\nBug: 134162467\nBug: 144168550\n\nChange-Id: I4d0f7718490532f0ef14a9561b8e7000ef292b12\n"
    },
    {
      "commit": "88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d",
      "tree": "e3ee63ccca83c60c5790e51610349889f44daacf",
      "parents": [
        "8e895008a3e2f2813bb46cb0c6bc76884e46e9ac"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 26 14:13:44 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 26 15:55:26 2019 +0000"
      },
      "message": "Revert \"Allow structural redefinition on non-final classes.\"\n\nThis reverts commit c47040d31cbcd8cddd5fadb552b4f0f6c94b5bd0.\n\nReason for revert: Breaks ART tests (see e.g. b/145197371).\n\nBug: 145197371\nBug: 134162467\nBug: 144168550\nChange-Id: Ia8e5788655057e380fc723a38900d26d69cda938\n"
    },
    {
      "commit": "c47040d31cbcd8cddd5fadb552b4f0f6c94b5bd0",
      "tree": "50df569420cd6746daadf1487933719d1f86d66b",
      "parents": [
        "dc540dfffb6863177143d024dd6f491775d77585"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 13 09:33:52 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 26 02:11:19 2019 +0000"
      },
      "message": "Allow structural redefinition on non-final classes.\n\nThis adds support for structurally redefining non-final,\nnon-finalizable classes. The only restriction is that one cannot\nredefine a class at the same time as any of its supertypes, if a\nstructural redefinition is occurring. The structural redefinition may\nnot remove any fields or methods, change the superclass or change the\nimplemented interfaces. Adding new methods or fields, both static or\nnon-static, public, private, protected, or package-private, is\nsupported.\n\nTest: ./test.py --host\nBug: 134162467\nBug: 144168550\nChange-Id: I32e9e854b3e56270170b10e8f5aba9de8f6bfdfa\n"
    },
    {
      "commit": "dc540dfffb6863177143d024dd6f491775d77585",
      "tree": "91a2fe20c625790cead209c36ed4a45e0cf97c06",
      "parents": [
        "882d41435982c518506f544ab79a9fa0a90cc78f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 15 17:11:44 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 23:00:08 2019 +0000"
      },
      "message": "Add ScopedAllowThreadSuspension\n\nAdd a way to temporarily re-allow thread suspension. This makes it\ncleaner to do the pre alloc visitor stuff in heap-inl.\n\nTest: test-art-host\nChange-Id: Ifbb2725923df84e8e0bd073d415e99cb8090e681\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": "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": "9f18fbc433bba51a5b81249989a8726558135528",
      "tree": "5a293f961924edf35f6ad4be9935a71c5ba69761",
      "parents": [
        "6f382013399fc8ba8b2717e4d24d91978d2bc0f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 31 15:06:12 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 16:36:41 2019 +0000"
      },
      "message": "Make classes visibly initialized faster.\n\nReduce the batch size from 32 to 16 and the trigger count\nfrom 1024 to 128.\n\nThis may help system health micro-benchmarks (b/138601570)\nbut I\u0027m unable to run the forrest tests locally to verify.\n\nBug: 138601570\nBug: 36692143\nTest: m\nChange-Id: I4d938ddbd284ebe624d146eca9ad59ceefeba4d4\n"
    },
    {
      "commit": "bf12191214c0d6215a98dfe846a51230d995dad9",
      "tree": "085c1059014ce66fdb7eceb6e8502d906f0eacbd",
      "parents": [
        "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 13:49:05 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:10:26 2019 +0000"
      },
      "message": "Implement ClassStatus::kVisiblyInitialized.\n\nPreviously all class initialization checks involved a memory\nbarrier to ensure appropriate memory visibility. We change\nthat by introducing the kVisiblyInitialized status which can\nbe checked without a memory barrier. Before we mark a class\nas visibly initialized, we run a checkpoint on all threads\nto ensure memory visibility. This is done in batches for up\nto 32 classes to reduce the overhead.\n\nAvoiding memory barriers in the compiled code reduces code\nsize and improves performance. This is also the first step\ntoward fixing a long-standing synchronization bug 18161648.\n\nPrebuilt sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19150696\n   arm64/boot*.oat: 22574336\n   oat/arm64/services.odex: 21929800\n - after:\n   arm/boot*.oat: 19134508 (-16KiB)\n   arm64/boot*.oat: 22553664 (-20KiB)\n   oat/arm64/services.odex: 21888760 (-40KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh -j4\nTest: testrunner.py --target --optimizing\nTest: Manually diff `m dump-oat-boot` output from before\n      with output after this CL without codegen changes,\n      with `sed` replacements for class status. Check that\n      only checksums and the oatdump runtime values of\n      DexCache.dexFile differ.\nBug: 18161648\nBug: 36692143\nChange-Id: Ida10439d347e680a0abf4674546923374ffaa957\n"
    },
    {
      "commit": "01ecfa1c31282e12b18df5b2f555898a0c3a2e35",
      "tree": "f3f71be061fb0b411ec9434fb23e0b2a8b787075",
      "parents": [
        "2be4306b7669a5aca3e936c531c5ec370ae98e92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 18 12:57:47 2019 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 26 08:41:54 2019 +0000"
      },
      "message": "Refactor Core Plaform API checking\n\nMove Core Platform API check logic to hidden_api_jni.{h,cc}.\n\nUse libunwindstack for walking stack as builtin isn\u0027t robust without\nframe pointers. This is moderately expensive so we currently walk a\nmaximum of 3 frames.\n\nChecks are now performed by placing ScopedCorePlatformApiCheck\ninstances at potential points of entry via JNI. Specifically, where\nJNI interfaces implement methods for getting field and method ids. The\ncheck is only performed on the outermost instance of the\nScopedCorePlatformApiCheck since only the outer caller is of interest.\n\nState for the checks is stored in the current Thread instance since\nthe JNI interface signatures are fixed and we need a way to be able to\ndetermine whether a ScopedCorePlatformApiCheck is the outermost\ninstance and whether the outmost instance was approved.\n\nTest: build eng build (has checkjni), boot, grep logcat nio/Buffer\nTest: build user build (regular jni), boot, grep logcat nio/Buffer\nBug: 130336799\nBug: 136276414\nChange-Id: If1261046dd57c007bc77b213daaa5f733151123e\n"
    },
    {
      "commit": "2be4306b7669a5aca3e936c531c5ec370ae98e92",
      "tree": "e20868e4e3303463dbe9eba507b89165f2985a06",
      "parents": [
        "82372004427646e048b47ca507e7409d8edfeaf5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 24 16:52:33 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 22:18:20 2019 +0000"
      },
      "message": "ART: Use initial-exec TLS mode for Thread TLS\n\nAvoid unnecessary overhead. This works as on the host we do not\nrun complicated workloads with other libraries etc, so glibc\u0027s\npreallocated storage is large enough to fit this.\n\nBug: 138329277\nTest: m test-art-host\nChange-Id: Ibd013521b7fc043b62ed79a72e94c0c002c7c402\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": "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": "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": "0c2313c2d119e32ac27dae6513a9406ea087bfa9",
      "tree": "39f00ebfc1b4766fc45e6a322637ea9d09c3cd51",
      "parents": [
        "b79674cf70cabdcbe85de2e45b090f98990d020a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 14 09:47:00 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 16 00:53:06 2019 +0000"
      },
      "message": "ART: Forward-declare SuspendReason in thread.h\n\nReduce transitive includes, iwyu.\n\nTest: mmma art\nChange-Id: Ief9708af95db988f2b77accdd144b3d90e4248d2\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": "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": "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": "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": "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": "639b2b1f3a675135d443fc380323fbc48639a7eb",
      "tree": "0aba54938e712e5dd95b525c92f836c59cca49c6",
      "parents": [
        "8764dc3b3eda7f6f13ed7b584475503fe5bedd59"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:32:50 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Remove instruction_set.h from thread.h\n\nMove the function definitions relying on it to the -inl. Some\nfollow-up transitive-include cleanup, as well as some more\nforward-declarations.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I820f395e6cb8343a4bb9bf02da271fbec067109f\n"
    },
    {
      "commit": "a1ffdba7e285435cbb3538473f25eb7cb47cfd66",
      "tree": "35b1ad4e66839425ef3ff52287e53dec4e5a348e",
      "parents": [
        "5a0430d0239481f4efb252d60ec9641703b8d456"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 04 16:08:51 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: IWYU handle_scope\n\nMove wrappers to their own header. Forward-declare handles.\n\nBug: 119869270\nTest: m\nChange-Id: I9fba4df9b589cec07c7f687791ddbed81d188410\n"
    },
    {
      "commit": "5a0430d0239481f4efb252d60ec9641703b8d456",
      "tree": "cd7bdb45d94e7af3aa3e1bbb5958f930bcee29f6",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 04 14:33:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:20 2019 -0800"
      },
      "message": "ART: Introduce runtime_globals\n\nSplit libartbase\u0027s globals.h into actual globals, and runtime-\ndependent globals which should live in runtime.\n\nBlanket-convert all runtime/ inclusions.\n\nIn future CLs, the number of global constants should be reduced.\nFor example, GC types are only relevant to GC/alloc functionality.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I2d8cd32e0e7ab4084d2f2e96864b5338a78da94e\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": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "79c693b3133da397cec7eaff19de631b65a0cf70",
      "tree": "dc08c382b7b17eac484355ca63683b3a0560ab81",
      "parents": [
        "f759dc027507d0092a49d9ec146dc37ca4534dd4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 10:43:50 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 21 15:22:07 2018 -0800"
      },
      "message": "ART: Remove setjmp.h includes\n\nWe are not using jmpbuf and co.\n\nBug: 119869270\nTest: m\nChange-Id: I85993e2ce506b059801d8d8da8b440e93ee9e3fd\n"
    },
    {
      "commit": "aa31f4944936cabb8cc307890de9fa54ceda6de8",
      "tree": "7485bb1d985244ca54cba25f56585f0ac4e30039",
      "parents": [
        "ae5d77d323c8456343e30571c0f67e40b15c7af1"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Nov 01 18:57:38 2018 +0000"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Nov 05 11:01:51 2018 -0800"
      },
      "message": "Revert^4 \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 13f4d9631db981ae5008073db4df9c6a934fc9f3.\n\nReason for revert: Fixing ThreadStress timeouts.\n\nChange-Id: I9f8c3f56eccfadc3751049731e8d427873cc7841\n"
    },
    {
      "commit": "13f4d9631db981ae5008073db4df9c6a934fc9f3",
      "tree": "928c363c96854ac8db404a0ddd11adf8c66ea1c0",
      "parents": [
        "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"Implement LockSupport.park with a futex\"\"\n\nThis reverts commit 4e7077d795ab94d40c76ae7b9245fd5dcbb7716c.\n\nBug: 28845097\n\nReason for revert: ThreadStress flakes.\n\nChange-Id: Ibe29c2f679a642ccffea51c2fcf7dfaaed2dc305\n"
    },
    {
      "commit": "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c",
      "tree": "df6ab853427ab64353933b50637bffb584938274",
      "parents": [
        "97d40f9c7b1157783d09861ce76d3a0b3da73cbe"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Wed Oct 31 17:19:19 2018 +0000"
      },
      "message": "Revert^2 \"Implement LockSupport.park with a futex\"\n\nReason for revert: Fixed unused-argument compile error on mac\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: Iff71a0e23d0a9fbe072a092bec40a39192c195eb\n"
    },
    {
      "commit": "97d40f9c7b1157783d09861ce76d3a0b3da73cbe",
      "tree": "928c363c96854ac8db404a0ddd11adf8c66ea1c0",
      "parents": [
        "41271dd3dfc2ff75702ae3b709eb8afa9464a49f",
        "5485371cf3894d71e0d0fe2bdf639fde478012ca"
      ],
      "author": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 16:16:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 31 16:16:08 2018 +0000"
      },
      "message": "Merge \"Revert \"Implement LockSupport.park with a futex\"\""
    },
    {
      "commit": "5485371cf3894d71e0d0fe2bdf639fde478012ca",
      "tree": "3b8f742544db21dbd4994ec204c19eaf613a9b10",
      "parents": [
        "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4"
      ],
      "author": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "committer": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "message": "Revert \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 5e1a75c1d12ea47bdc0f73d378b5fa25326829f4.\n\nReason for revert: This CL unfortunately breaks:\nsdk_gphone_x86-sdk_addon_mac\nsdk_mac\n\nFollowing error:\nart/runtime/thread.cc:370:4: warning: \"LockSupport.park/unpark implemented as noops without FUTEX support.\" [-W#warnings]\n#warning \"LockSupport.park/unpark implemented as noops without FUTEX support.\"\n^\nart/runtime/thread.cc:295:24: error: unused parameter \u0027is_absolute\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\nart/runtime/thread.cc:295:45: error: unused parameter \u0027time\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\n1 warning and 2 errors generated.\n\nChange-Id: Iae41cce7cd5fc38f605173519931491a019f7c80\n"
    },
    {
      "commit": "fe79b5939696c87f66d9d39540fe0f38369c5158",
      "tree": "7b44d07b2fceec22534c7441ba04133f26b7363f",
      "parents": [
        "ed0d82201a3853b31588fa1f9e0c902e3f09902e",
        "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 31 02:54:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 31 02:54:08 2018 +0000"
      },
      "message": "Merge \"Implement LockSupport.park with a futex\""
    },
    {
      "commit": "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4",
      "tree": "3a69bbfecee2527a0584cb7bc30fbf434f20c47d",
      "parents": [
        "f4fd65e393fe60f17e22ee7823f8dce4594c053d"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Tue Oct 30 09:43:57 2018 -0700"
      },
      "message": "Implement LockSupport.park with a futex\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: I75458afc481b7a5860e67f8a421109308ce5ebc6\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "776f3f7bfa33e0449e4e2c5535bae1babfdbaf83",
      "tree": "274d20979e48c772327258b7cbeab92b276df84e",
      "parents": [
        "d88f5f7b22571511b93206f02806568648138a35"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 18:03:55 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:13:44 2018 +0100"
      },
      "message": "Remove mterp \"alternate\" opcode handlers.\n\nThey are currently unused and I don\u0027t have plans to use them.\n\nThe alternate table made it possible to enable extra mterp checks.\nHowever, it is possible to move the debug checks to the main path.\n\nTest: test.py -b -r --interpreter -t 001-HelloWorld\nChange-Id: I45a39ec73abaefaecf5b8c636f3f9d519a0a8bb0\n"
    },
    {
      "commit": "185a461af9d273fa62170f67ac485f665ae57d8b",
      "tree": "3c3d51f5e5c1f5456d5e83d59f0154f2f9e5ba98",
      "parents": [
        "660718f175cecef927411607d1484235cb38bf05"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 15:54:25 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 15:54:25 2018 -0700"
      },
      "message": "Add some comments missed during jit-loading CL\n\nTest: none\nChange-Id: Iad77ad432bb9395852653953dc02589bf84d54d6\n"
    },
    {
      "commit": "56de89aaf2a224de8c436291e3c23a1a61315437",
      "tree": "397fafa3662d1abde6fecff49f24a559c2b0ab32",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 01 15:32:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:38:59 2018 +0100"
      },
      "message": "Mark most *Offset helper functions as constexpr.\n\nMaking the values compile-time constants will help to\nclean up the cpp-define-generator.\n\nTest: test.py -b -g\nChange-Id: I612a19a54062784b501bfe4f41c6642d48e0dd21\n"
    },
    {
      "commit": "cea421597f26b2afb2d82d72a46c5dc905496ca5",
      "tree": "60f2a4df80e1fdf8aeb42e9dafca96d75aa43d2f",
      "parents": [
        "e9f61035e7077032a17d7d0e9035b6ef3995273f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 18 22:51:55 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:06 2018 -0700"
      },
      "message": "Revert \"Allow threads to be marked as unsuspendable by kForUserCode\"\n\nThis allows any thread (including jit-threads) to be suspended by\nkForUserCode and the will stop executing at the next suspend-point.\n\nThis reverts commit 53570676750d74416cecdf5a8e01f3cf9a8d4169.\n\nReason for revert: This marking was not sufficient to prevent\ndeadlocks and there is a better solution in simply preventing the jit\nthread from making this situation possible.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I8314904cc35f66bdf287ac7b9ec69510310a3474\n"
    },
    {
      "commit": "e9f61035e7077032a17d7d0e9035b6ef3995273f",
      "tree": "e24de0b760ef3848c8d405b4b7fec5a8b630778c",
      "parents": [
        "bb68fda18ef3d7ea183a322831a5afd20b6a8bff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 24 16:04:51 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:02 2018 -0700"
      },
      "message": "Prevent the JIT from loading classes in debuggable mode\n\nIn debuggable mode the timing and placement of class loads is\nobservable. This causes deopts to be placed in situations where a\nclass would be loaded by the JIT.\n\nThis has negligible impact on performance of compiled code, causing\nonly a handful of classes to be not loaded.\n\nFor example with the it.mvilla.android.fenix2 application of the\n~13000 classes loaded the jit was responsible for 19 of them.\n\nSince the jit is only responsible for a small number of class loads\nand for the class not to have been loaded by the interpreter the path\nmust be cold anyway there is no performance impact on standard paths.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py --with-agent\u003dlibjitloadd.so\u003dfatal --host\nTest: Attach libjitload.so to running processes and examine jit-load\n      counts.\n\nBug: 70838465\nBug: 73255278\nBug: 112074977\nBug: 116517081\n\nChange-Id: I030bc8116345af506e83ba78427a7fbda7a7b386\n"
    },
    {
      "commit": "bb68fda18ef3d7ea183a322831a5afd20b6a8bff",
      "tree": "5745a64e0e410ac3fe66cd54abd2bbfb84539e93",
      "parents": [
        "29391756f70489a5ab659988f058e359527a7af1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 13:21:47 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 14:57:18 2018 -0700"
      },
      "message": "Move InterpreterCache to right below tlsPtr_\n\nChange the position of the InterpreterCache field in Thread to be\ndirectly below the tlsPtr_ field. Since both members of the tlsPtr_\nand InterpreterCache fields are used by asm_code we need their offsets\nin asm_support.h. The fields at the end of the Thread struct have been\nundergoing changes. By moving this field up we avoid the need to\nupdate asm_support.h whenever one of the fields is modified.\n\nTest: ./test.py --host\nChange-Id: Ic2863116ed446af155badfc3bf098add7ba0b699\n"
    },
    {
      "commit": "912f36c954a91bdc7d9801a111ba089ec2a23681",
      "tree": "87e576e86867140c478d6959ce20a261daaad60a",
      "parents": [
        "26f048f48cdb1e884aab2b6fddf26d58346d29ad"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Sep 08 12:22:58 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 27 15:16:09 2018 +0100"
      },
      "message": "Add small thread-local cache for use by the interpreter.\n\nSmall (one page) cache which can be used on the hottest paths\nin the interpreter and which does not require synchronisation.\nThis CL adds the code but it does not use it for anything yet.\n\nTest: test-art-host-gtest\nChange-Id: I41d4e7a86a0f62f7a4efc165b8934232b4e766c7\n"
    },
    {
      "commit": "53570676750d74416cecdf5a8e01f3cf9a8d4169",
      "tree": "8de1c48dd0a83091ffef6bf321ffc4ffc05b1147",
      "parents": [
        "b7f10d59557cb6b6cd6824f3bf4d77f961248846"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 12 11:09:59 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 17 11:03:20 2018 -0700"
      },
      "message": "Allow threads to be marked as unsuspendable by kForUserCode\n\nThere was a possible deadlock between jit-threads being suspended and\nanother thread waiting for the jit-thread to finish their work. If the\njit-thread hit a suspend-point the process would deadlock. This fixes\nthis by allowing threads to be marked as unsuspendable by user-code.\nThis prevents the issue by marking jit and gc threads as unsuspendable\nby user code. Agents attempting to suspend them using JVMTI will\nsucceed (and see the thread as suspended) but internal runtime methods\nwill not see the thread as suspended and the thread will not be\nprevented from moving into the kRunnable state. A thread that is\nunsuspendable trying to suspend itself using JVMTI will get\nERR(INTERNAL) and a log message.\n\nDoing this requires that we rewrite the JVMTI thread suspension code\nsomewhat so it will now perform an unconditional kInternal suspension\nprior to trying to suspend the thread kForUserCode. The kInternal\nsuspension is then lifted. This ensures that everything is done\natomically even if the kForUserCode won\u0027t stop the thread.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I91211641b82416664bf5abd8546efebf4f672f12\n"
    },
    {
      "commit": "184f0759ef700b1412c7df412c4ebb297427d9fc",
      "tree": "beef751010816fbbee70494422fd48d46559a4ac",
      "parents": [
        "ec1f1a91328f44d93cfc16e39160dbdfce2f7b9a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 13 11:18:22 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 16 16:20:01 2018 -0700"
      },
      "message": "Rewrite thread CustomTLS to support keyed TLS entries\n\nOur Thread struct allowed plugins or other parts of the runtime to use\na single custom_tls_ void* pointer to store additional data in the\nThread struct. Unfortunately it was limited to a single value. This CL\nchanges the API to allow one to pass in a const char* key that is used\nto address the TLS data. This lets multiple plugins or parts of the\nruntime set their own independent TLS entries. This also adds support\nfor TLS entries actually being deallocated automatically.\n\nTest: ./test.py --host\nChange-Id: I40fa767b9c61a755b2ed910e4ad1e6327705e941\n"
    },
    {
      "commit": "aee008e77ef1f7759f6e04df2e87fab89f5ebfa7",
      "tree": "cb8b0bbd5c64f116eaeac9cb0e27c000c4881003",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 29 10:00:13 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 29 10:00:13 2018 -0700"
      },
      "message": "ART: Reserve more overflow space for the interpreter\n\nIn debuggable builds, especially under ASAN, the switch interpreter\nwith access-checks has a huge stack frame. Virtually increase the\nprotected stack space at the end for overflow handling. This is\nnecessary so that interpreter calls will create a StackOverflow\nbefore it is too late.\n\nTechnically only ASAN pushes the stack over the established limit,\nbut there is no practical downside to adding a small amount to the\noverflow (note that the reserved size is small for non-ASAN builds),\nand this avoids the proliferation of memory_tool.h.\n\nNon-debug builds are approximately protected by frame-size compiler\nchecks. Compiled code does not need additional space, as the actual\noverflow handling fits into the carved-out space.\n\nBug: 109813469\nTest: SANITIZE_HOST\u003daddress art/test/testrunner/testrunner.py -b --host --interp-ac -t 004-SignalTest\nChange-Id: I1bdd2fc586a6da30720a8be62f3247180ce48e93\n"
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\n"
    },
    {
      "commit": "6ee497188b0e8c7bcf5126cefad04090f956616a",
      "tree": "db2d06b01d255811726ea748db8eb6f62cd7b71c",
      "parents": [
        "642e9d8249be5aff68022cabdc8ba576a57ff8d6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "message": "Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nBug: 74121887\n\nStill failing :(\n\nThis reverts commit 642e9d8249be5aff68022cabdc8ba576a57ff8d6.\n\nChange-Id: I603ca9fdd2d8f2f759527130b3288efe5b23b5c3\n"
    },
    {
      "commit": "642e9d8249be5aff68022cabdc8ba576a57ff8d6",
      "tree": "1fa53cee639241bd3968997e55e38ed282235569",
      "parents": [
        "b939805d9d4b0957274c562fb8053512d04138b2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 20:30:55 2018 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 22:36:09 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\"\n\nThis reverts commit 74d25c9040dfd1e0985987eb38817e526878a3db.\n\nReason for revert: The original failing condition appears to be gone.\n\nBug: 74121887\n\nTest: Ran 004-ThreadStress many times against the target.\nChange-Id: Ie5bd050112e654a99bdfea7d6dd673882ca35567\n"
    },
    {
      "commit": "3dada431768b980c65d8256327f160803aae1b41",
      "tree": "a1ab5bafe0ac9324710f3ff8f8dc7b5473bf1ce4",
      "parents": [
        "2410a88a94b57247a1096562564c2f23528b3e46",
        "88591fe82f499de10591f5b77efac71f8954eae2"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Mar 25 20:23:11 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Mar 25 20:23:11 2018 +0000"
      },
      "message": "Merge \"ART: Simplify atomic.h\""
    },
    {
      "commit": "318afe6c3ac1e734adbd769bbf22b8c7e373e80b",
      "tree": "2dada0828636c2dc8e40e0f34b2b3f01e6caa0a5",
      "parents": [
        "ba1e9e73c07bffc046f651414db43aeee9953d15"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 22 16:50:10 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 23 14:19:35 2018 -0700"
      },
      "message": "Remove unneeded ScopedGCCriticalSections from openjdkjvmti.\n\nWe used ScopedGCCriticalSections in many parts of the openjdkjvmti\noften unnecessarily.\n\nWe removed a totally unneeded GCCriticalSection that was acquired when\nmodifying the instrumentation listeners.\n\nWe also removed RequestGCSafeSynchronousCheckpoint and the change to\nuse GcRoots instead.  We added RequestGCSafeSynchronousCheckpoint as a\nway to prevent the GC from running when we are doing some JVMTI\noperations on other threads.  This could interact with running GCs in\nnon-trivial ways, potentially causing deadlocks in some situations.\nThis changes the code to instead use read-barriers and GcRoots to\nensure that we do not read data from the wrong gc space.\n\nIn order for this to work correctly we need to make sure that we are\nonly ever reading the GcRoots from the thread that eventually needs\nthe reference. This required some re-writing of the checkpoint\nclosures since they would often just call AddLocalReference on\nnon-local Thread objects.\n\nChanges to Thread::RequestSynchronousCheckpoint and art::Barrier were\nneeded in order to allow this all to work since we needed to ensure\nthat the requesting thread did not suspend as the checkpoint was being\nrun.\n\nThis is a partial revert of commit 7585b91bfc77b8.\n\nBug: 67838964\nBug: 76003243\n\nTest: use gapid\nTest: ./test.py --host -j50\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I26d871089829639eccb973cecc315194f7bcf681\n"
    },
    {
      "commit": "88591fe82f499de10591f5b77efac71f8954eae2",
      "tree": "bfa126ad55ee091e3b615bd3bb60d5f8cfb6e37a",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 06 13:35:43 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 23 15:01:15 2018 +0000"
      },
      "message": "ART: Simplify atomic.h\n\nPrefer std::atomic operations over wrappers in atomic.h. Exceptions\nare cases that relate to the Java data memory operations and CAS\noperations.\n\nBug: 71621075\nTest: art/test.py --host -j32\nTest: art/test.py --target --64 -j4\nChange-Id: I9a157e9dede852c1b2aa67d22e3e604a68a9ef1c\n"
    },
    {
      "commit": "86821aca0eff7fb1fff18c0d71acfcc06f5d73f3",
      "tree": "a285269f9035de4767c2b166784b33ca3a8e9d01",
      "parents": [
        "ec9855e6262cd477c9f61ed245b9e2526e351698",
        "74d25c9040dfd1e0985987eb38817e526878a3db"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\""
    },
    {
      "commit": "74d25c9040dfd1e0985987eb38817e526878a3db",
      "tree": "e63323329298a7cc67799324a6edc2378cfb6822",
      "parents": [
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "message": "Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\n\nBug: 27185632\nBug: 74121887\n\n\nGot flakes on device for 004-ThreadStress and 141-static-field-sigquit\n\nThis reverts commit 8b089742252e827d863218413e8855e1bae75af5.\n\nChange-Id: Ie76c84a1889e85b885d5f4123d60e8a760cf186d\n"
    },
    {
      "commit": "7a02c66fd9ed174fc2e49ccc9f582dd661b7de9e",
      "tree": "8f193c8ecea0ff418370bf72babb97487e8c9c65",
      "parents": [
        "334f170654fed18711d8dcf5238c1ac8bad7ecd1",
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "message": "Merge \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\""
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "8b089742252e827d863218413e8855e1bae75af5",
      "tree": "bbfe333fced26fbc42f87a4469c59822611acd9f",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 11:47:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 13:43:15 2018 -0800"
      },
      "message": "Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nThis reverts commit a73280df8cac1279b6dea0424722f42ef0048613.\n\nBug: 27185632\nBug: 74121887\nTest: m test-art-host\nChange-Id: I24af48619577a78371c93cbad24d307d4d7a217d\n"
    },
    {
      "commit": "56776014d181b7ee386a2ba5d85cf66d8bb4dd22",
      "tree": "21b9f0411f565d9e49bce916e720b70a79145750",
      "parents": [
        "47ec7ad0f819c171e41d323aff71f5ac425b1ccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 17:40:55 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 30 09:26:22 2018 -0800"
      },
      "message": "ART: Call ThreadGroup.add for attached threads\n\nWhen attaching threads to the runtime, call ThreadGroup.add to\nlet the thread\u0027s group know that the thread is now started. This\nfixes incorrect internal accounting.\n\nTest: art/test/testrunner/testrunner.py -b --host -t 169\nTest: m test-art-host\nChange-Id: I60362b6b53acf06b97779ea9b3b0bc6264f1dc2d\n"
    },
    {
      "commit": "fb6b0b1b04081f9ef7a240f702d8ce4e61a02e9f",
      "tree": "ae24c7d7bf4493ab9dc881c7b3b95ef8f706974d",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:47:56 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 08 18:48:47 2018 -0800"
      },
      "message": "ART: Add support for VMStack.getAnnotatedStackTrace\n\nAdd Thread.CreateAnnotatedStackTrace to return an array that\ncontains an AnnotatedStackTraceElement for each stack frame,\nwith the StackTraceElement describing the frame, an array\ncontaining all objects that are locked at the described location,\nand optionally for the top frame an object the thread is blocked\non, waiting for or sleeping on.\n\nAdd a test.\n\nBug: 70538431\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 168\nChange-Id: I0d92e3d8182c4a592549a6445854816f71afd29e\n"
    },
    {
      "commit": "4131d1096ac57a29ba1939c1cf2cb74144c16c92",
      "tree": "d3ac7e0732eac24602718ee2d2af33641b4cf13e",
      "parents": [
        "bd018439d78f89c84df061173521dbd91666c02e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 14:04:42 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 05 09:34:26 2018 +0000"
      },
      "message": "ART: Additional Atomic methods\n\nA few additional methods on the Atomic class to support the\ninterpreter VarHandles implementation.\n\nMinor renaming of Atomic::FetchAnd{Or,And}.* to\nAtomic::FetchAndBitwise{Or,And}.*.\n\nMinor updates for consistency in the choice of argument names and doc\ncomments.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: Iae35286935fbb270478082fed2fe74abb7b68c57\n"
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    }
  ],
  "next": "47d31853e16a95393d760e6be2ffeeb0193f94a1"
}
