)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "39d4df62d4e2606073d05cc363370db825ad7b9f",
      "tree": "8e4cf0ac432406081d11e9102981446498b3265b",
      "parents": [
        "a28c827fdb58ec489931d6e70e27818619bc1b75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 12:22:47 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 14:41:25 2021 +0000"
      },
      "message": "Revert \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 5024ddfd125b5c3b59d7f359ae33cf7f0255b048.\n\nBug: 187408838\n\nReason for revert: b/187408838\n\nChange-Id: If74f5ddbacc73296f66c55762e2a8d1ec2cd1f19\n"
    },
    {
      "commit": "5024ddfd125b5c3b59d7f359ae33cf7f0255b048",
      "tree": "b625ed5aa1c4976e4cd2de5732543d5d1eb34a0f",
      "parents": [
        "5859b689d4fdd36711187715c04e2e095f7975c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 14:42:09 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 06 10:37:17 2021 +0000"
      },
      "message": "Devirtualize to HInvokeStaticOrDirect.\n\nWhen we statically know the target method, devirtualize an\nHInvokeInterface or an HInvokeVirtual to a HInvokeStaticOrDirect.\n\nTest: test.py\nBug: 182538502\nChange-Id: Ie3a58603cde300fca9ca4972d4dfbbd20918f5ba\n"
    },
    {
      "commit": "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": "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": "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"
    },
    {
      "commit": "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d",
      "tree": "63e392ba73e02ddb7fb8fc73ca87bf47d6452332",
      "parents": [
        "1dab575cd635706f03d510763cb4ea1b115a2cee"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 16:22:48 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 28 10:44:11 2021 +0000"
      },
      "message": "Remove RETURN_VOID_NO_BARRIER byte-code.\n\nUnused and obsolete quickened byte-code.\n\nBug: 170086509\nTest: test.py -b --host --64\nChange-Id: I1e917c189da7bf64418412522676dc6b081d5c0b\n"
    },
    {
      "commit": "bb550e415da77e7e21c8f800657984c145bb42e1",
      "tree": "0596ce5d5b1b2f58cef50f8ef133febdd053399c",
      "parents": [
        "adfa1ad73a3a557bdec67d59894139b2727aaa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 21 17:04:13 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 26 09:10:12 2021 -0700"
      },
      "message": "Fix issue with Partial LSE and casts/instanceof\n\nIf PartialLSE encounters an instanceof or check-cast before the\nescapes it could not correctly handle it. Due to how java language\ncode is typically developed and compiled this is generally not a\nproblem but could lead to incorrect codegen on release builds or\nDCHECK failures on debug builds. This fixes the issues by (1) causing\npartial LSE to consider check-cast and instance-ofs to be escaping.\nThis also updates the instruction simplifier to be much more\naggressive in removing instance-of and check-casts.\n\nTest: ./test.py --host\nBug: 186041085\nChange-Id: Ia513c4210a87a0dfa92f10adc530e17ee631d006\n"
    },
    {
      "commit": "ffafe8babb6b278c9e4748f64670f99f223411a9",
      "tree": "d1509e5ebab6872798980f291ec6d40b19c0ff3f",
      "parents": [
        "f2e1bc757e354530e41b8d0e0c3f04c12d1f8ab7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 10:29:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 13:07:48 2021 +0000"
      },
      "message": "Clean up Handle\u003c\u003e comparison with null.\n\nThese operators do not need the mutator lock.\n\nTest: buildbot-build.sh\nChange-Id: I48f51853f1b3c2e56463140f23777ad26d8122f2\n"
    },
    {
      "commit": "b8958028680cb2b49df9826222268e548431b921",
      "tree": "9f66e84a5e99f64154cbba6f321a5daebf8da800",
      "parents": [
        "8d32baf3b02a00921ef9ecc7cfd7775e69f9e4e7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 15:12:31 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 12:23:09 2021 +0000"
      },
      "message": "Move intrinsic recognition logic in inliner.\n\nThe previous place `TryInlineAndReplace` did not cover all cases we try\ninlining. Because we always want to intrinsify, move the code to\n`TryBuildAndInline`, which is always called.\n\nTest: test.py\nTest: 638-checker-inline-cache-intrinsic\nChange-Id: Id74b664f6139c00224473af6c72cb6fd858aec4c\n"
    },
    {
      "commit": "674e8be2e29ebe597c420abd4ba78ce63488535a",
      "tree": "a3564c5eec03bb968f1612d93da91970f23c5f25",
      "parents": [
        "33022905107f22aeb26b9bd04e3cc896a7772c3b"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Apr 12 12:30:28 2021 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 13 09:47:40 2021 +0000"
      },
      "message": "Fix inliner instruction/register limits\n\nBecause instruction/register usage was compared with \u003e\u003d, the limits\nwere actually one lower than the constants. This prevented trivial\ngetters/setters from being inlined because they were 3 SSA\ninstructions.\n\nTest: build + boot + presubmit\nBug: 185143864\nChange-Id: Ie27c9163efe79bb7392c881c0165ab1164323a2c\n"
    },
    {
      "commit": "8731e70a0f197594ecee91953169ee3f902c48f5",
      "tree": "2c0a8e44a232d7d8225de22fd247cf00be31986a",
      "parents": [
        "a2f48a424c3d62efb5a14ccaea740e3f6c0b0032"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 06 12:11:59 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 08:40:28 2021 +0000"
      },
      "message": "Add a test and CHECKs around the combination of CHA and default methods.\n\nTest: 823-cha-inlining\nBug: 182538502\nChange-Id: Ie3e0014804216802af0addf13751a8f89adbfdfa\n"
    },
    {
      "commit": "de7c9e13a45d2f9163991d89a615ead98f2d9f29",
      "tree": "3318a5549571f8485b10d0e272cb75d74ab2a368",
      "parents": [
        "92a785785423b99cf903ce0e79d06fbf62ecf51a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 01 17:19:05 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 08 08:26:40 2021 +0000"
      },
      "message": "Fix issue with propagating partial values\n\nWe would incorrectly not propagate or calculate partial read values\nsometimes in the presence of loops. This fixes that issue by correctly\ninterpreting merged-unknowns as being phis when before escapes and\npropagating uses of removed reads when needed.\n\nTest: ./test.py --host\nTest: ./art/tools/compile-jar.py --dex2oat `which dex2oatd64`  --profile-line \u0027HSLcom/android/textclassifier/common/statsd/GenerateLinksLogger;-\u003elogGenerateLinks(Ljava/lang/CharSequence;Landroid/view/textclassifier/TextLinks;Ljava/lang/String;JLcom/google/common/base/Optional;Lcom/google/common/base/Optional;)V\u0027 --arch arm64 ~/GoogleExtServices.apk -j1  --runtime-arg -verbose:compiler  --dump-stats\nBug: 183554067\nChange-Id: I7f6e99934237174922ef2da2b77092e74cfb6a77\n"
    },
    {
      "commit": "e4f7fef5b3df18e7aab15307f39ae77998e4913d",
      "tree": "710717b876792242b08e88b1a4c8ac53b99f35a4",
      "parents": [
        "b2a1416f6d7031d8f255398407a3e8a2bb6d6447"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 30 17:17:50 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 31 20:57:58 2021 +0000"
      },
      "message": "Handle predicated-gets with default values\n\nDue to an oversight the default-value of a PredicatedGet did not\nsupport being a Default value. This fixes that oversight.\n\nTest: ./art/tools/compile-jar.py --profile-line \u0027HSLe/k/a/g/i;-\u003ei(Le/k/a/g/d;Ljava/io/OutputStream;)V\u0027 --arch arm64 ~/no.nrk.mobil.radio_10922_base_split.apk --compiler-filter\u003dspeed-profile --dump-stats -j1 --force-allow-oj-inlines\nTest: LoadStoreEliminationTest.PredicatedLoadDefaultValue\nBug: 183898383\nChange-Id: I11bccddb0b5a5c2e958690864ff2d4449a9f2fad\n"
    },
    {
      "commit": "7432805b24cb8b6d8c754807143a691dc51adaba",
      "tree": "7693475b3520e1673cdba6210e8dc64d2becf1c4",
      "parents": [
        "1a660c0bd57313bae9cd5632ab4252f417590a96"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 29 18:11:23 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 30 18:01:00 2021 +0000"
      },
      "message": "Fix simplifier issue with predicated ifield get\n\nIn cases where all targets of a HPredicatedInstanceFieldGet\ninstruction are known to not be null the simplifier would attempt to\nreplace the default value with a null instruction. This would cause a\nnull-pointer dereference. Correct the simplifier to handle this case\ncorrectly.\n\nMoved some LSE test helper functions to CommonCompilerTestHelper to\navoid duplicating code.\n\nFixed an incorrect (though until now unused) constructor for\nHPredicatatedInstanceFieldGet (the default value and target we\nswapped).\n\nTest: ./test.py --host\nTest: ./art/tools/compile_jars.py --profile-file bad-compile.txt ~/imgur.apk\nBug: 183942773\nChange-Id: I66f4ce37d768d5e457047a3f80bd4cb9aa4546a3\n"
    },
    {
      "commit": "c5cd58914325c7fcfd89b1a5bf4daa475c2d83ef",
      "tree": "847a50eaa8331baf617f0fc3161cf36b7fc28680",
      "parents": [
        "b3f5c5008770d22a24db6a66bf97bd5a9d32b4ff"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 23 08:09:15 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Mar 27 13:19:58 2021 +0000"
      },
      "message": "Remove QUICK bytecodes.\n\nRemove the deprecated unofficial (not part of the spec) bytecodes.\nThis frees the 16 bytecodes for future use.\n\nBug: 170086509\nTest: m test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I9f6d8a2c21b88f883c8fdc1eb67b24620f313d56\n"
    },
    {
      "commit": "2769f0145057396e3dab5efe53c05ebd6336d08c",
      "tree": "b15c270ee89ab17c033cdeb361181b6c66653bff",
      "parents": [
        "f4c06b522eafe3204d533394c9c0069e2c41a970"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 23 11:58:58 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 23 15:56:52 2021 -0700"
      },
      "message": "Fix IC resolution DCHECK\n\nWe were incorrectly asserting that all inline-cache entries referring\nto valid classes are resolvable. This is only true as long as the\nprofiles stay perfectly in sync with the framework code, which is not\nlikely to always be the case since we update profiles rather\ninfrequently. This simply loosens the dcheck to return null on\nunresolvable methods when run in AOT mode.\n\nTest: m droid\nBug: 168941430\nBug: 183514504\nChange-Id: Id863b65ccead1a40643c4538df4f5215a18e39ad\n"
    },
    {
      "commit": "4924ea9ad98832f0ec7db841defca82331ee1b13",
      "tree": "66864c55d26b70d054e339518ec1890cd203e69a",
      "parents": [
        "4312f74ccf65a5abbab53c017b3f2b030c89f65a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 08:25:31 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 14:50:24 2021 +0000"
      },
      "message": "Remove Vdex::GetQuickenedInfoOf and all its users.\n\nTest: test.py\nBug: 170086509\nChange-Id: I1e1a4abf71245c0fd37f951c9af85f62feba18ca\n"
    },
    {
      "commit": "c9f4a3762b6c59714393aeca3662d96117e3b72f",
      "tree": "1bbcb78df1bedbd5219ecd82ceef6c86810260c5",
      "parents": [
        "e3ca16f035ca100bad8225d5dc2cf9ccd1090a41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 10:38:34 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 18 11:11:01 2021 +0000"
      },
      "message": "Allocate LSEVisitor on the arena stack.\n\nUse a simple wrapper to allocate the LSEVisitor on the arena\nstack. This allows adding additional members to the class\nwithout running into stack frame size errors with clang.\n\nMake the pre-allocated buffer for `store_records_` a member\nof LSEVisitor as originally intended.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I88b8ca5f9c765cc26e884e9f29cb2c870c799e13\n"
    },
    {
      "commit": "e9fb3dce298076a6b808e6a5d64e3b4ac9db9ffd",
      "tree": "da0402ec0a27488ba159c5b1be573ba15d1e5a6d",
      "parents": [
        "a64c1ad1ad20b99c4bb3a27acdd30dc9b3aa004b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 10 12:17:53 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 15 12:26:04 2021 +0000"
      },
      "message": "Store inline caches in StackHandleScope\u003c\u003e in HInliner.\n\nAvoid a managed heap allocation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 181943478\nChange-Id: I7ce65c93ad2f59490dbfa2aaccba98b6ca1fd585\n"
    },
    {
      "commit": "a64c1ad1ad20b99c4bb3a27acdd30dc9b3aa004b",
      "tree": "3872764b79c105075a49d615334bebae34cf6e9d",
      "parents": [
        "f84ec8662b695f6679023f368bc7203d3804a43e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 14:27:05 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 15 11:00:50 2021 +0000"
      },
      "message": "Rewrite hot method info retrieval.\n\nRemove the `ProfileCompilationInfo::GetHotMethodInfo()` API\nand provide another API to tie profile indexes to dex files\nfor inline caches that avoids unnecessary heap allocations.\n\nAnd look up only dex caches for the referenced dex files\nwhen getting AOT inline caches in HInliner.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimzing\nTest: boots.\nBug: 181943478\nChange-Id: I124ac4870b0f483c1f0422c841c4ff69fc95b7e0\n"
    },
    {
      "commit": "f84ec8662b695f6679023f368bc7203d3804a43e",
      "tree": "b813c9820c163d57aefc76c743bd26f15468f256",
      "parents": [
        "b7bc2e403265465768353abbbdbe82bd7f9a45bc"
      ],
      "author": {
        "name": "v-qianliguo",
        "email": "v-qianliguo@xiaomi.com",
        "time": "Fri Mar 12 11:03:19 2021 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 15 09:17:14 2021 +0000"
      },
      "message": "Avoid CHA trying to inline the default conflict method\n\nChanging to invoke-virtual will cause Artmethod to be null exception\nsince default conflict method is not in any vtable\n\nBug:182496372\nSigned-off-by: v-qianliguo \u003cv-qianliguo@xiaomi.com\u003e\nChange-Id: I61f08bb13fce1270ac48cd3cc0c6f3d216e04990\n"
    },
    {
      "commit": "a718d6450feae9ee6b5de96407c8e44afbf173e7",
      "tree": "133f55536e360b999021fbba9332f85709fc7fae",
      "parents": [
        "5e435b2c209d87030f607c4cdfba913dec3eb3e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 10 15:36:40 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 09:48:35 2021 +0000"
      },
      "message": "Preallocate a HashMap buffer in LSE.\n\nAdd more HashSet\u003c\u003e constuctors with the allocator argument.\nInherit HashSet\u003c\u003e constructors in HashMap\u003c\u003e.\n\nUse a pre-allocated buffer with size 16 to avoid allocating\na large one (kMinBuckets \u003d 1000) on first use. With the\ndefault max load factor 0.7, this pre-allocated buffer is\nsufficient for all methods with up to 11 stores.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I7862b98ec9ec3ddb34693fd956fea75138d35e02\n"
    },
    {
      "commit": "17b4d2b14fd26088bca195b5d7c48f26b8b545d8",
      "tree": "bd2f741127dbb63e04aee99e5f65a2960f63f2be",
      "parents": [
        "39d529f45bad3ecf2bd6b376a049fde6cb0c21b4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 18:14:31 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 05 12:03:30 2021 +0000"
      },
      "message": "Add code size to CodeInfo.\n\nThis is in preparation of removing it from OatQuickMethodHeader.\n\nBug: 123510633\nTest: m test-art-host-gtest\nTest: ./art/test.py -b -r --host\nChange-Id: I5c5adb4c040e329b81c1393aa1b80ee017729c8a\n"
    },
    {
      "commit": "5e060ee6b9d1c32352f0fde4f949b95589602250",
      "tree": "3ec7c92eaba9ffbcd2a9470db5cfcbc51f76d9c5",
      "parents": [
        "0d768f126f6d9bae75614ea1d62776d166403cee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 10:56:42 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 17:48:14 2021 +0000"
      },
      "message": "Fix implicit null checks for InvokeVirtual.\n\nFix braino from\n    https://android-review.googlesource.com/1570261 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172573708\nBug: 180527726\nChange-Id: I430d3e7034a3f600674763986a324d80903aaf6c\n"
    },
    {
      "commit": "745da80dbf169d83e2acb847b0c9c07985d51bdf",
      "tree": "a01990e419ee49fe255a6df108027a89b568975a",
      "parents": [
        "16f7f8e384f0ae13c53525ff12affbc00605b0ec"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Wed Jan 20 21:52:54 2021 +0000"
      },
      "committer": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Wed Feb 10 12:33:48 2021 +0000"
      },
      "message": "Add Math.multiplyHigh intrinsic\n\nTest: ./art/test/testrunner/testrunner.py --target  --optimizing --64 -t 082-inline-execute\nTest: ./art/test/testrunner/testrunner.py --host --optimizing --64 -t 082-inline-execute\nChange-Id: I4b6cafa8b9e513eca7c5c139440024d87a7ef758\n"
    },
    {
      "commit": "a0a20cdaba1a339b526707bde0e61e4eae8acfd5",
      "tree": "f4e103d0a5c25ad25f3bf9954e3d89f98e5d7873",
      "parents": [
        "433547446f7e0ad1b3fcdf993cbaaee9fdb8b9b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 15:55:47 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 15:55:47 2021 +0000"
      },
      "message": "Fix Reference.refersTo() intrinsic for heap poisoning.\n\nTest: ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\nTest: ART_HEAP_POISONING\u003dtrue testrunner.py --host --optimizing\nTest: run-gtests.sh # with ART_HEAP_POISONING\u003dtrue\nTest: testrunner.py --target --optimizing # with ART_HEAP_POISONING\u003dtrue\nBug: 172573708\nChange-Id: I2e09b49813bdad40c1e18bf5681ba2094c5a40c1\n"
    },
    {
      "commit": "55ab7e84c4682c492b6fa18375b87ffc5d0b23bb",
      "tree": "5fcc2567a1a4e6ae73dead2f70c69bc03b0a64bb",
      "parents": [
        "ac27ac01490f53f9e2413dc9b66fbb2880904c96"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Apr 27 21:02:28 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Feb 05 11:34:38 2021 +0000"
      },
      "message": "ARM64: Support SVE VL other than 128-bit.\n\nArm SVE register size is not fixed and can be a\nmultiple of 128 bits. To support that the patch\nremoves explicit assumptions on the SIMD register\nsize to be 128 bit from the vectorizer and code\ngenerators and enables configurable SVE vector\nlength autovectorization, e.g. extends SIMD register\nsave/restore routines.\n\nTest: art SIMD tests on VIXL simulator.\nTest: art tests on FVP (steps in test/README.arm_fvp.md)\n      with FVP arg:\n      -C SVE.ScalableVectorExtension.veclen\u003d[2,4]\n      (SVE vector [128,256] bits wide)\n\nChange-Id: Icb46e7eb17f21d3bd38b16dd50f735c29b316427\n"
    },
    {
      "commit": "ac27ac01490f53f9e2413dc9b66fbb2880904c96",
      "tree": "271018e1ef33667bee8d57c40ffa3f4d9f8cf930",
      "parents": [
        "26bf47a60064fcc42e1b5e7b4b41deb8312d7330"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 09:31:02 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 10:48:17 2021 +0000"
      },
      "message": "Implement Reference.refersTo() intrinsic.\n\nTest: Added tests to 122-npe and 160-read-barrier-stress\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 172573708\nChange-Id: I8342510565289058df218d3249ffac1eb993ca4f\n"
    },
    {
      "commit": "8ba4de1a5684686447a578bdc425321fd3bccca6",
      "tree": "20c24450b24950266ccc235306e3ad2109c57497",
      "parents": [
        "32bf6d39bc020cacfc655ce60630f4a0da3b45cf"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Dec 04 21:10:23 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Feb 04 06:16:33 2021 +0000"
      },
      "message": "ART: Implement predicated SIMD vectorization.\n\nThis CL brings support for predicated execution for\nauto-vectorizer and implements arm64 SVE vector backend.\n\nThis version passes all the VIXL simulator-runnable tests in\nSVE mode with checker off (as all VecOp CHECKs need to be\nadjusted for an extra input) and all tests in NEON mode.\n\nTest: art SIMD tests on VIXL simulator.\nTest: art tests on FVP (steps in test/README.arm_fvp.md)\n\nChange-Id: Ib78bde31a15e6713d875d6668ad4458f5519605f\n"
    },
    {
      "commit": "37fd800e917269df7824052452bcbd65f5528a3e",
      "tree": "46a1c77e994a5d238d385d579320eaf3224c6630",
      "parents": [
        "98071159668576ae08c2b0de80b0565d58f409f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 02 14:29:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 03 08:35:17 2021 +0000"
      },
      "message": "Use mmap for compiled code for gtest.\n\nAvoid executing code in memory allocated with malloc() as\npointers to that memory can be tagged which interferes with\nmanaged stack walk.\n\nTest: m test-art-host-gtest.\nBug: 177816575\nChange-Id: Id376091f82d5686adf3ab18d2980a42e78de57ce\n"
    },
    {
      "commit": "f3f1c8b41ebee81a34cb104417e1a78e6ad45173",
      "tree": "9cf3b4ef81d4b7c1d6e7bd5861d621b736d1e692",
      "parents": [
        "a7c66e7e5845b26711b261773179abf0f8b34ced"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 26 13:44:07 2021 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 28 21:45:09 2021 +0000"
      },
      "message": "Add comment to art_jni_trampoline.\n\nBug: 175226454\nTest: N/A\nChange-Id: Ia83c3afa69d7e1efb9685cfaa5401242712fa02a\n"
    },
    {
      "commit": "a7c66e7e5845b26711b261773179abf0f8b34ced",
      "tree": "a621a91059f9a7d2cefc92710fac2cd28350d133",
      "parents": [
        "af2aabc47d97556bf0fde258e6ddb472eebe0855"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 27 11:41:58 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 21:23:25 2021 +0000"
      },
      "message": "Avoid potential null dereference\n\nIn a log statement we were dereferencing a pointer that could\npotentially be null. Add support for safely dereferencing a pointer\nfor ostreams.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ibe04811883575902a9b2fe8a064f18de2b2cea7b\n"
    },
    {
      "commit": "3a73ffb70151dbc99fa41f300a237f8c29783e0e",
      "tree": "8debef1b372e5bea27d5265a9019446229955e3d",
      "parents": [
        "e585964df42e9fd2fab6f209810cb03e1b261ab1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 14:11:05 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 07:01:32 2021 -0800"
      },
      "message": "Revert^4 \"Partial Load Store Elimination\"\n\nThis reverts commit 791df7a161ecfa28eb69862a4bc285282463b960.\nThis unreverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\nThis unreverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nWe incorrectly failed to include PredicatedInstanceFieldGet in a few\nconditions, including a DCHECK. This caused tests to fail under the\nread-barrier-table-lookup configuration.\n\nReason for revert: Fixed 2 incorrect checks\n\nBug: 67037140\nTest: ./art/test/testrunner/run_build_test_target.py -j70 art-gtest-read-barrier-table-lookup\n\nChange-Id: I32b01b29fb32077fb5074e7c77a0226bd1fcaab4\n"
    },
    {
      "commit": "791df7a161ecfa28eb69862a4bc285282463b960",
      "tree": "a43b022307ea2df82a360164bdf2627cd07eb5b1",
      "parents": [
        "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 13:28:56 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Jan 24 17:18:55 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"Partial Load Store Elimination\"\"\n\nThis reverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\n\nBug: 67037140\n\nReason for revert: Fails read-barrier-table-lookup tests.\n\nChange-Id: I373867c728789bc14a4370b93a045481167d5f76\n"
    },
    {
      "commit": "fc1ce4e8be0d977e3d41699f5ec746d68f63c024",
      "tree": "b656aa7c9e62aa181dfbf7fd4f2a0d32b8bf0704",
      "parents": [
        "c6da1be58086e873c9695f8c4c1a3a8ca718696e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 14:05:13 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:51 2021 -0800"
      },
      "message": "Revert^2 \"Partial Load Store Elimination\"\n\nThis reverts commit 47ac53100303e7e864b7f6d65f17b23088ccf1d6.\n\nThere was a bug in LSE where we would incorrectly record the\nshadow$_monitor_ field as not having a default initial value. This\ncaused partial LSE to be unable to compile the Object.identityHashCode\nfunction, causing crashes. This issue was fixed in a parent CL. Also\nupdated all Offsets in LSE_test to be outside of the object header\nregardless of configuration.\n\nTest: ./test.py --host\nBug: 67037140\n\nReason for revert: Fixed issue with shadow$_monitor_ field and offsets\n\nChange-Id: I4fb2afff4d410da818db38ed833927dfc0f6be33\n"
    },
    {
      "commit": "c6da1be58086e873c9695f8c4c1a3a8ca718696e",
      "tree": "1d445a789a52b537a349aab00ca5fed761cad273",
      "parents": [
        "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:58:44 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:21 2021 -0800"
      },
      "message": "Enable LSE of shadow$_monitor_ field\n\nThe shadow$_monitor_ field is an object header field. Unlike\nshadow_klass this field has regular default initialization and we\nshould record this in LSE. This won\u0027t have any actual effect generally\nsince the only (java) use of the field is in Object.identityHashCode\nand the object always escapes if the value is 0. Still this simplifies\npartial LSE since we will not need to special case this field.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I68a8e4a4d84d42cd206e0dce37cefb19fd099b20\n"
    },
    {
      "commit": "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca",
      "tree": "2e2c6cfd5e27dc964a6cae1eaf774c875bf4a9bc",
      "parents": [
        "ef01e763eb700b513e4042ef7a1fbd22ecb10fc4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:43:28 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:17 2021 -0800"
      },
      "message": "Change offsets in LSE_test to be outside of Object\n\nSeveral tests in load_store_elimination_test used field offsets that\nwere within the ObjectHeader on read-barrier configurations. Since LSE\nspecial cases object-header fields this could cause tests to\nincorrectly fail.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I3146f5310dd4474bbc7079ac2e7584459e5c5ac6\n"
    },
    {
      "commit": "7968cae11af60796b27398a95c32ff0cc31457a4",
      "tree": "b430aba1941e3bbe41f17ed1970c6e96100309c2",
      "parents": [
        "47ac53100303e7e864b7f6d65f17b23088ccf1d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 19 12:02:35 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 12:08:58 2021 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          28.989 0.028\nSetByteArrayViewInt          30.114 0.028\nGetByteArrayViewBigEndianInt 28.974 0.030\nSetByteArrayViewBigEndianInt 30.130 0.030\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I40c1c2fdd829f17872c457994010f78549c895de\n"
    },
    {
      "commit": "47ac53100303e7e864b7f6d65f17b23088ccf1d6",
      "tree": "95730c6ba84ef0eebca6236428c8ba51c5eaf280",
      "parents": [
        "51d771db35cc0647bc1fd2a32ed6348d181a7a41"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:08 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:39 2021 +0000"
      },
      "message": "Revert \"Partial Load Store Elimination\"\n\nThis reverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nBug: 67037140\n\nReason for revert: Fails a few tests.\n\nChange-Id: Icf0635bffbfbba93bf0a5b854a9582c418198136\n"
    },
    {
      "commit": "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07",
      "tree": "1721ee940f978736a2212d693271ee698897cb0b",
      "parents": [
        "625048049558d394d50b6e98885b8c210e481bf1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 02 08:48:33 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 21 17:58:10 2021 +0000"
      },
      "message": "Partial Load Store Elimination\n\nAdd partial load-store elimination to the LSE pass. Partial LSE will\nmove object allocations which only escape along certain execution\npaths closer to the escape point and allow more values to be\neliminated. It does this by creating new predicated load and store\ninstructions that are used when an object has only escaped some of the\ntime. In cases where the object has not escaped a default value will\nbe used.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 67037140\n\nChange-Id: Idde67eb59ec90de79747cde17b552eec05b58497\n"
    },
    {
      "commit": "d5a8695394f8f6e8f9a66752441623dc31b97660",
      "tree": "591ac4892304365282a57262c91e1945ac94c6a9",
      "parents": [
        "2fb37411e42455a00fdad90f0e612c3214e5bd1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:35:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:07:57 2021 +0000"
      },
      "message": "Reland \"Improve invokeinterface for nterp.\"\n\nThis reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4.\n\nBug: 177554973\nBug: 112676029\n\nTest: test.py\nTest: 815-invokeinterface-default\nTest: enable text-to-speech on device, no crash\n\nReason for revert: Fixed issue with recursive default methods\n\nChange-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a\n"
    },
    {
      "commit": "09e2337f8a971c318c560444912d50b06d723e35",
      "tree": "77fe1058fe435d0dc8c83b4133b9407f9cc472fa",
      "parents": [
        "f5a84cb8a950632cd4e730839c7f9f34b52c81d1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:42:11 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Avoid passing around LSE Phase\n\nStore LSE phase into an instance field to avoid needing to pass it\naround to various functions and allow functions to assert they are in\nthe correct phase more easily.\n\nTest: ./test.py --host\nChange-Id: I39d39718c24b49b8ad2c541359edca21f7c01c20\n"
    },
    {
      "commit": "f5a84cb8a950632cd4e730839c7f9f34b52c81d1",
      "tree": "0d65d3536ac3e09cf7a3d12ea5b68aac7c005285",
      "parents": [
        "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:35:38 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Rename Value::Unknown to Value::PureUnknown\n\nThis matches the IsPureUnknown function and avoids confusion with the\nIsUnknown function which also checks for MergedUnknowns\n\nTest: ./test.py --host\nChange-Id: I1488d52dc36d79043588df76a95229e91e6b8716\n"
    },
    {
      "commit": "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3",
      "tree": "98079a50e245e388f0f51b8a67de400516483b78",
      "parents": [
        "deef200ec3f54035e580596031b3093ac2fd66cc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:38:18 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Make MaterializeLoopPhis more explicit\n\nMaterializeLoopPhis used a combination of Unknown and Invalid Values\nto keep track of what phis needed to be created. This was somewhat\nconfusing so it has been replaced with using an optional to denote\nwhether we found anything at all and Invalid for if we can\u0027t avoid\nmaterializing values. Also added some correctness DCHECKS.\n\nTest: ./test.py --host\nChange-Id: Icd8578051b33c25ef1a43f8d50f463a367de5057\n"
    },
    {
      "commit": "deef200ec3f54035e580596031b3093ac2fd66cc",
      "tree": "f1b22cc86b57aa86dd430811b8658be094a9c837",
      "parents": [
        "fa81f71b27bb1290848e7ce1fe31b4241110031d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:53:07 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 18:33:40 2021 +0000"
      },
      "message": "Fix minor formatting issue\n\nA previous CL made a declaration have misaligned arguments\n\nTest: None\nChange-Id: Idc5a3c9747c910673c3e8de05d4b20e3d59b32d1\n"
    },
    {
      "commit": "dc281e776c0395b54200c62626f90417f092a2bf",
      "tree": "5e0a458e7ec1968f365b5a6dcc7454d417f11416",
      "parents": [
        "da946fc92b3f6f9664167ef3a0f1324694417b71"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 06 12:35:31 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 08 22:35:17 2021 +0000"
      },
      "message": "Add operator\u003c\u003c for HGraph and HInstructions.\n\nInclude helpers for printing arguments as well.\n\nTest: ./test.py --host\nChange-Id: I692fd5bd32a8a39da0defd9454d56ccf2480f229\n"
    },
    {
      "commit": "98873affc25ef6bc96f8c65f828f28530b8f3fcd",
      "tree": "be471ad310edb1aa3a7b3df44528905ec7ce9a6c",
      "parents": [
        "771708f3f0a15c1ae50617b4141c5f5dd47bf94f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 16 12:10:03 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 08 13:44:10 2021 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          27.093 0.024\nSetByteArrayViewInt          28.067 0.024\nGetByteArrayViewBigEndianInt 27.142 0.026\nSetByteArrayViewBigEndianInt 28.040 0.025\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I604326675042bd63dce8ec15075714003ca9915d\n"
    },
    {
      "commit": "54ed0150a42297a1a5e477d6569619193fcbffd0",
      "tree": "9ba815d49f5222b47f6d81127379c11b8876ba3a",
      "parents": [
        "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:29:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 09:09:26 2021 +0000"
      },
      "message": "Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.\n\nNterp always supported it, but the compiler was missing a check.\n\nTest: test.py\nTest: 600-verifier-fails\nChange-Id: I8675ca6f61c68c4152212c81843da8248781f18a\n"
    },
    {
      "commit": "bd570591eab2d683eb634ac057dbf9f0e1337f8c",
      "tree": "b50ac19257a71cd9efb2ce596764b445a89cae87",
      "parents": [
        "bde70600e1bfa837fa48ea8da350f60b50272aa6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:37:44 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 16:31:10 2021 +0000"
      },
      "message": "Handle missing methods in compiler and nterp.\n\nNterp already supported it, but there was a missing check in the\ncompiler.\n\nTest: test.py\nTest: 552-invoke-non-existent-super\n\nChange-Id: Ife9f3f6782f09bd9780940bcb78160aa11db12d2\n"
    },
    {
      "commit": "c9fcfd02a69170cedcd4cf2e66826f246dff6267",
      "tree": "2bc39091ec4dbc71bad37efafde41d13d168f0ca",
      "parents": [
        "782fb716122d37dc4c4d7482afb21f6e68be04b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 05 16:57:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:06:24 2021 +0000"
      },
      "message": "Optimizing: Add debugging output for HInstruction.\n\nAllow printing individual instruction and its arguments with\nthe HGraphVisualizer. Arguments are dumped \"recursively\"\n(but implemented with a queue instead of actual recursion).\n\nFor example, printing the Return instruction from the method\nMain.testLoop17 in 530-checker-lse yields\n\nv28 Return [i27] dex_pc:23 loop:none\n  i27 Add [i24,i26] dex_pc:22 loop:none\n    i24 Phi [i5,i15] dex_pc:n/a reg:0 is_catch_phi:false loop:none\n      i5 IntConstant dex_pc:0 1 loop:none\n      i15 IntConstant dex_pc:5 2 loop:none\n    i26 InstanceFieldGet [l6] dex_pc:20 field_name:TestClass.i field_type:Int32 loop:none\n      l6 NullCheck [l1] dex_pc:1 env:[[i5,_,_,l1,i2]] loop:none\n        l1 ParameterValue dex_pc:n/a loop:none\n\nTest: Manual; modify LSE to print the instruction above.\nChange-Id: Iaf41ba62cd6a5a36236ad0abca082ebffcf6a20e\n"
    },
    {
      "commit": "cb5f97df7fd3d40a6c92fa46ba98894d5d327efb",
      "tree": "0dd0ef8bb3776517cb24c6a418ff6827a1a25b0a",
      "parents": [
        "f6b9e40be37818012cf13341ea968d5761bb64e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:30:41 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 10:43:05 2021 +0000"
      },
      "message": "Use ResolveFieldJLS in compiler.\n\nNow that the compiler compiles methods that have\nIncompatibleClassChangeError, we need to use the right ResolveField\nmethod.\n\nMissed from previous commit:\nhttps://android-review.googlesource.com/c/platform/art/+/1539969\n\nTest: art/test/run-test --host --prebuild --compact-dex-level fast --jit --runtime-option -Xjitthreshold:0 --no-relocate --runtime-option -Xcheck:jni 073-mismatched-field\nChange-Id: I41bc878f20512f5fb9b7ca3b3e1db7e933a8c672\n"
    },
    {
      "commit": "f6b9e40be37818012cf13341ea968d5761bb64e4",
      "tree": "933773c663aecae8e3a01069622f42caa3a76445",
      "parents": [
        "6e6f1b2ffb243b3e5ae112bba3cd52031deb31ba"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Dec 30 22:55:57 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 05 22:08:35 2021 +0000"
      },
      "message": "Add constexpr annotations to LSEVisitor member functions.\n\nNewer versions of clang rightly warn about LSEVisitor::Value::Equals\nnot being a constexpr function because it calls the non-constexpr\nfunction LSEVisitor::IsValid(). Silence the warning by marking that\nfunction and its callees as constexpr.\n\nChange-Id: Ib3c36bd02232f8e465eac4eceabfa7ac069a634f\n"
    },
    {
      "commit": "ef28d24d7625943cc2b53e10bbece86a305b3ffd",
      "tree": "2bfd8cf9cbda1d4b2e463493cfdff450c1e9511f",
      "parents": [
        "1332a5702eab9facc2b67ea524e0b41a055524e4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 17 20:21:51 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 28 15:57:32 2020 +0000"
      },
      "message": "Avoid PhiPlaceholder pointers\n\nThe LSE pass passed around const PhiPlaceholder* in many places. This\nmeant it was difficult to extend the PhiPlaceholder system in some\nways. Change to have the list of PhiPlaceholders be implicit and pass\nthem around by value when needed.\n\nTest: 67037140\nBug: ./test.py --host\n\nChange-Id: I57ef0b0d39893340a14055c3f78ae4abc14721e1\n"
    },
    {
      "commit": "6d32723f7f2c319dff1f907f217454d11b8700f9",
      "tree": "80b7e73c45b0068a89ab5675f96a8a05816511f8",
      "parents": [
        "479cbad17b924755c8190e613f3f53c083b0fddd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 11:00:25 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 17:09:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    28.252 0.021\nGetArrayElementString 29.299 0.025\nSetArrayElementInt    29.737 0.021\nSetArrayElementString 32.842 0.025\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I7a77696c33213b0c811be963acca3f61f5ed7593\n"
    },
    {
      "commit": "479cbad17b924755c8190e613f3f53c083b0fddd",
      "tree": "1db99f8748140b16e6df07c5b6822956920f0723",
      "parents": [
        "1480f090379622ed0f4387714f71832711f5ae2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 16:10:09 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 15:33:09 2020 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    26.925 0.020\nGetArrayElementString 27.585 0.024\nSetArrayElementInt    28.168 0.020\nSetArrayElementString 31.162 0.024\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I1be78e6edc2d51210c95597c875489554833ecfc\n"
    },
    {
      "commit": "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a",
      "tree": "70b8e5628d1d98490229ae98b370cf3407cfcc04",
      "parents": [
        "0b8b5a731f37491e1b135f577b16a5376bf4b753"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 12:23:48 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 18:09:40 2020 +0000"
      },
      "message": "Make RTP::Visit robust against input order\n\nReferenceTypePropogation::Visit(ArrayRef) relied on the input having a\nparticular order with known values at the front then topological. This\ncould cause issues if the list was not properly sorted, causing the\nRTP to silently fail. This makes RTP robust against the ordering of\ninputs for this function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I03c522ea745f271ce438c82f7c6f3ab476c8249a\n"
    },
    {
      "commit": "0615dd9138d273567da6cca17176bdf560377418",
      "tree": "fb4f5c025b488efc35177b7d55c62de83d27b232",
      "parents": [
        "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:30:21 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 17:01:19 2020 +0000"
      },
      "message": "arm: Better document memory barriers for Unsafe/VarHandle.\n\nDefer to the codegen for the memory barriers instead of\nexplicit calls to assembler to emit the DMB instruction.\nThis use of MemBarrierKind allows us to better express\nthe required ordering even though codegen then generates\nthe same code anyway.\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I80cd8a6040b9f58ade4aa2adc9f98cfdfbdc758e\n"
    },
    {
      "commit": "2610dfeeafc061049452f5cbb778646ce43e8a9a",
      "tree": "14a32fb7454322fe43d27bd0cf9ea35333943c73",
      "parents": [
        "e9fb15381802428696dfaf848ea2187a0956fa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 07 16:26:43 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 09 16:29:48 2020 +0000"
      },
      "message": "Enable LSE of shadow-klass field\n\nThe Object.shadow$_klass_ field is special in that it has a non-null\ndefault value. Previously, however, LSE would always treat it as\nhaving an Unknown value. This meant LSE was unable to handle reads\nfrom the shadow$_klass_ field and replace it with the associated\nLoadClass, leading to some allocations not being eliminated.\n\nThis change correctly informs LSE that the value should initially be\nthe LoadClass instruction.\n\nTest: ./test.py --host\nBug: 67037140\n\nChange-Id: I9099001211c6c099a5d1ab4188e2b11f79e2ad9e\n"
    },
    {
      "commit": "86d6cd53385eae365f16f45e1a5947cc6595eb63",
      "tree": "ce94ee1f5d574b2891163f9b9695c97142efd00d",
      "parents": [
        "af17e5f33380ad39d83c31d97a29f3c836150fa1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 02 18:13:10 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 04 14:31:35 2020 +0000"
      },
      "message": "Remove DexCache arrays from image.\n\nRemove the hashtable storage from the image and allocate it at\nruntime instead (but keep the DexCache object in the image).\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nThe next step will be to make DexCache variable-size so it can\nadapt to both of the extremes (taking minimal amount of memory\nfor compiled code and avoiding cache evictions in interpreter).\n\nTest: test.py --host\nChange-Id: I9f89e8f19829b812cf85dea1a964259ed8b87f4d\n"
    },
    {
      "commit": "8331963d62776c3e3c9b15eeedeea5bcbe2eac7a",
      "tree": "dce2b9b2118c390b1b33f92fb7f1539f8be85165",
      "parents": [
        "c8178f5eb06aa54f78237145d7fdc05609c02962"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 02 11:19:28 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 02 22:39:05 2020 +0000"
      },
      "message": "Remove duplicated test in LSA tests\n\nAn execution-subgraph test was duplicated in\nload_store_analysis_test.cc. Remove it.\n\nTest: ./test.py --host\nChange-Id: Ibbd6a530ad3bb03e9760bef8273595170e997e1f\n"
    },
    {
      "commit": "c8178f5eb06aa54f78237145d7fdc05609c02962",
      "tree": "e69d3979efb81ca752f5f2d469279e26f22329aa",
      "parents": [
        "e8cdb0bb53e42316e8c7379d41a647ca672c4bee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 10:38:16 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 20:20:49 2020 +0000"
      },
      "message": "arm64: Clean up VarHandle intrinsics implementation.\n\nFix some typos and update some table lookup code that\u0027s\ncurrently unused. Bring in a few things from arm (naming,\nstatic assertion, pull an expression to a named variable).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: If2f2c4417942a272a8ad672c6b876e0569f8827c\n"
    },
    {
      "commit": "526569ac1e4939afeb15c5970e5e6e41e7cbfdcd",
      "tree": "d101df24783a05a4e91e39ce9155e5022ec4defa",
      "parents": [
        "402361beeade7cf30229698ad904cb28c6671706"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 30 15:48:38 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:20:59 2020 +0000"
      },
      "message": "arm: Implement VarHandle GetAndUpdate intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndAddStaticFieldInt               25.119 0.030\nGetAndAddFieldInt                     28.785 0.031\nGetAndAddStaticFieldFloat             25.195 0.033\nGetAndAddFieldFloat                   28.924 0.034\nGetAndAddAcquireStaticFieldInt        25.101 0.029\nGetAndAddAcquireFieldInt              28.767 0.031\nGetAndAddAcquireStaticFieldFloat      25.186 0.031\nGetAndAddAcquireFieldFloat            28.948 0.034\nGetAndAddReleaseStaticFieldInt        25.138 0.026\nGetAndAddReleaseFieldInt              28.798 0.028\nGetAndAddReleaseStaticFieldFloat      25.186 0.029\nGetAndAddReleaseFieldFloat            28.937 0.031\nGetAndBitwiseOrStaticFieldInt         25.134 0.030\nGetAndBitwiseOrFieldInt               28.860 0.032\nGetAndBitwiseOrAcquireStaticFieldInt  25.126 0.029\nGetAndBitwiseOrAcquireFieldInt        28.801 0.031\nGetAndBitwiseOrReleaseStaticFieldInt  25.129 0.026\nGetAndBitwiseOrReleaseFieldInt        28.794 0.028\nGetAndBitwiseXorStaticFieldInt        25.120 0.030\nGetAndBitwiseXorFieldInt              28.778 0.031\nGetAndBitwiseXorAcquireStaticFieldInt 25.111 0.029\nGetAndBitwiseXorAcquireFieldInt       28.749 0.031\nGetAndBitwiseXorReleaseStaticFieldInt 25.167 0.026\nGetAndBitwiseXorReleaseFieldInt       28.804 0.028\nGetAndBitwiseAndStaticFieldInt        25.194 0.030\nGetAndBitwiseAndFieldInt              28.917 0.031\nGetAndBitwiseAndAcquireStaticFieldInt 25.195 0.029\nGetAndBitwiseAndAcquireFieldInt       28.843 0.031\nGetAndBitwiseAndReleaseStaticFieldInt 25.187 0.026\nGetAndBitwiseAndReleaseFieldInt       28.867 0.028\nGetAndSetStaticFieldInt               24.912 0.030\nGetAndSetStaticFieldString            29.681 0.040\nGetAndSetFieldInt                     28.612 0.031\nGetAndSetFieldString                  32.699 0.041\nGetAndSetAcquireStaticFieldInt        24.875 0.029\nGetAndSetAcquireStaticFieldString     29.692 0.036\nGetAndSetAcquireFieldInt              28.604 0.031\nGetAndSetAcquireFieldString           32.606 0.038\nGetAndSetReleaseStaticFieldInt        24.872 0.026\nGetAndSetReleaseStaticFieldString     29.691 0.037\nGetAndSetReleaseFieldInt              28.699 0.028\nGetAndSetReleaseFieldString           32.721 0.039\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 -optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I6c110de362c01f0f8e80960aae731038b35fda64\n"
    },
    {
      "commit": "210a78d9ec4349601ac57381046229f4da1197f4",
      "tree": "dba581ba26ba7f6add0c3c1a2968d4f5d5dc8336",
      "parents": [
        "59d4b53e70bc1e0589ce05428c945b4585e28d0f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 16:58:05 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 20:12:45 2020 +0000"
      },
      "message": "Ensure ClearLoopInformation doesn\u0027t require particular ordering\n\nThe ClearLoopInformation call used to use the RPO list to find\nblocks which potentially had loop-information. This meant that if one\nwas also clearing the dominance information (which is quite common)\none needed to be sure to call ClearLoopInformation before calling\nClearDominanceInformation or else loop information will not be fully\ncleared. This could cause quite perplexing errors if dominance\ninformation is recomputed later (also quite common). This error is in\nfact present in several tests (none of which use loops which is how it\ngot missed).\n\nFix this issue by just looping over all blocks. Also add a new\nGetActiveBlocks function which does the filtering of null blocks\nautomatically. In many cases (such as these) we use RPO purely because\nit doesn\u0027t require filtering. This should be able to replace these\nuses.\n\nTest: ./test.py --host\nChange-Id: I60c7defc409111471064e9bf02b7ae3a0eb10584\n"
    },
    {
      "commit": "3d350a8ab8ca1fbc3e9fd3cab903fa777dfb329b",
      "tree": "d1ec9fe70b68423b28e69e3370c96c970fb39a0f",
      "parents": [
        "2ecdbc45535f7594dc1684a06b47624aaeff8502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 14:14:27 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 15:04:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle CAS intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                26.452 0.031\nCompareAndSetStaticFieldString             31.672 0.037\nCompareAndSetFieldInt                      29.569 0.033\nCompareAndSetFieldString                   34.095 0.042\nWeakCompareAndSetStaticFieldInt            26.470 0.031\nWeakCompareAndSetStaticFieldString         31.604 0.038\nWeakCompareAndSetFieldInt                  29.619 0.033\nWeakCompareAndSetFieldString               34.058 0.040\nWeakCompareAndSetPlainStaticFieldInt       26.508 0.026\nWeakCompareAndSetPlainStaticFieldString    31.675 0.031\nWeakCompareAndSetPlainFieldInt             29.635 0.028\nWeakCompareAndSetPlainFieldString          34.116 0.034\nWeakCompareAndSetAcquireStaticFieldInt     26.512 0.030\nWeakCompareAndSetAcquireStaticFieldString  31.661 0.035\nWeakCompareAndSetAcquireFieldInt           29.661 0.032\nWeakCompareAndSetAcquireFieldString        34.120 0.038\nWeakCompareAndSetReleaseStaticFieldInt     26.566 0.027\nWeakCompareAndSetReleaseStaticFieldString  31.659 0.034\nWeakCompareAndSetReleaseFieldInt           29.676 0.029\nWeakCompareAndSetReleaseFieldString        34.204 0.037\nCompareAndExchangeStaticFieldInt           25.550 0.031\nCompareAndExchangeStaticFieldString        31.219 0.039\nCompareAndExchangeFieldInt                 28.923 0.032\nCompareAndExchangeFieldString              33.622 0.040\nCompareAndExchangeAcquireStaticFieldInt    25.559 0.029\nCompareAndExchangeAcquireStaticFieldString 31.177 0.037\nCompareAndExchangeAcquireFieldInt          28.807 0.031\nCompareAndExchangeAcquireFieldString       33.524 0.038\nCompareAndExchangeReleaseStaticFieldInt    25.481 0.027\nCompareAndExchangeReleaseStaticFieldString 31.132 0.036\nCompareAndExchangeReleaseFieldInt          28.825 0.029\nCompareAndExchangeReleaseFieldString       33.511 0.038\n\nOddly, this rewrite makes the Unsafe CAS benchmarks regress\na bit on this configuration. However, experiments show that\nadding useless CLZ+LSR operating on a temporary register\n(corresponding to the old code\u0027s result calculation) would\nrestore the performance to the old level. We prefer not to\nadd these useless instructions as the situation is likely\nto be reversed on different CPU cores.\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nTest: run-gtests.sh\nBug: 71781600\nChange-Id: I591009d7494533cdf60a47be2f8826144e059ff5\n"
    },
    {
      "commit": "d6bd107ed83502eb0bbaf66911ab036ecf74612d",
      "tree": "81686cdcb1e29b7fc077a9ba31db4c448ac7d007",
      "parents": [
        "f6332e8b09599bea16666e9bbc6bdfd0c3fb2cef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:42:01 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:46:19 2020 +0000"
      },
      "message": "Fix invokeinterface sharpened with kRuntimeCall.\n\nBug: 174260111\nBug: 173677667\n\nTest: 728-imt-conflict-zygote\nTest: atest com.android.bootimageprofile.BootImageProfileTest#testSystemServerProfile\nTest: adb install com.google.android.art.apex\nChange-Id: Ie600a0c8c8eb38d9084b796bac9184c06ea0a2f4\n"
    },
    {
      "commit": "ac3fcff3ad61fe468517163f47ec2239dff4e17f",
      "tree": "16c6188f3957ea91453d19c46702ecf71cc64eed",
      "parents": [
        "b1cbfc7419eb0491f49c94191bcc920de2a3724e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 12:17:58 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 11:03:41 2020 +0000"
      },
      "message": "arm: Implement VarHandle.get/set intrinsics.\n\nIncluding Opaque, Acquire/Release and Volatile variants.\nRefactor Unsafe.get/put operations to share code with the\nnew VarHandle intrinsics, fixing potentially non-atomic\n64-bit \"Ordered\" operations in the process.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetStaticFieldInt            23.937 0.014\nGetStaticFieldString         24.497 0.019\nGetFieldInt                  27.510 0.016\nGetFieldString               28.000 0.021\nGetAcquireStaticFieldInt     23.953 0.017\nGetAcquireStaticFieldString  24.532 0.021\nGetAcquireFieldInt           27.457 0.020\nGetAcquireFieldString        28.137 0.023\nGetOpaqueStaticFieldInt      23.955 0.014\nGetOpaqueStaticFieldString   24.530 0.019\nGetOpaqueFieldInt            27.461 0.016\nGetOpaqueFieldString         28.164 0.021\nGetVolatileStaticFieldInt    23.971 0.017\nGetVolatileStaticFieldString 24.612 0.021\nGetVolatileFieldInt          27.518 0.020\nGetVolatileFieldString       28.178 0.023\nSetStaticFieldInt            25.291 0.014\nSetStaticFieldString         28.873 0.018\nSetFieldInt                  28.676 0.016\nSetFieldString               32.286 0.021\nSetVolatileStaticFieldInt    25.339 0.021\nSetVolatileStaticFieldString 28.904 0.028\nSetVolatileFieldInt          28.730 0.023\nSetVolatileFieldString       32.322 0.030\nSetOpaqueStaticFieldInt      25.343 0.014\nSetOpaqueStaticFieldString   28.992 0.018\nSetOpaqueFieldInt            28.749 0.016\nSetOpaqueFieldString         32.317 0.022\nSetReleaseStaticFieldInt     25.354 0.016\nSetReleaseStaticFieldString  28.906 0.025\nSetReleaseFieldInt           28.678 0.017\nSetReleaseFieldString        32.262 0.027\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I0ac6d0c154791d787d5c4abd8095e3c2eee9abbb\n"
    },
    {
      "commit": "86fe9b85c5243debe5f695c1625bae03bf738452",
      "tree": "5de78b8292a0225b617e1825817cbd12b46b6fa3",
      "parents": [
        "cc9df4fa1e666b90c5dd8eac94773763f8421f1e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 16 16:54:01 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 20:26:53 2020 +0000"
      },
      "message": "Revert^4 \"Partial LSE analysis \u0026 store removal\"\n\nWe incorrectly handled merging unknowns in some situations.\nSpecifically in cases where we are unable to materialize loop-phis we\ncould end up with PureUnknowns which could end up hiding stores that\nneed to be kept.\n\nIn an unrelated issue we were incorrectly considering some values as\nescapes when live at the point of an invoke. Since\nSearchPhiPlaceholdersForKeptStores used a more precise notion of\nescapes we could end up removing stores without being able to replace\nthe values.\n\nThis reverts commit 2316b3a0779f3721a78681f5c70ed6624ecaebef.\nThis unreverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Fixed issue causing incorrect store elimination\nTest: ./test.py --host\nTest: Boot cuttlefish\n      atest FrameworksServicesTests:com.android.server.job.BackgroundRestrictionsTest#testPowerWhiteList\n\nChange-Id: I2ebae9ccfaf5169d551c5019b547589d0fce1dc9\n"
    },
    {
      "commit": "c2d5c707a2cfeaaafcf8f5d7e5193dd2d5c59592",
      "tree": "5d978a37a409b8801e6e00178a05c0857cef58ef",
      "parents": [
        "cfc6e9d55263d49e2d8d19a4a3a7d38567bb4fb9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 15:28:33 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 09:11:29 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndBitwiseOp intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndBitwiseOrStaticFieldInt         23.917 0.026\nGetAndBitwiseOrFieldInt               26.828 0.026\nGetAndBitwiseOrAcquireStaticFieldInt  23.908 0.025\nGetAndBitwiseOrAcquireFieldInt        26.822 0.026\nGetAndBitwiseOrReleaseStaticFieldInt  23.906 0.026\nGetAndBitwiseOrReleaseFieldInt        26.831 0.026\nGetAndBitwiseXorStaticFieldInt        23.829 0.026\nGetAndBitwiseXorFieldInt              26.784 0.026\nGetAndBitwiseXorAcquireStaticFieldInt 23.841 0.025\nGetAndBitwiseXorAcquireFieldInt       26.788 0.026\nGetAndBitwiseXorReleaseStaticFieldInt 23.835 0.026\nGetAndBitwiseXorReleaseFieldInt       26.788 0.026\nGetAndBitwiseAndStaticFieldInt        23.874 0.026\nGetAndBitwiseAndFieldInt              26.797 0.026\nGetAndBitwiseAndAcquireStaticFieldInt 23.871 0.025\nGetAndBitwiseAndAcquireFieldInt       26.792 0.026\nGetAndBitwiseAndReleaseStaticFieldInt 23.865 0.026\nGetAndBitwiseAndReleaseFieldInt       26.786 0.026\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I8263f6b1b125c46190da06a9a05e60335bf69992\n"
    },
    {
      "commit": "a07de551da5147f3635c665a31f262cf65647118",
      "tree": "d6f8199cc45ab8b6ef779f97ef0e8f0d04520ef8",
      "parents": [
        "4483d2a4ed7e6c018e304c234484940ec0476039"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Sun Nov 01 22:42:43 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 16 14:31:54 2020 +0000"
      },
      "message": "Revert^2 \"ART: Fix breaking changes from recent VIXL update.\"\n\nThis reverts commit eeaf47f7c9bbad29afab84a0f199a5751d9c616b.\n\nAlso fixes the gtest failure when VIXL simulator stack\nwas overflown.\n\nTest: test-art-target, test-art-host.\nTest: ART_USE_READ_BARRIER\u003dfalse \\\n      SANITIZE_HOST\u003daddress \\\n      ASAN_OPTIONS\u003d\u0027detect_leaks\u003d0\u0027 \\\n      SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue \\\n      ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\n\nChange-Id: Ibc1f21204940083879f767d6993127bdde8326af\n"
    }
  ],
  "next": "e1510d4b8aff0d025adacac8e6d42fa9d1dcedf9"
}
