)]}'
{
  "log": [
    {
      "commit": "2498d855f80171d825ce1b98428cb05c8a504f84",
      "tree": "a867553efc7621969e2f065ee4f1c95962f5edc7",
      "parents": [
        "90fe2d0adde4d18aac2eae642d8618026446c942"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 16 15:12:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 17 09:47:34 2021 +0000"
      },
      "message": "Run LSE with LoadStoreAnalysisType::kBasic analysis.\n\nOtherwise, the code assumes partial LSE gets run, which isn\u0027t the case\nas it\u0027s currently disabled.\n\nTest: 834-lse\nBug: 205813546\nBug: 205676807\nChange-Id: Ief5cba2964d60522e747395b60f90b862fcfe560\n"
    },
    {
      "commit": "b35f2a2d436a8d091bc297f2365c7a870e2e2657",
      "tree": "44fafc5ee1a1c1f9b921cb4b1b34a56f66ea78b2",
      "parents": [
        "f5ceaacef619543932a5afb459aebe876170cce0"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Nov 12 17:27:53 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 16 13:43:49 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.compareAnd* for arrays and byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                                   before   after\n  ----------------------------------------------------------\n  CompareAndSetArrayElementInt                2.870    0.007\n  CompareAndSetArrayElementString             3.447    0.008\n  CompareAndExchangeArrayElementInt           2.826    0.007\n  CompareAndExchangeArrayElementString        3.437    0.009\n  CompareAndSetByteArrayViewInt               2.929    0.007\n  CompareAndExchangeByteArrayViewInt          2.878    0.007\n  CompareAndSetByteArrayViewBigEndianInt      2.930    0.007\n  CompareAndExchangeByteArrayViewBigEndianInt 2.875    0.007\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I48fb24ff53b7badfe55ee9d6f394d99ae59efb39\n"
    },
    {
      "commit": "44a1dc73ad352cb19853cd59b709df82e259cdce",
      "tree": "a8924c1c051738461fb7a916081d11a77f9f98ee",
      "parents": [
        "c14f47dcc7e458d82799e7852d179c1a9ba3c7c1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 02 15:38:03 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 15 10:43:46 2021 +0000"
      },
      "message": "Clean up VarHandles.set*() for arrays and byte array views.\n\nThis CL is a clean up for https://r.android.com/1875684. Changes:\n\n- Use setters instead of constructor arguments.\n\n- Rerun benchmarks and add improvements for arrays to commit message\n  (as aosp/1875684 forgot to mention changes for arrays).\n\n- Do BSWAP at compile time if the argument is a constant value.\n  `HandleFieldSet` now can optionally perform byte swap. The function\n  is rewritten so that constant and non-constant values are handled in\n  separate branches, which makes both cases simpler.\n\n- Add helper function `CodeGeneratorX86_64::GetInstructionCodegen` to\n  reduce boilerplate.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                             before aosp/1875684   now\n  ----------------------------------------------------------------\n  VarHandleSetArrayElementInt                   2.79         0.002\n  VarHandleSetArrayElementString                3.09         0.003\n  VarHandleSetByteArrayViewInt                  2.89         0.004\n  VarHandleSetByteArrayViewBigEndianInt         2.89         0.004\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I8cc37321228ffb2833a1158a75ced65f18af968e\n"
    },
    {
      "commit": "c14f47dcc7e458d82799e7852d179c1a9ba3c7c1",
      "tree": "fdbcd363a26823b2305a7237ee3444a2736bc3c7",
      "parents": [
        "483c41a99b8f0b63cbdcac9f1cd1f2dcb5756b0c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 10 13:51:12 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 15 10:34:30 2021 +0000"
      },
      "message": "JNI: Improve argument passing for normal native.\n\nSpill outgoing stack arguments directly to their stack slots\n(except for `this` on x86) and convert such references to\n`jobject` while spilling. Use the `MoveArguments()` call for\nboth argument spilling and loading regsister arguments to\nlet the assembler use multi-register stores.\n\nImprove arm64 JNI assembler to use LDP/STP in the relevant\nsituations when spilling and loading registers.\n\nFix arm JNI assembler that called `CreateJObject()` with\na bogus input register in one case.\n\nGolem results for art-opt-cc (higher is better):\nlinux-ia32                       before after\nNativeDowncallStaticNormal6      25.074 25.578 (+2.011%)\nNativeDowncallStaticNormalRefs6  25.248 25.248 (0%)\nNativeDowncallVirtualNormal6     24.913 25.248 (+1.344%)\nNativeDowncallVirtualNormalRefs6 25.074 25.086 (+0.482%)\nlinux-x64                        before after\nNativeDowncallStaticNormal6      27.000 26.987 (-0.0500%)\nNativeDowncallStaticNormalRefs6  25.411 25.411 (0%)\nNativeDowncallVirtualNormal6     25.248 25.086 (-0.6395%)\nNativeDowncallVirtualNormalRefs6 25.086 25.074 (-0.0492%)\nlinux-armv7                      before after\nNativeDowncallStaticNormal6      5.9259 6.0663 (+2.368%)\nNativeDowncallStaticNormalRefs6  5.6232 5.7061 (+1.474%)\nNativeDowncallVirtualNormal6     5.3659 5.4536 (+1.636%)\nNativeDowncallVirtualNormalRefs6 5.0879 5.1595 (+1.407%)\nlinux-armv8                      before after\nNativeDowncallStaticNormal6      6.0663 6.2651 (+3.277%)\nNativeDowncallStaticNormalRefs6  5.7279 5.8824 (+2.696%)\nNativeDowncallVirtualNormal6     5.9494 6.0663 (+1.964%)\nNativeDowncallVirtualNormalRefs6 5.5581 5.6630 (+1.888%)\n(The x86 and x86-64 differences seem to be lost in noise.)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 172332525\nChange-Id: Iaba8244c44d410bb1a4e31f90e4387ee5cc51bec\n"
    },
    {
      "commit": "483c41a99b8f0b63cbdcac9f1cd1f2dcb5756b0c",
      "tree": "0607ab807d82679a1097a24461a955909ba61dfe",
      "parents": [
        "9575c124c3d77e9f07e8c101571776ac9270af83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 12 12:45:23 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 15 09:53:15 2021 +0000"
      },
      "message": "ART: Use core image to speed up some gtests.\n\nHost timing of\n  art_compiler_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  LoadStoreEliminationTest*      16945  4750\n  LoadStoreAnalysisTest*          2647   689\n  ReferenceTypePropagationTest*  13542  3929\n  InstructionSimplifierTest*      1452   406\n\nHost timing of\n  art_runtime_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  RegType*Test*                   2976  1675\n  DexCacheTest*                    265    74\n  JavaVmExtTest*                   785   230\n\nHost timing of\n  art_libartbase_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  FlagsTests*                      691   214\n\nHost timing of\n  art_dex2oat_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  VerifierDepsTest*               3567   874\n\nTest: m test-art-host-gtest\nChange-Id: I20df90e3d38aaa286e22ba070c7845bcb09e3bca\n"
    },
    {
      "commit": "9575c124c3d77e9f07e8c101571776ac9270af83",
      "tree": "e3477e5c407249cd6e02dfcc5d039bfdc0375b7a",
      "parents": [
        "fa73acca98ddcad8cf208e9a8bce714744b70a6c"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Fri Nov 12 12:04:41 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 15 09:48:20 2021 +0000"
      },
      "message": "Revert^2 \"Cleanup the code to determine instrumentation level\"\n\nThis reverts commit cb8f8c12872d36304dbac80fbd08d8400a757fe5.\n\nReason for revert: Reland commit 21ef5a80704da06bdb2945be1c735ca86e8f1860 with fixes\n\nFixes:\nIn JITed code when we compare a bool variable\n(instrumentation_stubs_installed_) we should use cmpb and not cmpw. This\nwasn\u0027t caught earlier because the next three variables are bool which\nare related to instrumentation are false when instrumentation is disabled.\n\nTest: testrunner.py --host --redefine-stress -t 421-large-frame,\ntestrunner.py --host --redefine-stress -t 545-tracing-and-jit\n\nChange-Id: Iba363fb62d0cb41bcbc86af202eae73a833ba267\n"
    },
    {
      "commit": "fa73acca98ddcad8cf208e9a8bce714744b70a6c",
      "tree": "f60d3973546560fe5835f0e5069bf2d9aa1c6dc3",
      "parents": [
        "3fa6e46c0f379a35d51e37b9253c1d7369e3158f"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Nov 12 14:23:27 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Nov 12 16:55:59 2021 +0000"
      },
      "message": "Disaggregate kNotInlined MethodCompilationStats\n\nThere were some stats that were used in more than one place, making the actual reason indistinguishable between those cases.\n\nChange-Id: I0d42abdb2e69396991b6408cfea5396f6df2dda7\n"
    },
    {
      "commit": "3fa6e46c0f379a35d51e37b9253c1d7369e3158f",
      "tree": "cf5550ec4a680ae3edebc4395262b69f26757380",
      "parents": [
        "a1d4c56b0d92817939dcf18aa44ea516e4829863"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Fri Sep 10 17:30:04 2021 +0100"
      },
      "committer": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Fri Nov 12 15:52:56 2021 +0000"
      },
      "message": "Add Math.fma (double \u0026 float versions) intrinsics for arm64\n\nIntrinsic implementation is ~500 times faster than java implementation\nusing BigInteger.\n\nBug: 199373643\nTest: ./art/test/testrunner/testrunner.py --target \\\n      --optimizing --64 -t 082-inline-execute\nChange-Id: I50eae88b332ba9338b0a59fecad7d2158a97ffbb\n"
    },
    {
      "commit": "6545ee31288b72e117450ea77b07f3593bff6180",
      "tree": "60085d1b253758ba32d8b585e493f634d95e422a",
      "parents": [
        "a0232ad060c65d0ac3e022c9f721b41c02fd0b71"
      ],
      "author": {
        "name": "Shalini Salomi Bodapati",
        "email": "shalini.salomi.bodapati@intel.com",
        "time": "Tue Nov 02 20:01:06 2021 +0530"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 11 11:32:25 2021 +0000"
      },
      "message": "Support Math.fma Intrinsic for x86 and x86_64\n\nIntrinsic Implementation is 2287x faster than base\nTime for base: 188.25s\nTime for patch: 0.0822s\n\nTest: ./run-test --host --64 --optimizing 082-inline-execute\nTest: ./run-test --host --64 --optimizing --instruction-set-features sse4.1 082-inline-execute\nTest: ./run-test --host --64 --optimizing --instruction-set-features sse4.1,avx2 082-inline-execute\nSigned-off-by: Shalini Salomi Bodapati \u003cshalini.salomi.bodapati@intel.com\u003e\nChange-Id: I68b96a35f41f3bb23d7e26d87fee1dd2a5ebf6a6\n"
    },
    {
      "commit": "a0232ad060c65d0ac3e022c9f721b41c02fd0b71",
      "tree": "7fcc4bcac3d271342262e03e69cac6dd1deb7a88",
      "parents": [
        "6806d3c9e41e0e8b187d5e4c76d48ea6cc90b613"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 08 17:00:06 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Thu Nov 11 09:12:07 2021 +0000"
      },
      "message": "Add .bss support for inlining across dexfiles within Oat\n\nWe can safely reference other dexfiles within the same oat file for cross-dex inlining.\n\nThis CL makes the OptStat#NotInlinedBss drop to less than 1% of the not-inlining cases.\n\nTest: ART tests\nChange-Id: I676d48d973abf7a6f8412cf3b7bb73afd7747f31\n"
    },
    {
      "commit": "d3aaf94693470e133f804d630fe5180ae8017779",
      "tree": "dabdd855a9b9868502d77748e85f5887f65ea1cf",
      "parents": [
        "61673dc4bdee2fa4770ee72fbc347cca595dd231"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 02 10:51:57 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 10 09:31:35 2021 +0000"
      },
      "message": "JNI: Move args in registers for @FastNative.\n\nGolem results for art-opt-cc (higher is better):\nlinux-ia32                     before after\nNativeDowncallStaticFast       222.00 222.17 (+0.0751%)\nNativeDowncallStaticFast6      139.86 161.00 (+15.11%)\nNativeDowncallStaticFastRefs6  131.00 137.86 (+5.238%)\nNativeDowncallVirtualFast      211.79 217.17 (+2.543%)\nNativeDowncallVirtualFast6     137.36 150.55 (+9.599%)\nNativeDowncallVirtualFastRefs6 131.50 132.60 (+0.8382%)\nlinux-x64                      before after\nNativeDowncallStaticFast       173.15 173.24 (+0.0499%)\nNativeDowncallStaticFast6      135.50 157.61 (+16.31%)\nNativeDowncallStaticFastRefs6  127.06 134.87 (+6.147%)\nNativeDowncallVirtualFast      163.67 165.83 (+1.321%)\nNativeDowncallVirtualFast6     128.18 147.35 (+14.96%)\nNativeDowncallVirtualFastRefs6 123.44 130.74 (+5.914%)\nlinux-armv7                    before after\nNativeDowncallStaticFast       21.622 21.622 (0%)\nNativeDowncallStaticFast6      17.250 18.719 (+8.518%)\nNativeDowncallStaticFastRefs6  14.757 15.663 (+6.145%)\nNativeDowncallVirtualFast      21.027 21.319 (+1.388%)\nNativeDowncallVirtualFast6     17.439 18.953 (+8.680%)\nNativeDowncallVirtualFastRefs6 14.764 15.992 (+8.319%)\nlinux-armv8                    before after\nNativeDowncallStaticFast       23.244 23.610 (+1.575%)\nNativeDowncallStaticFast6      18.719 21.622 (+15.50%)\nNativeDowncallStaticFastRefs6  14.757 18.491 (+20.89%)\nNativeDowncallVirtualFast      20.197 21.319 (+5.554%)\nNativeDowncallVirtualFast6     18.272 21.027 (+15.08%)\nNativeDowncallVirtualFastRefs6 13.951 16.865 (+20.89%)\n(The arm64 NativeDowncallVirtualFast reference value is very\nlow, resulting in an unexpected +5.554% improvement. As the\nprevious results seem to jump between 20.197 and 20.741,\nthe actual improvement is probably just around 2.5%.)\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: I2b596414458b48a758826eafc223529e9f2fe059\n"
    },
    {
      "commit": "61673dc4bdee2fa4770ee72fbc347cca595dd231",
      "tree": "4a3a3f1b712e72bc7b9be3c84c5c79ce3588bdbf",
      "parents": [
        "f726d20976dff58db4e0111860f6b23b77be61a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 06 13:58:31 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 10 09:19:19 2021 +0000"
      },
      "message": "Reland \"Change hotness counting.\"\n\nThis reverts commit ce131feb7c60ffdf28c315c5d67f9cac33a077ce.\n\nBug: 203810169\nTest: test.py\nTest: health/microbench/startup/hscapps/compile-speed-profile/open-clock\n\nReason for revert: Kept logic from before on what methods to save in the\nprofile.\n\nChange-Id: Id67cd47a9fe31b4c6b154db20f632015238016d2\n"
    },
    {
      "commit": "970ba219234b16918e68e2b4ffddb2b896225b3e",
      "tree": "335b9a51612a386e60f7c8746aaccf86d3305842",
      "parents": [
        "e10abe7d84ed44d61401d24073f01d1c7777e17c"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Thu Oct 21 10:52:47 2021 +0100"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Nov 09 17:22:30 2021 +0000"
      },
      "message": "Inline across dex files for compiler options\u0027 non-BCP methods\n\nWe are now able to inline across dexfiles for the dexfiles present\nin compiler options\u0027 dex_files_for_oat_file_.\n\nNote that the dex files in the Class Loader Context are not included\nin this implementation since they will not have an OatDexFile.\n\nBug: 154012332\nTest: ART tests\n\nChange-Id: I7704217d936afecb66fc952c10529bb1030d6981\n"
    },
    {
      "commit": "5097f83c4719a76fdfab1044ab745273841aca45",
      "tree": "adca5e53b3ef1807aa7dd9c3465ac3305fedc4fd",
      "parents": [
        "d1e6bea2c502a72dc5d0c3d16deb591ba61c9d76"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Nov 02 14:52:30 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Nov 09 14:22:50 2021 +0000"
      },
      "message": "Revert^2 \"Add support for calling entry / exit hooks directly from JIT code\"\"\n\nThis reverts commit 72be14ed06b76cd0e83392145cec9025ff43d174.\n\nReason for revert: A reland of\ncommit 2d4feeb67912d64b9e980e6687794826a5c22f9d with a fix for no-image\ntests\n\nChange-Id: I79f719f0d4d9b903db301a1636fde5689da35a29\n"
    },
    {
      "commit": "ad33392536e606eac02bf3ee261fa7ddd26646a0",
      "tree": "415155d35754c830cabafdc5f522731b8eab92cc",
      "parents": [
        "39c36b28c7111411a509a0578741382842e6a067"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 02 10:51:57 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 08 13:43:17 2021 +0000"
      },
      "message": "JNI: Rewrite read barrier slow path.\n\nPreserve all argument registers in the slow path to prepare\nfor moving arguments in registers for @FastNative. Move the\nread barrier check earlier as it logically belongs to the\ntransition frame creation. For Baker read barriers, add a\nmark bit check with fast return to the main path.\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: I50bbc0bc9d54577281e7667aafebb4a53a539af1\n"
    },
    {
      "commit": "ae0810bb0f4c3af56d7f9d465913920c259d82be",
      "tree": "fa337e71d541146e67bb962b4a55cf27f7a9b25d",
      "parents": [
        "46a8910372da2976c4e74273bacce17924b00d7a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 01 16:40:51 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 02 15:17:36 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set{,Acquire,Opaque,Volatile} for byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleSetByteArrayViewInt             2.89   0.004\n  VarHandleSetByteArrayViewBigEndianInt    2.89   0.004\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ife3e0dfd99218399f18aa330b42b9828172f6491\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": "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": "d1729267e686f568a6c9c853ad80dceb7e7e6f0d",
      "tree": "19f252a0baad8a8d7f7a640979c6505ed6ec67db",
      "parents": [
        "2d4feeb67912d64b9e980e6687794826a5c22f9d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 29 14:27:16 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 01 08:52:18 2021 +0000"
      },
      "message": "arm: Fix VarHandle.compareAndSet/long intrinsic...\n\n... for big-endian array views. Undo the byte swap for all\nsituations where we swapped bytes in arguments.\n\nTest: testrunner.py --target --32 --optimizing -t 712\nBug: 71781600\nChange-Id: Ide4736032f8a4875e14be66727c00dd79beb230c\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": "3693b2ae3bac182f1e483738bae2cd80cad5dc3d",
      "tree": "074107df43dc9cd519ff1f1ef2c2ca8bfb457232",
      "parents": [
        "5b9086818b520306d64cd9736c6d2302b08a8e8d"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Oct 29 10:43:18 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 29 12:43:58 2021 +0000"
      },
      "message": "Revert^2 \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\"\n\nThis reverts commit 6620caa89a4691bc5cbdbc5af7599b17fd8896f5.\n\nReason for revert: Relanding original change after fixing linker error:\n  ld.lld: error: undefined symbol: art::ObjPtr\u003cart::mirror::Class\u003e\n       art::GetClassRoot\u003c(art::ReadBarrierOption)0\u003e(art::ClassRoot)\n\n  The error was caused by a missing header which contained an `inline`\n  definition of the above function. The error may or may not happen\n  depending on the compiler: it may choose to not inline, and then there\n  is no linker error.\n\nBug: 71781600\nTest: Manually marked the function as always inline and ensured that the\n  error can be reproduced and is fixed by including the header.\nChange-Id: Ibcea2c3fc81ea75b8e6e6517d9ce872e79eda0d6\n"
    },
    {
      "commit": "6620caa89a4691bc5cbdbc5af7599b17fd8896f5",
      "tree": "e8a5bda30356ae019df926ef1aa3e8e6149a301b",
      "parents": [
        "298f1b7f1b7219d5e9e72778f1986c8e439fe4ba"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 28 17:48:47 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 28 17:48:47 2021 +0000"
      },
      "message": "Revert \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\"\n\nThis reverts commit 298f1b7f1b7219d5e9e72778f1986c8e439fe4ba.\n\nReason for revert: Breaks several Android builds.\n\nBug: 71781600\nChange-Id: Ic821256aa7f67e21c64c7a8e29b5665b39a89092\n"
    },
    {
      "commit": "298f1b7f1b7219d5e9e72778f1986c8e439fe4ba",
      "tree": "4757c2120ab99ee62fffc6cbc10740a26897ee09",
      "parents": [
        "5514c8ec932bef044119c178b6e9e180b3f81cf8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 15:08:53 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Oct 28 15:40:26 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleGetByteArrayViewInt             2.74   0.002\n  VarHandleGetByteArrayViewBigEndianInt    2.74   0.003\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I4974b5773efb15b6245f690575218536d2c514db\n"
    },
    {
      "commit": "ce131feb7c60ffdf28c315c5d67f9cac33a077ce",
      "tree": "c0d95161dc6ba2ed5cad0fc5cc4c131c3eed15d0",
      "parents": [
        "9c924e89e5f52da9faadd1e4e60c73eaed6bc9d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 26 20:03:35 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 26 22:56:55 2021 +0000"
      },
      "message": "Revert \"Change hotness counting.\"\n\nThis reverts commit c86869ab894c05e3181e7d15eb1893fa8a3fcd47.\n\nReason for revert: App startup performance regression.\n\nBug: 203810169\nChange-Id: Ie816969fffd7740fcdfa330aeb645399f5351865\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": "e91a954ee350cbc0b311f342c90697191e1ae495",
      "tree": "a0bd4cc9e71f7fb79c2b25cae42e6336b2c9e340",
      "parents": [
        "fd846c5c2e9bc63b250c2bce271c2d6b8905f79d"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Oct 25 16:23:27 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 26 11:30:14 2021 +0000"
      },
      "message": "Revert^2 \"ART: Redundant AND operation removal optimization\"\n\nRe-enables the original CL plus fixes a bug in\nInstructionSimplifierVisitor::VisitTypeConversion, where\nthere was no check for non-constant input for the And.\n\nThis reverts commit 050686452146e1f5d31aed560c682d992c376fed.\n\nTest: compile duckduckgo.apk.\nTest: 458-checker-instruct-simplification\nTest: test_art_target, test_art_host.\n\nChange-Id: Iecf13f492fb1d1769726d187093e455216f2c2c6\n"
    },
    {
      "commit": "050686452146e1f5d31aed560c682d992c376fed",
      "tree": "951ffcdd0c82be6fe976ca06852dbcde84058754",
      "parents": [
        "884c147e93aab632ca13d2f0ea28110e8f8752a7"
      ],
      "author": {
        "name": "Joe Shih",
        "email": "joeshih@google.com",
        "time": "Mon Oct 25 04:58:23 2021 +0000"
      },
      "committer": {
        "name": "Joe Shih",
        "email": "joeshih@google.com",
        "time": "Mon Oct 25 08:11:22 2021 +0000"
      },
      "message": "Revert \"ART: Redundant AND operation removal optimization\"\n\nThis reverts commit c498a1de3de1b36baebfd7b69b0af7fb4947d58e.\n\nDroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId\u003dI97700009991646450\u0026testResultId\u003dTR34427775909599300\u0026tab\u003dresults, bug b/203783068.\n\nBug: 203783068\nChange-Id: Ia7adec8217839b2b20c5409b9c87d3f920d798c2\n"
    },
    {
      "commit": "c498a1de3de1b36baebfd7b69b0af7fb4947d58e",
      "tree": "9f34ab6d331ac438b43c2f4c1a01965a4ba11877",
      "parents": [
        "0a12631fd5364d5908d59ea476bea075019ebecd"
      ],
      "author": {
        "name": "Aditya Deshpande",
        "email": "aditya.deshpande@linaro.org",
        "time": "Wed May 19 17:29:00 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 21 12:37:09 2021 +0000"
      },
      "message": "ART: Redundant AND operation removal optimization\n\nIn the following code:\n\n    b[i + length] \u003d (byte) ((value \u0026 0xff00) \u003e\u003e 8);\n\nThe AND operation is redundant because the lowest 8 bits will be\nremoved by the 8 bits right shift.\n\nThis optimization covers cases where a subsequent SHR and\nType Conversion (from Int and Short --\u003e Byte make an AND redundant.\nIn such cases, the AND operation is removed. Patch also includes tests.\nThis patch covers only signed types.\nUnsigned types will be supported in a future patch.\n\nThis optimization brings 3.3% perf increase on FFTBench workload.\n\nTest: ./scripts/tests/test_art_target.sh --single-test\\\n458-checker-instruct-simplification\n\nCan also use test_art_host.sh with same option as above.\n\nAuthor: Aditya Deshpande.\nCommitter: Artem Serov.\n\nChange-Id: I50b87576a3f998100feefc0e5df65b7b343d87e6\n"
    },
    {
      "commit": "c86869ab894c05e3181e7d15eb1893fa8a3fcd47",
      "tree": "a0a000eea11bddba4c822d4e30e06456c12ccaa4",
      "parents": [
        "d1da3ae0aa3ddde0b129364b5e1c6073f7bdb7b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 01 12:15:08 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 20 17:32:57 2021 +0000"
      },
      "message": "Change hotness counting.\n\nDecrement instead of increment to:\n- Simplify nterp\n- Support better future optimizations on memory savings.\n\nAlso clean up Jit::AddSamples which is now only used for the C++\ninterpreter.\n\nTest: test.py\nChange-Id: I2edcee3affc3e5205e253fc7824ccdc862565931\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": "c8c2bb6784d70cdc6e3a75a24fc9d09970a574e4",
      "tree": "d9ee85a117d1a4459a52340dc460f001916e099b",
      "parents": [
        "bf19869f9a3e49eed27c30cd86344d72fc0366cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 15 09:33:09 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 18 09:20:11 2021 +0000"
      },
      "message": "JNI compiler: Rewrite exception polling.\n\nMake the slow path explicit in the JNI compiler. Fix the\nCFI data for the exceptional path of synchronized methods.\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: If64965eef15c063e36b78dd8bb6cba5af34ab4fa\n"
    },
    {
      "commit": "740e1f972ab1401d0afa98f365d9f5fe70a8a895",
      "tree": "1e189dd88dddd48e817784a4af6559f5e60e3810",
      "parents": [
        "41e56c2282bad545608d6d9711f9e4a3683354b8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Oct 15 12:11:37 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 15 14:52:15 2021 +0000"
      },
      "message": "arm, arm64: Unpoison byte array view class reference before comparison.\n\nVarhandle class reference needs to be unpoisoned before it gets compared\nto the byte array view class reference from the boot image returned by\n`LoadClassRootForIntrinsic`. This was missing in the CLs that added\nvarhandle intrinsics for byte array views and resulted in byte array\nviews handled by the slow path if poisoning is enabled:\n  - https://r.android.com/1535201 (arm64)\n  - https://r.android.com/1555075 (arm)\n\nBug: 71781600\n\nTest: Ran benchmarks provided by https://r.android.com/1420959 with\n  ART_HEAP_POISONING\u003dtrue before and after the change, observed improved\n  run time for byte array views (on sargo, arm64):\n\n                                before  after\n  -------------------------------------------\n  GetByteArrayViewInt             9.86  0.074\n  SetByteArrayViewInt            10.07  0.074\n  GetByteArrayViewBigEndianInt   10.40  0.077\n  SetByteArrayViewBigEndianInt   10.07  0.077\n\nTest: art/test.py --target -r -t 712-varhandle-invocations\nTest: same with ART_HEAP_POISONING\u003dtrue\nChange-Id: Ie776b44759df642d3227a64b824caa0b21ffd5e6\n"
    },
    {
      "commit": "1558048c31b90ff5b3baf611d4dd70c1a003adfb",
      "tree": "0d4eb1b5ac1464edc1e679f065bd5b9e432a8567",
      "parents": [
        "5cbb0a9658e4c3a906139df2d1cf5b929d989faf"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Oct 12 13:11:29 2021 +0100"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Oct 12 13:55:05 2021 +0000"
      },
      "message": "Add stats for last step inlining of invokes\n\nAdd kInlinedLastInvoke(VirtualOrInterface) which counts the amount of invokes we inlined on the parent-most method. This is useful to know since it is the invoke that matters the most. The other inlinings are about recursive inlinings but those will not get into the graph if the last invoke fails to be inlined.\n\nChange-Id: I4d293864033c950477f50149fd0318c501dcfb6f\n"
    },
    {
      "commit": "5cbb0a9658e4c3a906139df2d1cf5b929d989faf",
      "tree": "34adba5a4e1cdc438a3006b0ab7f389becf85ad5",
      "parents": [
        "a8d998fa443b125d8a0461f59070b6d54c386f78"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 11:33:59 2021 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 12:43:17 2021 +0100"
      },
      "message": "Revert^2 \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\"\n\nThis reverts commit eb270e4cf873acc6097da5647931cbfd67879864.\n\nReason for revert: relanding original patch. The fix is to use signed\n  comparison when checking out of bounds access (JAE instead of JGE).\n\nBug: 71781600\nBug: 202734548\nChange-Id: I4f5e170d293ccd675218b34f906b471de3c19a23\nTest: atest CtsLibcoreJsr166TestCases:jsr166.AtomicReferenceArrayTest#testIndexing\n"
    },
    {
      "commit": "eb270e4cf873acc6097da5647931cbfd67879864",
      "tree": "c673d7d32689642e594fd4ecb7d487ded4a5f730",
      "parents": [
        "3b87d854d1a6591b4a06052d74fef21527b56282"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 11 18:23:03 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 11 18:56:17 2021 +0000"
      },
      "message": "Revert \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\"\n\nThis reverts commit a3fe0452f6972218fce5aacd81ced3dc20ea482d.\n\nReason for revert: Likely candidate for b/202734548\n\nBug: 71781600\nBug: 202734548\nChange-Id: I43b69bc76180e6bb9d1bdcbf63ea5c3cab8c2cd7\n"
    },
    {
      "commit": "a3fe0452f6972218fce5aacd81ced3dc20ea482d",
      "tree": "bd6b748011c13a25fa31755f8ec27b170cb09999",
      "parents": [
        "492649b718eed0c5834766b8a49ccbe9d86cf49a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Sep 06 16:53:56 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 11 15:11:52 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleGetArrayElementInt            2.725    0.002\n  VarHandleGetArrayElementString         2.778    0.003\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ie9c6cef4ef3cf459cbfebbc17d1f449c489ec357\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": "4a4696ad2a1403139828e5e6703479f320f06fee",
      "tree": "e40c40ba014e4ba411f2345cd4b898a91717e298",
      "parents": [
        "b0cc5923bf0b0315fa181542c765bfa8b8083cad"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Sat Oct 09 07:14:40 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Mon Oct 11 07:30:36 2021 +0000"
      },
      "message": "Fixing Unsafe.getObjectAcquire code generation\n\nThis fixes the intrinsic code generation for\nUnsafe.getObjectAcquire which was introduced in\nIacd39ea1750c92a828d99241bff6b609acadb025\n\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: I456126ce5f8355aa944b7ba6e3be9405531d3778\n"
    },
    {
      "commit": "507cf9052116f8052c45a08586a356d00daba563",
      "tree": "8723a6303ec4dcdc39480bf84fa35e2de0e7e77a",
      "parents": [
        "a32d2d8b5ac9bda0aa1a7d12790b7ed3e5750b4a"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Wed Oct 06 12:04:56 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 08 17:34:31 2021 +0000"
      },
      "message": "Adding get/put and compare-and-set methods to Unsafe\n\nAs they are needed for the update of java.util.concurrent to\n11+28, the native implementation and intrinsics for the following methods have\nbeen added to jdk.internal.misc.Unsafe:\n\tjdk.internal.misc.Unsafe.compareAndSetLong\n\tjdk.internal.misc.Unsafe.compareAndSetObject\n\tjdk.internal.misc.Unsafe.getLongAcquire\n\tjdk.internal.misc.Unsafe.putLongRelease\n\tjdk.internal.misc.Unsafe.getObjectAcquire\n\tjdk.internal.misc.Unsafe.putObjectRelease\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: Iacd39ea1750c92a828d99241bff6b609acadb025\n"
    },
    {
      "commit": "4d29efcc54c2d98e70e2221b66c04f309d64c398",
      "tree": "80ac62421103eecfaa8760b7f8507801b97cd2b1",
      "parents": [
        "f9e82e5cae2c31f439ecbc505c2dcac81356405e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 07 15:15:08 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 08 10:27:29 2021 +0000"
      },
      "message": "Remove unused fields in Thread.\n\nTest: test.py\nChange-Id: Iafc0be23eec86102844b127622be564f69c55eda\n"
    },
    {
      "commit": "0069ad7ddb159a8d368e0f6a289d0335238ae6c4",
      "tree": "02735717a696c0704d97526fcab0060d8d1ceae0",
      "parents": [
        "520c9b7649cdfcc12e1df414055c383335f54b69"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Fri Sep 17 17:33:09 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Tue Oct 05 12:34:42 2021 +0000"
      },
      "message": "OpenJDK 11: Adding Unsafe new intrinsics for AtomicIntegerFieldUpdater\n\nAdding native implementation for:\njdk.internal.misc.Unsafe.compareAndSetInt\n\nAdding intrinsics for:\njdk.internal.misc.Unsafe.compareAndSetInt\njdk.internal.misc.Unsafe.getIntAcquire\njdk.internal.misc.Unsafe.putIntRelease\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: Iba4a66d29ad27e269a7be0d5d5c8397755040784\n"
    },
    {
      "commit": "8f6b99fba2d043265a84d599a967d52f66738ad6",
      "tree": "b4f010fa47b8ae289719c8896da3c42dccb2afe4",
      "parents": [
        "a182c9302263114dcf5961e4f3850c21ff7824d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 28 17:51:17 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 29 12:02:20 2021 +0000"
      },
      "message": "Revert \"ART: Removes SuspendCheck for plain loops with a low trip count.\"\n\nThis reverts commit 3de02fb67de386368c9fe39ab5a0133afcf1d785.\n\nReason for revert: b/201413752\n\nChange-Id: I8a3a56cfb81fa88f49992615696260dfbc79bb67\n"
    },
    {
      "commit": "282795ca98d955697823aea6fd9c6b3f51780045",
      "tree": "b8d95a385c18684e8fa7481bae6088dfbe365581",
      "parents": [
        "03ce70a18e860abe5ab2e2198cb928e43a732e9c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 24 18:16:41 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 28 07:59:34 2021 +0000"
      },
      "message": "Don\u0027t do a recursive call when there are CHA guards.\n\nOtherwise we would continue execute the method with invalid inlining\noptimizations.\n\nTest: 832-cha-recursive\nBug: 19381779\nChange-Id: I57d73828d2a9c30f429cf32906f94244346c1310\n"
    },
    {
      "commit": "2f01e8ed55663b73787e079955d890e1ffd2983e",
      "tree": "804c2a605a0aed384f10ff809d3967afaca568ec",
      "parents": [
        "33a312992c86bdc718783496a9d42a18d7b342b0"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Fri Jun 18 06:44:07 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 24 10:21:16 2021 +0000"
      },
      "message": "Copying sun.misc.Unsafe to jdk.internal.misc\n\nFrom OpenJDK 10 onward, sun.misc.Unsafe has been moved to\njdk.internal.misc. Trying to merge in changes from OpenJDK 11\ndepends on having jdk.internal.misc.Unsafe available. As\nsun.misc.Unsafe is still used throughout libcore code, it cannot\nbe changed yet, so a copy is made to jdk.internal.misc.Unsafe for\nnow.\n\nAs OpenJDK 11 is merged in and sun.misc.Unsafe references will\ndisappear, it can be deprecated and eventually made to call into\njdk.internal.misc.Unsafe.\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 004-UnsafeTest\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 190470684\nChange-Id: I472a9778a1001fbd7c3ecce0dfa58ea6d632f158\n"
    },
    {
      "commit": "33a312992c86bdc718783496a9d42a18d7b342b0",
      "tree": "0a27e5202514fc36e4ad54c6eedd16a96b3c1b50",
      "parents": [
        "9cc65df0146e05bda535991290f53b795a61a025"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Sep 24 08:50:06 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 24 10:15:04 2021 +0000"
      },
      "message": "Revert \"Move dex register check upwards in the Inliner stack\"\n\nThis reverts commit 7a7a1e2c826dc5f73df00936f98c21d8add7022c.\n\nReason for revert: We only want to check the register count if we have to create an environment\n\nBug: 200671122\nChange-Id: I26af9075248f5b82f7118c6af9c6e758b7c14280\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": "7a7a1e2c826dc5f73df00936f98c21d8add7022c",
      "tree": "e9a4989f0036e47588ca0de4e475a47637c1b4f5",
      "parents": [
        "ad58e1cec027a27a8fa9ac270557b566e903913b"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Sep 20 14:14:16 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 22 10:07:43 2021 +0000"
      },
      "message": "Move dex register check upwards in the Inliner stack\n\nWe can check that before we try to build and run optimizations\n\nBug: 200671122\nTest: ART tests\nChange-Id: Ie3b60445a7ed90490ad6a97834ae74631e26ff93\n"
    },
    {
      "commit": "39e2979b92c25fc825944bda346216395d326395",
      "tree": "76ebdb27bce5ab57139b3e805f2f9119eda068f2",
      "parents": [
        "816b0da3ef7a2fffeda087917353646b3d48fd62"
      ],
      "author": {
        "name": "Usama Arif",
        "email": "usama.arif@linaro.org",
        "time": "Fri Nov 15 10:53:29 2019 +0000"
      },
      "committer": {
        "name": "Joel Goddard",
        "email": "joel.goddard@linaro.org",
        "time": "Mon Sep 20 15:13:57 2021 +0100"
      },
      "message": "ARM64: FP16 min and max intrinsic for ARMv8\n\nThis CL implements intrinsics for min and max method with\nARMv8.2 FP16 instructions.\n\nAlso refactors the location builders for FP16 Compare\noperations to use new helper FP16ComparisonLocations.\n\nThe performance improvements using timeMinFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.min:\n    - big cluster only: 935\n    - little cluster only: 2373\n- arm64 min Intrinisic implementation:\n    - big cluster only: 495 (~47% faster)\n    - little cluster only: 1521 (~36% faster)\n\nThe performance improvements using timeMaxFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.max():\n    - big cluster only: 1067\n    - little cluster only: 2383\n- arm64 max Intrinisic implementation:\n    - big cluster only: 496 (~53% faster)\n    - little cluster only: 1508 (~37% faster)\n\nTest: 580-checker-fp16\nTest: art/test/testrunner/run_build_test_target.py -j80 art-test-javac\nChange-Id: I6ecbc96ef7fa7fcb67f5855de3a6f551c247566e\n"
    },
    {
      "commit": "88b5c1d8b91e3ce53788efa532d6d106471a801e",
      "tree": "4dfb35742ada64256f84090aac41e14935b75cd9",
      "parents": [
        "cf6a926f4041e5cb88fe70c701ce6aa043ae9df3"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Sep 14 15:58:22 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 17 12:51:34 2021 +0000"
      },
      "message": "Refactor register allocator\u0027s ProcessInstruction\n\nWe can make some auxiliary functions to make the method easier to read.\n\nChange-Id: I5f0a0c0fd97c3bd201da5245a58b84c9c520c9f7\n"
    },
    {
      "commit": "cf6a926f4041e5cb88fe70c701ce6aa043ae9df3",
      "tree": "005d37921c6dfa69a635461a8f3b22a2df1101e5",
      "parents": [
        "f513a7650e0bce9225e598b0fe4825b4ee1dc4cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 07:58:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 09:29:38 2021 +0000"
      },
      "message": "Revert \"Restore partial LSE.\"\n\nThis reverts commit c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c.\n\nBug: 197981962\nBug: 200168065\n\nReason for revert: b/200168065\n\nChange-Id: I3c28edfed2bc2d544891c30d070feb282993c79a\n"
    },
    {
      "commit": "c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c",
      "tree": "e6da7b57b10b004571f749b26e47a974a8925b31",
      "parents": [
        "8214de1bb682b2d0fc4968943ecddd9415d6b75f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 15 14:14:17 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 16 13:32:11 2021 +0000"
      },
      "message": "Restore partial LSE.\n\nThis fixes a bug where we were using the wrong value for initializing an\nallocation that we moved. See this test:\nhttps://android-review.googlesource.com/c/platform/art/+/1825138/4/test/828-partial-lse/src/Main.java\n\nRun LSE twice: one for the classical load store eliminiation, one for\nmoving allocations.\n\nTest: test.py\nBug: 197981962\nChange-Id: If317e10e239488876180047040dba66ae3fc8d4c\n"
    },
    {
      "commit": "e8a822d2209a644f30fc1b6db3c70ec5faf2b79a",
      "tree": "6adac4604b30164f328e5fececc816e263e2cd0e",
      "parents": [
        "76a943abedf97ebfc36a826edd447ee411345aa2"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Sep 13 14:40:53 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 14 12:21:30 2021 +0000"
      },
      "message": "Remove entry SuspendCheck for methods which only call on the slow path\n\nWe can skip SuspendCheck if the method is e.g. a leaf method with a read barrier call in the slow path.\n\nBug: 135477345\nTest: ART tests\nChange-Id: I6e04f10544ec61b46bb5763a88c28248e88193bf\n"
    },
    {
      "commit": "3de02fb67de386368c9fe39ab5a0133afcf1d785",
      "tree": "39b82839945a26dfb857a403effa4ba248145715",
      "parents": [
        "18074d2b59ae56dcfccea770ceb515215c8eb53f"
      ],
      "author": {
        "name": "Stelios Ioannou",
        "email": "stelios.ioannou@linaro.org",
        "time": "Fri Jul 09 17:06:03 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 13 17:54:53 2021 +0000"
      },
      "message": "ART: Removes SuspendCheck for plain loops with a low trip count.\n\nThis change removes SuspendCheck for plain loops with a low trip count.\n\nThe SuspendCheck in the codegen makes sure that the thread can be\ninterrupted during execution for GC. Not being able to do so might\ndecrease the responsiveness of GC in the case when a very long loop\nor a long recursion is being executed.\n\nHowever, for plain loops with a small trip count, the removal of\nSuspendCheck should not affect the GC\u0027s responsiveness by a large\nmargin. Consequently, since the thread won\u0027t be interrupted for\nplain loops, it is assumed that the performance might increase\nby removing SuspendCheck.\n\nTest: art/test.py -v -j12 --host --64 -t 2233-checker\\\n-remove-loop-suspend-check --run-test --optimizing\n\nChange-Id: Ic9f1387059669645ad836d8277bfbc7553aa6e2f\n"
    },
    {
      "commit": "18074d2b59ae56dcfccea770ceb515215c8eb53f",
      "tree": "e4c1c7d71254cfddd9420408bb7456504b1c5968",
      "parents": [
        "92e5d840ce0c3727a515eba1ed505dfe6770b1a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 14:07:10 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 16:11:26 2021 +0000"
      },
      "message": "Temporarily disable partial LSE.\n\nDue to a bug in it. Add a regression test.\n\nBug: 197818595\nTest: 828-partial-lse\nChange-Id: I65da4f7ef09cd2a1f6c4b21799ecd7a42c1adac2\n"
    },
    {
      "commit": "8dea9c4f6495c7c5477cb368b45a7cb77a87dbf6",
      "tree": "ff624d0b680b29a2421673868d39a0ec9b193bbb",
      "parents": [
        "c07f48875c60d88205283c979898ce31df2a2026"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 11:46:24 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 12:30:30 2021 +0000"
      },
      "message": "Update code to fix two unused variable warnings.\n\nTest: m\nChange-Id: I817bc3e5405d2b089841429ae22b2004305dac50\n"
    },
    {
      "commit": "7fae86c62a9ffeb94a7c11f1660c94873368dcec",
      "tree": "6b5ff39982b80ea16856ee8bd39132047de4b8ae",
      "parents": [
        "1c494e36f246a982070e125dec3c1139f9289c6e"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Sep 11 01:42:49 2021 +0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Sep 11 01:50:45 2021 +0800"
      },
      "message": "Make sure only comments are stripped\n\nThe regex \" +#.*\" could also match immediates on ARM, e.g.\n\n  cmp r1, #1234\n\nFix it by requiring a space after the hash mark.\n\nTest: art_compiler_host_tests\nChange-Id: I3cf038ff6547edad8a417961d8bb2b27c0872f51\n"
    },
    {
      "commit": "fde4c2731123b01b12c1b2aee0ae747276fc6e17",
      "tree": "6ddd3b30cb18695435fa45d000b3c5cbc81ffafd",
      "parents": [
        "75e50892c0702edcfcc0ddfc8fe4e01386b3ce65"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Sep 09 15:41:10 2021 +0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Sep 10 04:21:51 2021 +0000"
      },
      "message": "Adapt ART tests for the new llvm-objdump output format\n\nllvm-objdump now emit comments where it sees helpful, breaking many test\nexpectations. Since these comments are subject to frequent format changes,\ntrim them from the output in ART tests.\n\nTest: m test-art-host-gtest\nBug: 197230471\nChange-Id: I27f33e28f993f3826b3a1da75afa9a79ad9c360d\n"
    },
    {
      "commit": "d8c0ac264f606bf0c69781388ca6048eb0a4b55f",
      "tree": "65a85eba1d1b47f837c7b8941252d7128187d83a",
      "parents": [
        "ebefce33baed0dccd5ab703bff37cb14c3da8572"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Sep 07 00:26:17 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Sep 07 13:27:57 2021 +0000"
      },
      "message": "Better isolate standalone ART gtests on device.\n\nStandalone ART gtests used to be installed in the same directory on\ndevice (`/data/local/tmp/nativetest`), which could be a race\ncondition. In particular, some ART gtests are run as root\n(e.g. `art_standalone_dexoptanalyzer_tests`) and create the\n`/data/local/tmp/nativetest` directory with `root`\nownership/permissions, preventing any subsequent ART gtest not run as\nroot (e.g. `art_standalone_cmdline_tests`) from installing its\nartifacts in that directory.\n\nTo prevent these issues, use a different directory on device (under\n`/data/local/tmp`) per standalone ART gtest.\n\nTest: atest art_standalone_dexoptanalyzer_tests \\\n        \u0026\u0026 atest art_standalone_cmdline_tests\nTest: atest art_standalone_\\*_tests\nBug: 194403904\nBug: 162834439\nChange-Id: I141c1676382b078c1441e5782b3dc77affafa3fc\n"
    },
    {
      "commit": "0700b69cb0c81c3590726be7fbe5b98531cec76b",
      "tree": "9699ae3c78a2c7546918ba03aa43b0306d4f48a5",
      "parents": [
        "6194403a984dd814f01e6f7c6b270342d760388d"
      ],
      "author": {
        "name": "Raphael Gault",
        "email": "raphael.gault@linaro.org",
        "time": "Wed Sep 30 08:33:10 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 08:58:50 2021 +0000"
      },
      "message": "SVE: Extract Intermediate Address for SVE Vector Memory Operations\n\nThis patch introduces an optimization that extracts and factorizes\nthe \"base + offset\" common part for the address computation when\nperforming an SVE vector memory operation (VecStore/VecLoad).\n\nWith SVE enabled by default:\n\nTest: ./art/test.py --simulate-arm64 --run-test --optimizing \\\n(With the VIXL simulator patch)\n\nTest: ./art/test.py --target --64 --optimizing \\\n(On Arm FVP with SVE - See steps in test/README.arm_fvp.md)\n\nTest: 527-checker-array-access, 655-checker-simd-arm.\n\nChange-Id: Icd49e57d5550d1530445a94e5d49e217a999d06d\n"
    },
    {
      "commit": "ecbdc07474cf8be4837f40a12a5b6b82579df99a",
      "tree": "f09293f8d14dc4ee655710d21fbd305d14b97805",
      "parents": [
        "3676b36e832961426b285ec6a58e2b4c5a4b7816"
      ],
      "author": {
        "name": "Usama Arif",
        "email": "usama.arif@linaro.org",
        "time": "Wed Nov 13 13:32:54 2019 +0000"
      },
      "committer": {
        "name": "Joel Goddard",
        "email": "joel.goddard@linaro.org",
        "time": "Fri Sep 03 15:29:45 2021 +0100"
      },
      "message": "ARM64: FP16.compare() intrinsic for ARMv8\n\nThis CL implements an intrinsic for compare() method with\nARMv8.2 FP16 instructions.\n\nThe performance improvements using timeCompareFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.compare:\n    - big cluster only: 742\n    - little cluster only: 2286\n- arm64 compare Intrinisic implementation:\n    - big cluster only: 492 (~34% faster)\n    - little cluster only: 1535 (~33% faster)\nThe benchmark can be found in the following patch:\nhttps://android-review.linaro.org/c/linaro/art-testing/+/21039\n\nAuthors: Usama Arif, Edward Pickup, Joel Goddard\n\nTest: 580-checker-fp16\nTest: art/test/testrunner/run_build_test_target.py -j80 art-test-javac\n\nChange-Id: Idbe9f56f964f044e6d725bd696459fb04d2ac76c\n"
    },
    {
      "commit": "3676b36e832961426b285ec6a58e2b4c5a4b7816",
      "tree": "758da9350ed0db2ae0caf956971fb68c53ad2021",
      "parents": [
        "315cf0c115ad34f5f7e7b63cf80cf40009b6ee15"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Sep 02 16:13:51 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 02 17:17:22 2021 +0000"
      },
      "message": "Clean up compile time null checks for VarHandle intrinsics.\n\nA few small changes:\n\n- In the instruction simplifier, re-do the `object-\u003eIsNullConstant()`\n  check as this might have changed after the inliner.\n\n- Make `CanEnsureNotNullAt()` a static member: it is used locally and\n  should have local visibility, which was accidentally changed.\n\nBug: 191765508\nTest: art/test.py --host -r\nChange-Id: Ib7d88ded4cd73543f66cae75117679a40021c84c\n"
    },
    {
      "commit": "98f01d1deac3a938e49f0725c58798e38ef59277",
      "tree": "dcbf841ef87fdb1baf21f231e20cc9bd9f3cb0df",
      "parents": [
        "96dadefd24331f6808cb287048269ba772423c33"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 28 14:33:34 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Aug 31 16:13:39 2021 +0000"
      },
      "message": "Revert^2 \"Compile time null checks for VarHandle intrinsics.\"\n\nThis reverts commit 4a889b7f1e58368f0ffd795eaa24f2f493ccab8d.\n\nReason for revert: relanding the original change after fixing the\n  baseline compiler.\n\nStatic checks for VarHandle intrinsics are now done in two places:\n\n 1) Simple static checks are done for both baseline and optimizing\n    compilers in `HInstructionBuilder::BuildInvokePolymorphic`.\n\n 2) More complex checks are done in instruction simplifier only for the\n    optimizing compiler. They can use information provided by preceding\n    optimization passes.\n\nBug: 191765508\nTest: art/test.py --host -r\nChange-Id: I92932f6fcf408c700e6db0101fe2fb1e8300a54a\n"
    },
    {
      "commit": "96dadefd24331f6808cb287048269ba772423c33",
      "tree": "5780533c94b5d46f86fb372fc1516f35f78d2048",
      "parents": [
        "12dd6fc8d125e594376fdca306da315d01f12069"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Aug 29 16:51:55 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 31 12:53:59 2021 +0000"
      },
      "message": "Partial LSE: handle all kinds of infinite loops.\n\nA subgraph could also have an infinite loop.\n\nTest: 826-inifinite-loop\nBug: 196246395\nChange-Id: Ifd1e1ae0f42dfe2cc156386fc166101c20748fc9\n"
    },
    {
      "commit": "4fba66c84245be79b1b32cbfa1584cfc5a87f053",
      "tree": "84dc54b5f50146e99449bae6da2cfa979e399297",
      "parents": [
        "4bd6795677dad1e4856b6fe458725adbefb57c94"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 26 18:49:04 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 27 14:00:13 2021 +0000"
      },
      "message": "Inline caches: be more robust in the presence of framework change.\n\nWhat used to be a class could be changed into an interface. Test for\nthat case as well.\n\nTest: test.py\nBug: 194817322\nChange-Id: I4c225640b45c529d440faa701ed29f978b7cbd28\n"
    },
    {
      "commit": "668daf892a2b81b1acc09c354d705774daa17958",
      "tree": "42b291279d36ebefead5f0a2625d2b0e1ea81601",
      "parents": [
        "5503a8aef8019e536b9702326eccdc92e7be7644"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 10 15:42:10 2021 +0000"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Aug 10 19:22:14 2021 +0000"
      },
      "message": "Revert^2 \"Adjust test for compiler update.\"\n\n855cc35a2212d51de19d1daaefe6577223882fd6\n\nChange-Id: Ife32e570d5367f0237137f300d5ebf063a7555b3\n"
    },
    {
      "commit": "855cc35a2212d51de19d1daaefe6577223882fd6",
      "tree": "9f81ffa70d28a9021209bf508a052023e7495e2a",
      "parents": [
        "1f0a1547d31aaa44e6667dbd0ada228f4b2e2d8a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Aug 08 20:59:59 2021 +0000"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Aug 08 20:59:59 2021 +0000"
      },
      "message": "Revert \"Adjust test for compiler update.\"\n\nRevert \"Switch to clang r428724 13.0.1.\"\n\nRevert submission 1743633-switch-to-clang-r428724\n\nReason for revert: fix build\nReverted Changes:\nI824f3bc1c:Update bazel\u0027s clang version to clang-r428724\nI6c4c26267:Adjust test for compiler update.\nI94ab1f2dc:Switch to clang r428724 13.0.1.\n\nChange-Id: Ic9b7921f530566a6ebe7e3d4304c2242ffdfecc1\n"
    },
    {
      "commit": "1f0a1547d31aaa44e6667dbd0ada228f4b2e2d8a",
      "tree": "6d8ef6f4e434690d9164e11f88f4bfeabe00f5c5",
      "parents": [
        "f955425d11ed4b8f6dc02530f0f5ab69edecd8d2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jun 29 13:59:51 2021 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Aug 08 18:20:19 2021 +0000"
      },
      "message": "Adjust test for compiler update.\n\nBug: 192012848\nTest: run test-art-host-gtest-art_compiler_host_tests\nChange-Id: I6c4c26267c3bcfafc22c391f99cdadcde473445e\n"
    },
    {
      "commit": "310b4e26593f6c1b89659d00275b55fa1a3c07b7",
      "tree": "d4527871a5f6a86f6ecee96177f21c63397e67ba",
      "parents": [
        "a0dd228837fbbacb3d29445bdf027649567f94fb"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 21 16:02:06 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 11:56:43 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndBitwise{And,Or,Xor} for fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  GetAndBitwiseOrStaticFieldInt          2.346    0.012\n  GetAndBitwiseOrFieldInt                2.615    0.010\n  GetAndBitwiseOrAcquireStaticFieldInt   2.340    0.008\n  GetAndBitwiseOrAcquireFieldInt         2.616    0.008\n  GetAndBitwiseOrReleaseStaticFieldInt   2.349    0.008\n  GetAndBitwiseOrReleaseFieldInt         2.614    0.008\n  GetAndBitwiseXorStaticFieldInt         2.336    0.010\n  GetAndBitwiseXorFieldInt               2.611    0.010\n  GetAndBitwiseXorAcquireStaticFieldInt  2.332    0.008\n  GetAndBitwiseXorAcquireFieldInt        2.613    0.008\n  GetAndBitwiseXorReleaseStaticFieldInt  2.335    0.008\n  GetAndBitwiseXorReleaseFieldInt        2.617    0.008\n  GetAndBitwiseAndStaticFieldInt         2.341    0.010\n  GetAndBitwiseAndFieldInt               2.619    0.010\n  GetAndBitwiseAndAcquireStaticFieldInt  2.345    0.008\n  GetAndBitwiseAndAcquireFieldInt        2.610    0.009\n  GetAndBitwiseAndReleaseStaticFieldInt  2.343    0.008\n  GetAndBitwiseAndReleaseFieldInt        2.616    0.008\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ied3ae34aaad24e1b2cd8237fed4ac64aa9ae10ae\n"
    },
    {
      "commit": "017aae426873d57e260d5ae52fd5ce2ed2bddb1c",
      "tree": "6129e7bc94b4a63231e6e99ccb57a2b583f1cc3f",
      "parents": [
        "b1adfc2a0570f52d74b8a4acdd578efc1790995b"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 17:56:01 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 10:06:13 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndAdd for fields.\n\nThe implementation is based on XADD instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndAddStaticFieldInt             2.338    0.012\n  GetAndAddFieldInt                   2.614    0.012\n  GetAndAddStaticFieldFloat           2.338    0.010\n  GetAndAddFieldFloat                 2.612    0.010\n  GetAndAddAcquireStaticFieldInt      2.337    0.007\n  GetAndAddAcquireFieldInt            2.617    0.007\n  GetAndAddAcquireStaticFieldFloat    2.337    0.010\n  GetAndAddAcquireFieldFloat          2.610    0.010\n  GetAndAddReleaseStaticFieldInt      2.336    0.007\n  GetAndAddReleaseFieldInt            2.615    0.007\n  GetAndAddReleaseStaticFieldFloat    2.334    0.010\n  GetAndAddReleaseFieldFloat          2.613    0.010\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: If41fd01b7e444a7157478999640f45d64bbf17f1\n"
    },
    {
      "commit": "fc42ce1a2b013059b7868ffc69d35fade6c5b743",
      "tree": "c82efa8fa290af716eb02e1389379c724ed04ab5",
      "parents": [
        "a6f8a6a7a1e4e639b393261fc46abe046cd59b63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 15:51:35 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 22 09:45:56 2021 +0000"
      },
      "message": "Fix `GetDataTypeFromShorty()` for inlined VarHandle intrinsics.\n\nTest: testrunner.py --host --optimizing --jit\nBug: 188889082\nChange-Id: Ide335dc408f5bd2c9256d4cac5ba66d2d390f69b\n"
    },
    {
      "commit": "244f22bf574f8c1656e668e77e4636f442d1a214",
      "tree": "0fe0cc017fc2ae948d412d5533596544cbea7914",
      "parents": [
        "4a889b7f1e58368f0ffd795eaa24f2f493ccab8d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 16:56:30 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 21 17:12:20 2021 +0000"
      },
      "message": "x86_64: Add LockXadd* helper function and tests for it.\n\nA separate function is need for 16-bit variant `lock xaddw` because the\nLOCK prefix should go after the operand size override prefix to match\nthe order of prefixes emitted by the reference implementation.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for LOCK XADD\nChange-Id: I29946c75c76966cb9c6425b2a22eae3664ce3c00\n"
    },
    {
      "commit": "4a889b7f1e58368f0ffd795eaa24f2f493ccab8d",
      "tree": "6449e59690e4219f3b3c1beba3631ecb586a584d",
      "parents": [
        "5d446a37192427b4d24ca9add5d8e2409f665c4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:20:54 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:21:35 2021 +0000"
      },
      "message": "Revert \"Compile time null checks for VarHandle intrinsics.\"\n\nThis reverts commit b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29.\n\nReason for revert: Breaks ART baseline compiler.\n\nBug: 191765508\nChange-Id: Ida63660e0149c4847f015950f95282e61add7204\n"
    },
    {
      "commit": "5d446a37192427b4d24ca9add5d8e2409f665c4d",
      "tree": "6cf0445966ba613542db4d5fb2ed02faa05bedb5",
      "parents": [
        "b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 15:51:48 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 21 15:23:52 2021 +0000"
      },
      "message": "x86_64: Add XADD instruction and tests for it.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for XADD\nChange-Id: Idaa5f40dab106e7f48bfd8adeee629bcdaa8e33a\n"
    },
    {
      "commit": "b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29",
      "tree": "f65ecb447173e067fd5bd9437c19380b0d72bf04",
      "parents": [
        "c4597765f2d7496e428c0b0dc1b26ffb71c61093"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 20 15:02:33 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 21 12:57:37 2021 +0000"
      },
      "message": "Compile time null checks for VarHandle intrinsics.\n\nCreate a `VarHandleOptimizations` helper class holding the\noptimization flags for VarHandle intrinsics.\n\nAdd a flag to avoid emitting the intrinsic implementation\nand move shared checks previously duplicated in intrinsic\ncodegens helpers `HasVarHandleIntrinsicImplementation()` to\nthe instruction simplifier. Individual intrinsic codegens\nperform additional checks as needed.\n\nAdd the first optimization flag to avoid null check on the\nholder object if it cannot be null. And do not emit the\nintrinsic implementation if the holder object is null.\n\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --target --optimizing\nBug: 191765508\nChange-Id: I53b1b57c327f02a9913f22885c1ce663cd9c3d44\n"
    },
    {
      "commit": "4b0ceb655f86d6be90be574349bdc55d24e5560c",
      "tree": "062f296ec594a4bf075aaac19c07cfc9cb2fd86e",
      "parents": [
        "8f21748bf127012947ed48c40948df3f2d9c85ef"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 13 12:16:02 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 16 17:53:20 2021 +0100"
      },
      "message": "x86_64: Implement VarHandle.getAndSet for fields.\n\nThe implementation is based on XCHG instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndSetStaticFieldInt             2.449    0.018\n  GetAndSetStaticFieldString          2.818    0.014\n  GetAndSetFieldInt                   2.728    0.012\n  GetAndSetFieldString                3.002    0.014\n  GetAndSetAcquireStaticFieldInt      2.438    0.007\n  GetAndSetAcquireStaticFieldString   2.811    0.010\n  GetAndSetAcquireFieldInt            2.726    0.007\n  GetAndSetAcquireFieldString         2.998    0.010\n  GetAndSetReleaseStaticFieldInt      2.436    0.007\n  GetAndSetReleaseStaticFieldString   2.813    0.010\n  GetAndSetReleaseFieldInt            2.730    0.007\n  GetAndSetReleaseFieldString         2.997    0.010\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I77bdf6d4b940d90b0efe499cab335e5a0fa5ca4a\n"
    },
    {
      "commit": "8f21748bf127012947ed48c40948df3f2d9c85ef",
      "tree": "70d287634fd0b3a2d43ad8de7738c9703eb0a2a6",
      "parents": [
        "ce5c830aede3313ceb22f7b2ca6c30e5b8432972"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 17:16:36 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 09:44:43 2021 +0000"
      },
      "message": "Mark move constructors/assignements as `noexcept`.\n\nAnd unmark `HashSet` copy constructor and copy assignment.\n\nTest: m\nChange-Id: Ia419f3036b2880815be446395e81c7e543388bd9\n"
    },
    {
      "commit": "1e271ce1d48c64136a1e2f6102c78d51635ac435",
      "tree": "0d9ad35b372b157dd2d1cebe00b2d6c1457067cc",
      "parents": [
        "2269f7eef5ac7821d4461b7f452313239aa100eb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 12 15:14:13 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 16 08:17:37 2021 +0000"
      },
      "message": "Revert \"libelffile: move to DWARF3 when writing .debug_frame.\"\n\nThis reverts commit 546243375d7e129aa02ca7ea9663ed7c40b4880e.\n\nReason for revert: DWARF-64 is supposed to be used for libraries\nover 4GB in size.  It is unrelated to pointer sizes and linked bug.\n(the spec explicitly says that it should not be used in our case)\n\nBug: 192012848\nChange-Id: Iaf4679b6d4cb27d049277ef7bdc6606771390a6b\n"
    },
    {
      "commit": "cf74ae7eae39affc8886b4bce5294aceebb908c3",
      "tree": "5a7ca403a555069f3f373c38fe45d78b53e243c6",
      "parents": [
        "dcb148a48a6bc69aba71cf3e2b8ab915ab3bf6d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 10:37:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:09:19 2021 +0000"
      },
      "message": "Small cleanups after latest verifier change.\n\nDuring AOT, the inliner can also look at whether the class needs to be\nverified at runtime. We know the class doesn\u0027t hard fail otherwise its\nstatus would be ErrorResolved.\n\nAlso un-negate IsUnverified -\u003e IsVerified.\nAlso make isVerifiedNeedsAccessCheck only return true if the class has\nthat exact state.\n\nTest: test.py and golem numbers\nBug: 28313047\nChange-Id: I2ee0024a380225e1aa120b69069a5a34d3f81113\n"
    },
    {
      "commit": "9e050ab1a061d9660eb0c1daa01a823ad75b0f05",
      "tree": "714f2ba3b11406310416e85357f45450634846b2",
      "parents": [
        "4f990714b13e0b4446305a5411648a1a9ae42a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 14:59:25 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 17:13:08 2021 +0000"
      },
      "message": "Remove the need of VerifiedMethod in the compiler.\n\nThe compiler only needs to know if a method is compilable or not. So\njust record a set of uncompilable methods (in some cases, we cannot have\nan ArtMethod, but the method can still be compiled).\n\nTest: test.py\nBug: 28313047\nChange-Id: Ic4235bc8160ec91daa5ebf6504741089b43e99cb\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "cd8286f6e69aeeb1abb69b7807effee2f1539508",
      "tree": "35a79e6834359dd8cd50eaa6bd170f8edbd8e8ff",
      "parents": [
        "0910d891d729ca984baa31d4e3ed51da8b0cad7d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:40:16 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 14 10:04:35 2021 +0000"
      },
      "message": "x86_64: Implement missing variants of XCHG. Add tests for them.\n\nAlso, clean up the handling of a special case when at least one of the\noperands for XCHG is RAX/EAX/AX. Add a helper function that deduplicates\nthe code for different operand sizes.\n\nThis patch also extends `EmitOptionalByteRegNormalizingRex32` function\nto handle the case when an instruction has both operands in byte\nregisters, and so it needs REX prefix if either of them is in a special\nregister (an example of such instruction is `xchg bpl, al`: if only the\nsource register is checked, no REX would be emitted). Previously\n`EmitOptionalByteRegNormalizingRex32` handled only the case when the\nsource register is special (an example of such instruction is\n`movzxb rax, bpl`).\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: I20c5e9375bbd15d799e5748b127d154ddcc0fc11\n"
    },
    {
      "commit": "a5c529fd866309856a1eaff009f781ffe266b499",
      "tree": "1a79af82e61b26de98a6d03fbb81e2fc5db12a93",
      "parents": [
        "b50ceebb814f28a6ade94974d3e8614c8585760e"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 15:34:43 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:25:08 2021 +0000"
      },
      "message": "x86_64: Allow test to skip register pairs. Fix XCHG and enable tests.\n\nPreviously tests were disabled for `xchgl reg, reg` variant with all\nregister pairs, although the problematic case is only `xchg eax, eax`.\n\nThis commit allows one to pass an exception list to a testing function\nand skip the problematic register pairs instead of disabling the whole\ntest. The patch adds exception lists to all testing functions that run\nover register pairs, although XCHG only needs it for `Repeatrr`.\n\nEnabling the test revealed a few small errors in the XCHG implementation\n(namely, source and destination registers were swapped, which does not\naffect the result). This commit fixes the implementation so that the\ntests pass.\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: Iaa759861330bcfb30db1a8219b805cc479cc3280\n"
    },
    {
      "commit": "b50ceebb814f28a6ade94974d3e8614c8585760e",
      "tree": "8297534745f75989ddf6b6c124ccc623a8eee71f",
      "parents": [
        "38837d44f47a14ccd07e9de3c26d3e40b9768d0d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 14:20:16 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jul 12 16:24:37 2021 +0000"
      },
      "message": "x86: Add missing variants for XCHG and tests for this instruction.\n\nAdd XCHG variants when both operands are registers. Handle the special\ncase when at least one of the register operands is EAX/AX. Add tests for\nthe new variants and for other variants that previously weren\u0027t tested.\n\nBug: 65872996\nTest: m test-art-host-gtest\nChange-Id: I1e80d1b86f3d2e804b90c2a181e4eabded30d8ae\n"
    },
    {
      "commit": "1c61f7eaa824733d132e86e7bbb7617749273f1a",
      "tree": "f911b23ca0eb50846e2f2aef908efd908caa2624",
      "parents": [
        "ef10f42bf21cddff00972c8b47aaf79528cbe3b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 08 15:54:01 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 09 08:07:45 2021 +0000"
      },
      "message": "Improve abort message in `SwapSpace::NewFileChunk()`.\n\nUse `PLOG` to print the `errno` information. Replace the\n\"Aborting...\" with a more descriptive message, repeating a\n`LOG(ERROR)` which is usually often lost in crash reports.\n\nTest: m\nBug: 193120528\nChange-Id: Id3b4ca0f40d8c13de95825aeb0d83964435be91e\n"
    },
    {
      "commit": "6a2e6893290eac83f59dac4ec5bc10abf985ae10",
      "tree": "ee7f59774da19363bb867df9c0e9dc4f35f01fa2",
      "parents": [
        "592bceac0c030794175ae41d9c7e2ca092739d2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 14:21:07 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 16:56:35 2021 +0000"
      },
      "message": "Add support for standalone ART gtests to MTS.\n\nThis change:\n- adds standalone ART gtests to test suite `mts-art`;\n- adds `MainlineTestModuleController` support to standalone ART\n  gtests. This in order to have these tests run in a Mainline context\n  only when the ART Module (either `com.google.android.art` or\n  `com.android.art`) is installed on the test device.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-00\nBug: 167385698\nChange-Id: I97d9c00b7c10debff8c63e4ae75f90da02be271c\n"
    },
    {
      "commit": "f040914a122be86e280efe5e31af1168f2b7c72e",
      "tree": "8ea3fa76be8f215d36977477015ed7f9f3a2f65c",
      "parents": [
        "b4bd92f27fb143135870d07b459ea52637afcfa5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Mar 22 15:45:03 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 10:52:35 2021 +0000"
      },
      "message": "Uncouple ART gtests from the ART APEX.\n\nIntroduce standalone versions of ART gtests on target, not bundled\nwith the ART APEX.\n\nSo far ART gtests have always been built as debug artifacts (and\nlinked against ART debug libraries). Make some adjustments in some of\nthese tests so that they can also work as non-debug artifacts and be\nused with the Release ART APEX (which contains only non-debug\nartifacts).\n\nNewly added tests:\n* `art_standalone_cmdline_tests`\n* `art_standalone_compiler_tests`\n* `art_standalone_dex2oat_tests`\n* `art_standalone_dexdump_tests`\n* `art_standalone_dexlist_tests`\n* `art_standalone_dexoptanalyzer_tests`\n  * Note: Requires root access to the device.\n* `art_standalone_libartbase_tests`\n* `art_standalone_libartpalette_tests`\n* `art_standalone_libartservice_tests`\n* `art_standalone_libarttools_tests`\n* `art_standalone_libdexfile_support_tests`\n* `art_standalone_libdexfile_tests`\n* `art_standalone_libprofile_tests`\n* `art_standalone_oatdump_tests`\n* `art_standalone_odrefresh_tests`\n* `art_standalone_profman_tests`\n  * Note: Requires root access to the device.\n  * Note: Some tests (2 out of 37) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_runtime_compiler_tests`\n* `art_standalone_runtime_tests`\n  * Note: Some tests (16 out of 686) are failing and have been\n    temporarily disabled.\n  * Note: Some tests (4 out of 686) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_sigchain_tests`\n\nTests not added:\n* `art_standalone_dexanalyze_tests`\n  * Reason: ART binary `dexanalyze` is not part of the Release ART APEX.\n* `art_standalone_dexdiag_tests`\n  * Reason: ART binary `dexdiag` is not part of the Release ART APEX.\n* `art_standalone_dexlayout_tests`\n  * Reason: ART binary `dexlayout` is not part of the Release ART APEX.\n* `art_standalone_imgdiag_tests`\n  * Reason: ART binary `imgdiag` is not part of the Release ART APEX.\n\nTest: atest -a art_standalone_cmdline_tests\nTest: atest -a art_standalone_compiler_tests\nTest: atest -a art_standalone_dex2oat_tests\nTest: atest -a art_standalone_dexdump_tests\nTest: atest -a art_standalone_dexlist_tests\nTest: atest -a art_standalone_dexoptanalyzer_tests\nTest: atest -a art_standalone_libartbase_tests\nTest: atest -a art_standalone_libartpalette_tests\nTest: atest -a art_standalone_libartservice_tests\nTest: atest -a art_standalone_libarttools_tests\nTest: atest -a art_standalone_libdexfile_support_tests\nTest: atest -a art_standalone_libdexfile_tests\nTest: atest -a art_standalone_libprofile_tests\nTest: atest -a art_standalone_oatdump_tests\nTest: atest -a art_standalone_odrefresh_tests\nTest: atest -a art_standalone_profman_tests\nTest: atest -a art_standalone_runtime_compiler_tests\nTest: atest -a art_standalone_runtime_tests\nTest: atest -a art_standalone_sigchain_tests\nTest: atest -a art_standalone_\\*_tests\nTest: m art_chroot \u0026\u0026 atest ArtGtestsTargetChroot\nBug: 162834439\nBug: 162734417\nChange-Id: I8beda9159d48c4ca495698357dc3bd95e3ff84d5\n"
    },
    {
      "commit": "4f388e3f26925f84d0a623a5a0e3c909fd09bd98",
      "tree": "5002223ee4d6b410d7e961ee50447d0a5538f14d",
      "parents": [
        "a934b1166e03f940f49b08acb7d777f7e24b584d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 12:39:14 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 01 10:19:16 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.compareAnd{Set,Exchange} for fields.\n\nReuse `GenCAS` function and extend it to support `compareAndExchange`\noperation in addition to `compareAndSet`. For convenience, split it into\nthree functions for integral types, floating-point types and references,\nas these cases are handled differently and require different number of\ntemporary registers.\n\nAlso, rename CreateIntIntIntIntIntToInt to CreateUnsafeCASLocations and\nuse RAX for output to take advantage of the CMPXCHG side-effect.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                                  before  after\n  ----------------------------------------------------------\n  CompareAndSetStaticFieldInt                2.843   0.00910\n  CompareAndSetStaticFieldString             3.256   0.01017\n  CompareAndSetFieldInt                      3.161   0.00910\n  CompareAndSetFieldString                   3.486   0.01017\n  WeakCompareAndSetStaticFieldInt            2.820   0.00895\n  WeakCompareAndSetStaticFieldString         3.222   0.01016\n  WeakCompareAndSetFieldInt                  3.144   0.00910\n  WeakCompareAndSetFieldString               3.454   0.01018\n  WeakCompareAndSetPlainStaticFieldInt       2.819   0.00896\n  WeakCompareAndSetPlainStaticFieldString    3.227   0.01016\n  WeakCompareAndSetPlainFieldInt             3.150   0.00909\n  WeakCompareAndSetPlainFieldString          3.456   0.01019\n  WeakCompareAndSetAcquireStaticFieldInt     2.822   0.00896\n  WeakCompareAndSetAcquireStaticFieldString  3.226   0.01016\n  WeakCompareAndSetAcquireFieldInt           3.148   0.00910\n  WeakCompareAndSetAcquireFieldString        3.455   0.01020\n  WeakCompareAndSetReleaseStaticFieldInt     2.820   0.00895\n  WeakCompareAndSetReleaseStaticFieldString  3.223   0.01015\n  WeakCompareAndSetReleaseFieldInt           3.143   0.00910\n  WeakCompareAndSetReleaseFieldString        3.458   0.01013\n  CompareAndExchangeStaticFieldInt           2.765   0.00895\n  CompareAndExchangeStaticFieldString        3.183   0.01012\n  CompareAndExchangeFieldInt                 3.076   0.00907\n  CompareAndExchangeFieldString              3.443   0.01015\n  CompareAndExchangeAcquireStaticFieldInt    2.774   0.00895\n  CompareAndExchangeAcquireStaticFieldString 3.177   0.01012\n  CompareAndExchangeAcquireFieldInt          3.092   0.00907\n  CompareAndExchangeAcquireFieldString       3.453   0.01015\n  CompareAndExchangeReleaseStaticFieldInt    2.796   0.00895\n  CompareAndExchangeReleaseStaticFieldString 3.193   0.01014\n  CompareAndExchangeReleaseFieldInt          3.105   0.00909\n  CompareAndExchangeReleaseFieldString       3.451   0.01015\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I816f9c6a3786efe921fe445536f9ea3ddae801d5\n"
    },
    {
      "commit": "9b996ce378e58f4699145721a1708732d5399a95",
      "tree": "be1392dd6a0c029c92f1de195b74961d83da112e",
      "parents": [
        "c2753e6beec483b5b14161b6bbc8e0a86aef9397"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 29 16:05:38 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 01 01:52:04 2021 +0000"
      },
      "message": "Replace JIT total time histogram with total time counter\n\nWe don\u0027t report histograms, so let\u0027s get the total time as a\nproxy to measure JIT activity.\n\nTest: gtest\nBug: 170149255\nChange-Id: I76911f5e7f93f00dc9f133e7f89a1045b31dedc7\n"
    },
    {
      "commit": "546243375d7e129aa02ca7ea9663ed7c40b4880e",
      "tree": "adc158db1f6d6d6c482ac88462ad687a63d8267d",
      "parents": [
        "7ffab8106445905d30fdef6291ebd18765c961f0"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jun 25 17:37:32 2021 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jul 01 00:37:35 2021 +0000"
      },
      "message": "libelffile: move to DWARF3 when writing .debug_frame.\n\nzR augmentation in .debug_frame isn\u0027t recognized by llvm-dwarfdump.\nThis leads to below test failure after compiler update:\n  DwarfTest.DebugFrame\n  DwarfTest.x86_64_RegisterMapping\n\nSo switch to DWARF3, which supports 64-bit format without using zR\naugmentation.\n\nBug: 192012848\nTest: run art-test\nChange-Id: Ib37c0bba7a293ae7b04c8cc0e9e09c045bcc0287\n"
    },
    {
      "commit": "9b4e556fbd3ffc5686306d2cda7b8367dca0fdbe",
      "tree": "c315ab1ab39215d03d08c45d8a5800a51e205a16",
      "parents": [
        "3044d7ab7bca4c35d5a74bd4a524d8aa7a466cf7"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 14:33:35 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 29 09:29:12 2021 +0000"
      },
      "message": "x86: Add tests for CMPXCHG (without LOCK prefix).\n\nFor 8/32/64-bit variants LOCK CMPXCHG is implemented via CMPXCHG, so the\ntests for LOCK CMPXCHG cover CMPXCHG as well. But the 16-bit variant of\nLOCK CMPXCHG does not use CMPXCHG, because it has to reorder prefixes:\nthe operand size override prefix must go before the LOCK prefix to match\nclang order. Therefore 16-bit CMPXCHG was not tested previously.\n\nAlso, change helpers that convert `ByteRegister` to `Register` for\ntesting to call the actual function rather than reimplement it.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for CMPXCHG\nChange-Id: I234b7a7e69da49be310b1e89c83447f8b11af93d\n"
    },
    {
      "commit": "3044d7ab7bca4c35d5a74bd4a524d8aa7a466cf7",
      "tree": "0de8c535e33d33edb58543dc46b3d3dca3025f17",
      "parents": [
        "9060ebe88ee6917bea714d93b522197b4b184267"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 14:20:19 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 29 09:28:45 2021 +0000"
      },
      "message": "x86_64: Add tests for CMPXCHG (without LOCK prefix).\n\nFor 8/32/64-bit variants LOCK CMPXCHG is implemented via CMPXCHG, so the\ntests for LOCK CMPXCHG cover CMPXCHG as well. But the 16-bit variant of\nLOCK CMPXCHG does not use CMPXCHG, because it has to reorder prefixes:\nthe operand size override prefix must go before the LOCK prefix to match\nclang order. Therefore 16-bit CMPXCHG was not tested previously.\n\nBug: 65872996\nTest: m test-art-host-gtest  # new test cases for CMPXCHG\nChange-Id: I6d021bb40cfc767143db914ff64276a23243e046\n"
    },
    {
      "commit": "5b8eb16cb6476d4e04379fdcfad7ba2c731001ff",
      "tree": "3d88131dd7907d8ece308381d3b449fadc206b3f",
      "parents": [
        "55ffe7fa9ead8b501a756bb53f2571e3e7602f5e"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 12:38:20 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 17:35:18 2021 +0000"
      },
      "message": "x86_64: Add byte and word sized CMPXCHG variants and tests for them.\n\nBug: 65872996\n\nTest: m test-art-host-gtest  # new test cases for CMPXCHG\nChange-Id: Id8f691d10e60dfd5b2d9ee3b387ff3062347cde1\n"
    },
    {
      "commit": "55ffe7fa9ead8b501a756bb53f2571e3e7602f5e",
      "tree": "c4f63e30679b3e11d65268e52bf7548416f26792",
      "parents": [
        "8bf1da992a15a79ae76bcf53e9a2909912fbe96a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 14 15:18:54 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 28 11:40:15 2021 +0000"
      },
      "message": "Rename some ART gtest related Soong modules.\n\nART gtests currently link with the debug (\"d\") versions of ART\nlibraries. The gtests themselves and their libraries are compiled as\ndebug artifacts. For the sake of consistency, perform the following\nrenaming of ART gtest related Soong modules:\n\n* `libart-compiler-gtest` -\u003e `libartd-compiler-gtest`\n* `libart-dex2oat-gtest`  -\u003e `libartd-dex2oat-gtest`\n* `libart-gtest-defaults` -\u003e `libartd-gtest-defaults`\n* `libart-gtest`          -\u003e `libartd-gtest`\n* `libart-runtime-gtest`  -\u003e `libartd-runtime-gtest`\n* `libartbase-art-gtest`  -\u003e `libartbased-art-gtest`\n\nAs we plan to introduce non-debug (\"non-d\"), standalone versions of\nART gtests in the context of uncoupling ART (target) gtests from the\nART APEX (b/162834439), this renaming will help us, as we\u0027ll be able\nto use the old names of a \"d\" module for the corresponding \"non-d\"\nversion.\n\nTest: mmma art\nTest: Run ART gtests on host and target\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dfalse art/build/apex/runtests.sh\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dtrue  art/build/apex/runtests.sh\nBug: b/162834439\nChange-Id: I4ca27a7f445a760398f41a9e60a7008d77294505\n"
    },
    {
      "commit": "30bb6af110e0999a87c6e9fd0145fdd4a59e98d8",
      "tree": "74a36f9bd04db20815554f03a2e3cb9d564206bb",
      "parents": [
        "f5958f8881e299c42ac923e4751f8f34d72db7f0"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 15 17:34:51 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 24 09:14:08 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set{Opaque,Release,Volatile} for fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  SetVolatileStaticFieldInt    2.782   0.00678\n  SetVolatileStaticFieldString 3.040   0.00678\n  SetVolatileFieldInt          3.082   0.00678\n  SetVolatileFieldString       3.317   0.00678\n  SetOpaqueStaticFieldInt      2.804   0.00177\n  SetOpaqueStaticFieldString   3.040   0.00230\n  SetOpaqueFieldInt            3.080   0.00174\n  SetOpaqueFieldString         3.317   0.00224\n  SetReleaseStaticFieldInt     2.795   0.00177\n  SetReleaseStaticFieldString  3.042   0.00281\n  SetReleaseFieldInt           3.076   0.00174\n  SetReleaseFieldString        3.326   0.00225\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Idc5922ba4542608cf2b8d9ba686206b9956baaf6\n"
    },
    {
      "commit": "6a4b2990c4b7577e7ceb463baf8250b1e8a0b619",
      "tree": "208467bc7518583e59bbd491125ed200fd094116",
      "parents": [
        "d9696b79c886b9a23b4a77063fac4a3e03e0406d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jun 11 12:02:17 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 22 14:38:58 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set() for static and instance fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  SetStaticFieldInt            2.421   0.00176\n  SetStaticFieldString         2.628   0.00230\n  SetFieldInt                  2.665   0.00175\n  SetFieldString               2.914   0.00225\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I13acda88ab881c1274fcd8e154de61150409d974\n"
    },
    {
      "commit": "d9696b79c886b9a23b4a77063fac4a3e03e0406d",
      "tree": "9a850d015fcaca721e9309b777f2775202ae3672",
      "parents": [
        "59edf4b8f09d02c10fa87831573151c6b99c3149"
      ],
      "author": {
        "name": "Stelios Ioannou",
        "email": "stelios.ioannou@linaro.org",
        "time": "Mon Jun 14 15:49:26 2021 +0100"
      },
      "committer": {
        "name": "Stelios Ioannou",
        "email": "stelios.ioannou@linaro.org",
        "time": "Tue Jun 22 10:04:04 2021 +0100"
      },
      "message": "ART: Fix for no-opt debug (-O0) builds\n\nCurrently, the build process of debug builds with no optimization fails\ndue to missing symbol definitions.\n\nFor example, it throws errors like the following one:\n\nld.lld: error:\nundefined symbol:\nart::gc::collector::MarkSweep::MarkStackTask\u003cfalse\u003e::kMaxSize\n\nThis patch changes the missing symbols from constants to constant\nexpressions as a way to fix those issues. The optimized builds\nget away with this issue because the values are optimized\nto be inlined and not referenced.\n\nThe code at https://godbolt.org/z/3oYKoPzGj depicts similar\nbehaviour. Additionally, there are comments describing why\nthis issue occurs.\n\nTest: ART_DEBUG_OPT_FLAG\u003d\"-O0\" art/tools/buildbot-build.sh --host\n\nChange-Id: I66b5cfc885dfdfc82e3e4008b1e40fd68c19c999\n"
    },
    {
      "commit": "5da0507fd2d2b6342a9b87f4cce5ebbfa2c67dd3",
      "tree": "ebc00f7f0504da88d5e0e4d1d3858b77caa2fc3d",
      "parents": [
        "4ef36490afb1cfa6a29442c8d76938ec9fd9b9dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 18 15:51:12 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 21 13:03:16 2021 +0000"
      },
      "message": "Support inlining methods that may have soft verifier failures.\n\nTest: 536-checker-needs-access-check\nTest: 675-checker-unverified-method\nBug: 28313047\nChange-Id: Ie532014a658935a20dbd0b6acebfda07c28c4af4\n"
    }
  ],
  "next": "af5d304844cd8e39fcc31ca4e07e3e887d2f0bd9"
}
