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