)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "af5d304844cd8e39fcc31ca4e07e3e887d2f0bd9",
      "tree": "ea4f9fdf28b99ce1f8a92903045b032fa79d0301",
      "parents": [
        "4ab592315e766876d2ae96f28f05bab9ae46c160"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 10 15:29:21 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 14 15:40:52 2021 +0000"
      },
      "message": "x86_64: add a helper function that displaces an address by a given amount.\n\nThe new function will be used in an follow up CL.\n\nAdd a gtest that constructs addresses with some initial displacement and\nchecks that they are equal to addresses constructed in the same way only\nwithout displacement, and then displaced.\n\nBug: 65872996\nTest: m test-art-host-gtest  # changes covered by the new test\nChange-Id: Id282707077b513bf5911afad1cdd481a1611b55c\n"
    },
    {
      "commit": "893e2edbd5aa14ab2ccb1800ccd3154f21a2d8a7",
      "tree": "6093926743fa150ab6ad972e1ef106e22025f975",
      "parents": [
        "33ed33bcc8bd08fe743508a08b0b5f7e4be0d805"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 10 16:18:12 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 14 10:01:03 2021 +0000"
      },
      "message": "x86: fix helper function that displaces address by a given amount.\n\nChange the function from a non-const method to a static member to avoid\ngiving an impression that it modifies the old address.\n\nAdd a gtest that constructs addresses with some initial displacement and\nchecks that they are equal to addresses constructed in the same way only\nwithout displacement, and then displaced.\n\nThe added gtest reveals errors in the displace function. Some of the\nadded test cases crashed on checks, others failed test assertions. This\nshouldn\u0027t affect real world as the use of the helper function in the\ncompiler is limited to a few working cases.\n\nChecks failed because some of the address constructors do not expect ESP\nas base register. It is possible to construct such addresses with\nanother constructor like `x86::Address(x86::ESP, 0))`, but an attempt to\ndisplace this address would try to reassemble it using a forbidden\nconstructor and hit the check.\n\nSome of the failed test assertions were for Address::Absolute, such as:\n\n  Expected equality of these values:\n    x86::Address::displace(x86::Address::Absolute(0), 42)\n      Which is: 42(%ebp)\n    x86::Address::Absolute(42)\n      Which is: (%ebp)\n\nOther failed test assertions were due to the fact that one and the same\naddress can be encoded in more than one way, e.g. 32-bit displacement\nnormally requires mod 11b, but can also be achieved with mod 00b if EBP\nis used as r/m or base. Example of a test failure:\n\n  Expected equality of these values:\n    x86::Address::displace(x86::Address(EAX, TIMES_1, 42), -42)\n      Which is: 0(%ebp,%eax,1)\n    x86::Address(EAX, TIMES_1, 0)\n      Which is: 0(,%eax,1)\n\nBug: 65872996\nTest: m test-art-host-gtest  # changes covered by the new test\nTest: art/test.py --host -r\nChange-Id: I8dcdc968d7bd9da2c0a16ef0afeb13cf9a168359\n"
    },
    {
      "commit": "33ed33bcc8bd08fe743508a08b0b5f7e4be0d805",
      "tree": "e659a7f8ae1946c89ee0471ff30b456f41d9a122",
      "parents": [
        "a09d8b7d4cb6f35f12f2bd2ed4e04a0eb129eeea"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 17:43:02 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 14 07:46:00 2021 +0000"
      },
      "message": "x86_64: add intrinsic for Long.divideUnsigned\n\nFix: 156736938\nTest: art/test/testrunner/testrunner.py --host -t 082\nChange-Id: I8a72372cc54896c666a00218368f1587cbc09d11\n"
    },
    {
      "commit": "c8451cb4302e028d4e106c1a2a44749d5cb9bb31",
      "tree": "c59b852b27ef441c5a09c4755e33628315d2e678",
      "parents": [
        "322eced250f893a85dce0f78c74ef91eba5fdb1a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 17:35:16 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 03 14:00:34 2021 +0100"
      },
      "message": "Factor out arch-independent ScaleFactor definition.\n\nBug: 65872996\nTest: m test-art-host-gtest\nTest: art/test.py --host -r --optimizing\nChange-Id: I27763286847b45a5a3a493c3dba48418575b3eb6\n"
    },
    {
      "commit": "322eced250f893a85dce0f78c74ef91eba5fdb1a",
      "tree": "e3a544f1012b236c6f42e90ac9de3134b452f37a",
      "parents": [
        "6034c0755a12c4c3836d49282269a2670e6ee264"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 15:39:36 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 03 12:47:34 2021 +0000"
      },
      "message": "x86: Deduplicate load from memory for non-reference types.\n\nDeduplicate common code in HandleFieldGet, VisitArrayGet and\nGenerateVarHandleGet. Reference types are handled individually in each\ncase because these functions have subtle differences.\n\nBug: 65872996\n\nTest: art/test.py --host -r --optimizing --32\nChange-Id: Idcbe0bdb98290732816deec0cb1c42c530d5026f\n"
    },
    {
      "commit": "5c824937bb82adbde857bc99cb03c769c9f68f7b",
      "tree": "7aaa6cc94120e39ed93e3c0e127318f41e7bb456",
      "parents": [
        "95313c5d14447ff5d75f51263bfd82fc6352dd72"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 15:54:17 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 03 08:09:43 2021 +0000"
      },
      "message": "Reduce Partial LSE memory usage.\n\nInstantiate ExecutionSubgraph only for partial singleton\ncandidates (currently NewInstance, possibly NewArray in the\nfuture). This reduces \"LSA\" allocations.\n\nReserve memory for PartialLoadStoreEliminationHelper members\nbased on the number of partial singletons instead of the\nnumber of reference infos. This reduces \"LSE\" allocations.\n\nThe peak scoped arena allocation for one compiled method\nis reduced from\n  MEM: used: 97424004, allocated: 99006568, lost: 1115968\n    LSA            46015104\n    LSE            51408900\ndown to\n  MEM: used: 17000744, allocated: 26713880, lost: 3332496\n    GVN            17000744\nwhere the LSA+LSE memory use is lower than GVN use.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 33650849\nChange-Id: I323b9f144b258f0fab034794770971547ce94b59\n"
    },
    {
      "commit": "161911c9acf9506d17297ef6e83d09ad480a1a2e",
      "tree": "71d5aa9bbf32f44d3b2c99d4152ec80608e546b4",
      "parents": [
        "2ee69693be5368d423685da0a86065c4c99bcdf8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 01 15:47:28 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 11:51:40 2021 +0100"
      },
      "message": "x86_64: Deduplicate load from memory for non-reference types.\n\nDeduplicate common code in HandleFieldGet, VisitArrayGet and\nGenerateVarHandleGet. Reference types are handled individually in each\ncase because these functions have subtle differences.\n\nBug: 65872996\n\nTest: art/test.py --host -r --optimizing --64\nChange-Id: Ia2abcd7f6607edb2e35eb20a65cef7bfca380d3c\n"
    },
    {
      "commit": "2ee69693be5368d423685da0a86065c4c99bcdf8",
      "tree": "a9755ec920793c4c751e9f5c9760afadc334eea5",
      "parents": [
        "dd446b17bedb28838f5866f7c29fb47265f332fc"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed May 19 14:15:14 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 10:45:10 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get() for static and instance fields.\n\nThe implementation follows code structure for arm64.\n\nVarHandle{Acquire,Opaque,Volatile}.get() have the same implementaiton as\nVarHandle.get() on x86-64 due to the x86 memory model.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  GetStaticFieldInt            2.277   0.00179\n  GetStaticFieldString         2.307   0.00214\n  GetFieldInt                  2.532   0.00173\n  GetFieldString               2.587   0.00203\n  GetAcquireStaticFieldInt     2.279   0.00177\n  GetAcquireStaticFieldString  2.358   0.00214\n  GetAcquireFieldInt           2.548   0.00173\n  GetAcquireFieldString        2.612   0.00202\n  GetOpaqueStaticFieldInt      2.274   0.00177\n  GetOpaqueStaticFieldString   2.348   0.00213\n  GetOpaqueFieldInt            2.554   0.00172\n  GetOpaqueFieldString         2.619   0.00207\n  GetVolatileStaticFieldInt    2.252   0.00177\n  GetVolatileStaticFieldString 2.343   0.00214\n  GetVolatileFieldInt          2.550   0.00172\n  GetVolatileFieldString       2.617   0.00202\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.\n\nChange-Id: I1796faf6cb86b6882de459a02f5728ea56e4b668\n"
    },
    {
      "commit": "1d326f94a3fdd6292ccdf0022cedfb2a2b8acfee",
      "tree": "17fde709095f46eff040585e694b621676e5d0c0",
      "parents": [
        "654f01cd509ca11eae22177d4e764f1241fb3a53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 09:26:55 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 12:50:50 2021 +0000"
      },
      "message": "Avoid race on Thread::tlsPtr_::top_handle_scope.\n\nRequire mutator lock for that field and update tests to hold\nthe mutator lock when needed. This prevents GC thread that\nexecutes a thread roots flip on behalf of suspended threads\nfrom racing against construction or destruction of handle\nscopes by those threads and possibly seeing invalid values.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 189439174\nChange-Id: I268a0ef6e5aa838347956febca0d3b6e02fe3ae5\n"
    },
    {
      "commit": "d42902692d1fbb101a3c60ba314df69005da9c83",
      "tree": "76d495db0ab6160c1fe1b0e1f046da1260272265",
      "parents": [
        "8f8935ce292bec925e8a18719227df9ad06a111d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 16:36:23 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 24 13:03:10 2021 +0000"
      },
      "message": "dex2oat: Abort app compilation without boot image.\n\nAlso avoid crash in GraphChecker for bad instructions that\nthrow into catch block but do not have an environment. And\nDCHECK() that java_lang_Double_doubleToRawLongBits and\njava_lang_Float_floatToRawIntBits are intrinsics.\n\nTest: New test Dex2oatTest.MissingBootImageTest.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 188684102\nChange-Id: I13ec2ee8a7968c0a5652aa67ec6291d07a986c80\n"
    },
    {
      "commit": "642c8f6e69929f46a1a52583cb55b68d83828a02",
      "tree": "439e8e33788e7b346d245382f58a43436e9d89cc",
      "parents": [
        "a393988fe65af884b81c63db54ac4afb7d973da2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 09:24:03 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 09:28:10 2021 +0100"
      },
      "message": "Fix scheduler\u0027s `FieldAccessHeapLocation()`.\n\nUse the correct target for predicated get.\n\nAlso remove an always-false condition from LSE.\n\nTest: m\nBug: 188188275\nBug: 188847019\nChange-Id: I731e181c8c0d812120dc4fad0c011158053fa7a8\n"
    },
    {
      "commit": "06fb7fa55cca3210f38c92ac7cc7ad525ff30c83",
      "tree": "ee970452d8b5e63d09d1dd8157e11124fa35d731",
      "parents": [
        "dc65a4505a62b8ebd7e8c65bccbc469c01e500a7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 18 15:53:17 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 20 13:39:53 2021 +0000"
      },
      "message": "Fix ReplacementOrValue() for Partial LSE.\n\nAlso fix a bad DCHECK() in `FindSubstiute()` and fix the\nHeapLocationCollector::VisitPredicatedInstanceFieldGet()\nto use the correct input.\n\nTest: New tests in load_store_elimination_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 188188275\nChange-Id: Ifdace5ddbe1777af2109189013c0557f226d9cc9\n"
    },
    {
      "commit": "07ff2833c7425cef87abad3e21b3f884597dc58c",
      "tree": "a7ab412fa286c7af891aa438b187b6bf9f9f907b",
      "parents": [
        "ca7de40e2d0f1f5c3c29aec2899f6fbe8d7217f3"
      ],
      "author": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue Aug 25 10:43:12 2020 -0700"
      },
      "committer": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue May 18 21:23:45 2021 +0000"
      },
      "message": "Compile libart.so and libart-compiler.so with 2MB section alignment.\n\nAdds the appropriate linker flags for libart and libart-compiler to have\n2MB section alignment. This allows the executable segment of these\nlibraries to be backed by transparent hugepages on supporting systems.\n\nBug: 158135888\nTest: Verified ELF format\n\nChange-Id: Ia6455418cf1fdd3a1a98d662bf381db4b58b8536\n"
    },
    {
      "commit": "c63d9672264e894d8d409e8d582b4e086b26abca",
      "tree": "1e285cbab4c71aea3c8c37b4e4c5e8241a3ce117",
      "parents": [
        "0bf5b6729be507f1e78fc61f17554393dd978e46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 15:50:39 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 17 13:42:11 2021 +0000"
      },
      "message": "Rewrite profile file format.\n\nThe new format contains one mandatory section and several\noptional sections. This allows extending the profile with\nnew sections that shall be ignored by old versions of ART.\n\nWe add an \"extra descriptors\" section to support class\nreferences without a `dex::TypeId` in the referencing dex\nfile. Type indexes between the dex file\u0027s `NumTypeIds()`\nand `DexFile::kDexNoIndex16` are used to index these extra\ndescriptors. This prepares for collecting array classes\nwhich shall be tied to the element type\u0027s dex file even\nwhen the array type is not needed by that dex file and has\nbeen used only from another dex file. It also allows inline\ncaches to be self-contained, so we can remove the profile\nindex from data structures and serialized data.\n\nThe creation of the the binary profile from text files is\nupdated to correctly allow array types to be stored as the\nprofiled classes using the \"extra descriptors\". However,\nthe interface for filling in inline caches remains unchanged\nfor now, so we require a `TypeId` in one of the processed\ndex files. The data collection by JIT has not been updated.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nTest: boots.\nTest: atest BootImageProfileTest\nBug: 148067697\nChange-Id: Idd5f709bdc0ab4a3c7480d69d1dfac72d6e818fc\n"
    },
    {
      "commit": "ec06809b9fb7d4a0d2c3e46066bd37034130e53b",
      "tree": "c3a69b142e38d249a01ed425cde23caa78c1d36c",
      "parents": [
        "1651c6050d913fb38ebd293df9da6d189eb3851d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 17:28:32 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 07:38:39 2021 +0000"
      },
      "message": "Reland \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 39d4df62d4e2606073d05cc363370db825ad7b9f.\n\nReason for revert: fix JIT-zygote issue.\n\nTest: JIT zygote boots.\n\nChange-Id: I895ad8e59e472fb662ca9bc5394c2fd9c6babc74\n"
    },
    {
      "commit": "dac82393785d1d2fddae6bf6d8364b55b001925a",
      "tree": "2870783966316c965d40c3a6cd4b2cadce632c79",
      "parents": [
        "b1db5a110d312c5a51a52f7f6bc870f9205b6ff8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 10 15:44:24 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 08:49:06 2021 +0000"
      },
      "message": "Fix array location aliasing checks in LSE.\n\nTest: New tests in load_store_elimination_test.\nTest: New test in 539-checker-lse.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 187487955\nChange-Id: Iff66d5406cf1b36c3bebbce1d48117f83bb50553\n"
    },
    {
      "commit": "053e1383c721b0a1c4f87b2d391ab392c64caf84",
      "tree": "d6698eaf3f64440b47c06e5d6f670be06cfcc80e",
      "parents": [
        "bcec38f7b7dc92d89ce9d49b8c1ba9afe87dab6b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 05 16:07:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 10 08:12:24 2021 +0000"
      },
      "message": "Link libvixl statically.\n\nInstead of including shared library libvixl.so in the ART\nModule, link libvixl statically to all binaries that use it,\nnamely libart-compiler.so and libart-disassembler.so which\nshall increase in size with the additional libvixl code.\n\nThe ART Module size with default libvixl symbol visibility:\n  - before: 88460730B\n  - after: 86973943B (-1.42MiB)\nWith hidden libvixl symbol visibility:\n  - before: 88337851B\n  - after: 84962808B (-3.22MiB)\n(This is with master-art where we do not have a boot\nprofile and therefore compile more code in boot image.)\nThe change from default to hidden visibility is done in\n    https://android-review.googlesource.com/1697237 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 186902856\nChange-Id: I040b0115b94b8690ee7be53e3ded8610d9f13e99\n"
    },
    {
      "commit": "39d4df62d4e2606073d05cc363370db825ad7b9f",
      "tree": "8e4cf0ac432406081d11e9102981446498b3265b",
      "parents": [
        "a28c827fdb58ec489931d6e70e27818619bc1b75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 12:22:47 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 14:41:25 2021 +0000"
      },
      "message": "Revert \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 5024ddfd125b5c3b59d7f359ae33cf7f0255b048.\n\nBug: 187408838\n\nReason for revert: b/187408838\n\nChange-Id: If74f5ddbacc73296f66c55762e2a8d1ec2cd1f19\n"
    },
    {
      "commit": "2d3354ac96f587e74178dfbf94098f4e7cf96e58",
      "tree": "5f93811238fb3b6369b7f03e7faa3bb680a1e440",
      "parents": [
        "af30bf7fb48741f126db1b8316afde6d11b1db69"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 28 23:10:40 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 06 10:43:05 2021 +0000"
      },
      "message": "Fix .debug_frame_hdr generation.\n\nMinor fixes (keep the generation still disabled/unused).\n\nBug: 110133331\nTest: art/test.py -b --host\nChange-Id: I82a104d36afd68ef3133f345991ab3888bdcdc8e\n"
    },
    {
      "commit": "5024ddfd125b5c3b59d7f359ae33cf7f0255b048",
      "tree": "b625ed5aa1c4976e4cd2de5732543d5d1eb34a0f",
      "parents": [
        "5859b689d4fdd36711187715c04e2e095f7975c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 14:42:09 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 06 10:37:17 2021 +0000"
      },
      "message": "Devirtualize to HInvokeStaticOrDirect.\n\nWhen we statically know the target method, devirtualize an\nHInvokeInterface or an HInvokeVirtual to a HInvokeStaticOrDirect.\n\nTest: test.py\nBug: 182538502\nChange-Id: Ie3a58603cde300fca9ca4972d4dfbbd20918f5ba\n"
    },
    {
      "commit": "807de1ed238c706ed781301cb6a764c7a2c348f4",
      "tree": "f6847c0329421be44e708f77bf207e4247445de8",
      "parents": [
        "6de68dd322de49a49bc5036cbe7e3426c02ffeff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 30 15:14:18 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 04 07:47:32 2021 +0000"
      },
      "message": "Fix partial LSE using removed load as Phi input.\n\nTest: New test in load_store_elimination_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 183897743\nChange-Id: I4ddf1657b5b9240c229016a3671a74b0582ac30d\n"
    },
    {
      "commit": "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f",
      "tree": "b6692ebc91574820d64a6c0967083c43c5df3076",
      "parents": [
        "0849c1ca7b10a859d2ce3d2bd84a9b612fbb36e3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 15:22:40 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 18:50:33 2021 +0000"
      },
      "message": "Enable mini-debug-info by default.\n\nAll paths explicitly enable or disable the command line option.\n\nHowever, if we missed some or developers use stand-alone tools,\ndefault to working backtraces, which is the common intention.\n\nChange-Id: I1d308f2be881522ecfb945d5f679065e726d32aa\n"
    },
    {
      "commit": "889da94a5931a68ca527dc7320ff0b5de69917fc",
      "tree": "1c5d50e5a63f35073ba7b6b84f6f6b5f965d7c62",
      "parents": [
        "d78f319c52888d1c45d17ce1521e4f78db2d7119"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 13:03:14 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 16:58:11 2021 +0000"
      },
      "message": "Fix gtests with mini-debug-info enabled by default.\n\nEnsure we can generate mini-debug-info if it is enabled by default.\nThe tests don\u0027t explicitly generate the info on background thread.\n\nTest: test.py -g\nChange-Id: If3cf9a067ce683f728d553394e1407beeadae670\n"
    },
    {
      "commit": "ba320165975387e780be2bd16fac4a522411b59c",
      "tree": "914a3c6b730e662131ad082ba3a9e1f51955efa8",
      "parents": [
        "7a76e234402df797c2cd97d0defbb507ed9a7329"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 22 15:15:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 30 03:32:43 2021 +0000"
      },
      "message": "Improve simplifier slightly\n\nIt\u0027s possible thanks to the dead-code-elimination and other passes to\nend up with a PredicatedInstanceFieldGet that either has a null or a\n\u0027never-null\u0027 target value. We can simplify this down to either the\ndefault value or a normal ifield-get respectively.\n\nTest: ./test.py --host\nChange-Id: I92d9ff159a7b30294d29dbf4349d201dc654f0e1\n"
    },
    {
      "commit": "88e08c0568f2c09f562ee6e2d3eacabfcc67bf1d",
      "tree": "176064563f3cd5516efcce0c5beb2bb184abada5",
      "parents": [
        "e1e0e0f187587dfb019a1689c005b31813b4cfe7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 29 12:42:22 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 29 15:28:59 2021 +0000"
      },
      "message": "Create magic symbol to mark .symtab as sorted.\n\nELF symbols don\u0027t have to be sorted, but ART always sorts them.\nThis is very useful property if libunwindstack can rely on it.\n(that is, it can binary search the table instead of linear)\n\nBug: 110133331\nTest: art/test.py -b --host\nChange-Id: I4d491096a5bd4ea738a45bbc64fc9dea91c45575\n"
    },
    {
      "commit": "e1e0e0f187587dfb019a1689c005b31813b4cfe7",
      "tree": "bce0bf9489c6cd7e40d4f96fdbf8fd6af8e60f2f",
      "parents": [
        "98e9a1236f15d1f8579e2a2311aa4a24b5316732"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 08:57:13 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 14:48:11 2021 +0000"
      },
      "message": "Reland \"Refactor code in inliner.\"\n\nThis reverts commit aa1b711a40bfe92785f52bff9700dc516eba1d09.\n\nReason for revert: Fix wrong method being recorded as CHA dependency.\n\nChange-Id: Ic8ed84979b4cd67e49b96166792729b3b586cc25\n"
    },
    {
      "commit": "aa1b711a40bfe92785f52bff9700dc516eba1d09",
      "tree": "eec7b87d1c62d94932537825a509bf3b603755d8",
      "parents": [
        "fd7044dd3a6b21e817b2d5859a1446213b69a9c4"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed Apr 28 17:32:53 2021 +0000"
      },
      "committer": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Thu Apr 29 00:01:30 2021 +0000"
      },
      "message": "Revert \"Refactor code in inliner.\"\n\nThis reverts commit 921525030301fd4b8f6bb83aa6b20160d802e689.\n\nReason for revert: Potential cause of b/186637642, b/186637642\n\nChange-Id: Ia6f5cb742a068f148e290071cb0675648b22ec86\n"
    },
    {
      "commit": "921525030301fd4b8f6bb83aa6b20160d802e689",
      "tree": "60c9811c45ec00c31470cd44965c5fdc63006fd1",
      "parents": [
        "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 23 09:16:13 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 13:16:13 2021 +0000"
      },
      "message": "Refactor code in inliner.\n\n- Code refactoring to dissociate CHA attempts and devirtualization\nattemps\n- Only devirtualize (currently invoke-interface -\u003e invoke-virtual) when\nthe target can be statically resolved. The benefits for CHA and inline\ncaches are less clear.\n\nTest: test.py\nChange-Id: I2d41cef8143ab1ce66b2c2e149674eaf228d15a3\n"
    }
  ],
  "next": "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d"
}
