)]}'
{
  "log": [
    {
      "commit": "807de1ed238c706ed781301cb6a764c7a2c348f4",
      "tree": "f6847c0329421be44e708f77bf207e4247445de8",
      "parents": [
        "6de68dd322de49a49bc5036cbe7e3426c02ffeff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 30 15:14:18 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 04 07:47:32 2021 +0000"
      },
      "message": "Fix partial LSE using removed load as Phi input.\n\nTest: New test in load_store_elimination_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 183897743\nChange-Id: I4ddf1657b5b9240c229016a3671a74b0582ac30d\n"
    },
    {
      "commit": "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f",
      "tree": "b6692ebc91574820d64a6c0967083c43c5df3076",
      "parents": [
        "0849c1ca7b10a859d2ce3d2bd84a9b612fbb36e3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 15:22:40 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 18:50:33 2021 +0000"
      },
      "message": "Enable mini-debug-info by default.\n\nAll paths explicitly enable or disable the command line option.\n\nHowever, if we missed some or developers use stand-alone tools,\ndefault to working backtraces, which is the common intention.\n\nChange-Id: I1d308f2be881522ecfb945d5f679065e726d32aa\n"
    },
    {
      "commit": "889da94a5931a68ca527dc7320ff0b5de69917fc",
      "tree": "1c5d50e5a63f35073ba7b6b84f6f6b5f965d7c62",
      "parents": [
        "d78f319c52888d1c45d17ce1521e4f78db2d7119"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 13:03:14 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 16:58:11 2021 +0000"
      },
      "message": "Fix gtests with mini-debug-info enabled by default.\n\nEnsure we can generate mini-debug-info if it is enabled by default.\nThe tests don\u0027t explicitly generate the info on background thread.\n\nTest: test.py -g\nChange-Id: If3cf9a067ce683f728d553394e1407beeadae670\n"
    },
    {
      "commit": "ba320165975387e780be2bd16fac4a522411b59c",
      "tree": "914a3c6b730e662131ad082ba3a9e1f51955efa8",
      "parents": [
        "7a76e234402df797c2cd97d0defbb507ed9a7329"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 22 15:15:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 30 03:32:43 2021 +0000"
      },
      "message": "Improve simplifier slightly\n\nIt\u0027s possible thanks to the dead-code-elimination and other passes to\nend up with a PredicatedInstanceFieldGet that either has a null or a\n\u0027never-null\u0027 target value. We can simplify this down to either the\ndefault value or a normal ifield-get respectively.\n\nTest: ./test.py --host\nChange-Id: I92d9ff159a7b30294d29dbf4349d201dc654f0e1\n"
    },
    {
      "commit": "88e08c0568f2c09f562ee6e2d3eacabfcc67bf1d",
      "tree": "176064563f3cd5516efcce0c5beb2bb184abada5",
      "parents": [
        "e1e0e0f187587dfb019a1689c005b31813b4cfe7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 29 12:42:22 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 29 15:28:59 2021 +0000"
      },
      "message": "Create magic symbol to mark .symtab as sorted.\n\nELF symbols don\u0027t have to be sorted, but ART always sorts them.\nThis is very useful property if libunwindstack can rely on it.\n(that is, it can binary search the table instead of linear)\n\nBug: 110133331\nTest: art/test.py -b --host\nChange-Id: I4d491096a5bd4ea738a45bbc64fc9dea91c45575\n"
    },
    {
      "commit": "e1e0e0f187587dfb019a1689c005b31813b4cfe7",
      "tree": "bce0bf9489c6cd7e40d4f96fdbf8fd6af8e60f2f",
      "parents": [
        "98e9a1236f15d1f8579e2a2311aa4a24b5316732"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 08:57:13 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 14:48:11 2021 +0000"
      },
      "message": "Reland \"Refactor code in inliner.\"\n\nThis reverts commit aa1b711a40bfe92785f52bff9700dc516eba1d09.\n\nReason for revert: Fix wrong method being recorded as CHA dependency.\n\nChange-Id: Ic8ed84979b4cd67e49b96166792729b3b586cc25\n"
    },
    {
      "commit": "aa1b711a40bfe92785f52bff9700dc516eba1d09",
      "tree": "eec7b87d1c62d94932537825a509bf3b603755d8",
      "parents": [
        "fd7044dd3a6b21e817b2d5859a1446213b69a9c4"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed Apr 28 17:32:53 2021 +0000"
      },
      "committer": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Thu Apr 29 00:01:30 2021 +0000"
      },
      "message": "Revert \"Refactor code in inliner.\"\n\nThis reverts commit 921525030301fd4b8f6bb83aa6b20160d802e689.\n\nReason for revert: Potential cause of b/186637642, b/186637642\n\nChange-Id: Ia6f5cb742a068f148e290071cb0675648b22ec86\n"
    },
    {
      "commit": "921525030301fd4b8f6bb83aa6b20160d802e689",
      "tree": "60c9811c45ec00c31470cd44965c5fdc63006fd1",
      "parents": [
        "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 23 09:16:13 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 13:16:13 2021 +0000"
      },
      "message": "Refactor code in inliner.\n\n- Code refactoring to dissociate CHA attempts and devirtualization\nattemps\n- Only devirtualize (currently invoke-interface -\u003e invoke-virtual) when\nthe target can be statically resolved. The benefits for CHA and inline\ncaches are less clear.\n\nTest: test.py\nChange-Id: I2d41cef8143ab1ce66b2c2e149674eaf228d15a3\n"
    },
    {
      "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": "d3e9ff326a511ef48ea85afd2de9c292aa6ea20b",
      "tree": "da924af40549dca5fb679173036049e70ca395e9",
      "parents": [
        "4531afd0d813fdfa2bb115522bc5918477c03dc2"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 16 00:44:25 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Apr 12 16:36:03 2021 +0000"
      },
      "message": "Merge libdexfile_external into libdexfile (reland 2).\n\nTo reduce the number of DSO\u0027s. libdexfile_external only adds a few\nsmall functions on top of libdexfile, and it\u0027s still only those\nfunctions that are available in the APEX stubs.\n\nAlso rename libdexfile_external_static to libdexfile_static, for\nconsistency.\n\nSince libdexfile now has stubs, we need to add test_for properties to\navoid linking against the stubs in tests.\n\nThis relands https://r.android.com/1666119 that got submitted out of\norder from https://r.android.com/1664026 - prerequisite changes now\nsubmitted with https://r.android.com/1671709.\n\nTest: Flash and boot with userdebug and eng to try both release and\n  debug modules.\nTest: art/tools/buildbot-build.sh {--target,--host}\nTest: art/build/apex/runtests.sh\nTest: mmm art\nBug: 143978909\nChange-Id: I6de99052d6d8a9d01d748baabbbcecfe1f4509dc\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": "669756df2f4aea67d00e7b3598b2d91f61537141",
      "tree": "86d7ac86af3ee50c3a1f3163f1a80de396279094",
      "parents": [
        "14d9155cc5ac661961aa6718eaf2bfcc704d3c98"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Apr 09 11:35:11 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Apr 09 11:35:11 2021 +0000"
      },
      "message": "Revert \"Merge libdexfile_external into libdexfile (reland).\"\n\nRevert \"Rename libdexfile_external_static to libdexfile_static (...\"\n\nRevert \"Rename libdexfile_external_static to libdexfile_static (...\"\n\nRevert submission 1666119-libdexfile-noext-2\n\nReason for revert: broken build 7270939 on aosp-master on full-eng\nReverted Changes:\nI582e49ae7:Merge libdexfile_external into libdexfile (reland)...\nIaa6a90f41:Rename libdexfile_external_static to libdexfile_st...\nI4315189b2:libdexfile_external is replaced by libdexfile (rel...\nIa065119c2:Rename libdexfile_external_static to libdexfile_st...\n\nBug: 184929782\nChange-Id: Ie69a73f4f0f745ab988e627c568f4ccb83fd1c71\nTest: forrest build for aosp-master on full-eng\n"
    },
    {
      "commit": "14d9155cc5ac661961aa6718eaf2bfcc704d3c98",
      "tree": "413aa4746ef3a6cbcbdbf8d75387e85be87f6460",
      "parents": [
        "a191bbfd53a0c7df9b5639bfbefeb8b531c833db"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 16 00:44:25 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Apr 09 09:18:30 2021 +0000"
      },
      "message": "Merge libdexfile_external into libdexfile (reland).\n\nTo reduce the number of DSO\u0027s. libdexfile_external only adds a few\nsmall functions on top of libdexfile, and it\u0027s still only those\nfunctions that are available in the APEX stubs.\n\nAlso rename libdexfile_external_static to libdexfile_static, for\nconsistency.\n\nSince libdexfile now has stubs, we need to add test_for properties to\navoid linking against the stubs in tests.\n\nThis relands https://r.android.com/1643424 with leaving out\ndex_file_ext.cc on Windows (cf. build issue b/184239856): mapped_file.h\nbrings in windows.h in Windows builds, which has several defines that\nare incompatible with dex internals (e.g. CONST).\n\nTest: Flash and boot with userdebug and eng to try both release and\n  debug modules.\nTest: art/tools/buildbot-build.sh {--target,--host}\nTest: art/build/apex/runtests.sh\nTest: mmm art\nTest: m TARGET_PRODUCT\u003dfull TARGET_BUILD_VARIANT\u003deng checkbuild\nBug: 143978909\nChange-Id: I582e49ae797744837849db056cef2fbeacc0681e\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": "b2a1416f6d7031d8f255398407a3e8a2bb6d6447",
      "tree": "7dd7e79e47787b0f7c600f7db1a282321519c623",
      "parents": [
        "30126397f7d9219f5556b2f852e3fea1069d5ae0"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Mar 30 16:54:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 31 20:17:51 2021 +0000"
      },
      "message": "[metrics] Add JitMethodCompileCount\n\nThis tracks how many methods have been compiled by the JIT.\n\nBug: 170149255\nTest: manual\nChange-Id: Id7943818318dae26afdac7f9903cd32b7e2c4e89\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": "5f340ff790f08f673c8a163d474d00e3e63e55a2",
      "tree": "a5e5fc3c5723b0ce9473a80b0fc409c08b6bfaff",
      "parents": [
        "4dcd238be0ba05321ac355e4a85473d675e3be98"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 22 14:33:25 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 23 09:20:28 2021 +0000"
      },
      "message": "JNI: Use callee-save register for IRT cookie.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 172332525\nChange-Id: I6a91d86fd31ff33882b41646aae9fcccc157d638\n"
    },
    {
      "commit": "d3d1a1a11626bd5198edb9242831c7b120652fbb",
      "tree": "ff8a97051ef08c463ae49d0d04faa24aa26713fa",
      "parents": [
        "9cf17115d93649311da4fd2ac0cd1f8e97e06490"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 14:11:11 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 20:37:45 2021 +0000"
      },
      "message": "Remove DexToDexCompiler\n\nSince quickening is deprecated, it is no longer used.\n\nThis CL only removes compile-time dead code.\n\nBug: 170086509\nTest: test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I46c02fb7a9304f8361cecfafb9507c906a93592f\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": "113d6ea4c5182bac718a0350e858b420d1bac9e2",
      "tree": "9189f60176478265c9bbc888d72e35fcb29c96da",
      "parents": [
        "bc1748f825aed2a59a9bfbb087ab6e29e875d2d1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 22:49:46 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 09 15:00:30 2021 +0000"
      },
      "message": "Move code size from OatQuickMethodHeader to CodeInfo.\n\nThis saves 0.5% of oat file size.\n(0.8% saving from this CL minus 0.3% due to go/aog/1614482)\n\nBug: 123510633\nTest: m dump-oat\nTest: m test-art-host-gtest\nTest: ./art/test.py -b -r --host\nChange-Id: I035b54a47b300a5808aa8c2992f87eae009fd245\n"
    },
    {
      "commit": "7a5a7c3add22af1b9d9ffd03ed664092eb6351c6",
      "tree": "6707b05142e09e7af4270b28ea86f26465600ef9",
      "parents": [
        "987a8eaa3b34dc4be71ee15e3ec56cc16ec8e5d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 10:02:15 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 14:29:37 2021 +0000"
      },
      "message": "arm/arm64: Add comment to JNI assemblers\u0027 TestGcMarking.\n\nTest: m\nBug: 172332525\nChange-Id: I6515f326d331e9de3e4c12b48c680dad4272fd60\n"
    },
    {
      "commit": "6a5a5b68647926ce9359607c216e010c4c0b40a1",
      "tree": "6fdf50ea63a98e16f62c5add5ab6df0ef413390d",
      "parents": [
        "c714f40caec532522ecc5e611b15e857b3b65484"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 11:06:50 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 05 12:30:47 2021 +0000"
      },
      "message": "arm/arm64: Use marking register in JNI stubs.\n\nDo not load `is_gc_marking` from the `Thread` when it is\nalready available in r8 on arm and x20 on arm64.\n\nGolem results for art-opt-cc on Odroid-C2 (higher is better):\nlinux-armv7                     before after\nNativeDowncallStaticNormal      5.4429 5.5021 (+1.088%)\nNativeDowncallStaticNormal6     5.1163 5.1498 (+0.6554%)\nNativeDowncallStaticNormalRefs6 4.8876 4.9188 (+0.6394%)\nNativeDowncallStaticFast        15.992 16.505 (+3.207%)\nNativeDowncallStaticFast6       13.466 13.705 (+1.775%)\nNativeDowncallStaticFastRefs6   11.994 12.183 (+1.578%)\nlinux-armv8                     before after\nNativeDowncallStaticNormal      5.8594 5.9026 (+0.7378)\nNativeDowncallStaticNormal6     5.5198 5.5607 (+0.7414)\nNativeDowncallStaticNormalRefs6 5.1498 5.1862 (+0.7072)\nNativeDowncallStaticFast        17.057 17.439 (+2.242%)\nNativeDowncallStaticFast6       14.478 14.757 (+1.922%)\nNativeDowncallStaticFastRefs6   12.183 12.376 (+1.584%)\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --gcstress\nBug: 172332525\nChange-Id: I595cd0e17a480cdfd86c548a4f9853f4b86f4047\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": "93fc098b11a7cb5526049fb170bd833bf3fabcfd",
      "tree": "fab9f788a9db1fb7463208bdf1c2031dc12579f0",
      "parents": [
        "0b58ec56d3169dbd69d20f4492913b25b2c875dd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 09:06:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 14:02:51 2021 +0000"
      },
      "message": "Mark jclass in JNI stubs in a slow path.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --gcstress\nBug: 172332525\nChange-Id: Id791a16135c8a947c317ed56ac88dac81cadfd2d\n"
    },
    {
      "commit": "9150de6901996679c0ea6b34e74c8ddcc718d309",
      "tree": "496386b00b2a1b0b3bfbc36b09cf8083e3922f9b",
      "parents": [
        "8da26145fba859a5aba047f6280568565ffb8bfc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 26 03:22:24 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 02 07:18:14 2021 +0000"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to art\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  adbconnection/Android.bp\n  benchmark/Android.bp\n  build/Android.bp\n  build/Android.cpplint.mk\n  build/Android.gtest.mk\n  build/apex/Android.bp\n  build/boot/Android.bp\n  build/sdk/Android.bp\n  cmdline/Android.bp\n  compiler/Android.bp\n  dalvikvm/Android.bp\n  dex2oat/Android.bp\n  dexdump/Android.bp\n  dexlayout/Android.bp\n  dexlist/Android.bp\n  dexoptanalyzer/Android.bp\n  disassembler/Android.bp\n  dt_fd_forward/export/Android.bp\n  imgdiag/Android.bp\n  libartbase/Android.bp\n  libartpalette/Android.bp\n  libartservice/Android.bp\n  libartservice/tests/Android.bp\n  libarttools/Android.bp\n  libdexfile/Android.bp\n  libelffile/Android.bp\n  libnativebridge/Android.bp\n  libnativebridge/tests/Android.bp\n  libnativeloader/Android.bp\n  libnativeloader/test/Android.bp\n  libnativeloader/test/Android.mk\n  libprofile/Android.bp\n  oatdump/Android.bp\n  odrefresh/Android.bp\n  perfetto_hprof/Android.bp\n  profman/Android.bp\n  runtime/Android.bp\n  simulator/Android.bp\n  test/001-HelloWorld/Android.bp\n  test/001-Main/Android.bp\n  test/002-sleep/Android.bp\n  test/004-InterfaceTest/Android.bp\n  test/004-SignalTest/Android.bp\n  test/004-UnsafeTest/Android.bp\n  test/004-checker-UnsafeTest18/Android.bp\n  test/006-args/Android.bp\n  test/007-count10/Android.bp\n  test/009-instanceof/Android.bp\n  test/010-instance/Android.bp\n  test/011-array-copy/Android.bp\n  test/012-math/Android.bp\n  test/013-math2/Android.bp\n  test/014-math3/Android.bp\n  test/015-switch/Android.bp\n  test/016-intern/Android.bp\n  test/017-float/Android.bp\n  test/018-stack-overflow/Android.bp\n  test/019-wrong-array-type/Android.bp\n  test/020-string/Android.bp\n  test/021-string2/Android.bp\n  test/022-interface/Android.bp\n  test/025-access-controller/Android.bp\n  test/026-access/Android.bp\n  test/027-arithmetic/Android.bp\n  test/028-array-write/Android.bp\n  test/029-assert/Android.bp\n  test/030-bad-finalizer/Android.bp\n  test/033-class-init-deadlock/Android.bp\n  test/034-call-null/Android.bp\n  test/035-enum/Android.bp\n  test/036-finalizer/Android.bp\n  test/037-inherit/Android.bp\n  test/038-inner-null/Android.bp\n  test/039-join-main/Android.bp\n  test/040-miranda/Android.bp\n  test/041-narrowing/Android.bp\n  test/043-privates/Android.bp\n  test/044-proxy/Android.bp\n  test/045-reflect-array/Android.bp\n  test/046-reflect/Android.bp\n  test/047-returns/Android.bp\n  test/048-reflect-v8/Android.bp\n  test/049-show-object/Android.bp\n  test/050-sync-test/Android.bp\n  test/051-thread/Android.bp\n  test/052-verifier-fun/Android.bp\n  test/053-wait-some/Android.bp\n  test/054-uncaught/Android.bp\n  test/055-enum-performance/Android.bp\n  test/058-enum-order/Android.bp\n  test/059-finalizer-throw/Android.bp\n  test/061-out-of-memory/Android.bp\n  test/062-character-encodings/Android.bp\n  test/063-process-manager/Android.bp\n  test/067-preemptive-unpark/Android.bp\n  test/070-nio-buffer/Android.bp\n  test/072-precise-gc/Android.bp\n  test/072-reachability-fence/Android.bp\n  test/074-gc-thrash/Android.bp\n  test/076-boolean-put/Android.bp\n  test/078-polymorphic-virtual/Android.bp\n  test/079-phantom/Android.bp\n  test/080-oom-fragmentation/Android.bp\n  test/080-oom-throw-with-finalizer/Android.bp\n  test/080-oom-throw/Android.bp\n  test/081-hot-exceptions/Android.bp\n  test/082-inline-execute/Android.bp\n  test/083-compiler-regressions/Android.bp\n  test/084-class-init/Android.bp\n  test/086-null-super/Android.bp\n  test/087-gc-after-link/Android.bp\n  test/090-loop-formation/Android.bp\n  test/092-locale/Android.bp\n  test/093-serialization/Android.bp\n  test/094-pattern/Android.bp\n  test/095-switch-MAX_INT/Android.bp\n  test/096-array-copy-concurrent-gc/Android.bp\n  test/098-ddmc/Android.bp\n  test/099-vmdebug/Android.bp\n  test/100-reflect2/Android.bp\n  test/1004-checker-volatile-ref-load/Android.bp\n  test/101-fibonacci/Android.bp\n  test/102-concurrent-gc/Android.bp\n  test/103-string-append/Android.bp\n  test/104-growth-limit/Android.bp\n  test/105-invoke/Android.bp\n  test/106-exceptions2/Android.bp\n  test/107-int-math2/Android.bp\n  test/108-check-cast/Android.bp\n  test/109-suspend-check/Android.bp\n  test/110-field-access/Android.bp\n  test/112-double-math/Android.bp\n  test/114-ParallelGC/Android.bp\n  test/115-native-bridge/Android.bp\n  test/116-nodex2oat/Android.bp\n  test/120-hashcode/Android.bp\n  test/121-simple-suspend-check/Android.bp\n  test/122-npe/Android.bp\n  test/123-compiler-regressions-mt/Android.bp\n  test/123-inline-execute2/Android.bp\n  test/125-gc-and-classloading/Android.bp\n  test/128-reg-spill-on-implicit-nullcheck/Android.bp\n  test/129-ThreadGetId/Android.bp\n  test/132-daemon-locks-shutdown/Android.bp\n  test/133-static-invoke-super/Android.bp\n  test/1336-short-finalizer-timeout/Android.bp\n  test/1337-gc-coverage/Android.bp\n  test/1339-dead-reference-safe/Android.bp\n  test/136-daemon-jni-shutdown/Android.bp\n  test/139-register-natives/Android.bp\n  test/140-dce-regression/Android.bp\n  test/140-field-packing/Android.bp\n  test/143-string-value/Android.bp\n  test/144-static-field-sigquit/Android.bp\n  test/148-multithread-gc-annotations/Android.bp\n  test/149-suspend-all-stress/Android.bp\n  test/150-loadlibrary/Android.bp\n  test/151-OpenFileLimit/Android.bp\n  test/152-dead-large-object/Android.bp\n  test/153-reference-stress/Android.bp\n  test/154-gc-loop/Android.bp\n  test/156-register-dex-file-multi-loader/Android.bp\n  test/158-app-image-class-table/Android.bp\n  test/159-app-image-fields/Android.bp\n  test/163-app-image-methods/Android.bp\n  test/165-lock-owner-proxy/Android.bp\n  test/168-vmstack-annotated/Android.bp\n  test/169-threadgroup-jni/Android.bp\n  test/170-interface-init/Android.bp\n  test/172-app-image-twice/Android.bp\n  test/174-escaping-instance-of-bad-class/Android.bp\n  test/175-alloc-big-bignums/Android.bp\n  test/176-app-image-string/Android.bp\n  test/177-visibly-initialized-deadlock/Android.bp\n  test/178-app-image-native-method/Android.bp\n  test/179-nonvirtual-jni/Android.bp\n  test/1900-track-alloc/Android.bp\n  test/1901-get-bytecodes/Android.bp\n  test/1902-suspend/Android.bp\n  test/1903-suspend-self/Android.bp\n  test/1904-double-suspend/Android.bp\n  test/1905-suspend-native/Android.bp\n  test/1906-suspend-list-me-first/Android.bp\n  test/1907-suspend-list-self-twice/Android.bp\n  test/1908-suspend-native-resume-self/Android.bp\n  test/1909-per-agent-tls/Android.bp\n  test/1910-transform-with-default/Android.bp\n  test/1911-get-local-var-table/Android.bp\n  test/1912-get-set-local-primitive/Android.bp\n  test/1913-get-set-local-objects/Android.bp\n  test/1914-get-local-instance/Android.bp\n  test/1915-get-set-local-current-thread/Android.bp\n  test/1916-get-set-current-frame/Android.bp\n  test/1917-get-stack-frame/Android.bp\n  test/1919-vminit-thread-start-timing/Android.bp\n  test/1920-suspend-native-monitor/Android.bp\n  test/1921-suspend-native-recursive-monitor/Android.bp\n  test/1922-owned-monitors-info/Android.bp\n  test/1923-frame-pop/Android.bp\n  test/1924-frame-pop-toggle/Android.bp\n  test/1925-self-frame-pop/Android.bp\n  test/1926-missed-frame-pop/Android.bp\n  test/1927-exception-event/Android.bp\n  test/1928-exception-event-exception/Android.bp\n  test/1930-monitor-info/Android.bp\n  test/1931-monitor-events/Android.bp\n  test/1932-monitor-events-misc/Android.bp\n  test/1933-monitor-current-contended/Android.bp\n  test/1934-jvmti-signal-thread/Android.bp\n  test/1935-get-set-current-frame-jit/Android.bp\n  test/1936-thread-end-events/Android.bp\n  test/1937-transform-soft-fail/Android.bp\n  test/1938-transform-abstract-single-impl/Android.bp\n  test/1939-proxy-frames/Android.bp\n  test/1941-dispose-stress/Android.bp\n  test/1942-suspend-raw-monitor-exit/Android.bp\n  test/1943-suspend-raw-monitor-wait/Android.bp\n  test/1945-proxy-method-arguments/Android.bp\n  test/1947-breakpoint-redefine-deopt/Android.bp\n  test/1949-short-dex-file/Android.bp\n  test/1951-monitor-enter-no-suspend/Android.bp\n  test/1953-pop-frame/Android.bp\n  test/1954-pop-frame-jit/Android.bp\n  test/1955-pop-frame-jit-called/Android.bp\n  test/1956-pop-frame-jit-calling/Android.bp\n  test/1957-error-ext/Android.bp\n  test/1958-transform-try-jit/Android.bp\n  test/1959-redefine-object-instrument/Android.bp\n  test/1960-checker-bounds-codegen/Android.bp\n  test/1960-obsolete-jit-multithread-native/Android.bp\n  test/1961-checker-loop-vectorizer/Android.bp\n  test/1961-obsolete-jit-multithread/Android.bp\n  test/1962-multi-thread-events/Android.bp\n  test/1963-add-to-dex-classloader-in-memory/Android.bp\n  test/1967-get-set-local-bad-slot/Android.bp\n  test/1968-force-early-return/Android.bp\n  test/1969-force-early-return-void/Android.bp\n  test/1970-force-early-return-long/Android.bp\n  test/1971-multi-force-early-return/Android.bp\n  test/1972-jni-id-swap-indices/Android.bp\n  test/1973-jni-id-swap-pointer/Android.bp\n  test/1974-resize-array/Android.bp\n  test/1975-hello-structural-transformation/Android.bp\n  test/1976-hello-structural-static-methods/Android.bp\n  test/1977-hello-structural-obsolescence/Android.bp\n  test/1978-regular-obsolete-then-structural-obsolescence/Android.bp\n  test/1979-threaded-structural-transformation/Android.bp\n  test/1980-obsolete-object-cleared/Android.bp\n  test/1982-no-virtuals-structural-redefinition/Android.bp\n  test/1984-structural-redefine-field-trace/Android.bp\n  test/1985-structural-redefine-stack-scope/Android.bp\n  test/1986-structural-redefine-multi-thread-stack-scope/Android.bp\n  test/1987-structural-redefine-recursive-stack-scope/Android.bp\n  test/1988-multi-structural-redefine/Android.bp\n  test/1989-transform-bad-monitor/Android.bp\n  test/1990-structural-bad-verify/Android.bp\n  test/1991-hello-structural-retransform/Android.bp\n  test/1992-retransform-no-such-field/Android.bp\n  test/1993-fallback-non-structural/Android.bp\n  test/1994-final-virtual-structural/Android.bp\n  test/1995-final-virtual-structural-multithread/Android.bp\n  test/1996-final-override-virtual-structural/Android.bp\n  test/1997-structural-shadow-method/Android.bp\n  test/1998-structural-shadow-field/Android.bp\n  test/1999-virtual-structural/Android.bp\n  test/2003-double-virtual-structural/Android.bp\n  test/2004-double-virtual-structural-abstract/Android.bp\n  test/2005-pause-all-redefine-multithreaded/Android.bp\n  test/2008-redefine-then-old-reflect-field/Android.bp\n  test/201-built-in-except-detail-messages/Android.bp\n  test/2011-stack-walk-concurrent-instrument/Android.bp\n  test/2019-constantcalculationsinking/Android.bp\n  test/202-thread-oome/Android.bp\n  test/2020-InvokeVirtual-Inlining/Android.bp\n  test/2021-InvokeStatic-Inlining/Android.bp\n  test/2022-Invariantloops/Android.bp\n  test/2023-InvariantLoops_typecast/Android.bp\n  test/2024-InvariantNegativeLoop/Android.bp\n  test/2025-ChangedArrayValue/Android.bp\n  test/2026-DifferentMemoryLSCouples/Android.bp\n  test/2027-TwiceTheSameMemoryCouple/Android.bp\n  test/2028-MultiBackward/Android.bp\n  test/2029-contended-monitors/Android.bp\n  test/203-multi-checkpoint/Android.bp\n  test/2030-long-running-child/Android.bp\n  test/2031-zygote-compiled-frame-deopt/Android.bp\n  test/2033-shutdown-mechanics/Android.bp\n  test/2036-jni-filechannel/Android.bp\n  test/2037-thread-name-inherit/Android.bp\n  test/2231-checker-heap-poisoning/Android.bp\n  test/2232-write-metrics-to-log/Android.bp\n  test/300-package-override/Android.bp\n  test/301-abstract-protected/Android.bp\n  test/302-float-conversion/Android.bp\n  test/304-method-tracing/Android.bp\n  test/305-other-fault-handler/Android.bp\n  test/401-optimizing-compiler/Android.bp\n  test/402-optimizing-control-flow/Android.bp\n  test/403-optimizing-long/Android.bp\n  test/404-optimizing-allocator/Android.bp\n  test/405-optimizing-long-allocator/Android.bp\n  test/406-fields/Android.bp\n  test/407-arrays/Android.bp\n  test/408-move-bug/Android.bp\n  test/409-materialized-condition/Android.bp\n  test/410-floats/Android.bp\n  test/411-checker-hdiv-hrem-const/Android.bp\n  test/411-checker-hdiv-hrem-pow2/Android.bp\n  test/411-checker-instruct-simplifier-hrem/Android.bp\n  test/411-optimizing-arith/Android.bp\n  test/413-regalloc-regression/Android.bp\n  test/414-static-fields/Android.bp\n  test/418-const-string/Android.bp\n  test/419-long-parameter/Android.bp\n  test/420-const-class/Android.bp\n  test/421-exceptions/Android.bp\n  test/421-large-frame/Android.bp\n  test/422-instanceof/Android.bp\n  test/422-type-conversion/Android.bp\n  test/423-invoke-interface/Android.bp\n  test/424-checkcast/Android.bp\n  test/426-monitor/Android.bp\n  test/427-bitwise/Android.bp\n  test/427-bounds/Android.bp\n  test/429-ssa-builder/Android.bp\n  test/430-live-register-slow-path/Android.bp\n  test/433-gvn/Android.bp\n  test/434-shifter-operand/Android.bp\n  test/435-try-finally-without-catch/Android.bp\n  test/436-rem-float/Android.bp\n  test/436-shift-constant/Android.bp\n  test/437-inline/Android.bp\n  test/438-volatile/Android.bp\n  test/439-npe/Android.bp\n  test/439-swap-double/Android.bp\n  test/440-stmp/Android.bp\n  test/441-checker-inliner/Android.bp\n  test/443-not-bool-inline/Android.bp\n  test/444-checker-nce/Android.bp\n  test/445-checker-licm/Android.bp\n  test/446-checker-inliner2/Android.bp\n  test/447-checker-inliner3/Android.bp\n  test/449-checker-bce-rem/Android.bp\n  test/449-checker-bce/Android.bp\n  test/450-checker-types/Android.bp\n  test/451-regression-add-float/Android.bp\n  test/451-spill-splot/Android.bp\n  test/454-get-vreg/Android.bp\n  test/455-checker-gvn/Android.bp\n  test/456-baseline-array-set/Android.bp\n  test/458-long-to-fpu/Android.bp\n  test/461-get-reference-vreg/Android.bp\n  test/464-checker-inline-sharpen-calls/Android.bp\n  test/465-checker-clinit-gvn/Android.bp\n  test/466-get-live-vreg/Android.bp\n  test/469-condition-materialization/Android.bp\n  test/470-huge-method/Android.bp\n  test/471-deopt-environment/Android.bp\n  test/472-type-propagation/Android.bp\n  test/473-checker-inliner-constants/Android.bp\n  test/473-remove-dead-block/Android.bp\n  test/474-checker-boolean-input/Android.bp\n  test/474-fp-sub-neg/Android.bp\n  test/475-simplify-mul-zero/Android.bp\n  test/476-checker-ctor-fence-redun-elim/Android.bp\n  test/476-checker-ctor-memory-barrier/Android.bp\n  test/476-clinit-inline-static-invoke/Android.bp\n  test/477-checker-bound-type/Android.bp\n  test/477-long-2-float-convers-precision/Android.bp\n  test/478-checker-clinit-check-pruning/Android.bp\n  test/478-checker-inline-noreturn/Android.bp\n  test/478-checker-inliner-nested-loop/Android.bp\n  test/479-regression-implicit-null-check/Android.bp\n  test/480-checker-dead-blocks/Android.bp\n  test/481-regression-phi-cond/Android.bp\n  test/482-checker-loop-back-edge-use/Android.bp\n  test/483-dce-block/Android.bp\n  test/485-checker-dce-switch/Android.bp\n  test/486-checker-must-do-null-check/Android.bp\n  test/487-checker-inline-calls/Android.bp\n  test/488-checker-inline-recursive-calls/Android.bp\n  test/489-current-method-regression/Android.bp\n  test/490-checker-inline/Android.bp\n  test/491-current-method/Android.bp\n  test/492-checker-inline-invoke-interface/Android.bp\n  test/493-checker-inline-invoke-interface/Android.bp\n  test/494-checker-instanceof-tests/Android.bp\n  test/495-checker-checkcast-tests/Android.bp\n  test/496-checker-inlining-class-loader/Android.bp\n  test/497-inlining-and-class-loader/Android.bp\n  test/499-bce-phi-array-length/Android.bp\n  test/500-instanceof/Android.bp\n  test/505-simplifier-type-propagation/Android.bp\n  test/507-boolean-test/Android.bp\n  test/507-referrer/Android.bp\n  test/508-checker-disassembly/Android.bp\n  test/508-referrer-method/Android.bp\n  test/513-array-deopt/Android.bp\n  test/514-shifts/Android.bp\n  test/519-bound-load-class/Android.bp\n  test/521-checker-array-set-null/Android.bp\n  test/521-regression-integer-field-set/Android.bp\n  test/524-boolean-simplifier-regression/Android.bp\n  test/525-checker-arrays-fields1/Android.bp\n  test/525-checker-arrays-fields2/Android.bp\n  test/526-checker-caller-callee-regs/Android.bp\n  test/526-long-regalloc/Android.bp\n  test/527-checker-array-access-simd/Android.bp\n  test/527-checker-array-access-split/Android.bp\n  test/528-long-hint/Android.bp\n  test/529-long-split/Android.bp\n  test/530-checker-loops1/Android.bp\n  test/530-checker-loops2/Android.bp\n  test/530-checker-loops3/Android.bp\n  test/530-checker-loops4/Android.bp\n  test/530-checker-loops5/Android.bp\n  test/530-checker-lse-ctor-fences/Android.bp\n  test/530-checker-lse-simd/Android.bp\n  test/530-checker-lse/Android.bp\n  test/530-checker-lse2/Android.bp\n  test/530-instanceof-checkcast/Android.bp\n  test/530-regression-lse/Android.bp\n  test/532-checker-nonnull-arrayset/Android.bp\n  test/534-checker-bce-deoptimization/Android.bp\n  test/535-deopt-and-inlining/Android.bp\n  test/536-checker-intrinsic-optimization/Android.bp\n  test/537-checker-arraycopy/Android.bp\n  test/537-checker-jump-over-jump/Android.bp\n  test/538-checker-embed-constants/Android.bp\n  test/540-checker-rtp-bug/Android.bp\n  test/542-bitfield-rotates/Android.bp\n  test/542-inline-trycatch/Android.bp\n  test/542-unresolved-access-check/Android.bp\n  test/545-tracing-and-jit/Android.bp\n  test/548-checker-inlining-and-dce/Android.bp\n  test/549-checker-types-merge/Android.bp\n  test/550-checker-multiply-accumulate/Android.bp\n  test/550-new-instance-clinit/Android.bp\n  test/551-checker-clinit/Android.bp\n  test/551-checker-shifter-operand/Android.bp\n  test/551-implicit-null-checks/Android.bp\n  test/552-checker-sharpening/Android.bp\n  test/552-checker-x86-avx2-bit-manipulation/Android.bp\n  test/554-checker-rtp-checkcast/Android.bp\n  test/555-UnsafeGetLong-regression/Android.bp\n  test/557-checker-instruct-simplifier-ror/Android.bp\n  test/558-switch/Android.bp\n  test/559-bce-ssa/Android.bp\n  test/559-checker-rtp-ifnotnull/Android.bp\n  test/560-packed-switch/Android.bp\n  test/561-divrem/Android.bp\n  test/561-shared-slowpaths/Android.bp\n  test/562-bce-preheader/Android.bp\n  test/562-checker-no-intermediate/Android.bp\n  test/563-checker-invoke-super/Android.bp\n  test/564-checker-bitcount/Android.bp\n  test/564-checker-inline-loop/Android.bp\n  test/564-checker-negbitwise/Android.bp\n  test/565-checker-condition-liveness/Android.bp\n  test/566-checker-codegen-select/Android.bp\n  test/566-polymorphic-inlining/Android.bp\n  test/567-checker-builder-intrinsics/Android.bp\n  test/568-checker-onebit/Android.bp\n  test/570-checker-select/Android.bp\n  test/572-checker-array-get-regression/Android.bp\n  test/573-checker-checkcast-regression/Android.bp\n  test/576-polymorphic-inlining/Android.bp\n  test/577-checker-fp2int/Android.bp\n  test/578-bce-visit/Android.bp\n  test/578-polymorphic-inlining/Android.bp\n  test/579-inline-infinite/Android.bp\n  test/580-checker-round/Android.bp\n  test/580-crc32/Android.bp\n  test/581-rtp/Android.bp\n  test/582-checker-bce-length/Android.bp\n  test/583-checker-zero/Android.bp\n  test/584-checker-div-bool/Android.bp\n  test/589-super-imt/Android.bp\n  test/590-checker-arr-set-null-regression/Android.bp\n  test/591-checker-regression-dead-loop/Android.bp\n  test/593-checker-long-2-float-regression/Android.bp\n  test/594-checker-array-alias/Android.bp\n  test/594-load-string-regression/Android.bp\n  test/595-profile-saving/Android.bp\n  test/597-deopt-busy-loop/Android.bp\n  test/597-deopt-invoke-stub/Android.bp\n  test/597-deopt-new-string/Android.bp\n  test/602-deoptimizeable/Android.bp\n  test/603-checker-instanceof/Android.bp\n  test/604-hot-static-interface/Android.bp\n  test/605-new-string-from-bytes/Android.bp\n  test/607-daemon-stress/Android.bp\n  test/609-checker-inline-interface/Android.bp\n  test/609-checker-x86-bounds-check/Android.bp\n  test/610-arraycopy/Android.bp\n  test/611-checker-simplify-if/Android.bp\n  test/614-checker-dump-constant-location/Android.bp\n  test/615-checker-arm64-store-zero/Android.bp\n  test/616-cha-abstract/Android.bp\n  test/616-cha-interface/Android.bp\n  test/616-cha-miranda/Android.bp\n  test/616-cha-native/Android.bp\n  test/616-cha-regression-proxy-method/Android.bp\n  test/616-cha/Android.bp\n  test/617-clinit-oome/Android.bp\n  test/618-checker-induction/Android.bp\n  test/619-checker-current-method/Android.bp\n  test/620-checker-bce-intrinsics/Android.bp\n  test/622-checker-bce-regressions/Android.bp\n  test/623-checker-loop-regressions/Android.bp\n  test/625-checker-licm-regressions/Android.bp\n  test/626-set-resolved-string/Android.bp\n  test/627-checker-unroll/Android.bp\n  test/628-vdex/Android.bp\n  test/629-vdex-speed/Android.bp\n  test/631-checker-get-class/Android.bp\n  test/632-checker-char-at-bounds/Android.bp\n  test/635-checker-arm64-volatile-load-cc/Android.bp\n  test/636-arm64-veneer-pool/Android.bp\n  test/637-checker-throw-inline/Android.bp\n  test/638-checker-inline-cache-intrinsic/Android.bp\n  test/639-checker-code-sinking/Android.bp\n  test/640-checker-boolean-simd/Android.bp\n  test/640-checker-integer-valueof/Android.bp\n  test/640-checker-simd/Android.bp\n  test/641-checker-arraycopy/Android.bp\n  test/641-iterations/Android.bp\n  test/642-fp-callees/Android.bp\n  test/643-checker-bogus-ic/Android.bp\n  test/645-checker-abs-simd/Android.bp\n  test/646-checker-arraycopy-large-cst-pos/Android.bp\n  test/646-checker-long-const-to-int/Android.bp\n  test/646-checker-simd-hadd/Android.bp\n  test/647-jni-get-field-id/Android.bp\n  test/650-checker-inline-access-thunks/Android.bp\n  test/652-deopt-intrinsic/Android.bp\n  test/654-checker-periodic/Android.bp\n  test/655-checker-simd-arm-opt/Android.bp\n  test/655-jit-clinit/Android.bp\n  test/656-checker-simd-opt/Android.bp\n  test/656-loop-deopt/Android.bp\n  test/657-branches/Android.bp\n  test/658-fp-read-barrier/Android.bp\n  test/660-checker-sad/Android.bp\n  test/660-checker-simd-sad/Android.bp\n  test/660-clinit/Android.bp\n  test/661-checker-simd-reduc/Android.bp\n  test/661-oat-writer-layout/Android.bp\n  test/662-regression-alias/Android.bp\n  test/664-aget-verifier/Android.bp\n  test/665-checker-simd-zero/Android.bp\n  test/666-dex-cache-itf/Android.bp\n  test/667-checker-simd-alignment/Android.bp\n  test/667-jit-jni-stub/Android.bp\n  test/667-out-of-bounds/Android.bp\n  test/669-checker-break/Android.bp\n  test/671-npe-field-opts/Android.bp\n  test/672-checker-throw-method/Android.bp\n  test/673-checker-throw-vmethod/Android.bp\n  test/674-HelloWorld-Dm/Android.bp\n  test/674-hotness-compiled/Android.bp\n  test/676-proxy-jit-at-first-use/Android.bp\n  test/677-fsi2/Android.bp\n  test/679-locks/Android.bp\n  test/680-checker-deopt-dex-pc-0/Android.bp\n  test/680-sink-regression/Android.bp\n  test/684-checker-simd-dotprod/Android.bp\n  test/684-select-condition/Android.bp\n  test/685-deoptimizeable/Android.bp\n  test/687-deopt/Android.bp\n  test/689-multi-catch/Android.bp\n  test/689-zygote-jit-deopt/Android.bp\n  test/693-vdex-inmem-loader-evict/Android.bp\n  test/694-clinit-jit/Android.bp\n  test/695-simplify-throws/Android.bp\n  test/696-loop/Android.bp\n  test/697-checker-string-append/Android.bp\n  test/698-selects/Android.bp\n  test/700-LoadArgRegs/Android.bp\n  test/703-floating-point-div/Android.bp\n  test/704-multiply-accumulate/Android.bp\n  test/705-register-conflict/Android.bp\n  test/707-checker-invalid-profile/Android.bp\n  test/708-jit-cache-churn/Android.bp\n  test/711-checker-type-conversion/Android.bp\n  test/717-integer-value-of/Android.bp\n  test/718-zipfile-finalizer/Android.bp\n  test/720-thread-priority/Android.bp\n  test/721-osr/Android.bp\n  test/726-array-store/Android.bp\n  test/728-imt-conflict-zygote/Android.bp\n  test/805-TooDeepClassInstanceOf/Android.bp\n  test/806-TooWideClassInstanceOf/Android.bp\n  test/812-recursive-default/Android.bp\n  test/813-fp-args/Android.bp\n  test/814-large-field-offsets/Android.bp\n  test/815-invokeinterface-default/Android.bp\n  test/818-clinit-nterp/Android.bp\n  test/900-hello-plugin/Android.bp\n  test/901-hello-ti-agent/Android.bp\n  test/902-hello-transformation/Android.bp\n  test/903-hello-tagging/Android.bp\n  test/904-object-allocation/Android.bp\n  test/905-object-free/Android.bp\n  test/906-iterate-heap/Android.bp\n  test/907-get-loaded-classes/Android.bp\n  test/908-gc-start-finish/Android.bp\n  test/910-methods/Android.bp\n  test/911-get-stack-trace/Android.bp\n  test/913-heaps/Android.bp\n  test/914-hello-obsolescence/Android.bp\n  test/915-obsolete-2/Android.bp\n  test/916-obsolete-jit/Android.bp\n  test/917-fields-transformation/Android.bp\n  test/918-fields/Android.bp\n  test/919-obsolete-fields/Android.bp\n  test/920-objects/Android.bp\n  test/921-hello-failure/Android.bp\n  test/922-properties/Android.bp\n  test/923-monitors/Android.bp\n  test/924-threads/Android.bp\n  test/925-threadgroups/Android.bp\n  test/926-multi-obsolescence/Android.bp\n  test/927-timers/Android.bp\n  test/928-jni-table/Android.bp\n  test/930-hello-retransform/Android.bp\n  test/931-agent-thread/Android.bp\n  test/932-transform-saves/Android.bp\n  test/933-misc-events/Android.bp\n  test/937-hello-retransform-package/Android.bp\n  test/939-hello-transformation-bcp/Android.bp\n  test/940-recursive-obsolete/Android.bp\n  test/941-recursive-obsolete-jit/Android.bp\n  test/942-private-recursive/Android.bp\n  test/943-private-recursive-jit/Android.bp\n  test/944-transform-classloaders/Android.bp\n  test/945-obsolete-native/Android.bp\n  test/946-obsolete-throw/Android.bp\n  test/947-reflect-method/Android.bp\n  test/949-in-memory-transform/Android.bp\n  test/950-redefine-intrinsic/Android.bp\n  test/951-threaded-obsolete/Android.bp\n  test/963-default-range-smali/Android.bp\n  test/982-ok-no-retransform/Android.bp\n  test/983-source-transform-verify/Android.bp\n  test/984-obsolete-invoke/Android.bp\n  test/985-re-obsolete/Android.bp\n  test/986-native-method-bind/Android.bp\n  test/987-agent-bind/Android.bp\n  test/988-method-trace/Android.bp\n  test/989-method-trace-throw/Android.bp\n  test/990-field-trace/Android.bp\n  test/991-field-trace-2/Android.bp\n  test/992-source-data/Android.bp\n  test/993-breakpoints/Android.bp\n  test/994-breakpoint-line/Android.bp\n  test/995-breakpoints-throw/Android.bp\n  test/996-breakpoint-obsolete/Android.bp\n  test/997-single-step/Android.bp\n  test/Android.bp\n  tools/Android.bp\n  tools/ahat/Android.bp\n  tools/ahat/Android.mk\n  tools/art_verifier/Android.bp\n  tools/cpp-define-generator/Android.bp\n  tools/dexanalyze/Android.bp\n  tools/dexfuzz/Android.bp\n  tools/dmtracedump/Android.bp\n  tools/hiddenapi/Android.bp\n  tools/jfuzz/Android.bp\n  tools/jvmti-agents/breakpoint-logger/Android.bp\n  tools/jvmti-agents/chain-agents/Android.bp\n  tools/jvmti-agents/dump-jvmti-state/Android.bp\n  tools/jvmti-agents/enable-vlog/Android.bp\n  tools/jvmti-agents/field-counts/Android.bp\n  tools/jvmti-agents/field-null-percent/Android.bp\n  tools/jvmti-agents/jit-load/Android.bp\n  tools/jvmti-agents/list-extensions/Android.bp\n  tools/jvmti-agents/simple-force-redefine/Android.bp\n  tools/jvmti-agents/simple-profile/Android.bp\n  tools/jvmti-agents/ti-alloc-sample/Android.bp\n  tools/jvmti-agents/ti-fast/Android.bp\n  tools/jvmti-agents/titrace/Android.bp\n  tools/jvmti-agents/wrapagentproperties/Android.bp\n  tools/signal_dumper/Android.bp\n  tools/tracefast-plugin/Android.bp\n  tools/veridex/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  sigchainlib/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-GPL-2.0\nto:\n  Android.bp\n  Android.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  dt_fd_forward/Android.bp\n  openjdkjvmti/Android.bp\n\nAdded SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  openjdkjvm/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: If775045c12955fa6d72d40ccf2a09beef93d1699\nMerged-in: If775045c12955fa6d72d40ccf2a09beef93d1699\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": "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb",
      "tree": "99fd71a3ef398a471507ed815c4a175805ad51f3",
      "parents": [
        "0ccc970b3c00b172e3cff8e10da13dd6323ccd52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 16:16:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 14:34:43 2021 +0000"
      },
      "message": "Do not create HandleScope for JNI transitions.\n\nWe previously crated a HandleScope in the JNI transition\nframe to hold references passed as jobject (jclass, etc.)\nto the native function and these references were actually\nspilled twice during the transition.\n\nWe now construct the jobject as a pointer to the reference\nspilled in the reserved out vreg area in the caller\u0027s frame.\nAnd the jclass for static methods is just a pointer to the\nmethod\u0027s declaring class. This reduces the amount of work\nrequired in the JNI transition, both on entry (in compiled\nstubs) and exit (in JniMethodEnd*).\n\nSome additional work is required when GC visits references\nof a native method as we need to walk over the method\u0027s\nshorty which was unnecessary for a HandleScope.\n\nAlso fix Thread::InitStackHwm() to calculate correct stack\nsize needed by the new Thread::IsJniTransitionReference().\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\narm64 (medians from 3 runs) before after\ntimeGetBytesAscii EMPTY     447.33 436.86\ntimeGetBytesIso88591 EMPTY  440.52 431.13\ntimeGetBytesUtf8 EMPTY      432.31 409.82\narm (medians from 3 runs)   before after\ntimeGetBytesAscii EMPTY     500.53 490.87\ntimeGetBytesIso88591 EMPTY  496.45 495.30\ntimeGetBytesUtf8 EMPTY      488.84 472.68\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --gcstress\nTest: testrunner.py --host --jit-on-first-use\nTest: testrunner.py --host --jit-on-first-use --gcstress\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: boots.\nBug: 172332525\nChange-Id: I658f9d87071587b3e89f31c65feca976a11e9cc2\n"
    },
    {
      "commit": "2cefb3be7346aa1b468e91b78ac6d7f9852a50e5",
      "tree": "fa8c9c514386b114df20f3face4ef363af76625a",
      "parents": [
        "09efc1604936c234b65a5d278f5ea63da29b17cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 22 13:32:33 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 09:44:09 2021 +0000"
      },
      "message": "x86: Fix CriticalNative argument spilling in JNI stubs.\n\nDo not move incoming stack arguments before we have spilled\nthe scratch register ECX.\n\nFix JniCompilerTest to initialize classes early so that we\nreally test what we were supposed to. This exposed the x86\nbug fixed here.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172332525\nChange-Id: I7c06c8ccf18f5f66772c70f6a9a9a314668ce70d\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": "c7ac91b21d1a15c14e29d69ff02b48c485962b0d",
      "tree": "f8bcc4df536c29773742cbb54b32b959ebd601c3",
      "parents": [
        "5c48df9895530fb26666c6d79d155ef3886d7a83"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 04 21:44:01 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 16:31:17 2021 +0000"
      },
      "message": "[metrics] Report some ART metadata\n\nAdds reporting for some metadata associated with ART metrics,\nincluding timestamp relative to ART startup, the session id, and the\nprocess\u0027s user id. It additionally outputs placeholders for the\ncompilation reason and compiler filter, but these need some additional\nplumbing from the Runtime and OatFileManager to fill in, so those will\ncome in a followup CL.\n\nThis CL also includes a fair amount of refactoring around metrics\nreporting and handling the session data.\n\nExample output:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 768\n        session_id: 5026277321588503825\n        uid: 123456\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassVerificationTotalTime: count \u003d 4167\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 7,0,0,0,0,0\n    *** Done dumping ART internal metrics ***\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nChange-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc\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": "26bf47a60064fcc42e1b5e7b4b41deb8312d7330",
      "tree": "d3d4cdd0f4c24efbde0016da395747846eb3e5a4",
      "parents": [
        "b5a10be6153d9bf09e4edf4a645da4085b4436bf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 04 17:17:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 08:50:17 2021 +0000"
      },
      "message": "Use memfd_create_compat() in gtests.\n\nThe memfd_create() call fails on fugu.\n\nTest: Rely on TH.\nBug: 177816575\nChange-Id: I013742aba0c9b41aaf5aa333ddc635fe0ad58e02\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": "36e4d1d398a1526c6bc5eba12b32279dc07749d8",
      "tree": "ff094d112e7b2cb950a9504360957daa8967e1fe",
      "parents": [
        "daf1133c3dcf5338ad1d4155e06ec241b5a2ab3b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 10:16:05 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 01 12:27:34 2021 +0000"
      },
      "message": "Remove HWASan tag from method entrypoint in tests.\n\nTest: run-gtests.sh\nBug: 177816575\nChange-Id: If76f186d69ac9311a81e025960c13d9b99be6e56\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": "853367b85d8e58fa7de8b8b7bc9810da9147fcd8",
      "tree": "c25bc624819d5e09cd0a81123d6cbbe9f29c0b60",
      "parents": [
        "c39af9409ed4c8dd711be606f758a9b378cd0ee3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 25 09:58:21 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 27 09:12:37 2021 +0000"
      },
      "message": "arm: Fix and improve JNI frame entry/exit.\n\nAdd workaround for vixl emitting UNPREDICTABLE instruction\nin frame exit. Pop LR directly to PC when possible and emit\npreviously missing CFI data otherwise.\n\nFor frames that just save LR and align the stack with one\nmore unused word, make the frame entry a single PUSH (by\narbitrarily storing r3) and make exit a single POP (by\narbitrarily restoring r3 which we are allowed to clobber\nas it\u0027s a caller-save register not used for return value).\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nTest: testrunner.py --target --32 --optimizing\nBug: 178048807\nChange-Id: I8752711bfd4bcfc2c1cfa371108de393df00aeb8\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": "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4",
      "tree": "4373745cfa3eb131749d6c3207a7cbca29c98950",
      "parents": [
        "bd570591eab2d683eb634ac057dbf9f0e1337f8c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 08 16:25:27 2020 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 07 00:52:19 2021 +0000"
      },
      "message": "Fix expected results for clang-r407598 update.\n\nllvm-dwarfdump has changed the format it uses for displaying, so we\nmust also adapt all of the ART tests similarly, since they check for\nexact matching output.\n\nBug: 171348143\nTest: m test-art-host-gtest\nChange-Id: I901cd45330b0def7c6ed98a15c0206312feff01b\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": "23c926d12f8333d2ca59d6b321064cb9d831f0ad",
      "tree": "68e7f88f580ff30950605332f2187b18a904add6",
      "parents": [
        "6af553d1f411926acdb96d6fa85fb126b761eada"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 05 12:02:00 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 24 21:13:51 2020 +0000"
      },
      "message": "Do not create symbols for [DEDUPED] methods.\n\nThe incorrect method name keeps confusing developers, despite the tag.\n\nHowever, around half the time, the deduped methods share either the\nsame class name or method name, so include it in the name if possible.\n\nBug: 32949969\nTest: printf the generated method names.\nChange-Id: I9cc6f16da0a91d93aa05df5476011bf180d626d9\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"
    },
    {
      "commit": "e1510d4b8aff0d025adacac8e6d42fa9d1dcedf9",
      "tree": "77150893b2e584a1913dddd84287b4a5312c4c19",
      "parents": [
        "436977d92a803be16ba2ad825793daeb462ce373"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 11:07:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 16 10:37:00 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndAdd 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          23.640 0.026\nGetAndAddFieldInt                26.673 0.026\nGetAndAddStaticFieldFloat        23.588 0.029\nGetAndAddFieldFloat              26.732 0.029\nGetAndAddAcquireStaticFieldInt   23.618 0.025\nGetAndAddAcquireFieldInt         26.677 0.026\nGetAndAddAcquireStaticFieldFloat 23.592 0.028\nGetAndAddAcquireFieldFloat       26.736 0.029\nGetAndAddReleaseStaticFieldInt   23.612 0.026\nGetAndAddReleaseFieldInt         26.708 0.026\nGetAndAddReleaseStaticFieldFloat 23.596 0.029\nGetAndAddReleaseFieldFloat       26.747 0.029\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I3e435a3635f2d7164b9b410f5588fefb076edd07\n"
    },
    {
      "commit": "436977d92a803be16ba2ad825793daeb462ce373",
      "tree": "5eeb799688f4990af7d82f4f83e2c57e79229935",
      "parents": [
        "cc5629c1480b3be6189391b335d17911c9ddb6ad"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 12:41:06 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 16 09:58:38 2020 +0000"
      },
      "message": "arm64: VarHandle intrinsics improvements.\n\nUnify allocation of the temporary register for offset.\nWe now allocate an extra temporary for most Get intrinsics\nbut arm64 has enough registers and this simplifies the code.\n\nAdd bug number to cases unimplemented due to b/173104084.\n\nAnd use CBNZ instead of CMP+BNE when checking the primitive\ntype for references (kPrimNot has value 0).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nBug: 173104084\nChange-Id: Ia39f4ff2810ef2e310545b65792b2f988c8c38fe\n"
    },
    {
      "commit": "cc5629c1480b3be6189391b335d17911c9ddb6ad",
      "tree": "8fe09ed193c0514e614ea6e3b3bc2a17f453d5ca",
      "parents": [
        "2316b3a0779f3721a78681f5c70ed6624ecaebef"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 30 16:12:01 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 21:55:00 2020 +0000"
      },
      "message": "Clarify allocation entry point semantics\n\nTest: Treehugger\nBug: 171993478\nChange-Id: I03a95b7028ef98a5438011ce53b43de44f23bec8\n"
    },
    {
      "commit": "2316b3a0779f3721a78681f5c70ed6624ecaebef",
      "tree": "8aa4682729b839a97b2578e6cbe05ee5d35be923",
      "parents": [
        "aeb7f9f8fe718219cfb04e0da5df62683250477d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Nov 14 01:28:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 02:54:26 2020 +0000"
      },
      "message": "Revert^3 \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis unreverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis rereverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Git-blame seems to point to the CL as cause of\nb/173120044. Revert during investigation.\n\nChange-Id: I46f557ce79c15f07f4e77aacded1926b192754c3\n"
    },
    {
      "commit": "b6837f0350ff66c13582b0e94178dd5ca283ff0a",
      "tree": "f79fff81352545efe967850e3d17e32255dcfecd",
      "parents": [
        "32c2eb81320f24b5bab24754204b8be95faa08b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 12 17:05:28 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 10:07:21 2020 +0000"
      },
      "message": "Revert^2 \"Partial LSE analysis \u0026 store removal\"\n\nA ScopedArenaAllocator in a single test was accidentally loaded using\noperator new which is not supported. This caused a memory leak.\n\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: Fixed memory leak in\nLoadStoreAnalysisTest.PartialEscape test case\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 m test-art-host-gtest-dependencies\n      Run art_compiler_tests\n\nChange-Id: I34fa2079df946ae54b8c91fa771a44d56438a719\n"
    },
    {
      "commit": "32c2eb81320f24b5bab24754204b8be95faa08b0",
      "tree": "6c8d6978f05d2046baf26829d7ba00ae8ef647ad",
      "parents": [
        "b209a043a0d5965f25dcb9fde2049df493dcf602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 16:58:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 08:59:35 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndSet intrinsics.\n\nAdd an extra test to 160-read-barrier-stress. The main path\nis sufficiently exercised by 712-varhandle-invocations.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                  before after\nGetAndSetStaticFieldInt           23.809 0.027\nGetAndSetStaticFieldString        27.112 0.035\nGetAndSetFieldInt                 26.988 0.028\nGetAndSetFieldString              29.626 0.034\nGetAndSetAcquireStaticFieldInt    23.900 0.025\nGetAndSetAcquireStaticFieldString 27.084 0.034\nGetAndSetAcquireFieldInt          26.972 0.026\nGetAndSetAcquireFieldString       29.617 0.032\nGetAndSetReleaseStaticFieldInt    23.876 0.027\nGetAndSetReleaseStaticFieldString 27.093 0.035\nGetAndSetReleaseFieldInt          26.969 0.028\nGetAndSetReleaseFieldString       29.609 0.034\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I6a03858b1446354919cd4d08348ef93b725aafc6\n"
    },
    {
      "commit": "fe270426c8a2a69a8f669339e83b86fbf40e25a1",
      "tree": "c048fdec8e37cefb7238218a087709c01d5d3923",
      "parents": [
        "e17530a19a717879c8dd8e70073de6aaf4ee455f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 14:12:52 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 16:33:50 2020 +0000"
      },
      "message": "Revert \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: memory leak detected in the test.\n\nChange-Id: I81cc2f61494e96964d8be40389eddcd7c66c9266\n"
    },
    {
      "commit": "e17530a19a717879c8dd8e70073de6aaf4ee455f",
      "tree": "745e7e23519d37ae5fcafcf9f63c5e707779ce1b",
      "parents": [
        "bb6cda60e4418c0ab557ea4090e046bed8206763"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 17:02:26 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 10:53:53 2020 +0000"
      },
      "message": "arm64: Fix VarHandle intrinsics for non-Baker read barrier.\n\nIt turns out the artReadBarrierSlow() ignores the passed\nreference and reloads the field from the object. This makes\nsome of the VarHandle intrinsics broken for the TABLELOOKUP\nconfiguration. This change disables the broken variants of\nthese intrinsics (but leaves support code in place) and\ncleans up locations for those variants that remain active.\n\nAlso refactor reference argument checks and do a few other\nsmall cleanups (renames, comment updates, etc.).\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I8d28a4883771a8db2b283737bb643b36c7038c26\n"
    },
    {
      "commit": "bb6cda60e4418c0ab557ea4090e046bed8206763",
      "tree": "f6b94510108cb653a80e0ea14d50ad6616c9f44a",
      "parents": [
        "670ff8854cf075617e0abee77b2259903757d86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 09 13:24:56 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 12 02:08:44 2020 +0000"
      },
      "message": "Partial LSE analysis \u0026 store removal\n\nThis is the first piece of partial LSE for art. This CL adds analysis\ntools needed to implement partial LSE. More immediately, it improves\nLSE so that it will remove stores that are provably non-observable\nbased on the location they occur. For example:\n\n```\nFoo o \u003d new Foo();\nif (xyz) {\n  check(foo);\n  foo.x++;\n} else {\n  foo.x \u003d 12;\n}\nreturn foo.x;\n```\n\nThe store of 12 can be removed because the only escape in this method\nis unreachable and was not executed by the point we reach the store.\n\nThe main purpose of this CL is to add the analysis tools needed to\nimplement partial Load-Store elimination. Namely it includes tracking\nof which blocks are escaping and the groups of blocks that we cannot\nremove allocations from.\n\nThe actual impact of this change is incredibly minor, being triggered\nonly once in a AOSP code. go/lem shows only minor effects to\ncompile-time and no effect on the compiled code. See\ngo/lem-allight-partial-lse-2 for numbers. Compile time shows an\naverage of 1.4% regression (max regression is 7% with 0.2 noise).\n\nThis CL adds a new \u0027reachability\u0027 concept to the HGraph. If this has\nbeen calculated it allows one to quickly query whether there is any\nexecution path containing two blocks in a given order. This is used to\ndefine a notion of sections of graph from which the escape of some\nallocation is inevitable.\n\nTest: art_compiler_tests\nTest: treehugger\nBug: 67037140\nChange-Id: I0edc8d6b73f7dd329cb1ea7923080a0abe913ea6\n"
    }
  ],
  "next": "eff9b011ddad5119ac6ba609d572e9b265c6d878"
}
