)]}'
{
  "log": [
    {
      "commit": "18fba4cee0da2a2ca3051791a9cbdf5fa6f552c9",
      "tree": "e548c988e2cb7d3ea42c6455ffbb5e25edd75f78",
      "parents": [
        "6947faada7b1a2bbd528a2de559ba2fd5406a1d0"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Wed Oct 27 10:00:55 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Thu Nov 04 10:39:33 2021 +0000"
      },
      "message": "Remove unused code related to method entry / exit events\n\nThis Cl:\n- Drops this_object and dex_pc arguments for MethodExitEvent\n  which aren\u0027t used in any of the listeners.\n- Removes the code to maintain dex_pcs_ which were earlier used\n  by MethodEnteredEvent but are no longer used.\n\nTest: test/tes.py\nChange-Id: I0345598897004b7b6b9f26bd8940c88b5bb798f7\n"
    },
    {
      "commit": "46a8910372da2976c4e74273bacce17924b00d7a",
      "tree": "d94f0ca575a9539a69efd6e09613279dd90bc2fa",
      "parents": [
        "fa66389fbeeb2b4a6e1e1f5805653222f424a9bf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 21 13:05:46 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 02 10:12:57 2021 +0000"
      },
      "message": "Revert^2 \"JNI: Remove `JniMethodFast{Start,End}()`.\"\n\nThis reverts commit 2ca0900e98d826644960eefeb8a21c84850c9e04.\n\nReason for revert: Fixed instrumentation for suspend check\nfrom JNI stub, added a commented-out DCHECK() and a test.\nThe commented-out DCHECK() was correctly catching the bug\nwith the original submission but it also exposed deeper\nissues with the instrumentation framework, so we cannot\nfully enable it - bug 204766614 has been filed for this.\n\nOriginal message:\n\nInline suspend check from `GoToRunnableFast()` to JNI stubs.\nThe only remaining code in `JniMethodFast{Start,End}()` is a\ndebug mode check that the method is @FastNative, so remove\nthe call altogether as we prefer better performance over the\ndebug mode check. Replace `JniMethodFastEndWithReference()`\nwith a simple `JniDecodeReferenceResult()`.\n\nGolem results for art-opt-cc (higher is better):\nlinux-ia32                     before after\nNativeDowncallStaticFast       149.00 226.77 (+52.20%)\nNativeDowncallStaticFast6      107.39 140.29 (+30.63%)\nNativeDowncallStaticFastRefs6  104.50 130.54 (+24.92%)\nNativeDowncallVirtualFast      147.28 207.09 (+40.61%)\nNativeDowncallVirtualFast6     106.39 136.93 (+28.70%)\nNativeDowncallVirtualFastRefs6 104.50 130.54 (+24.92%)\nlinux-x64                      before after\nNativeDowncallStaticFast       133.10 173.50 (+30.35%)\nNativeDowncallStaticFast6      109.12 135.73 (+24.39%)\nNativeDowncallStaticFastRefs6  105.29 127.18 (+20.79%)\nNativeDowncallVirtualFast      127.74 167.66 (+31.25%)\nNativeDowncallVirtualFast6     106.39 128.12 (+20.42%)\nNativeDowncallVirtualFastRefs6 105.29 127.18 (+20.79%)\nlinux-armv7                    before after\nNativeDowncallStaticFast       18.058 21.622 (+19.74%)\nNativeDowncallStaticFast6      14.903 17.057 (+14.45%)\nNativeDowncallStaticFastRefs6  13.006 14.620 (+12.41%)\nNativeDowncallVirtualFast      17.848 21.027 (+17.81%)\nNativeDowncallVirtualFast6     15.196 17.439 (+14.76%)\nNativeDowncallVirtualFastRefs6 12.897 14.764 (+14.48%)\nlinux-armv8                    before after\nNativeDowncallStaticFast       19.183 23.610 (+23.08%)\nNativeDowncallStaticFast6      16.161 19.183 (+18.71%)\nNativeDowncallStaticFastRefs6  13.235 15.041 (+13.64%)\nNativeDowncallVirtualFast      17.839 20.741 (+16.26%)\nNativeDowncallVirtualFast6     15.500 18.272 (+17.88%)\nNativeDowncallVirtualFastRefs6 12.481 14.209 (+13.84%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: testrunner.py --host --jit --no-image\nTest: testrunner.py --host --optimizing --debuggable -t 2005\nBug: 172332525\nBug: 204766614\nChange-Id: I9cc7583fc11c457a53fe2d1a24a8befc0f36410d\n"
    },
    {
      "commit": "ee6c1b17ca966995539ce3e29fb416ec1a93beef",
      "tree": "60e656b54f866d9480258090f4daf1b61843a5e8",
      "parents": [
        "295ed5ae30dae8bb902628667d7aa276ea2c21a2"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 01 16:27:23 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 17:49:42 2021 +0000"
      },
      "message": "Update entrypoint_utils check method -\u003e other_method\n\nWe updated the code in entrypoint_utils but forgot to update a\ncheck in that same file.\n\nBug: 204767291, 154012332\nChange-Id: Ie5f4328a1fa294efa2e48d287ad8fa7a5f99c812\n"
    },
    {
      "commit": "72be14ed06b76cd0e83392145cec9025ff43d174",
      "tree": "aa186f70ea70011d428ab91a1f4a3fb0c2e39de5",
      "parents": [
        "667584d95926af5f0f6e392ab2dc575cc2906c51"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 01 11:48:06 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 14:31:37 2021 +0000"
      },
      "message": "Revert \"Add support for calling entry / exit hooks directly from JIT code\"\n\nThis reverts commit 2d4feeb67912d64b9e980e6687794826a5c22f9d.\n\nReason for revert: This breaks no-image tests. Example failure: https://android-build.googleplex.com/builds/submitted/7871904/art-no-image/latest/view/logs/build_error.log\n\nChange-Id: I0f97c672c2d48f125931171ee1041a7c1cf20127\n"
    },
    {
      "commit": "e43aa3f55fd01ce0887059b309a41b6441521e7c",
      "tree": "7ba4ef9adfbb77e6baa1891c3fabd783fb03d580",
      "parents": [
        "808d8cc8114e0c5ee3116639fe9d31be5a70403a"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 01 09:02:09 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 10:45:06 2021 +0000"
      },
      "message": "Revert^2 \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit 8cb989f1019c4fa30845bf2deb5bc996ed4e8966, so we\nare re-enabling commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Failing test was fixed here\nhttps://android-review.googlesource.com/c/platform/art/+/1873567\n\nBug: 154012332\nTest: ART tests\nChange-Id: If159b29583e35abcfe753f30483f83990208b1b9\n"
    },
    {
      "commit": "2d4feeb67912d64b9e980e6687794826a5c22f9d",
      "tree": "7ab2071bbf5d5907d205b8e2a092ea9869974ba1",
      "parents": [
        "60abdd9c89525a277d75df19ff2792614651e1ff"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Wed Oct 13 15:39:37 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 01 08:31:54 2021 +0000"
      },
      "message": "Add support for calling entry / exit hooks directly from JIT code\n\nThe idea of this CL is to avoid maintaining the instrumentation stack\nand manipulating the return addresses on the stack to call the entry /\nexit hooks. This Cl only addresses this for JITed code. In follow up\nCLs, we will extend this to others (native, nterp). Once we have\neverything in place we could remove the complexity of instrumentation\nstack.\n\nThis CL introduces new nodes (HMethodEntry / HMethodExit(Void)) that\ngenerate code to call the trace entry / exit hooks when\ninstrumentation_stubs are installed. Currently these are introduced for\nJITed code in debuggable mode. The entry / exit hooks roughly do the\nsame this as instrumentation entry / exit points.\nWe also extend the JITed frame slots by adding a ShouldDeoptimize slot.\nThis will be used to force deoptimization of frames when requested by\njvmti (for ex: structural re-definition).\n\nTest: art/testrunner.py\nChange-Id: Id4aa439731d214a8d2b820a67e75415ca1d5424e\n"
    },
    {
      "commit": "8cb989f1019c4fa30845bf2deb5bc996ed4e8966",
      "tree": "fa793ebd540cad757df2fbf8e91a00e1c111f024",
      "parents": [
        "3693b2ae3bac182f1e483738bae2cd80cad5dc3d"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Wed Oct 27 09:16:37 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 29 13:06:57 2021 +0000"
      },
      "message": "Revert \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Test breakage related to VarHandles e.g.\nhttps://ci.chromium.org/ui/p/art/builders/ci/angler-armv7-ndebug/2409/overview\n\nChange-Id: I0d3537cd0907866c628478fad1d77aff4ee65113\n"
    },
    {
      "commit": "d690f8ae8f8e2675bc52089a83ac18c749f8e6d2",
      "tree": "dac10b65d901cad87d6dbb7b48453f6da214a76f",
      "parents": [
        "e91a954ee350cbc0b311f342c90697191e1ae495"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 01 09:26:56 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 26 13:51:31 2021 +0000"
      },
      "message": "Inline across dex files for bootclaspath\u0027s methods\n\nWe can relax a bit the restriction for not inlining across dexfiles when\nwe are AoT compiling and we need an environment. There\u0027s an added new\nrestriction related to BSS entries. We could potentially inline across\ndex files for those cases too but are left to be solved in follow-up\nCLs.\n\nBug: 154012332\nTest: ART tests\nChange-Id: I5122b26c79b3e30d2643c0ccc05d595a0047953e\n"
    },
    {
      "commit": "2ca0900e98d826644960eefeb8a21c84850c9e04",
      "tree": "ba8a25622f6bee25817be41880ea01c345d9a2b1",
      "parents": [
        "44101a388089b4e23b284e1794eb475938a2f7ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 19 16:19:34 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 19 16:23:58 2021 +0000"
      },
      "message": "Revert \"JNI: Remove `JniMethodFast{Start,End}()`.\"\n\nThis reverts commit 64d6e187f19ed670429652020561887e6b220216.\n\nReason for revert: Breaks no-image JIT run tests (flaky).\n\nBug: 172332525\nChange-Id: I7813d89283eff0f6266318d3fb02d1257471798d\n"
    },
    {
      "commit": "64d6e187f19ed670429652020561887e6b220216",
      "tree": "0b7d39fd7d0a155786d84f23364313a7f63542a7",
      "parents": [
        "b37da9d4ffbc5ab42c41fcd60dc0dac6357ea13b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 14 09:32:01 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 19 13:25:55 2021 +0000"
      },
      "message": "JNI: Remove `JniMethodFast{Start,End}()`.\n\nInline suspend check from `GoToRunnableFast()` to JNI stubs.\nThe only remaining code in `JniMethodFast{Start,End}()` is a\ndebug mode check that the method is @FastNative, so remove\nthe call altogether as we prefer better performance over the\ndebug mode check. Replace `JniMethodFastEndWithReference()`\nwith a simple `JniDecodeReferenceResult()`.\n\nGolem results for art-opt-cc (higher is better):\nlinux-ia32                     before after\nNativeDowncallStaticFast       149.00 226.77 (+52.20%)\nNativeDowncallStaticFast6      107.39 140.29 (+30.63%)\nNativeDowncallStaticFastRefs6  104.50 130.54 (+24.92%)\nNativeDowncallVirtualFast      147.28 207.09 (+40.61%)\nNativeDowncallVirtualFast6     106.39 136.93 (+28.70%)\nNativeDowncallVirtualFastRefs6 104.50 130.54 (+24.92%)\nlinux-x64                      before after\nNativeDowncallStaticFast       133.10 173.50 (+30.35%)\nNativeDowncallStaticFast6      109.12 135.73 (+24.39%)\nNativeDowncallStaticFastRefs6  105.29 127.18 (+20.79%)\nNativeDowncallVirtualFast      127.74 167.66 (+31.25%)\nNativeDowncallVirtualFast6     106.39 128.12 (+20.42%)\nNativeDowncallVirtualFastRefs6 105.29 127.18 (+20.79%)\nlinux-armv7                    before after\nNativeDowncallStaticFast       18.058 21.622 (+19.74%)\nNativeDowncallStaticFast6      14.903 17.057 (+14.45%)\nNativeDowncallStaticFastRefs6  13.006 14.620 (+12.41%)\nNativeDowncallVirtualFast      17.848 21.027 (+17.81%)\nNativeDowncallVirtualFast6     15.196 17.439 (+14.76%)\nNativeDowncallVirtualFastRefs6 12.897 14.764 (+14.48%)\nlinux-armv8                    before after\nNativeDowncallStaticFast       19.183 23.610 (+23.08%)\nNativeDowncallStaticFast6      16.161 19.183 (+18.71%)\nNativeDowncallStaticFastRefs6  13.235 15.041 (+13.64%)\nNativeDowncallVirtualFast      17.839 20.741 (+16.26%)\nNativeDowncallVirtualFast6     15.500 18.272 (+17.88%)\nNativeDowncallVirtualFastRefs6 12.481 14.209 (+13.84%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 172332525\nChange-Id: I680aaeaa0c1a55796271328180e9d4ed7d89c0b8\n"
    },
    {
      "commit": "d95a1f2ecf322d21ae98bfb7affe0070ddb9bc08",
      "tree": "8fc5fe8370ec051289a34cde7bf3dc5fc7a1ca7f",
      "parents": [
        "507a729e51588f7fa4eac7579d54ce7c96804349"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 23 16:32:52 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 11 11:56:59 2021 +0000"
      },
      "message": "Inline IRT frame push/pop into JNI stubs.\n\nGolem results for art-opt-cc (higher is better):\nlinux-ia32                       before after\nNativeDowncallStaticNormal       25.704 26.839 (+4.414%)\nNativeDowncallStaticNormal6      23.857 25.086 (+5.152%)\nNativeDowncallStaticNormalRefs6  23.704 25.248 (+6.513%)\nNativeDowncallVirtualNormal      25.578 27.000 (+5.560%)\nNativeDowncallVirtualNormal6     23.704 24.925 (+5.153%)\nNativeDowncallVirtualNormalRefs6 23.704 25.074 (+5.870%)\nNativeDowncallStaticFast         100.65 149.13 (+48.17%)\nNativeDowncallStaticFast6        78.304 107.39 (+37.71%)\nNativeDowncallStaticFastRefs6    76.962 104.45 (+35.71%)\nNativeDowncallVirtualFast        100.40 147.28 (+46.69%)\nNativeDowncallVirtualFast6       79.302 106.34 (+34.10%)\nNativeDowncallVirtualFastRef26   76.617 103.29 (+34.82%)\nlinux-x64                        before after\nNativeDowncallStaticNormal       26.083 26.987 (+3.465%)\nNativeDowncallStaticNormal6      24.606 25.411 (+3.271%)\nNativeDowncallStaticNormalRefs6  24.150 25.086 (+3.877%)\nNativeDowncallVirtualNormal      25.743 26.812 (+4.156%)\nNativeDowncallVirtualNormal6     24.294 25.248 (+3.927%)\nNativeDowncallVirtualNormalRefs6 23.857 25.086 (+5.152%)\nNativeDowncallStaticFast         109.95 133.10 (+21.06%)\nNativeDowncallStaticFast6        90.274 109.12 (+20.87%)\nNativeDowncallStaticFastRefs6    87.282 105.29 (+20.63%)\nNativeDowncallVirtualFast        104.00 127.55 (+22.65%)\nNativeDowncallVirtualFast6       88.191 106.73 (+21.02%)\nNativeDowncallVirtualFastRef26   85.530 102.09 (+19.36%)\nlinux-armv7                      before after\nNativeDowncallStaticNormal       6.1148 6.3694 (+4.316%)\nNativeDowncallStaticNormal6      5.6845 5.9026 (+3.837%)\nNativeDowncallStaticNormalRefs6  5.4054 5.6022 (+3.641%)\nNativeDowncallVirtualNormal      5.4726 5.7088 (+4.316%)\nNativeDowncallVirtualNormal6     5.1789 5.3685 (+3.660%)\nNativeDowncallVirtualNormalRefs6 4.9140 5.0902 (+3.586%)\nNativeDowncallStaticFast         16.683 18.058 (+8.239%)\nNativeDowncallStaticFast6        13.951 14.896 (+6.770%)\nNativeDowncallStaticFastRefs6    12.279 13.006 (+5.919%)\nNativeDowncallVirtualFast        16.161 17.848 (+10.44%)\nNativeDowncallVirtualFast6       14.085 15.196 (+7.892%)\nNativeDowncallVirtualFastRef26   12.089 12.897 (+6.683%)\nlinux-armv8                      before after\nNativeDowncallStaticNormal       6.0663 6.4229 (+5.879%)\nNativeDowncallStaticNormal6      5.7252 6.0437 (+5.563%)\nNativeDowncallStaticNormalRefs6  5.3114 5.5814 (+5.082%)\nNativeDowncallVirtualNormal      5.8795 6.2651 (+6.558%)\nNativeDowncallVirtualNormal6     5.6232 5.9494 (+5.801%)\nNativeDowncallVirtualNormalRefs6 5.1862 5.4429 (+4.948%)\nNativeDowncallStaticFast         17.638 19.183 (+8.760%)\nNativeDowncallStaticFast6        14.903 16.161 (+8.438%)\nNativeDowncallStaticFastRefs6    12.475 13.235 (+6.094%)\nNativeDowncallVirtualFast        15.826 17.848 (+12.78%)\nNativeDowncallVirtualFast6       14.064 15.504 (+10.24%)\nNativeDowncallVirtualFastRef26   11.628 12.475 (+7.285%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 172332525\nChange-Id: I5ecfa7a661f08ab63dd2a75d666e1c1b9121935f\n"
    },
    {
      "commit": "9cc65df0146e05bda535991290f53b795a61a025",
      "tree": "b1ea41c26c54984a031c17abbc0c85e1195e4ca2",
      "parents": [
        "08a37a09da7992dde879cabb6a8deb3c9e78115c"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Sep 21 15:09:58 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Fri Sep 24 09:23:34 2021 +0000"
      },
      "message": "Drop unused arguments for MethodEntered function\n\nthis_object and dex_pc aren\u0027t used in MethodEntered listener.\n\nTest: art/test/run-test\nChange-Id: I158f962befe1015d21d08c757d4c415fe7865d16\n"
    },
    {
      "commit": "4f6bb446f8fbaa192f4e5b69734414c66d5e1bae",
      "tree": "c07c8cf278137c14fda476ed682968ee3c01c65f",
      "parents": [
        "beb9f2012587035a5c30d0eca8af458b2ad659b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 02 18:05:51 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 09 11:03:12 2021 +0000"
      },
      "message": "Remove palette hooks.\n\nMake the method be part of the official palette API.\n\nBug: 186016399\nBug: 185778652\nChange-Id: I3dc9e879c647fd63f5826091813613fd97e25c0d\n"
    },
    {
      "commit": "654f01cd509ca11eae22177d4e764f1241fb3a53",
      "tree": "d17db438be0691a5e4e6b4721b670530e336690e",
      "parents": [
        "028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 26 16:40:20 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 28 00:31:54 2021 +0000"
      },
      "message": "Fix lock visiting for synchronized native methods.\n\nThe `GetGenericJniSynchronizationObject()` function was used\nin the wrong context. As documented, it can be used only for\na method with a GenericJni frame and also on the top of the\nstack. When visiting locks, we can have a non-GenericJni\nmethod frame as well as a method deeper in the stack.\nReplace the wrong use with specialized code.\n\nTest: Added regression test to 178-app-image-native-methods\nTest: testrunner.py --host --debug --ndebug\nBug: 172332525\nBug: 189235039\nChange-Id: Ia26f0b980c04a766e31b1588a1c011bcf46c90d8\n"
    },
    {
      "commit": "e8efdaa09b7ff36d5a986f0320f29ac4a7563896",
      "tree": "5066cecab43006a7bf23f793aa911f74559c8017",
      "parents": [
        "ae553e0e1b26d95006aa27df4675104bfb55d49d"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 26 17:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 27 19:28:16 2021 +0000"
      },
      "message": "Revert \"Remove stack protector from some interpreter functions\"\n\nA performance regression was noticed in go/lem banchmarks for ART.  This\nis likely caused by the no_stack_protector attribute preventing inlining\ninto hot functions.\n\nReason for revert: performance regression\nReverted Changes:\nIe0c81f97f:Remove stack protector from some interpreter funct...\nIaf565a374:Reset stack guard after fork from Zygote\n\nBug: 168258494\nChange-Id: I018d58759c3a5bb624ea8e7fe09b6b49c9b19b6a\n"
    },
    {
      "commit": "abe7c69edb5ff8f9a4b8019d475caa2f35085aa7",
      "tree": "d8d86bf8c2264897eb9f7cf35be7c523f611688e",
      "parents": [
        "571a6bea24452e9b288106f379c7510c380a7f61"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 12 17:16:50 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Tue May 25 17:47:38 2021 +0000"
      },
      "message": "Remove stack protector from some interpreter functions\n\nThis CL removes stack protection from several functions in the\ninterpreter to allow us to re-set the stack protector cookie when new\nprocesses fork from any of the zygotes.\n\nTest: boot\nTest: atest KeyboardVisibilityControlTest\nBug: 168258494\nChange-Id: Ie0c81f97fedfcdde7afc1b6b4befa65524724194\n"
    },
    {
      "commit": "8ffaef9fbd1dc5194dbdcd3405360f8eb1e47a9e",
      "tree": "b73775bad6edbc0884225f40246aee72a2f18e76",
      "parents": [
        "022f9e555bbad95b3e8699731ca5455151dfca8a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 12:51:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 14 08:22:44 2021 +0000"
      },
      "message": "Remove BUILDING_LIBART macro.\n\nIt has been used only to prevent including the libart header\n`runtime_asm_entrypoints.h` when compiling other targets.\nInstead make symbols in that header hidden so that using\nthem from other targets shall yield a link time error. (This\nis somewhat pointless because the header defines only inline\nfunctions but the actual entrypoint symbols defined in\nassembly are already hidden anyway.)\n\nThis change adds the symbol visibility macros `HIDDEN` and\n`EXPORT` which were originally included in the reverted CL\n    https://android-review.googlesource.com/1137699 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 186902856\nChange-Id: Ia9fed6b3f49d7356888d702f4ad3bb48e5884793\n"
    },
    {
      "commit": "ec06809b9fb7d4a0d2c3e46066bd37034130e53b",
      "tree": "c3a69b142e38d249a01ed425cde23caa78c1d36c",
      "parents": [
        "1651c6050d913fb38ebd293df9da6d189eb3851d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 17:28:32 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 07:38:39 2021 +0000"
      },
      "message": "Reland \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 39d4df62d4e2606073d05cc363370db825ad7b9f.\n\nReason for revert: fix JIT-zygote issue.\n\nTest: JIT zygote boots.\n\nChange-Id: I895ad8e59e472fb662ca9bc5394c2fd9c6babc74\n"
    },
    {
      "commit": "39d4df62d4e2606073d05cc363370db825ad7b9f",
      "tree": "8e4cf0ac432406081d11e9102981446498b3265b",
      "parents": [
        "a28c827fdb58ec489931d6e70e27818619bc1b75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 12:22:47 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 14:41:25 2021 +0000"
      },
      "message": "Revert \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 5024ddfd125b5c3b59d7f359ae33cf7f0255b048.\n\nBug: 187408838\n\nReason for revert: b/187408838\n\nChange-Id: If74f5ddbacc73296f66c55762e2a8d1ec2cd1f19\n"
    },
    {
      "commit": "5024ddfd125b5c3b59d7f359ae33cf7f0255b048",
      "tree": "b625ed5aa1c4976e4cd2de5732543d5d1eb34a0f",
      "parents": [
        "5859b689d4fdd36711187715c04e2e095f7975c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 14:42:09 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 06 10:37:17 2021 +0000"
      },
      "message": "Devirtualize to HInvokeStaticOrDirect.\n\nWhen we statically know the target method, devirtualize an\nHInvokeInterface or an HInvokeVirtual to a HInvokeStaticOrDirect.\n\nTest: test.py\nBug: 182538502\nChange-Id: Ie3a58603cde300fca9ca4972d4dfbbd20918f5ba\n"
    },
    {
      "commit": "c3db254375df1f1459ac83cbf54b3eee92b138bd",
      "tree": "e6262127c6f4215ac0fffb98690b33f05daa7f9b",
      "parents": [
        "0349b152f29a286d7365f17d0b21d735c71c39e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:50:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 27 13:04:54 2021 +0000"
      },
      "message": "Revert^2 \"Add hooks in palette for reporting JNI invocations.\"\n\nTest: test.py\nBug: 140968481\n\nChange-Id: I3ebbec153040b9bcfe4fb86618c15d2f9c93abb6\n"
    },
    {
      "commit": "4501517c28357189f60f05494facc7e6ba2a8513",
      "tree": "2c12fb101942d86dd70262948dce31d7d8580bf3",
      "parents": [
        "a9fed15c697d67bfbd2131d090a876145ad33910"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 13:41:09 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:49:27 2021 +0000"
      },
      "message": "Revert \"Add hooks in palette for reporting JNI invocations.\"\n\nRevert \"Add JNI headers to palette dependencies.\"\n\nRevert submission 1678069-palette-jni\n\nReason for revert: Overhead of GetHooks call.\nReverted Changes:\nI909fc720f:Add hooks in palette for reporting JNI invocations...\nI5f036e5c0:Add JNI headers to palette dependencies.\n\nChange-Id: I327ae5f0e6e63f618d2e4cf08b7c4926071cb8ce\n"
    },
    {
      "commit": "511392f151143f7d8bf2f82d5201ffa6d5d051de",
      "tree": "90b099b337432e8671f47c8eac6b1d5021db3293",
      "parents": [
        "ae3aa6ca3e1bb29845da8844ab72ae2dc76d7793"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 13:27:20 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 16:04:21 2021 +0000"
      },
      "message": "Add hooks in palette for reporting JNI invocations.\n\nTest: test.py\nChange-Id: I909fc720fe5b891da6919fe20ad162ec12524f02\n"
    },
    {
      "commit": "34ce1b8a86f1be2142f019ab291b7445db5c4305",
      "tree": "9dada63c4a13a8421ad0199118930fe60fea9047",
      "parents": [
        "a718d6450feae9ee6b5de96407c8e44afbf173e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 12:11:31 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 15:01:39 2021 +0000"
      },
      "message": "Clean up transitions in JniMethodEnd.\n\nGoToRunnable() is never called for @FastNative, so\nwe can remove the path that calls GoToRunnableFast().\n\nAdd a call to GoToRunnableFast() for @FastNative in\nGenericJniMethodEnd().\n\nThis is a follow-up to\n    https://android-review.googlesource.com/1620969\nthat cleaned up JniMethodStart but missed similar\nopportunity for the transition back to Runnable from\nvarious JniMethodEnd methods.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172332525\nChange-Id: Ia519bfc6ea50c1b65241041a3af8b7d4b1027f77\n"
    },
    {
      "commit": "68e8a7c0a96d941bf08956dd0d8d83c282d0af9f",
      "tree": "39483f0575738b39ef7cad3efa267da8efd3ead9",
      "parents": [
        "c2f46939d8c046dfc8e954ac1bec6d61b0f061ae"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 05 08:40:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 09:15:07 2021 +0000"
      },
      "message": "Clean up JniMethodStart().\n\nAfter we have clarified that @FastNative methods cannot be\nsynchronized and starting enforcing it in\n    https://android-review.googlesource.com/1518545\nwe can clean up JniMethodStart() and remove the check for\n@FastNative (though we keep a CHECK in debug builds).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172332525\nChange-Id: I1466dbca3b22524b8cc72db79bf583d64d32c7bf\n"
    },
    {
      "commit": "c714f40caec532522ecc5e611b15e857b3b65484",
      "tree": "598daf5db137ae9bceab4e676c72c724d180d251",
      "parents": [
        "17b4d2b14fd26088bca195b5d7c48f26b8b545d8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 04 14:24:38 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 12:07:49 2021 +0000"
      },
      "message": "Fix crash on error paths from GenericJNI trampoline.\n\nTest: Added a regression test to 178-app-image-native-method\nTest: testrunner.py --host --optimizing -t 178-app-image-native-method\nBug: 181736463\nChange-Id: Ib98d6d58ce1fb8287c32f88fda0f83b7e21ef42d\n"
    },
    {
      "commit": "0eebdcc511364a9ade5290507d446f41cf256fbe",
      "tree": "fde6e4e7ce9dd1b2e1028cd2aee63e428f05a902",
      "parents": [
        "0a73762a454abc961a6fcf0e27df00586c5f13e1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 09:34:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 15:42:43 2021 +0000"
      },
      "message": "Fix jclass read barrier in GenericJNI.\n\nThe GcRoot\u003c\u003e::Read\u003ckWithReadBarrier\u003e() does not update\nthe GcRoot\u003c\u003e::root_ which we need to do.\n\nTest: m\nBug: 172332525\nBug: 181249330\nChange-Id: I9886c6f23339e39588c885d7b1e2557abae8d027\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": "5de5efef38f52f248d1e1c88fdcf3d211aabe712",
      "tree": "fb991b4dbee4d9afecad141bc75dab14893633a1",
      "parents": [
        "18af6447e5963265f6e7e61d6630064f66891f94"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 15 21:23:00 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 18 16:51:21 2021 +0000"
      },
      "message": "Remove pointer-size arguments from DexCache.\n\nThe DexCache is always allocated at runtime now and thus\nit always has runtime pointer-size. Remove the dead code.\n\nTest: m test-art-host-gtest\nChange-Id: Ic21dc20649e1fd70f8981602d75b5690065aec20\n"
    },
    {
      "commit": "a746c63b5e68d94f807416d504a6249c3e044c82",
      "tree": "6c2a609a8ced583caaf9ff290628f07db5f827d6",
      "parents": [
        "6df4511a2cf9ffae0294c1e5136c27ff84cfd1cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 12 15:19:38 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 10:52:12 2021 +0000"
      },
      "message": "Remove unsed artLookupResolvedMethod.\n\nTest: test.py\nChange-Id: I9485105760a4c3eab1e542a99ea617f3e0b4d0b1\n"
    },
    {
      "commit": "d5a8695394f8f6e8f9a66752441623dc31b97660",
      "tree": "591ac4892304365282a57262c91e1945ac94c6a9",
      "parents": [
        "2fb37411e42455a00fdad90f0e612c3214e5bd1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:35:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:07:57 2021 +0000"
      },
      "message": "Reland \"Improve invokeinterface for nterp.\"\n\nThis reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4.\n\nBug: 177554973\nBug: 112676029\n\nTest: test.py\nTest: 815-invokeinterface-default\nTest: enable text-to-speech on device, no crash\n\nReason for revert: Fixed issue with recursive default methods\n\nChange-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a\n"
    },
    {
      "commit": "47213e4e3773bfca0348b011831eaaa678cd0791",
      "tree": "822391d79730b46edc76ffd80604ba3eba56aec0",
      "parents": [
        "98873affc25ef6bc96f8c65f828f28530b8f3fcd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 30 15:12:00 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 17:00:34 2021 +0000"
      },
      "message": "Small cleanups in artInvokeInterfaceTrampoline\n\n- No need to do a conflict table lookup when the passed method is\n  already the interface method.\n- Remove obsolete test that the IMT entry is indeed a conflict entry.\n- Only call QuickArgumentVisitor::GetCallingMethod when needed.\n\nTest: test.py\nBug: 112676029\nChange-Id: I2d5da474ba3e8e4ad559fc7c13a19b04f4c2a515\n"
    },
    {
      "commit": "4ebb99c2ecdd64b2364a44c4925b76f4bfa5d293",
      "tree": "f3dafd590ba11ef7b08207341c7dead7c866fc67",
      "parents": [
        "755b533082bb84a282f4a76ac3f6364a7c61e6cd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 15:13:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 18:19:15 2021 +0000"
      },
      "message": "Fully honor the \"WithChecks\" in the alloc entrypoints.\n\nTest: 800-smali\nTest: 600-verifier-fails\nChange-Id: I80b2c58c5cd9a2fe63475aba15b0645e0503b358\n"
    },
    {
      "commit": "4b9f86bd04a905e6ee6eaf5363b0967315136096",
      "tree": "f3c15cd3ccefcc684541bb4bac0c889bff35420a",
      "parents": [
        "30864176620fbfc58f93ea58bfbacdd28f75b2c8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 13 16:37:19 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 14 04:39:31 2020 +0000"
      },
      "message": "Cyclic-includes should be avoided\n\nA file including itself is generally not considered a good idea and\ncan confuse tools such as IWYU.\n\nChange-Id: I71b07fa1503588917ab62ea383833dacd53bf8f2\nTest: Treehugger\n"
    },
    {
      "commit": "8d34a182fea1b24f7b8361b55e930cb953cf3fb2",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "8ecbc4e844fc3b73e6a5c5151eda914d53297180"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 16 09:46:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 08:32:52 2020 +0000"
      },
      "message": "Change interface conflict stub to take the interface method.\n\nTo avoid doing dex cache lookup, pass the interface method instead. This\ncosts a few hundred KBs on speed compiled APKs (\u003c 0.5% code size), but\nimproves performance when hitting a conflict (as seen on dogfood data).\n\nFor nterp, we currently pass the conflict method instead of the\ninterface method. We need to handle default methods before optimizing\nit.\n\nThis removes our last use of dex cache in compiled code. A follow-up CL\nwill remove the NeedsDexCacheOfDeclaringClass from HInvokeInterface.\n\nTest: test.py\n\nChange-Id: I3cdd4543ad7d904b3e81950af46a48a48af6991a\n"
    },
    {
      "commit": "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa",
      "tree": "6e9bbf5ad71a55f701f740e2995e0b84e9b87307",
      "parents": [
        "7aa2bfc09541ea5d2516738de84c24cd0269fed0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:10:28 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:58:32 2020 +0000"
      },
      "message": "Faster access to unresolved classes from compiled code.\n\nAdd two new load kinds to LoadClass, similar to kBssEntry\nbut using the access-checking entrypoint on the slow-path.\nOne is used for classes that are in the literal package and\nthe other for classes outside the literal package of the\ncompiling class. Associate new .bss entries with these load\nkinds and update them from entrypoints based on the resolved\nclass properties. If the resolved class is public, both\ntypes of entries can be updated, otherwise only the package\nlocal entry can be updated and only if the defining class\nloader of the class is the same as the caller\u0027s defining\nclass loader (which is identical for all code in an oat\nfile) because the run time access check for same package\nrequires both class loader and literal package name match.\n\nTest: Additional tests in 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 161898207\nChange-Id: I281e06ac2825caf81c6d7ee3128af833abd39992\n"
    },
    {
      "commit": "1de6f018f6601a11ab32ca05d7ac4f4547d31e53",
      "tree": "1d8e5bd665b7c1d46964c7305ef87a8f8193f8b5",
      "parents": [
        "199f2ecd9e8c915d93d365e12405f7d6a1d5d924"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 13:28:00 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 29 08:07:34 2020 +0000"
      },
      "message": "Another fix for the resolution trampoline and invokesuper.\n\nWe need to fully resolve the target method before updating the BSS.\n\nTest: 811\nBug: 169047229\nChange-Id: I2f3a6d60e3e44b00daea4af15c02b55e1c9098d6\n"
    },
    {
      "commit": "25b9c7da44cd4652aa2ba26aa105509a6d035632",
      "tree": "b11d09d13e3d3c29d9782ab9b7f8521bc58747e8",
      "parents": [
        "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:34:34 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 24 08:26:53 2020 +0000"
      },
      "message": "Don\u0027t store copied methods in BSS.\n\nOtherwise, we can end up in a state where the method on the stack is\nunrelated to the receiver.\n\nAlso fix a comment related to GetCanonicalMethod and\nStackVisitor::ValidateFrame.\n\nTest: 810-checker-invoke-super-default\nChange-Id: I3030e4af6059f7a4a7a1f046f2aabae8ce9057da\n"
    },
    {
      "commit": "1fef877c66f066f01653ea98bfefe29304198193",
      "tree": "65561c8b15844cabe32728b61d1e5d586976acf3",
      "parents": [
        "a41ea2708d143b5982f1969864513b62706d11d4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 09 13:57:17 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 13:20:58 2020 +0000"
      },
      "message": "Handle more cases of super calls in the compiler.\n\nAdd support for calling super methods that are not referenced within the\ncompiling dex file.\n\nTest: 808-checker-invoke-super\nTest: 809-checker-invoke-super-bss\nChange-Id: Ib103f818ac8b612a79b6b18cc8eda81131bb3149\n"
    },
    {
      "commit": "b839c49e524dd59bb0e0063ddfaa9185ad1b90d8",
      "tree": "0b69235a0c719058df466c0d071ffb7bf20bc18e",
      "parents": [
        "43d57558bafccff3ec3c5aecb201d7a8a57b2435"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 14:08:43 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 16:02:11 2020 +0000"
      },
      "message": "Use the resolved method of an invoke super when updating BSS.\n\nThe compiler uses the dex index of the resolved method and not of the\noriginal invoke-super instruction.\n\nIssue found by timmurray@.\n\nTest: 809-checker-invoke-super-bss\nTest: test.py\nChange-Id: Ia422d64a91bbb0db117b7296b4a551ae2ba92fbd\n"
    },
    {
      "commit": "d5bcc7288a15cdb823c1226873f72291b281cdbb",
      "tree": "14333f8f6f1a9800550ee2a6533d042bfefbd02c",
      "parents": [
        "43d7c65d8ff3097122acf9fcb4c45ae6ccd71f3a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 19:53:41 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 20:29:26 2020 +0100"
      },
      "message": "More inclusive language updates\n\nBased on:\n  https://source.android.com/setup/contribute/respectful-code\n\n#inclusivefixit\n\nBug: 161336379\nBug: 161896447\nTest: m (comment updates only)\nChange-Id: I0e31cebc961f9caf0aa7b48da4b1b86998e42cb5\n"
    },
    {
      "commit": "6aaa49dd4a3467e8d05aee4a1de9753e896ee96b",
      "tree": "593e79da914087e991ad0a6d0421962806485e04",
      "parents": [
        "72e27b0b29fd1bdea6747f62c5bd865d26a0bdcd"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 15:53:04 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 16:40:36 2020 +0000"
      },
      "message": "Inclusive language fixes\n\nBased on:\n  https://source.android.com/setup/contribute/respectful-code\n\n#inclusivefixit\n\nBug: 161336379\nBug: 161896447\nTest: art/test.py --host --64\nChange-Id: I02c96aa477c4be6af8384222f1f111cc7ae1eeac\n"
    },
    {
      "commit": "346fd964a826cfb5626582452b7519c04aee2f8a",
      "tree": "49fb6cf2ab865391ba4027389b0049474df38c7b",
      "parents": [
        "d3ee902ed06b635eedebc796543a67299eb6cd05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 27 16:51:00 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 28 11:13:37 2020 +0000"
      },
      "message": "More inclusive language in the runtime\n\nTest: m\nBug: 161896447\nBug: 161850439\nBug: 161336379\nChange-Id: Iabc29fa43b4b5a403699d6bca95e9a2cb8945d77\n"
    },
    {
      "commit": "86c8752f64629325026945cd4eabd1dcea224acb",
      "tree": "9dc2be978f9e784a3ce16fa29d46941a94ac1c94",
      "parents": [
        "f97a859e85f703644d897f0e3e1bc54315557aaa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 11 16:55:55 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 08:26:46 2020 +0000"
      },
      "message": "Direct calls to @CriticalNative methods.\n\nEmit direct calls from compiled managed code to the native\ncode registered with the method, avoiding the JNI stub.\n\nGolem results:\nart-opt-cc                       x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +12.5% +62.5% +75.9% +41.7%\nNativeDowncallStaticCritical6 +55.6% +87.5% +72.1% +35.3%\nart-opt                          x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +28.6% +85.6% +76.4% +38.4%\nNativeDowncallStaticCritical6 +44.6% +44.6% +74.6% +32.2%\n\nTest: Covered by 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: testrunner.py --target --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use -t 178\nTest: aosp_cf_x86_phone-userdebug boots.\nTest: aosp_cf_x86_phone-userdebug/jitzygote boots.\nBug: 112189621\nChange-Id: I8b37da51e8fe0b7bc513bb81b127fe0416068866\n"
    },
    {
      "commit": "396198b6bd6635fff52091131ca5be94cfab1d74",
      "tree": "5f49cc86258bbde5913420c1cb0cc009a8eb456a",
      "parents": [
        "0d60a2b1eaa2cd2ec3481e49578b77405353efa1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 16 12:02:45 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 18 15:07:22 2020 +0000"
      },
      "message": "Handle unresolved field type in compiler.\n\nMake behavior consistent with interpreter, by only resolving field types\nwhen the stored value is not null.\n\nNote that this differs from RI behavior which throws a\nNoClassDefFoundError when loading the BadField class.\n\nBug: 79751666\n\nTest: 173-missing-field-type\nChange-Id: I1e584f3129fd651bee1c9635c90bc30e13190a90\n"
    },
    {
      "commit": "50df0c4c892b9afff626605fff36c9e476eb5bfd",
      "tree": "cd53db9dea1bbbf696a41aec59ab5195ce5397f2",
      "parents": [
        "4c0451428cfb4d54497e425a777b7b4c5ad3bbaa"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 10:14:35 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 08:35:04 2020 +0000"
      },
      "message": "Adjust code lookup logic in artQuickResolutionTrampoline.\n\nCheck whether the method needs to be run through the interpreter after\nfetching the code we want to run.\n\nTest: test.py\nBug: 156236098\n\nChange-Id: I95c774b1955261a812a93c4c0e3915275c5014a8\n"
    },
    {
      "commit": "6217fc20d342b62ae5d2f88896984339d1bddb34",
      "tree": "51f1a57c9ab69fe07c00152cf2686b249e5325be",
      "parents": [
        "b708fc1f100c7c238970ded7f1d5cb7c4da987b1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 21 11:59:11 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 21 15:13:58 2020 +0000"
      },
      "message": "Fix calling instance methods of erroneous classes.\n\nFix the resolution trampoline to correctly handle the edge\ncase of calling instance methods on instances of erroneous\nclasses. The new test case would have previously failed the\n`CHECK_EQ(code \u003d\u003d nullptr, self-\u003eIsExceptionPending())`\nbecause the trampoline would not retrieve the code pointer\nfor the direct method of an erroneous class.\n\nTest: Added test to 174-escaping-instance-of-bad-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 62478025\nChange-Id: Idf54a010f362c6f581a4c4aa27c33b6dc3ce6f69\n"
    },
    {
      "commit": "c4b83106ccc80074045588a6e94700f42e377fb5",
      "tree": "555f4ce0d9784617ad3cc346203a88588e0cdfd1",
      "parents": [
        "4fc75697d88550df7dd2e3799ced2f01df60772b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 21 10:07:31 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 21 12:00:27 2020 +0000"
      },
      "message": "Do not update method\u0027s entrypoint in resolution trampoline.\n\nFor correctness, the entrypoint cannot be updated until the\nclass is visibly initialized and this is already handled by\nClassLinker::EnsureInitialized(), both ensuring that the\nclass eventually becomes visibly initialized and updating\nstatic method entrypoints when it does.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 18161648\nChange-Id: Iee574b0f736e79620456f9e6ef31b50b5cfc58c8\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "b6f4c79b06bb97651a7be1ac828d18ed18356603",
      "tree": "ef0bbb1281f6d4785e60f26cb420646c83eb6f6d",
      "parents": [
        "3971661c74a9b4635d9744f72f3b053c820067c9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 04 15:37:29 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 08:05:24 2020 +0000"
      },
      "message": "Clean up Constructor/Method/Field 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: Ib5cd60c003d2ad3e6a246ff86d6b9288428c60ee\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": "d8fd59974472bcf0bb0ed86778e555bdb09d0b1e",
      "tree": "eee92a307fa0a0405eb5f9302ff4a748e5342544",
      "parents": [
        "e1ee6f97e35c4798e532171213f4e2b50260e525"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 22:25:19 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 17:03:24 2020 +0000"
      },
      "message": "Reland^2 \"Add consistency CHECKs around ArtMethod fields.\"\n\nThis reverts commit 5945de03b6f6b35bcf6a575b2291e29ae7a2b1ee.\n\nReason for revert: CL can land now after\nhttps://android-review.googlesource.com/c/platform/art/+/1246288\n\nBug: 146765723\nChange-Id: I237b1e171d94d47a39b21ec8b33cffa0b087b285\n"
    },
    {
      "commit": "5945de03b6f6b35bcf6a575b2291e29ae7a2b1ee",
      "tree": "41b6e3ec202b198a2d55aedfd8181b9aa6b0555d",
      "parents": [
        "761ee217562c6c9615af0b73df137ecadcaca303"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 16:23:01 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 19 22:06:09 2020 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add consistency CHECKs around ArtMethod fields.\"\"\"\n\nThis reverts commit f994025d8ebc8ef63d2083436daffc7f94363c80.\n\nReason for revert: Still hitting the failure.\n\nBug: 146765723\nChange-Id: Ie07300e9d2e605cd0281fb313d017680e77e8740\n"
    },
    {
      "commit": "fa458ac21af98b3bdde2c62ed86b9c192b994372",
      "tree": "5fa7543c9fd5edd0e950b19a70412002e10bba47",
      "parents": [
        "99d91d18f9f73427eced2f22642520d50c3c3b83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 14:08:07 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 19 16:08:34 2020 +0000"
      },
      "message": "Allow late lookup for @CriticalNative methods.\n\nTest: Add and enable tests in 178-app-image-native-method\nTest: Add and enable tests in jni_compiler_test\nTest: Manually step through the new stub in GDB and check\n      that backtrace works at various points.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 112189621\nChange-Id: If094e5062acbb99eefa88f2afb4815f93730cb82\n"
    },
    {
      "commit": "f994025d8ebc8ef63d2083436daffc7f94363c80",
      "tree": "e91c8b1beb52459d933bef97a2bef76587dcd3f8",
      "parents": [
        "2925311f957f50bbec2b034c98877d22f702ee76"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 06 16:23:15 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 17 15:31:37 2020 +0000"
      },
      "message": "Revert \"Revert \"Add consistency CHECKs around ArtMethod fields.\"\"\n\nThis reverts commit eeae32ba02c7d3785a8d195e967febfaa0b1113b.\n\nBug: 146765723\n\nReason for revert: Change can now land after:\nhttps://android-review.googlesource.com/c/platform/art/+/1236946\n\nChange-Id: I082c1cd20b8af4f83a5c7bb7853badcbe2ecb38b\n"
    },
    {
      "commit": "2925311f957f50bbec2b034c98877d22f702ee76",
      "tree": "31c6bd25134b287622c9998e016606ab2d84607b",
      "parents": [
        "f8f51c9697b1f2a41ea750703087e98c46402f08"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 17 09:40:14 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 17 14:09:02 2020 +0000"
      },
      "message": "Prevent entering IMT conflict trampoline with j.l.Object methods.\n\nThis ensures that only interface methods enter the trampoline.\n\nTest: 725-imt-conflict-object\nChange-Id: Id730d921f213ee0f6d927dea5df69d57be431df0\n"
    },
    {
      "commit": "41b605c5ad4b06ea127ac56c6e3a4c92e8913efd",
      "tree": "f7b28eb11051f3faada99c11dc594cccd34a5786",
      "parents": [
        "30b38f8d01cdb4c80092638f23c61d73e0d287f4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:52:22 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 14 12:01:58 2020 +0000"
      },
      "message": "Remove MIPS support from runtime/.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: If1fc8be94caa69f734438d7a1f4c715addfd8876\n"
    },
    {
      "commit": "6e043bbc1d9abd1d1d3247040f6cdc82a79f47be",
      "tree": "02470465a0426e02d15525e171c6b3bbef3d60a6",
      "parents": [
        "ac5ae3cf5dc4c5f87293c45a1d6999f8d1515b39"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 10 16:56:54 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 13:21:28 2020 +0000"
      },
      "message": "Rewrite GenericJNI frame setup.\n\nMove the handle scope out of the managed frame, move the\nregister values to load to the bottom of the reserved area\nand pass the hidden argument to @CriticalNative methods to\nprepare for implementing late lookup.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interp-ac\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --interp-ac\nBug: 112189621\nChange-Id: I4672176f9627bcbebafebb3dda0d02b8108e1329\n"
    },
    {
      "commit": "5c33d35bf3bd0d824e94784312fe3ddb823028d1",
      "tree": "a6056e5f6a9009da93355dd00fd73caf66f1f6fc",
      "parents": [
        "b5a78564d66c903c0073e429d71241be60f51bdf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 10 12:29:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 10 15:48:15 2020 +0000"
      },
      "message": "Reinstate exception check in GenericJni stubs.\n\nThe error check was erroneously removed in\n    https://android-review.googlesource.com/1178884\nwhere we removed the native method lookup from the\nartQuickGenericJniTrampoline(). As the locking is now the\nonly remaining operation that can fail, update the comment\nfor the check. Regression test would be rather difficult to\nadd as we would need to force OOME during lock inflation.\n\nAlso clean up unlocking code in GenericJniMethodEnd().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nBug: 112189621\nChange-Id: I598d5f86a58c0b6171f0b2528504aba495f1b6d8\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": "2f78a9cbfab14126c21430f1abad40d32ad92156",
      "tree": "57bddd01249e03d96326499babe4231275ed7bf5",
      "parents": [
        "2c5b48da62da3259a17cf9fab260e2e7f91c8d27"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 17 15:53:42 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 22 13:46:22 2020 +0000"
      },
      "message": "Revert^2 \"Improve stack unwinding during gcstress tests.\"\n\nThis reverts commit 47d2947967e301b7a1f9d3d01ad8953cea8a52c7.\n\nReason for revert: Reland after timeout issues disappeared.\n\nBug: 142039427\nChange-Id: Id563c79b4a9e58b5bcfeafc35ef807b173af54e3\n"
    },
    {
      "commit": "2f4942879da18c9789800878b0e5eb87fbedb7b0",
      "tree": "b14968d70ac2f623f980207b4afad64806470994",
      "parents": [
        "0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:53:09 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 17:31:43 2020 -0800"
      },
      "message": "Revert^2 \"Remove finalizable restriction on structural redefinition\"\n\nThis reverts commit 0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3.\n\nDaemon shutdown is known to be somewhat flaky. That seems to be the\ncause of this failure.\n\nReason for revert: Removed Daemon threads from tests 2006 \u0026 2007.\nBug: 134162467\nTest: % ./art/test/run-test --create-runner --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni --debuggable --runtime-option -Xopaque-jni-ids:true --64 2007\n      ...\n      Runnable test script written to /tmp/allight/test-230585/runit.sh\n      ...\n      % ./art/tools/parallel_run.py -j80 /tmp/allight/test-230585/runit.sh --out failure.txt\nTest: ./art/test/run-test --create-runner --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni --debuggable --runtime-option -Xopaque-jni-ids:true --64 2006\n\nChange-Id: I392a2936995dd05b08feea36f11b616c1548ae46\n"
    },
    {
      "commit": "0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3",
      "tree": "92e88de49a2e79c2a00ce8990e412febc81e5318",
      "parents": [
        "93be70effba70b78596fc4bda6b583615c3b6d0c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:51:03 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:51:55 2020 +0000"
      },
      "message": "Revert \"Remove finalizable restriction on structural redefinition\"\n\nThis reverts commit 55d6fa4c352a1fadbd21b8d8e0929833e547b9e5.\n\nBug: 134162467\nTest: None, pure revert.\nReason for revert: Flaky segvs across multiple configurations.\n\nChange-Id: Iaa8ec6cbd2eee141e271cd3a56a1b6be8bbb3a7c\n"
    },
    {
      "commit": "55d6fa4c352a1fadbd21b8d8e0929833e547b9e5",
      "tree": "2f84bbe0ee1129aa754a30603269e34656b30f07",
      "parents": [
        "65c18a21e7cb0d48327788df498f15ae195e9e3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 20 12:58:14 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 19:43:10 2020 +0000"
      },
      "message": "Remove finalizable restriction on structural redefinition\n\nPreviously we restricted performing structural redefinition of classes\nwith finalizers. We did this because we need to be careful that\nfinalizers are not run on any obsolete objects and are run on the\nreplaced objects. This fixes these issues and removes the restriction.\n\nNote that the objects of classes that were initially non-finalizable\nand then redefined to be finalize able will never be called. This is\n(technically) compliant with the spec and avoids issues around safely\ncreating finalizer references. See comment in ti_redefine.cc for more\ninformation.\n\nTest: ./test.py --host\nBug: 134162467\nChange-Id: I51d4de3d15833dce989cd1e44c32b0e6a57f063a\n"
    },
    {
      "commit": "eeae32ba02c7d3785a8d195e967febfaa0b1113b",
      "tree": "d7e7a1b09460db0f9b359d582602300a25570a26",
      "parents": [
        "066dd902930582873e7d9372ac0c8483ac700cb9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Dec 28 00:53:50 2019 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Dec 28 02:25:26 2019 +0000"
      },
      "message": "Revert \"Add consistency CHECKs around ArtMethod fields.\"\n\nThis reverts commit 382df393c684c6a5f3856365177da715880d7f08.\n\nReason for revert: Fails for test BuzzBeepBlinkTest on x86\n\nBug: 146765723\nChange-Id: If86c07959969a831ab5b24681e70c85d3c59c1fd\nTest: TH\n"
    },
    {
      "commit": "c9af14e93f6a2691bf8231752d8d7c3e41b14c76",
      "tree": "e56dcf999630a752cd955a06c7f4c00b7add290b",
      "parents": [
        "80777ed308b965175223455d738c890618a008b5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 12 09:51:38 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 18 23:00:11 2019 +0000"
      },
      "message": "Add comment \u0026 refactor check for Obsolete class in FindFieldFromCode\n\nAdd a comment explaining why we need a check for a class not being an\nobsolete class in FindFieldFromCode. It is needed since if we\nstructurally redefine a class that is in the middle of running its\n\u003cclinit\u003e or \u003cinit\u003e function the classes final fields will be set from\na function with the obsolete class as its declaring-class.\n\nAlso refactor the code a bit to put this logic in ArtField.\n\nTest: None\nChange-Id: I9ebb0c89568b9d8e5a60d44c982584b174370eef\n"
    },
    {
      "commit": "013d1ee96b928f3bda9031e94d4a69f827133ce6",
      "tree": "4e374c043330f123dc3888922b554fd1291349b4",
      "parents": [
        "9ca8b2bf46978e3a5698f8a27b48aa7eff3514df"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 16:18:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 09:43:08 2019 +0000"
      },
      "message": "Introduce the notion of an nterp frame.\n\nSee comments in nterp_helpers.cc. An nterp frame follows the\ncalling conventions and exception handling of the compiler. There are\nno ManagedStack transitions, and the compiler and interpreter can\njust call each other directly.\n\nFor the stack walker, an nterp frame looks like a compiled frame.\n\nThis CL introduces an nterp frame, another CL will contain an\nimplementation for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie9b691f58908b7f283b4cd63b84b651526155d27\n"
    },
    {
      "commit": "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": "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": "a59af8aeaad8fe7d68d8f8de63eab9cf85b6ab31",
      "tree": "83195c74b135731cc4555254763a8f449691c1b0",
      "parents": [
        "5c8cc64b5f1580faf510f27527e7e22987174963"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 17:42:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:32:09 2019 +0000"
      },
      "message": "JIT baseline: trigger optimized compilation on hotness threshold.\n\n- Add a new hotness count in the ProfilingInfo to not conflict with\ninterpreter hotness which may use it for OSR.\n- Add a baseline flag in the OatQuickMethodHeader to identify baseline\ncompiled methods.\n- Add a -Xusetieredjit flag to experiment and test.\n\nBug: 119800099\nTest: test.py with Xusetieredjit to true\n\nChange-Id: I8512853f869f1312e3edc60bf64413dee9143c52\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": "08d0984bfeaff1a1bc2db2d51ecf45f2867b3bc4",
      "tree": "3c8c47aae746f4057d541448f873d6e287a092d6",
      "parents": [
        "2d8b7f4ef7a305b98dd54d259e0c2b9f6aed4fd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 12:38:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 15:44:20 2019 +0000"
      },
      "message": "Allow late lookup for @FastNative methods.\n\nAvoid failing a runtime state assertion.\n\nTest: Enable tests in 178-app-image-native-method\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 112189621\nChange-Id: I3eb5c9fd239743732866e8ea0863a84bf85f7b20\n"
    },
    {
      "commit": "e2a3aa988630b3c2952ac44943f03dde60454195",
      "tree": "acee7012af6e2b161c91e6cd8b7b4d12eb5aa927",
      "parents": [
        "a2c4d61e482a15974e3e220bcd62a64043ee536f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 25 17:52:58 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 14:04:43 2019 +0000"
      },
      "message": "Baseline JIT: update inline caches in compiled code.\n\nIn trying to remove profiling from interpreter, to speed up\ninterpreter performance.\n\nBug: 119800099\nTest: test.py --baseline\nChange-Id: Ica1fa41a889b31262d9f5691b30a31fbcec01b34\n"
    },
    {
      "commit": "7dac864d7eae3d731eeacf55cfc7f71b4df6cee3",
      "tree": "9f27bb1c0b6f076c2dd1b721441200f9f7a78022",
      "parents": [
        "047081a1509762879a9eb51981982af65f419bac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 17:09:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 27 10:02:22 2019 +0000"
      },
      "message": "Clean up JNI dlsym lookup trampoline.\n\nMake sure the GenericJniTrampoline recognizes the trampoline\nin primary boot image oat file. Rename that trampoline, add\na test and flag some issues in the code.\n\nTest: New test 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host -t 178-app-image-native-method\nBug: 112189621\nChange-Id: I8f8cd11998af536fd3842dd4183a25f0367655a6\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": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\n"
    },
    {
      "commit": "382df393c684c6a5f3856365177da715880d7f08",
      "tree": "ef0923a3f0b2ab354e4be077798777533fc8f9e2",
      "parents": [
        "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 11:57:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 04 08:24:20 2019 +0000"
      },
      "message": "Add consistency CHECKs around ArtMethod fields.\n\nThe jitzygote approach relies on those CHECKs which are currently\nguaranteed.\n\nBug: 119800099\nTest: builds\nChange-Id: Ie5bb57bdd9b3c28a2d9cab607db2cf858e1ec131\n"
    },
    {
      "commit": "5115a4dffb95637efe1df92d6f6eb70a8724c9ae",
      "tree": "605f5ca51dde13b1ec93fb0348d52969367b126e",
      "parents": [
        "15ffafd026962a16ee1abdea630542dc46f67482"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 17 14:56:47 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 12:49:45 2019 +0000"
      },
      "message": "Clean up initialization checks for entrypoints.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 18161648\nChange-Id: Ia3c2fdb616a5bb289e5afeccd4e6fe3eaf7ed697\n"
    },
    {
      "commit": "47d2947967e301b7a1f9d3d01ad8953cea8a52c7",
      "tree": "ef51e614883565896440880935ca8c89a30b979f",
      "parents": [
        "08dcf15d1a1c321752e72b63c52ec2045b82d50f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 13 12:10:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 13 18:54:24 2019 +0000"
      },
      "message": "Revert \"Improve stack unwinding during gcstress tests.\"\n\nThis reverts commit 357d4db493467e4dd74b2ba1d4b8d7c80f8409b6.\n\nReason for revert: Investigating timeout issues.\n\nBug: 142039427\nChange-Id: Iec1df893c75c6ab5b8cd52ba4b617acff57c3049\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": "623d4f1ba4f4218c5472e3d9e1e9bf707795878d",
      "tree": "44a01387b2fcdda602019cefa3bf78b6535b2caa",
      "parents": [
        "94af5824acb28f9756fb8246f95f78c4026228e2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 30 13:45:51 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 06 13:09:09 2019 +0000"
      },
      "message": "Share boot image methods memory in JIT zygote.\n\nOnce the zygote is done compiling, copy the ArtMethods to\nshared memory that will be in-place remapped. This is\na memory optimization that enables memory sharing between\nzygote and early forked processes.\n\nCurrently relies on undefined behavior of the kernel, but will\nfollow-up with a CL that uses file sealing that will address this.\n\nSaves around 2MB of memory for processes forked before zygote is\ndone compiling - there are around a dozen of processes.\n\nBug: 119800099\nTest: boots, PostLaunchMemoryUsage\nChange-Id: Ia1bdbd1abd27f28b087d9f33aca4cd901d55082f\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": "5a0b6726562948421fbbeb38d20ffd66ef688ff8",
      "tree": "9507db95b78ba55228fc24dc43f485a9755b9773",
      "parents": [
        "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 24 15:09:40 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 25 16:02:56 2019 +0000"
      },
      "message": "Boot image: only use the resolution stub when there is AOT code.\n\nThis avoids dirtying the page when the class becomes initialized.\n\nTest: test.py\nBug: 119800099\nChange-Id: I5cd7ae56b6637583179dbb766da251977b7ac961\n"
    },
    {
      "commit": "357d4db493467e4dd74b2ba1d4b8d7c80f8409b6",
      "tree": "54850dac045ba281a68671483f8224ca3e6e9ad7",
      "parents": [
        "b0ce4d2e5e01f712443b146644166363d231abe0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 17 22:23:05 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Sep 20 16:30:48 2019 +0000"
      },
      "message": "Improve stack unwinding during gcstress tests.\n\nReparse process mmaps if new library has been loaded.\n\nTest: test.py -b -r --gcstress --optimizing --host\nChange-Id: If50c226e37301a435d007331d24625bbd391889d\n"
    },
    {
      "commit": "635967b5d16e25630276c23aa47daf52ec493ea1",
      "tree": "4f9cba20e58ae2997b4d693d4e1e76ccd684637f",
      "parents": [
        "8d5a215a7e879d8aa9c7d9d2791ed107ecc41f59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 10:15:39 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 14:11:21 2019 +0000"
      },
      "message": "Remove \tmessage ART creates for \"throw null\".\n\nThe new version of R8 transforms:\n  throw new NullPointerException()\n\nInto:\n  throw null\n\nART used to create a message for the pattern \"throw null\", which is\nsomething that now breaks ObjectsTest.requireNonNull.\n\nTest: libcore.java.util.ObjectsTest#test_requireNonNull_T\nChange-Id: I142ddc74a9c0cfc76d2479eb92078b7a7d077b27\n"
    },
    {
      "commit": "baa81b5f25e10dd054e3562688802468512f8f67",
      "tree": "3833d8d83baf6988e995b2dd757353f7925ba939",
      "parents": [
        "38a062eb7390f07ee0a318517f71d9b56491a5f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 10:14:04 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 05 20:35:53 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in interpreter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter --interp-ac\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --interpreter --interp-ac\nBug: 36692143\nChange-Id: Ic081c3fab8fb98ba2667bc851fb2b7dd746e7020\n"
    },
    {
      "commit": "8e1106587f0273116302afe06956129b5d82784a",
      "tree": "e1869e8da9ab9a6bfdf89a34f4e8cedd44045005",
      "parents": [
        "5a11036542fbd2c00de1896c0ae2477f655e8ed3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 30 10:14:41 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 08:35:08 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized for allocations.\n\nAnd move the \"intialized but not visibly initialized\" check\nto ClassLinker::EnsureIntialized().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 36692143\nChange-Id: Ib5e19326b1149b2aef586b905ce89470c3a8e405\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": "323844002e54243e295497e7f829e46a533da621",
      "tree": "e6219f651332ee140042e4e0d4c975919f4fe9bf",
      "parents": [
        "297a0533d2e3f1d49f0b73c5d1e3b09ce0418de2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 20:06:44 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 18 13:12:57 2019 +0000"
      },
      "message": "jitzygote: Handle case of methods having the resolution stub.\n\nWe need to cache the compiled code until the class is initialized.\n\nTest: test.py\nTest: jitzygote config boots\nBug: 119800099\nChange-Id: Ib7a1efc3e101d9dabfad963621a1fe4a142e9b29\n"
    },
    {
      "commit": "d5fd5c3bbb44880e440c6920ce5ed56b5383c788",
      "tree": "2cf8a6354e5509c5a5e0bc2937c24fe7e03a12b1",
      "parents": [
        "1a6f9fcce199f437a5945dfe0163188b923adb28"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 14:46:32 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 04 08:17:30 2019 +0000"
      },
      "message": "Make .bss stores atomic release operations.\n\nAnd rely on architecture-dependent behavior for the .bss\nentry loads.\n\nThis fixes theoretical races when one thread updates the\n.bss entry and another uses it immediately thereafter;\npreviously we did not ensure correct memory visibility.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nChange-Id: Ie7b7969eb355025b9c9205f8c936e702861943f4\n"
    },
    {
      "commit": "0d4567f26701abae84b02389c379843c1dc851a8",
      "tree": "f665e6d5db5af79a4afa3b97cd7cdb7a2069da3f",
      "parents": [
        "cc08c50948d8b2a93b53a327717c7b2a146ac754"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 22:45:40 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 30 18:04:44 2019 +0000"
      },
      "message": "Stack maps: Refactor constructors.\n\nCreate dedicated static methods instead of passing flags.\nThis creates dedicated methods for the purpose and merges\nconstructor and decoding into single optimized method.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\n\nTest: ./art/test.py -b --host\nChange-Id: Ic7d43e22bca0be9fb13bc2c7544ebfdf46798cfe\n"
    },
    {
      "commit": "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": "743600d5ae654817a5d81179fb480816e0cd139d",
      "tree": "b7d32337b7edda269d9ebc72b73551eff1b791f7",
      "parents": [
        "bd613eced14bc56ece6beb276addab0f40337163"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 10:49:52 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 14:58:29 2019 +0000"
      },
      "message": "ARM/ARM64: Clean up artFindNativeMethod().\n\nPass the Thread::Current() as an argument just like we\ndo for other architectures.\n\nTest: aosp_taimen-userdebug boots.\nTest: testrunner.py --target --optimizing\nChange-Id: I1dfb019da1018f493ee55ff28bd20e2db2258eb9\n"
    },
    {
      "commit": "e42a4b95eed312e6f7019645f4c66b2d77254433",
      "tree": "dd150dd4651180c5fbba3a4fd90f8ca8a3f14e9d",
      "parents": [
        "67ba872df798271d2960be27c7f1e813259feabc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 00:10:25 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 23:47:47 2019 +0000"
      },
      "message": "Optimize stack maps: add fast path for no inline info.\n\nConsumers of CodeInfo can skip significant chunks of work\nif they can quickly determine that method has no inlining.\n\nStore this fact as a flag bit at the start of code info.\nThis changes binary format and adds \u003c0.1% to oat size.\n\nI added the extra flag field as the simplest solution for now,\nalthough I would like to use it for more things in the future.\n(e.g. store the special cases of empty/deduped tables in it)\n\nThis improves app startup by 0.4% (maps,speed).\nPMD on golem seems to gets around 15% faster.\n\nBug: 133257467\nTest: ./art/test.py -b --host --64\nChange-Id: Ia498a31bafc74b51cc95b8c70cf1da4b0e3d894e\n"
    }
  ],
  "next": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc"
}
