)]}'
{
  "log": [
    {
      "commit": "2498d855f80171d825ce1b98428cb05c8a504f84",
      "tree": "a867553efc7621969e2f065ee4f1c95962f5edc7",
      "parents": [
        "90fe2d0adde4d18aac2eae642d8618026446c942"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 16 15:12:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 17 09:47:34 2021 +0000"
      },
      "message": "Run LSE with LoadStoreAnalysisType::kBasic analysis.\n\nOtherwise, the code assumes partial LSE gets run, which isn\u0027t the case\nas it\u0027s currently disabled.\n\nTest: 834-lse\nBug: 205813546\nBug: 205676807\nChange-Id: Ief5cba2964d60522e747395b60f90b862fcfe560\n"
    },
    {
      "commit": "b35f2a2d436a8d091bc297f2365c7a870e2e2657",
      "tree": "44fafc5ee1a1c1f9b921cb4b1b34a56f66ea78b2",
      "parents": [
        "f5ceaacef619543932a5afb459aebe876170cce0"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Nov 12 17:27:53 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 16 13:43:49 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.compareAnd* for arrays and byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                                   before   after\n  ----------------------------------------------------------\n  CompareAndSetArrayElementInt                2.870    0.007\n  CompareAndSetArrayElementString             3.447    0.008\n  CompareAndExchangeArrayElementInt           2.826    0.007\n  CompareAndExchangeArrayElementString        3.437    0.009\n  CompareAndSetByteArrayViewInt               2.929    0.007\n  CompareAndExchangeByteArrayViewInt          2.878    0.007\n  CompareAndSetByteArrayViewBigEndianInt      2.930    0.007\n  CompareAndExchangeByteArrayViewBigEndianInt 2.875    0.007\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I48fb24ff53b7badfe55ee9d6f394d99ae59efb39\n"
    },
    {
      "commit": "44a1dc73ad352cb19853cd59b709df82e259cdce",
      "tree": "a8924c1c051738461fb7a916081d11a77f9f98ee",
      "parents": [
        "c14f47dcc7e458d82799e7852d179c1a9ba3c7c1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 02 15:38:03 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 15 10:43:46 2021 +0000"
      },
      "message": "Clean up VarHandles.set*() for arrays and byte array views.\n\nThis CL is a clean up for https://r.android.com/1875684. Changes:\n\n- Use setters instead of constructor arguments.\n\n- Rerun benchmarks and add improvements for arrays to commit message\n  (as aosp/1875684 forgot to mention changes for arrays).\n\n- Do BSWAP at compile time if the argument is a constant value.\n  `HandleFieldSet` now can optionally perform byte swap. The function\n  is rewritten so that constant and non-constant values are handled in\n  separate branches, which makes both cases simpler.\n\n- Add helper function `CodeGeneratorX86_64::GetInstructionCodegen` to\n  reduce boilerplate.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                             before aosp/1875684   now\n  ----------------------------------------------------------------\n  VarHandleSetArrayElementInt                   2.79         0.002\n  VarHandleSetArrayElementString                3.09         0.003\n  VarHandleSetByteArrayViewInt                  2.89         0.004\n  VarHandleSetByteArrayViewBigEndianInt         2.89         0.004\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I8cc37321228ffb2833a1158a75ced65f18af968e\n"
    },
    {
      "commit": "483c41a99b8f0b63cbdcac9f1cd1f2dcb5756b0c",
      "tree": "0607ab807d82679a1097a24461a955909ba61dfe",
      "parents": [
        "9575c124c3d77e9f07e8c101571776ac9270af83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 12 12:45:23 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 15 09:53:15 2021 +0000"
      },
      "message": "ART: Use core image to speed up some gtests.\n\nHost timing of\n  art_compiler_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  LoadStoreEliminationTest*      16945  4750\n  LoadStoreAnalysisTest*          2647   689\n  ReferenceTypePropagationTest*  13542  3929\n  InstructionSimplifierTest*      1452   406\n\nHost timing of\n  art_runtime_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  RegType*Test*                   2976  1675\n  DexCacheTest*                    265    74\n  JavaVmExtTest*                   785   230\n\nHost timing of\n  art_libartbase_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  FlagsTests*                      691   214\n\nHost timing of\n  art_dex2oat_tests --no_isolate --gtest_filter\u003d\u0027\u003cpattern\u003e\u0027\nfor different patterns:\n  \"ms total\"                    before after\n  VerifierDepsTest*               3567   874\n\nTest: m test-art-host-gtest\nChange-Id: I20df90e3d38aaa286e22ba070c7845bcb09e3bca\n"
    },
    {
      "commit": "9575c124c3d77e9f07e8c101571776ac9270af83",
      "tree": "e3477e5c407249cd6e02dfcc5d039bfdc0375b7a",
      "parents": [
        "fa73acca98ddcad8cf208e9a8bce714744b70a6c"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Fri Nov 12 12:04:41 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 15 09:48:20 2021 +0000"
      },
      "message": "Revert^2 \"Cleanup the code to determine instrumentation level\"\n\nThis reverts commit cb8f8c12872d36304dbac80fbd08d8400a757fe5.\n\nReason for revert: Reland commit 21ef5a80704da06bdb2945be1c735ca86e8f1860 with fixes\n\nFixes:\nIn JITed code when we compare a bool variable\n(instrumentation_stubs_installed_) we should use cmpb and not cmpw. This\nwasn\u0027t caught earlier because the next three variables are bool which\nare related to instrumentation are false when instrumentation is disabled.\n\nTest: testrunner.py --host --redefine-stress -t 421-large-frame,\ntestrunner.py --host --redefine-stress -t 545-tracing-and-jit\n\nChange-Id: Iba363fb62d0cb41bcbc86af202eae73a833ba267\n"
    },
    {
      "commit": "fa73acca98ddcad8cf208e9a8bce714744b70a6c",
      "tree": "f60d3973546560fe5835f0e5069bf2d9aa1c6dc3",
      "parents": [
        "3fa6e46c0f379a35d51e37b9253c1d7369e3158f"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Nov 12 14:23:27 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Nov 12 16:55:59 2021 +0000"
      },
      "message": "Disaggregate kNotInlined MethodCompilationStats\n\nThere were some stats that were used in more than one place, making the actual reason indistinguishable between those cases.\n\nChange-Id: I0d42abdb2e69396991b6408cfea5396f6df2dda7\n"
    },
    {
      "commit": "3fa6e46c0f379a35d51e37b9253c1d7369e3158f",
      "tree": "cf5550ec4a680ae3edebc4395262b69f26757380",
      "parents": [
        "a1d4c56b0d92817939dcf18aa44ea516e4829863"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Fri Sep 10 17:30:04 2021 +0100"
      },
      "committer": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Fri Nov 12 15:52:56 2021 +0000"
      },
      "message": "Add Math.fma (double \u0026 float versions) intrinsics for arm64\n\nIntrinsic implementation is ~500 times faster than java implementation\nusing BigInteger.\n\nBug: 199373643\nTest: ./art/test/testrunner/testrunner.py --target \\\n      --optimizing --64 -t 082-inline-execute\nChange-Id: I50eae88b332ba9338b0a59fecad7d2158a97ffbb\n"
    },
    {
      "commit": "6545ee31288b72e117450ea77b07f3593bff6180",
      "tree": "60085d1b253758ba32d8b585e493f634d95e422a",
      "parents": [
        "a0232ad060c65d0ac3e022c9f721b41c02fd0b71"
      ],
      "author": {
        "name": "Shalini Salomi Bodapati",
        "email": "shalini.salomi.bodapati@intel.com",
        "time": "Tue Nov 02 20:01:06 2021 +0530"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 11 11:32:25 2021 +0000"
      },
      "message": "Support Math.fma Intrinsic for x86 and x86_64\n\nIntrinsic Implementation is 2287x faster than base\nTime for base: 188.25s\nTime for patch: 0.0822s\n\nTest: ./run-test --host --64 --optimizing 082-inline-execute\nTest: ./run-test --host --64 --optimizing --instruction-set-features sse4.1 082-inline-execute\nTest: ./run-test --host --64 --optimizing --instruction-set-features sse4.1,avx2 082-inline-execute\nSigned-off-by: Shalini Salomi Bodapati \u003cshalini.salomi.bodapati@intel.com\u003e\nChange-Id: I68b96a35f41f3bb23d7e26d87fee1dd2a5ebf6a6\n"
    },
    {
      "commit": "a0232ad060c65d0ac3e022c9f721b41c02fd0b71",
      "tree": "7fcc4bcac3d271342262e03e69cac6dd1deb7a88",
      "parents": [
        "6806d3c9e41e0e8b187d5e4c76d48ea6cc90b613"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 08 17:00:06 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Thu Nov 11 09:12:07 2021 +0000"
      },
      "message": "Add .bss support for inlining across dexfiles within Oat\n\nWe can safely reference other dexfiles within the same oat file for cross-dex inlining.\n\nThis CL makes the OptStat#NotInlinedBss drop to less than 1% of the not-inlining cases.\n\nTest: ART tests\nChange-Id: I676d48d973abf7a6f8412cf3b7bb73afd7747f31\n"
    },
    {
      "commit": "61673dc4bdee2fa4770ee72fbc347cca595dd231",
      "tree": "4a3a3f1b712e72bc7b9be3c84c5c79ce3588bdbf",
      "parents": [
        "f726d20976dff58db4e0111860f6b23b77be61a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 06 13:58:31 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 10 09:19:19 2021 +0000"
      },
      "message": "Reland \"Change hotness counting.\"\n\nThis reverts commit ce131feb7c60ffdf28c315c5d67f9cac33a077ce.\n\nBug: 203810169\nTest: test.py\nTest: health/microbench/startup/hscapps/compile-speed-profile/open-clock\n\nReason for revert: Kept logic from before on what methods to save in the\nprofile.\n\nChange-Id: Id67cd47a9fe31b4c6b154db20f632015238016d2\n"
    },
    {
      "commit": "970ba219234b16918e68e2b4ffddb2b896225b3e",
      "tree": "335b9a51612a386e60f7c8746aaccf86d3305842",
      "parents": [
        "e10abe7d84ed44d61401d24073f01d1c7777e17c"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Thu Oct 21 10:52:47 2021 +0100"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Nov 09 17:22:30 2021 +0000"
      },
      "message": "Inline across dex files for compiler options\u0027 non-BCP methods\n\nWe are now able to inline across dexfiles for the dexfiles present\nin compiler options\u0027 dex_files_for_oat_file_.\n\nNote that the dex files in the Class Loader Context are not included\nin this implementation since they will not have an OatDexFile.\n\nBug: 154012332\nTest: ART tests\n\nChange-Id: I7704217d936afecb66fc952c10529bb1030d6981\n"
    },
    {
      "commit": "5097f83c4719a76fdfab1044ab745273841aca45",
      "tree": "adca5e53b3ef1807aa7dd9c3465ac3305fedc4fd",
      "parents": [
        "d1e6bea2c502a72dc5d0c3d16deb591ba61c9d76"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Nov 02 14:52:30 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Nov 09 14:22:50 2021 +0000"
      },
      "message": "Revert^2 \"Add support for calling entry / exit hooks directly from JIT code\"\"\n\nThis reverts commit 72be14ed06b76cd0e83392145cec9025ff43d174.\n\nReason for revert: A reland of\ncommit 2d4feeb67912d64b9e980e6687794826a5c22f9d with a fix for no-image\ntests\n\nChange-Id: I79f719f0d4d9b903db301a1636fde5689da35a29\n"
    },
    {
      "commit": "ae0810bb0f4c3af56d7f9d465913920c259d82be",
      "tree": "fa337e71d541146e67bb962b4a55cf27f7a9b25d",
      "parents": [
        "46a8910372da2976c4e74273bacce17924b00d7a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 01 16:40:51 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Nov 02 15:17:36 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set{,Acquire,Opaque,Volatile} for byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleSetByteArrayViewInt             2.89   0.004\n  VarHandleSetByteArrayViewBigEndianInt    2.89   0.004\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ife3e0dfd99218399f18aa330b42b9828172f6491\n"
    },
    {
      "commit": "72be14ed06b76cd0e83392145cec9025ff43d174",
      "tree": "aa186f70ea70011d428ab91a1f4a3fb0c2e39de5",
      "parents": [
        "667584d95926af5f0f6e392ab2dc575cc2906c51"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 01 11:48:06 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 14:31:37 2021 +0000"
      },
      "message": "Revert \"Add support for calling entry / exit hooks directly from JIT code\"\n\nThis reverts commit 2d4feeb67912d64b9e980e6687794826a5c22f9d.\n\nReason for revert: This breaks no-image tests. Example failure: https://android-build.googleplex.com/builds/submitted/7871904/art-no-image/latest/view/logs/build_error.log\n\nChange-Id: I0f97c672c2d48f125931171ee1041a7c1cf20127\n"
    },
    {
      "commit": "e43aa3f55fd01ce0887059b309a41b6441521e7c",
      "tree": "7ba4ef9adfbb77e6baa1891c3fabd783fb03d580",
      "parents": [
        "808d8cc8114e0c5ee3116639fe9d31be5a70403a"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 01 09:02:09 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 10:45:06 2021 +0000"
      },
      "message": "Revert^2 \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit 8cb989f1019c4fa30845bf2deb5bc996ed4e8966, so we\nare re-enabling commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Failing test was fixed here\nhttps://android-review.googlesource.com/c/platform/art/+/1873567\n\nBug: 154012332\nTest: ART tests\nChange-Id: If159b29583e35abcfe753f30483f83990208b1b9\n"
    },
    {
      "commit": "d1729267e686f568a6c9c853ad80dceb7e7e6f0d",
      "tree": "19f252a0baad8a8d7f7a640979c6505ed6ec67db",
      "parents": [
        "2d4feeb67912d64b9e980e6687794826a5c22f9d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 29 14:27:16 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 01 08:52:18 2021 +0000"
      },
      "message": "arm: Fix VarHandle.compareAndSet/long intrinsic...\n\n... for big-endian array views. Undo the byte swap for all\nsituations where we swapped bytes in arguments.\n\nTest: testrunner.py --target --32 --optimizing -t 712\nBug: 71781600\nChange-Id: Ide4736032f8a4875e14be66727c00dd79beb230c\n"
    },
    {
      "commit": "2d4feeb67912d64b9e980e6687794826a5c22f9d",
      "tree": "7ab2071bbf5d5907d205b8e2a092ea9869974ba1",
      "parents": [
        "60abdd9c89525a277d75df19ff2792614651e1ff"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Wed Oct 13 15:39:37 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Mon Nov 01 08:31:54 2021 +0000"
      },
      "message": "Add support for calling entry / exit hooks directly from JIT code\n\nThe idea of this CL is to avoid maintaining the instrumentation stack\nand manipulating the return addresses on the stack to call the entry /\nexit hooks. This Cl only addresses this for JITed code. In follow up\nCLs, we will extend this to others (native, nterp). Once we have\neverything in place we could remove the complexity of instrumentation\nstack.\n\nThis CL introduces new nodes (HMethodEntry / HMethodExit(Void)) that\ngenerate code to call the trace entry / exit hooks when\ninstrumentation_stubs are installed. Currently these are introduced for\nJITed code in debuggable mode. The entry / exit hooks roughly do the\nsame this as instrumentation entry / exit points.\nWe also extend the JITed frame slots by adding a ShouldDeoptimize slot.\nThis will be used to force deoptimization of frames when requested by\njvmti (for ex: structural re-definition).\n\nTest: art/testrunner.py\nChange-Id: Id4aa439731d214a8d2b820a67e75415ca1d5424e\n"
    },
    {
      "commit": "8cb989f1019c4fa30845bf2deb5bc996ed4e8966",
      "tree": "fa793ebd540cad757df2fbf8e91a00e1c111f024",
      "parents": [
        "3693b2ae3bac182f1e483738bae2cd80cad5dc3d"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Wed Oct 27 09:16:37 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 29 13:06:57 2021 +0000"
      },
      "message": "Revert \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Test breakage related to VarHandles e.g.\nhttps://ci.chromium.org/ui/p/art/builders/ci/angler-armv7-ndebug/2409/overview\n\nChange-Id: I0d3537cd0907866c628478fad1d77aff4ee65113\n"
    },
    {
      "commit": "3693b2ae3bac182f1e483738bae2cd80cad5dc3d",
      "tree": "074107df43dc9cd519ff1f1ef2c2ca8bfb457232",
      "parents": [
        "5b9086818b520306d64cd9736c6d2302b08a8e8d"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Oct 29 10:43:18 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 29 12:43:58 2021 +0000"
      },
      "message": "Revert^2 \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\"\n\nThis reverts commit 6620caa89a4691bc5cbdbc5af7599b17fd8896f5.\n\nReason for revert: Relanding original change after fixing linker error:\n  ld.lld: error: undefined symbol: art::ObjPtr\u003cart::mirror::Class\u003e\n       art::GetClassRoot\u003c(art::ReadBarrierOption)0\u003e(art::ClassRoot)\n\n  The error was caused by a missing header which contained an `inline`\n  definition of the above function. The error may or may not happen\n  depending on the compiler: it may choose to not inline, and then there\n  is no linker error.\n\nBug: 71781600\nTest: Manually marked the function as always inline and ensured that the\n  error can be reproduced and is fixed by including the header.\nChange-Id: Ibcea2c3fc81ea75b8e6e6517d9ce872e79eda0d6\n"
    },
    {
      "commit": "6620caa89a4691bc5cbdbc5af7599b17fd8896f5",
      "tree": "e8a5bda30356ae019df926ef1aa3e8e6149a301b",
      "parents": [
        "298f1b7f1b7219d5e9e72778f1986c8e439fe4ba"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 28 17:48:47 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 28 17:48:47 2021 +0000"
      },
      "message": "Revert \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\"\n\nThis reverts commit 298f1b7f1b7219d5e9e72778f1986c8e439fe4ba.\n\nReason for revert: Breaks several Android builds.\n\nBug: 71781600\nChange-Id: Ic821256aa7f67e21c64c7a8e29b5665b39a89092\n"
    },
    {
      "commit": "298f1b7f1b7219d5e9e72778f1986c8e439fe4ba",
      "tree": "4757c2120ab99ee62fffc6cbc10740a26897ee09",
      "parents": [
        "5514c8ec932bef044119c178b6e9e180b3f81cf8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 15:08:53 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Oct 28 15:40:26 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for byte array views.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleGetByteArrayViewInt             2.74   0.002\n  VarHandleGetByteArrayViewBigEndianInt    2.74   0.003\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I4974b5773efb15b6245f690575218536d2c514db\n"
    },
    {
      "commit": "ce131feb7c60ffdf28c315c5d67f9cac33a077ce",
      "tree": "c0d95161dc6ba2ed5cad0fc5cc4c131c3eed15d0",
      "parents": [
        "9c924e89e5f52da9faadd1e4e60c73eaed6bc9d1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 26 20:03:35 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 26 22:56:55 2021 +0000"
      },
      "message": "Revert \"Change hotness counting.\"\n\nThis reverts commit c86869ab894c05e3181e7d15eb1893fa8a3fcd47.\n\nReason for revert: App startup performance regression.\n\nBug: 203810169\nChange-Id: Ie816969fffd7740fcdfa330aeb645399f5351865\n"
    },
    {
      "commit": "d690f8ae8f8e2675bc52089a83ac18c749f8e6d2",
      "tree": "dac10b65d901cad87d6dbb7b48453f6da214a76f",
      "parents": [
        "e91a954ee350cbc0b311f342c90697191e1ae495"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 01 09:26:56 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 26 13:51:31 2021 +0000"
      },
      "message": "Inline across dex files for bootclaspath\u0027s methods\n\nWe can relax a bit the restriction for not inlining across dexfiles when\nwe are AoT compiling and we need an environment. There\u0027s an added new\nrestriction related to BSS entries. We could potentially inline across\ndex files for those cases too but are left to be solved in follow-up\nCLs.\n\nBug: 154012332\nTest: ART tests\nChange-Id: I5122b26c79b3e30d2643c0ccc05d595a0047953e\n"
    },
    {
      "commit": "e91a954ee350cbc0b311f342c90697191e1ae495",
      "tree": "a0bd4cc9e71f7fb79c2b25cae42e6336b2c9e340",
      "parents": [
        "fd846c5c2e9bc63b250c2bce271c2d6b8905f79d"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Oct 25 16:23:27 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 26 11:30:14 2021 +0000"
      },
      "message": "Revert^2 \"ART: Redundant AND operation removal optimization\"\n\nRe-enables the original CL plus fixes a bug in\nInstructionSimplifierVisitor::VisitTypeConversion, where\nthere was no check for non-constant input for the And.\n\nThis reverts commit 050686452146e1f5d31aed560c682d992c376fed.\n\nTest: compile duckduckgo.apk.\nTest: 458-checker-instruct-simplification\nTest: test_art_target, test_art_host.\n\nChange-Id: Iecf13f492fb1d1769726d187093e455216f2c2c6\n"
    },
    {
      "commit": "050686452146e1f5d31aed560c682d992c376fed",
      "tree": "951ffcdd0c82be6fe976ca06852dbcde84058754",
      "parents": [
        "884c147e93aab632ca13d2f0ea28110e8f8752a7"
      ],
      "author": {
        "name": "Joe Shih",
        "email": "joeshih@google.com",
        "time": "Mon Oct 25 04:58:23 2021 +0000"
      },
      "committer": {
        "name": "Joe Shih",
        "email": "joeshih@google.com",
        "time": "Mon Oct 25 08:11:22 2021 +0000"
      },
      "message": "Revert \"ART: Redundant AND operation removal optimization\"\n\nThis reverts commit c498a1de3de1b36baebfd7b69b0af7fb4947d58e.\n\nDroidMonitor-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId\u003dI97700009991646450\u0026testResultId\u003dTR34427775909599300\u0026tab\u003dresults, bug b/203783068.\n\nBug: 203783068\nChange-Id: Ia7adec8217839b2b20c5409b9c87d3f920d798c2\n"
    },
    {
      "commit": "c498a1de3de1b36baebfd7b69b0af7fb4947d58e",
      "tree": "9f34ab6d331ac438b43c2f4c1a01965a4ba11877",
      "parents": [
        "0a12631fd5364d5908d59ea476bea075019ebecd"
      ],
      "author": {
        "name": "Aditya Deshpande",
        "email": "aditya.deshpande@linaro.org",
        "time": "Wed May 19 17:29:00 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 21 12:37:09 2021 +0000"
      },
      "message": "ART: Redundant AND operation removal optimization\n\nIn the following code:\n\n    b[i + length] \u003d (byte) ((value \u0026 0xff00) \u003e\u003e 8);\n\nThe AND operation is redundant because the lowest 8 bits will be\nremoved by the 8 bits right shift.\n\nThis optimization covers cases where a subsequent SHR and\nType Conversion (from Int and Short --\u003e Byte make an AND redundant.\nIn such cases, the AND operation is removed. Patch also includes tests.\nThis patch covers only signed types.\nUnsigned types will be supported in a future patch.\n\nThis optimization brings 3.3% perf increase on FFTBench workload.\n\nTest: ./scripts/tests/test_art_target.sh --single-test\\\n458-checker-instruct-simplification\n\nCan also use test_art_host.sh with same option as above.\n\nAuthor: Aditya Deshpande.\nCommitter: Artem Serov.\n\nChange-Id: I50b87576a3f998100feefc0e5df65b7b343d87e6\n"
    },
    {
      "commit": "c86869ab894c05e3181e7d15eb1893fa8a3fcd47",
      "tree": "a0a000eea11bddba4c822d4e30e06456c12ccaa4",
      "parents": [
        "d1da3ae0aa3ddde0b129364b5e1c6073f7bdb7b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 01 12:15:08 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 20 17:32:57 2021 +0000"
      },
      "message": "Change hotness counting.\n\nDecrement instead of increment to:\n- Simplify nterp\n- Support better future optimizations on memory savings.\n\nAlso clean up Jit::AddSamples which is now only used for the C++\ninterpreter.\n\nTest: test.py\nChange-Id: I2edcee3affc3e5205e253fc7824ccdc862565931\n"
    },
    {
      "commit": "740e1f972ab1401d0afa98f365d9f5fe70a8a895",
      "tree": "1e189dd88dddd48e817784a4af6559f5e60e3810",
      "parents": [
        "41e56c2282bad545608d6d9711f9e4a3683354b8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Oct 15 12:11:37 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 15 14:52:15 2021 +0000"
      },
      "message": "arm, arm64: Unpoison byte array view class reference before comparison.\n\nVarhandle class reference needs to be unpoisoned before it gets compared\nto the byte array view class reference from the boot image returned by\n`LoadClassRootForIntrinsic`. This was missing in the CLs that added\nvarhandle intrinsics for byte array views and resulted in byte array\nviews handled by the slow path if poisoning is enabled:\n  - https://r.android.com/1535201 (arm64)\n  - https://r.android.com/1555075 (arm)\n\nBug: 71781600\n\nTest: Ran benchmarks provided by https://r.android.com/1420959 with\n  ART_HEAP_POISONING\u003dtrue before and after the change, observed improved\n  run time for byte array views (on sargo, arm64):\n\n                                before  after\n  -------------------------------------------\n  GetByteArrayViewInt             9.86  0.074\n  SetByteArrayViewInt            10.07  0.074\n  GetByteArrayViewBigEndianInt   10.40  0.077\n  SetByteArrayViewBigEndianInt   10.07  0.077\n\nTest: art/test.py --target -r -t 712-varhandle-invocations\nTest: same with ART_HEAP_POISONING\u003dtrue\nChange-Id: Ie776b44759df642d3227a64b824caa0b21ffd5e6\n"
    },
    {
      "commit": "1558048c31b90ff5b3baf611d4dd70c1a003adfb",
      "tree": "0d4eb1b5ac1464edc1e679f065bd5b9e432a8567",
      "parents": [
        "5cbb0a9658e4c3a906139df2d1cf5b929d989faf"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Oct 12 13:11:29 2021 +0100"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Oct 12 13:55:05 2021 +0000"
      },
      "message": "Add stats for last step inlining of invokes\n\nAdd kInlinedLastInvoke(VirtualOrInterface) which counts the amount of invokes we inlined on the parent-most method. This is useful to know since it is the invoke that matters the most. The other inlinings are about recursive inlinings but those will not get into the graph if the last invoke fails to be inlined.\n\nChange-Id: I4d293864033c950477f50149fd0318c501dcfb6f\n"
    },
    {
      "commit": "5cbb0a9658e4c3a906139df2d1cf5b929d989faf",
      "tree": "34adba5a4e1cdc438a3006b0ab7f389becf85ad5",
      "parents": [
        "a8d998fa443b125d8a0461f59070b6d54c386f78"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 11:33:59 2021 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Oct 12 12:43:17 2021 +0100"
      },
      "message": "Revert^2 \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\"\n\nThis reverts commit eb270e4cf873acc6097da5647931cbfd67879864.\n\nReason for revert: relanding original patch. The fix is to use signed\n  comparison when checking out of bounds access (JAE instead of JGE).\n\nBug: 71781600\nBug: 202734548\nChange-Id: I4f5e170d293ccd675218b34f906b471de3c19a23\nTest: atest CtsLibcoreJsr166TestCases:jsr166.AtomicReferenceArrayTest#testIndexing\n"
    },
    {
      "commit": "eb270e4cf873acc6097da5647931cbfd67879864",
      "tree": "c673d7d32689642e594fd4ecb7d487ded4a5f730",
      "parents": [
        "3b87d854d1a6591b4a06052d74fef21527b56282"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 11 18:23:03 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Oct 11 18:56:17 2021 +0000"
      },
      "message": "Revert \"x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\"\n\nThis reverts commit a3fe0452f6972218fce5aacd81ced3dc20ea482d.\n\nReason for revert: Likely candidate for b/202734548\n\nBug: 71781600\nBug: 202734548\nChange-Id: I43b69bc76180e6bb9d1bdcbf63ea5c3cab8c2cd7\n"
    },
    {
      "commit": "a3fe0452f6972218fce5aacd81ced3dc20ea482d",
      "tree": "bd6b748011c13a25fa31755f8ec27b170cb09999",
      "parents": [
        "492649b718eed0c5834766b8a49ccbe9d86cf49a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Sep 06 16:53:56 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 11 15:11:52 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get{,Acquire,Opaque,Volatile} for arrays.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  VarHandleGetArrayElementInt            2.725    0.002\n  VarHandleGetArrayElementString         2.778    0.003\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ie9c6cef4ef3cf459cbfebbc17d1f449c489ec357\n"
    },
    {
      "commit": "4a4696ad2a1403139828e5e6703479f320f06fee",
      "tree": "e40c40ba014e4ba411f2345cd4b898a91717e298",
      "parents": [
        "b0cc5923bf0b0315fa181542c765bfa8b8083cad"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Sat Oct 09 07:14:40 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Mon Oct 11 07:30:36 2021 +0000"
      },
      "message": "Fixing Unsafe.getObjectAcquire code generation\n\nThis fixes the intrinsic code generation for\nUnsafe.getObjectAcquire which was introduced in\nIacd39ea1750c92a828d99241bff6b609acadb025\n\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: I456126ce5f8355aa944b7ba6e3be9405531d3778\n"
    },
    {
      "commit": "507cf9052116f8052c45a08586a356d00daba563",
      "tree": "8723a6303ec4dcdc39480bf84fa35e2de0e7e77a",
      "parents": [
        "a32d2d8b5ac9bda0aa1a7d12790b7ed3e5750b4a"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Wed Oct 06 12:04:56 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 08 17:34:31 2021 +0000"
      },
      "message": "Adding get/put and compare-and-set methods to Unsafe\n\nAs they are needed for the update of java.util.concurrent to\n11+28, the native implementation and intrinsics for the following methods have\nbeen added to jdk.internal.misc.Unsafe:\n\tjdk.internal.misc.Unsafe.compareAndSetLong\n\tjdk.internal.misc.Unsafe.compareAndSetObject\n\tjdk.internal.misc.Unsafe.getLongAcquire\n\tjdk.internal.misc.Unsafe.putLongRelease\n\tjdk.internal.misc.Unsafe.getObjectAcquire\n\tjdk.internal.misc.Unsafe.putObjectRelease\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: Iacd39ea1750c92a828d99241bff6b609acadb025\n"
    },
    {
      "commit": "0069ad7ddb159a8d368e0f6a289d0335238ae6c4",
      "tree": "02735717a696c0704d97526fcab0060d8d1ceae0",
      "parents": [
        "520c9b7649cdfcc12e1df414055c383335f54b69"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Fri Sep 17 17:33:09 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Tue Oct 05 12:34:42 2021 +0000"
      },
      "message": "OpenJDK 11: Adding Unsafe new intrinsics for AtomicIntegerFieldUpdater\n\nAdding native implementation for:\njdk.internal.misc.Unsafe.compareAndSetInt\n\nAdding intrinsics for:\njdk.internal.misc.Unsafe.compareAndSetInt\njdk.internal.misc.Unsafe.getIntAcquire\njdk.internal.misc.Unsafe.putIntRelease\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 188889082\nBug: 190791083\nChange-Id: Iba4a66d29ad27e269a7be0d5d5c8397755040784\n"
    },
    {
      "commit": "8f6b99fba2d043265a84d599a967d52f66738ad6",
      "tree": "b4f010fa47b8ae289719c8896da3c42dccb2afe4",
      "parents": [
        "a182c9302263114dcf5961e4f3850c21ff7824d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 28 17:51:17 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 29 12:02:20 2021 +0000"
      },
      "message": "Revert \"ART: Removes SuspendCheck for plain loops with a low trip count.\"\n\nThis reverts commit 3de02fb67de386368c9fe39ab5a0133afcf1d785.\n\nReason for revert: b/201413752\n\nChange-Id: I8a3a56cfb81fa88f49992615696260dfbc79bb67\n"
    },
    {
      "commit": "282795ca98d955697823aea6fd9c6b3f51780045",
      "tree": "b8d95a385c18684e8fa7481bae6088dfbe365581",
      "parents": [
        "03ce70a18e860abe5ab2e2198cb928e43a732e9c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 24 18:16:41 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 28 07:59:34 2021 +0000"
      },
      "message": "Don\u0027t do a recursive call when there are CHA guards.\n\nOtherwise we would continue execute the method with invalid inlining\noptimizations.\n\nTest: 832-cha-recursive\nBug: 19381779\nChange-Id: I57d73828d2a9c30f429cf32906f94244346c1310\n"
    },
    {
      "commit": "2f01e8ed55663b73787e079955d890e1ffd2983e",
      "tree": "804c2a605a0aed384f10ff809d3967afaca568ec",
      "parents": [
        "33a312992c86bdc718783496a9d42a18d7b342b0"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Fri Jun 18 06:44:07 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 24 10:21:16 2021 +0000"
      },
      "message": "Copying sun.misc.Unsafe to jdk.internal.misc\n\nFrom OpenJDK 10 onward, sun.misc.Unsafe has been moved to\njdk.internal.misc. Trying to merge in changes from OpenJDK 11\ndepends on having jdk.internal.misc.Unsafe available. As\nsun.misc.Unsafe is still used throughout libcore code, it cannot\nbe changed yet, so a copy is made to jdk.internal.misc.Unsafe for\nnow.\n\nAs OpenJDK 11 is merged in and sun.misc.Unsafe references will\ndisappear, it can be deprecated and eventually made to call into\njdk.internal.misc.Unsafe.\n\nTest: m\nTest: art/test/testrunner/testrunner.py -t 004-UnsafeTest\nTest: art/test/testrunner/testrunner.py -t 2235-JdkUnsafeTest\nBug: 190470684\nChange-Id: I472a9778a1001fbd7c3ecce0dfa58ea6d632f158\n"
    },
    {
      "commit": "33a312992c86bdc718783496a9d42a18d7b342b0",
      "tree": "0a27e5202514fc36e4ad54c6eedd16a96b3c1b50",
      "parents": [
        "9cc65df0146e05bda535991290f53b795a61a025"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Sep 24 08:50:06 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 24 10:15:04 2021 +0000"
      },
      "message": "Revert \"Move dex register check upwards in the Inliner stack\"\n\nThis reverts commit 7a7a1e2c826dc5f73df00936f98c21d8add7022c.\n\nReason for revert: We only want to check the register count if we have to create an environment\n\nBug: 200671122\nChange-Id: I26af9075248f5b82f7118c6af9c6e758b7c14280\n"
    },
    {
      "commit": "9cc65df0146e05bda535991290f53b795a61a025",
      "tree": "b1ea41c26c54984a031c17abbc0c85e1195e4ca2",
      "parents": [
        "08a37a09da7992dde879cabb6a8deb3c9e78115c"
      ],
      "author": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Tue Sep 21 15:09:58 2021 +0000"
      },
      "committer": {
        "name": "Mythri Alle",
        "email": "mythria@google.com",
        "time": "Fri Sep 24 09:23:34 2021 +0000"
      },
      "message": "Drop unused arguments for MethodEntered function\n\nthis_object and dex_pc aren\u0027t used in MethodEntered listener.\n\nTest: art/test/run-test\nChange-Id: I158f962befe1015d21d08c757d4c415fe7865d16\n"
    },
    {
      "commit": "7a7a1e2c826dc5f73df00936f98c21d8add7022c",
      "tree": "e9a4989f0036e47588ca0de4e475a47637c1b4f5",
      "parents": [
        "ad58e1cec027a27a8fa9ac270557b566e903913b"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Sep 20 14:14:16 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 22 10:07:43 2021 +0000"
      },
      "message": "Move dex register check upwards in the Inliner stack\n\nWe can check that before we try to build and run optimizations\n\nBug: 200671122\nTest: ART tests\nChange-Id: Ie3b60445a7ed90490ad6a97834ae74631e26ff93\n"
    },
    {
      "commit": "39e2979b92c25fc825944bda346216395d326395",
      "tree": "76ebdb27bce5ab57139b3e805f2f9119eda068f2",
      "parents": [
        "816b0da3ef7a2fffeda087917353646b3d48fd62"
      ],
      "author": {
        "name": "Usama Arif",
        "email": "usama.arif@linaro.org",
        "time": "Fri Nov 15 10:53:29 2019 +0000"
      },
      "committer": {
        "name": "Joel Goddard",
        "email": "joel.goddard@linaro.org",
        "time": "Mon Sep 20 15:13:57 2021 +0100"
      },
      "message": "ARM64: FP16 min and max intrinsic for ARMv8\n\nThis CL implements intrinsics for min and max method with\nARMv8.2 FP16 instructions.\n\nAlso refactors the location builders for FP16 Compare\noperations to use new helper FP16ComparisonLocations.\n\nThe performance improvements using timeMinFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.min:\n    - big cluster only: 935\n    - little cluster only: 2373\n- arm64 min Intrinisic implementation:\n    - big cluster only: 495 (~47% faster)\n    - little cluster only: 1521 (~36% faster)\n\nThe performance improvements using timeMaxFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.max():\n    - big cluster only: 1067\n    - little cluster only: 2383\n- arm64 max Intrinisic implementation:\n    - big cluster only: 496 (~53% faster)\n    - little cluster only: 1508 (~37% faster)\n\nTest: 580-checker-fp16\nTest: art/test/testrunner/run_build_test_target.py -j80 art-test-javac\nChange-Id: I6ecbc96ef7fa7fcb67f5855de3a6f551c247566e\n"
    },
    {
      "commit": "88b5c1d8b91e3ce53788efa532d6d106471a801e",
      "tree": "4dfb35742ada64256f84090aac41e14935b75cd9",
      "parents": [
        "cf6a926f4041e5cb88fe70c701ce6aa043ae9df3"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Tue Sep 14 15:58:22 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 17 12:51:34 2021 +0000"
      },
      "message": "Refactor register allocator\u0027s ProcessInstruction\n\nWe can make some auxiliary functions to make the method easier to read.\n\nChange-Id: I5f0a0c0fd97c3bd201da5245a58b84c9c520c9f7\n"
    },
    {
      "commit": "cf6a926f4041e5cb88fe70c701ce6aa043ae9df3",
      "tree": "005d37921c6dfa69a635461a8f3b22a2df1101e5",
      "parents": [
        "f513a7650e0bce9225e598b0fe4825b4ee1dc4cb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 07:58:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 17 09:29:38 2021 +0000"
      },
      "message": "Revert \"Restore partial LSE.\"\n\nThis reverts commit c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c.\n\nBug: 197981962\nBug: 200168065\n\nReason for revert: b/200168065\n\nChange-Id: I3c28edfed2bc2d544891c30d070feb282993c79a\n"
    },
    {
      "commit": "c2aa7a31fb825f51a9d1973fb877ee043cb0ff4c",
      "tree": "e6da7b57b10b004571f749b26e47a974a8925b31",
      "parents": [
        "8214de1bb682b2d0fc4968943ecddd9415d6b75f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 15 14:14:17 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 16 13:32:11 2021 +0000"
      },
      "message": "Restore partial LSE.\n\nThis fixes a bug where we were using the wrong value for initializing an\nallocation that we moved. See this test:\nhttps://android-review.googlesource.com/c/platform/art/+/1825138/4/test/828-partial-lse/src/Main.java\n\nRun LSE twice: one for the classical load store eliminiation, one for\nmoving allocations.\n\nTest: test.py\nBug: 197981962\nChange-Id: If317e10e239488876180047040dba66ae3fc8d4c\n"
    },
    {
      "commit": "e8a822d2209a644f30fc1b6db3c70ec5faf2b79a",
      "tree": "6adac4604b30164f328e5fececc816e263e2cd0e",
      "parents": [
        "76a943abedf97ebfc36a826edd447ee411345aa2"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Sep 13 14:40:53 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 14 12:21:30 2021 +0000"
      },
      "message": "Remove entry SuspendCheck for methods which only call on the slow path\n\nWe can skip SuspendCheck if the method is e.g. a leaf method with a read barrier call in the slow path.\n\nBug: 135477345\nTest: ART tests\nChange-Id: I6e04f10544ec61b46bb5763a88c28248e88193bf\n"
    },
    {
      "commit": "3de02fb67de386368c9fe39ab5a0133afcf1d785",
      "tree": "39b82839945a26dfb857a403effa4ba248145715",
      "parents": [
        "18074d2b59ae56dcfccea770ceb515215c8eb53f"
      ],
      "author": {
        "name": "Stelios Ioannou",
        "email": "stelios.ioannou@linaro.org",
        "time": "Fri Jul 09 17:06:03 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 13 17:54:53 2021 +0000"
      },
      "message": "ART: Removes SuspendCheck for plain loops with a low trip count.\n\nThis change removes SuspendCheck for plain loops with a low trip count.\n\nThe SuspendCheck in the codegen makes sure that the thread can be\ninterrupted during execution for GC. Not being able to do so might\ndecrease the responsiveness of GC in the case when a very long loop\nor a long recursion is being executed.\n\nHowever, for plain loops with a small trip count, the removal of\nSuspendCheck should not affect the GC\u0027s responsiveness by a large\nmargin. Consequently, since the thread won\u0027t be interrupted for\nplain loops, it is assumed that the performance might increase\nby removing SuspendCheck.\n\nTest: art/test.py -v -j12 --host --64 -t 2233-checker\\\n-remove-loop-suspend-check --run-test --optimizing\n\nChange-Id: Ic9f1387059669645ad836d8277bfbc7553aa6e2f\n"
    },
    {
      "commit": "18074d2b59ae56dcfccea770ceb515215c8eb53f",
      "tree": "e4c1c7d71254cfddd9420408bb7456504b1c5968",
      "parents": [
        "92e5d840ce0c3727a515eba1ed505dfe6770b1a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 14:07:10 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 16:11:26 2021 +0000"
      },
      "message": "Temporarily disable partial LSE.\n\nDue to a bug in it. Add a regression test.\n\nBug: 197818595\nTest: 828-partial-lse\nChange-Id: I65da4f7ef09cd2a1f6c4b21799ecd7a42c1adac2\n"
    },
    {
      "commit": "8dea9c4f6495c7c5477cb368b45a7cb77a87dbf6",
      "tree": "ff624d0b680b29a2421673868d39a0ec9b193bbb",
      "parents": [
        "c07f48875c60d88205283c979898ce31df2a2026"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 11:46:24 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 13 12:30:30 2021 +0000"
      },
      "message": "Update code to fix two unused variable warnings.\n\nTest: m\nChange-Id: I817bc3e5405d2b089841429ae22b2004305dac50\n"
    },
    {
      "commit": "0700b69cb0c81c3590726be7fbe5b98531cec76b",
      "tree": "9699ae3c78a2c7546918ba03aa43b0306d4f48a5",
      "parents": [
        "6194403a984dd814f01e6f7c6b270342d760388d"
      ],
      "author": {
        "name": "Raphael Gault",
        "email": "raphael.gault@linaro.org",
        "time": "Wed Sep 30 08:33:10 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 08:58:50 2021 +0000"
      },
      "message": "SVE: Extract Intermediate Address for SVE Vector Memory Operations\n\nThis patch introduces an optimization that extracts and factorizes\nthe \"base + offset\" common part for the address computation when\nperforming an SVE vector memory operation (VecStore/VecLoad).\n\nWith SVE enabled by default:\n\nTest: ./art/test.py --simulate-arm64 --run-test --optimizing \\\n(With the VIXL simulator patch)\n\nTest: ./art/test.py --target --64 --optimizing \\\n(On Arm FVP with SVE - See steps in test/README.arm_fvp.md)\n\nTest: 527-checker-array-access, 655-checker-simd-arm.\n\nChange-Id: Icd49e57d5550d1530445a94e5d49e217a999d06d\n"
    },
    {
      "commit": "ecbdc07474cf8be4837f40a12a5b6b82579df99a",
      "tree": "f09293f8d14dc4ee655710d21fbd305d14b97805",
      "parents": [
        "3676b36e832961426b285ec6a58e2b4c5a4b7816"
      ],
      "author": {
        "name": "Usama Arif",
        "email": "usama.arif@linaro.org",
        "time": "Wed Nov 13 13:32:54 2019 +0000"
      },
      "committer": {
        "name": "Joel Goddard",
        "email": "joel.goddard@linaro.org",
        "time": "Fri Sep 03 15:29:45 2021 +0100"
      },
      "message": "ARM64: FP16.compare() intrinsic for ARMv8\n\nThis CL implements an intrinsic for compare() method with\nARMv8.2 FP16 instructions.\n\nThe performance improvements using timeCompareFP16 FP16Intrinsic\nmicro intrinsic benchmark on pixel4:\n- Java implementation libcore.util.FP16.compare:\n    - big cluster only: 742\n    - little cluster only: 2286\n- arm64 compare Intrinisic implementation:\n    - big cluster only: 492 (~34% faster)\n    - little cluster only: 1535 (~33% faster)\nThe benchmark can be found in the following patch:\nhttps://android-review.linaro.org/c/linaro/art-testing/+/21039\n\nAuthors: Usama Arif, Edward Pickup, Joel Goddard\n\nTest: 580-checker-fp16\nTest: art/test/testrunner/run_build_test_target.py -j80 art-test-javac\n\nChange-Id: Idbe9f56f964f044e6d725bd696459fb04d2ac76c\n"
    },
    {
      "commit": "3676b36e832961426b285ec6a58e2b4c5a4b7816",
      "tree": "758da9350ed0db2ae0caf956971fb68c53ad2021",
      "parents": [
        "315cf0c115ad34f5f7e7b63cf80cf40009b6ee15"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Sep 02 16:13:51 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 02 17:17:22 2021 +0000"
      },
      "message": "Clean up compile time null checks for VarHandle intrinsics.\n\nA few small changes:\n\n- In the instruction simplifier, re-do the `object-\u003eIsNullConstant()`\n  check as this might have changed after the inliner.\n\n- Make `CanEnsureNotNullAt()` a static member: it is used locally and\n  should have local visibility, which was accidentally changed.\n\nBug: 191765508\nTest: art/test.py --host -r\nChange-Id: Ib7d88ded4cd73543f66cae75117679a40021c84c\n"
    },
    {
      "commit": "98f01d1deac3a938e49f0725c58798e38ef59277",
      "tree": "dcbf841ef87fdb1baf21f231e20cc9bd9f3cb0df",
      "parents": [
        "96dadefd24331f6808cb287048269ba772423c33"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 28 14:33:34 2021 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Aug 31 16:13:39 2021 +0000"
      },
      "message": "Revert^2 \"Compile time null checks for VarHandle intrinsics.\"\n\nThis reverts commit 4a889b7f1e58368f0ffd795eaa24f2f493ccab8d.\n\nReason for revert: relanding the original change after fixing the\n  baseline compiler.\n\nStatic checks for VarHandle intrinsics are now done in two places:\n\n 1) Simple static checks are done for both baseline and optimizing\n    compilers in `HInstructionBuilder::BuildInvokePolymorphic`.\n\n 2) More complex checks are done in instruction simplifier only for the\n    optimizing compiler. They can use information provided by preceding\n    optimization passes.\n\nBug: 191765508\nTest: art/test.py --host -r\nChange-Id: I92932f6fcf408c700e6db0101fe2fb1e8300a54a\n"
    },
    {
      "commit": "96dadefd24331f6808cb287048269ba772423c33",
      "tree": "5780533c94b5d46f86fb372fc1516f35f78d2048",
      "parents": [
        "12dd6fc8d125e594376fdca306da315d01f12069"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Aug 29 16:51:55 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 31 12:53:59 2021 +0000"
      },
      "message": "Partial LSE: handle all kinds of infinite loops.\n\nA subgraph could also have an infinite loop.\n\nTest: 826-inifinite-loop\nBug: 196246395\nChange-Id: Ifd1e1ae0f42dfe2cc156386fc166101c20748fc9\n"
    },
    {
      "commit": "4fba66c84245be79b1b32cbfa1584cfc5a87f053",
      "tree": "84dc54b5f50146e99449bae6da2cfa979e399297",
      "parents": [
        "4bd6795677dad1e4856b6fe458725adbefb57c94"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 26 18:49:04 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 27 14:00:13 2021 +0000"
      },
      "message": "Inline caches: be more robust in the presence of framework change.\n\nWhat used to be a class could be changed into an interface. Test for\nthat case as well.\n\nTest: test.py\nBug: 194817322\nChange-Id: I4c225640b45c529d440faa701ed29f978b7cbd28\n"
    },
    {
      "commit": "310b4e26593f6c1b89659d00275b55fa1a3c07b7",
      "tree": "d4527871a5f6a86f6ecee96177f21c63397e67ba",
      "parents": [
        "a0dd228837fbbacb3d29445bdf027649567f94fb"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 21 16:02:06 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 11:56:43 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndBitwise{And,Or,Xor} for fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                              before   after\n  -----------------------------------------------------\n  GetAndBitwiseOrStaticFieldInt          2.346    0.012\n  GetAndBitwiseOrFieldInt                2.615    0.010\n  GetAndBitwiseOrAcquireStaticFieldInt   2.340    0.008\n  GetAndBitwiseOrAcquireFieldInt         2.616    0.008\n  GetAndBitwiseOrReleaseStaticFieldInt   2.349    0.008\n  GetAndBitwiseOrReleaseFieldInt         2.614    0.008\n  GetAndBitwiseXorStaticFieldInt         2.336    0.010\n  GetAndBitwiseXorFieldInt               2.611    0.010\n  GetAndBitwiseXorAcquireStaticFieldInt  2.332    0.008\n  GetAndBitwiseXorAcquireFieldInt        2.613    0.008\n  GetAndBitwiseXorReleaseStaticFieldInt  2.335    0.008\n  GetAndBitwiseXorReleaseFieldInt        2.617    0.008\n  GetAndBitwiseAndStaticFieldInt         2.341    0.010\n  GetAndBitwiseAndFieldInt               2.619    0.010\n  GetAndBitwiseAndAcquireStaticFieldInt  2.345    0.008\n  GetAndBitwiseAndAcquireFieldInt        2.610    0.009\n  GetAndBitwiseAndReleaseStaticFieldInt  2.343    0.008\n  GetAndBitwiseAndReleaseFieldInt        2.616    0.008\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Ied3ae34aaad24e1b2cd8237fed4ac64aa9ae10ae\n"
    },
    {
      "commit": "017aae426873d57e260d5ae52fd5ce2ed2bddb1c",
      "tree": "6129e7bc94b4a63231e6e99ccb57a2b583f1cc3f",
      "parents": [
        "b1adfc2a0570f52d74b8a4acdd578efc1790995b"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 20 17:56:01 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 23 10:06:13 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.getAndAdd for fields.\n\nThe implementation is based on XADD instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndAddStaticFieldInt             2.338    0.012\n  GetAndAddFieldInt                   2.614    0.012\n  GetAndAddStaticFieldFloat           2.338    0.010\n  GetAndAddFieldFloat                 2.612    0.010\n  GetAndAddAcquireStaticFieldInt      2.337    0.007\n  GetAndAddAcquireFieldInt            2.617    0.007\n  GetAndAddAcquireStaticFieldFloat    2.337    0.010\n  GetAndAddAcquireFieldFloat          2.610    0.010\n  GetAndAddReleaseStaticFieldInt      2.336    0.007\n  GetAndAddReleaseFieldInt            2.615    0.007\n  GetAndAddReleaseStaticFieldFloat    2.334    0.010\n  GetAndAddReleaseFieldFloat          2.613    0.010\n\nBug: 71781600\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: If41fd01b7e444a7157478999640f45d64bbf17f1\n"
    },
    {
      "commit": "fc42ce1a2b013059b7868ffc69d35fade6c5b743",
      "tree": "c82efa8fa290af716eb02e1389379c724ed04ab5",
      "parents": [
        "a6f8a6a7a1e4e639b393261fc46abe046cd59b63"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 15:51:35 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 22 09:45:56 2021 +0000"
      },
      "message": "Fix `GetDataTypeFromShorty()` for inlined VarHandle intrinsics.\n\nTest: testrunner.py --host --optimizing --jit\nBug: 188889082\nChange-Id: Ide335dc408f5bd2c9256d4cac5ba66d2d390f69b\n"
    },
    {
      "commit": "4a889b7f1e58368f0ffd795eaa24f2f493ccab8d",
      "tree": "6449e59690e4219f3b3c1beba3631ecb586a584d",
      "parents": [
        "5d446a37192427b4d24ca9add5d8e2409f665c4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:20:54 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 21 16:21:35 2021 +0000"
      },
      "message": "Revert \"Compile time null checks for VarHandle intrinsics.\"\n\nThis reverts commit b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29.\n\nReason for revert: Breaks ART baseline compiler.\n\nBug: 191765508\nChange-Id: Ida63660e0149c4847f015950f95282e61add7204\n"
    },
    {
      "commit": "b3a7a6a72d7b91ee5507bd7314a3aae3948e6f29",
      "tree": "f65ecb447173e067fd5bd9437c19380b0d72bf04",
      "parents": [
        "c4597765f2d7496e428c0b0dc1b26ffb71c61093"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 20 15:02:33 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 21 12:57:37 2021 +0000"
      },
      "message": "Compile time null checks for VarHandle intrinsics.\n\nCreate a `VarHandleOptimizations` helper class holding the\noptimization flags for VarHandle intrinsics.\n\nAdd a flag to avoid emitting the intrinsic implementation\nand move shared checks previously duplicated in intrinsic\ncodegens helpers `HasVarHandleIntrinsicImplementation()` to\nthe instruction simplifier. Individual intrinsic codegens\nperform additional checks as needed.\n\nAdd the first optimization flag to avoid null check on the\nholder object if it cannot be null. And do not emit the\nintrinsic implementation if the holder object is null.\n\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --target --optimizing\nBug: 191765508\nChange-Id: I53b1b57c327f02a9913f22885c1ce663cd9c3d44\n"
    },
    {
      "commit": "4b0ceb655f86d6be90be574349bdc55d24e5560c",
      "tree": "062f296ec594a4bf075aaac19c07cfc9cb2fd86e",
      "parents": [
        "8f21748bf127012947ed48c40948df3f2d9c85ef"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jul 13 12:16:02 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 16 17:53:20 2021 +0100"
      },
      "message": "x86_64: Implement VarHandle.getAndSet for fields.\n\nThe implementation is based on XCHG instruction, so it cannot be reused\nfor other getAnd* methods.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                           before   after\n  --------------------------------------------------\n  GetAndSetStaticFieldInt             2.449    0.018\n  GetAndSetStaticFieldString          2.818    0.014\n  GetAndSetFieldInt                   2.728    0.012\n  GetAndSetFieldString                3.002    0.014\n  GetAndSetAcquireStaticFieldInt      2.438    0.007\n  GetAndSetAcquireStaticFieldString   2.811    0.010\n  GetAndSetAcquireFieldInt            2.726    0.007\n  GetAndSetAcquireFieldString         2.998    0.010\n  GetAndSetReleaseStaticFieldInt      2.436    0.007\n  GetAndSetReleaseStaticFieldString   2.813    0.010\n  GetAndSetReleaseFieldInt            2.730    0.007\n  GetAndSetReleaseFieldString         2.997    0.010\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I77bdf6d4b940d90b0efe499cab335e5a0fa5ca4a\n"
    },
    {
      "commit": "cf74ae7eae39affc8886b4bce5294aceebb908c3",
      "tree": "5a7ca403a555069f3f373c38fe45d78b53e243c6",
      "parents": [
        "dcb148a48a6bc69aba71cf3e2b8ab915ab3bf6d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 10:37:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:09:19 2021 +0000"
      },
      "message": "Small cleanups after latest verifier change.\n\nDuring AOT, the inliner can also look at whether the class needs to be\nverified at runtime. We know the class doesn\u0027t hard fail otherwise its\nstatus would be ErrorResolved.\n\nAlso un-negate IsUnverified -\u003e IsVerified.\nAlso make isVerifiedNeedsAccessCheck only return true if the class has\nthat exact state.\n\nTest: test.py and golem numbers\nBug: 28313047\nChange-Id: I2ee0024a380225e1aa120b69069a5a34d3f81113\n"
    },
    {
      "commit": "9e050ab1a061d9660eb0c1daa01a823ad75b0f05",
      "tree": "714f2ba3b11406310416e85357f45450634846b2",
      "parents": [
        "4f990714b13e0b4446305a5411648a1a9ae42a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 14:59:25 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 17:13:08 2021 +0000"
      },
      "message": "Remove the need of VerifiedMethod in the compiler.\n\nThe compiler only needs to know if a method is compilable or not. So\njust record a set of uncompilable methods (in some cases, we cannot have\nan ArtMethod, but the method can still be compiled).\n\nTest: test.py\nBug: 28313047\nChange-Id: Ic4235bc8160ec91daa5ebf6504741089b43e99cb\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "f040914a122be86e280efe5e31af1168f2b7c72e",
      "tree": "8ea3fa76be8f215d36977477015ed7f9f3a2f65c",
      "parents": [
        "b4bd92f27fb143135870d07b459ea52637afcfa5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Mar 22 15:45:03 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 10:52:35 2021 +0000"
      },
      "message": "Uncouple ART gtests from the ART APEX.\n\nIntroduce standalone versions of ART gtests on target, not bundled\nwith the ART APEX.\n\nSo far ART gtests have always been built as debug artifacts (and\nlinked against ART debug libraries). Make some adjustments in some of\nthese tests so that they can also work as non-debug artifacts and be\nused with the Release ART APEX (which contains only non-debug\nartifacts).\n\nNewly added tests:\n* `art_standalone_cmdline_tests`\n* `art_standalone_compiler_tests`\n* `art_standalone_dex2oat_tests`\n* `art_standalone_dexdump_tests`\n* `art_standalone_dexlist_tests`\n* `art_standalone_dexoptanalyzer_tests`\n  * Note: Requires root access to the device.\n* `art_standalone_libartbase_tests`\n* `art_standalone_libartpalette_tests`\n* `art_standalone_libartservice_tests`\n* `art_standalone_libarttools_tests`\n* `art_standalone_libdexfile_support_tests`\n* `art_standalone_libdexfile_tests`\n* `art_standalone_libprofile_tests`\n* `art_standalone_oatdump_tests`\n* `art_standalone_odrefresh_tests`\n* `art_standalone_profman_tests`\n  * Note: Requires root access to the device.\n  * Note: Some tests (2 out of 37) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_runtime_compiler_tests`\n* `art_standalone_runtime_tests`\n  * Note: Some tests (16 out of 686) are failing and have been\n    temporarily disabled.\n  * Note: Some tests (4 out of 686) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_sigchain_tests`\n\nTests not added:\n* `art_standalone_dexanalyze_tests`\n  * Reason: ART binary `dexanalyze` is not part of the Release ART APEX.\n* `art_standalone_dexdiag_tests`\n  * Reason: ART binary `dexdiag` is not part of the Release ART APEX.\n* `art_standalone_dexlayout_tests`\n  * Reason: ART binary `dexlayout` is not part of the Release ART APEX.\n* `art_standalone_imgdiag_tests`\n  * Reason: ART binary `imgdiag` is not part of the Release ART APEX.\n\nTest: atest -a art_standalone_cmdline_tests\nTest: atest -a art_standalone_compiler_tests\nTest: atest -a art_standalone_dex2oat_tests\nTest: atest -a art_standalone_dexdump_tests\nTest: atest -a art_standalone_dexlist_tests\nTest: atest -a art_standalone_dexoptanalyzer_tests\nTest: atest -a art_standalone_libartbase_tests\nTest: atest -a art_standalone_libartpalette_tests\nTest: atest -a art_standalone_libartservice_tests\nTest: atest -a art_standalone_libarttools_tests\nTest: atest -a art_standalone_libdexfile_support_tests\nTest: atest -a art_standalone_libdexfile_tests\nTest: atest -a art_standalone_libprofile_tests\nTest: atest -a art_standalone_oatdump_tests\nTest: atest -a art_standalone_odrefresh_tests\nTest: atest -a art_standalone_profman_tests\nTest: atest -a art_standalone_runtime_compiler_tests\nTest: atest -a art_standalone_runtime_tests\nTest: atest -a art_standalone_sigchain_tests\nTest: atest -a art_standalone_\\*_tests\nTest: m art_chroot \u0026\u0026 atest ArtGtestsTargetChroot\nBug: 162834439\nBug: 162734417\nChange-Id: I8beda9159d48c4ca495698357dc3bd95e3ff84d5\n"
    },
    {
      "commit": "4f388e3f26925f84d0a623a5a0e3c909fd09bd98",
      "tree": "5002223ee4d6b410d7e961ee50447d0a5538f14d",
      "parents": [
        "a934b1166e03f940f49b08acb7d777f7e24b584d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 28 12:39:14 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 01 10:19:16 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.compareAnd{Set,Exchange} for fields.\n\nReuse `GenCAS` function and extend it to support `compareAndExchange`\noperation in addition to `compareAndSet`. For convenience, split it into\nthree functions for integral types, floating-point types and references,\nas these cases are handled differently and require different number of\ntemporary registers.\n\nAlso, rename CreateIntIntIntIntIntToInt to CreateUnsafeCASLocations and\nuse RAX for output to take advantage of the CMPXCHG side-effect.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                                  before  after\n  ----------------------------------------------------------\n  CompareAndSetStaticFieldInt                2.843   0.00910\n  CompareAndSetStaticFieldString             3.256   0.01017\n  CompareAndSetFieldInt                      3.161   0.00910\n  CompareAndSetFieldString                   3.486   0.01017\n  WeakCompareAndSetStaticFieldInt            2.820   0.00895\n  WeakCompareAndSetStaticFieldString         3.222   0.01016\n  WeakCompareAndSetFieldInt                  3.144   0.00910\n  WeakCompareAndSetFieldString               3.454   0.01018\n  WeakCompareAndSetPlainStaticFieldInt       2.819   0.00896\n  WeakCompareAndSetPlainStaticFieldString    3.227   0.01016\n  WeakCompareAndSetPlainFieldInt             3.150   0.00909\n  WeakCompareAndSetPlainFieldString          3.456   0.01019\n  WeakCompareAndSetAcquireStaticFieldInt     2.822   0.00896\n  WeakCompareAndSetAcquireStaticFieldString  3.226   0.01016\n  WeakCompareAndSetAcquireFieldInt           3.148   0.00910\n  WeakCompareAndSetAcquireFieldString        3.455   0.01020\n  WeakCompareAndSetReleaseStaticFieldInt     2.820   0.00895\n  WeakCompareAndSetReleaseStaticFieldString  3.223   0.01015\n  WeakCompareAndSetReleaseFieldInt           3.143   0.00910\n  WeakCompareAndSetReleaseFieldString        3.458   0.01013\n  CompareAndExchangeStaticFieldInt           2.765   0.00895\n  CompareAndExchangeStaticFieldString        3.183   0.01012\n  CompareAndExchangeFieldInt                 3.076   0.00907\n  CompareAndExchangeFieldString              3.443   0.01015\n  CompareAndExchangeAcquireStaticFieldInt    2.774   0.00895\n  CompareAndExchangeAcquireStaticFieldString 3.177   0.01012\n  CompareAndExchangeAcquireFieldInt          3.092   0.00907\n  CompareAndExchangeAcquireFieldString       3.453   0.01015\n  CompareAndExchangeReleaseStaticFieldInt    2.796   0.00895\n  CompareAndExchangeReleaseStaticFieldString 3.193   0.01014\n  CompareAndExchangeReleaseFieldInt          3.105   0.00909\n  CompareAndExchangeReleaseFieldString       3.451   0.01015\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I816f9c6a3786efe921fe445536f9ea3ddae801d5\n"
    },
    {
      "commit": "30bb6af110e0999a87c6e9fd0145fdd4a59e98d8",
      "tree": "74a36f9bd04db20815554f03a2e3cb9d564206bb",
      "parents": [
        "f5958f8881e299c42ac923e4751f8f34d72db7f0"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 15 17:34:51 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 24 09:14:08 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set{Opaque,Release,Volatile} for fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  SetVolatileStaticFieldInt    2.782   0.00678\n  SetVolatileStaticFieldString 3.040   0.00678\n  SetVolatileFieldInt          3.082   0.00678\n  SetVolatileFieldString       3.317   0.00678\n  SetOpaqueStaticFieldInt      2.804   0.00177\n  SetOpaqueStaticFieldString   3.040   0.00230\n  SetOpaqueFieldInt            3.080   0.00174\n  SetOpaqueFieldString         3.317   0.00224\n  SetReleaseStaticFieldInt     2.795   0.00177\n  SetReleaseStaticFieldString  3.042   0.00281\n  SetReleaseFieldInt           3.076   0.00174\n  SetReleaseFieldString        3.326   0.00225\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: Idc5922ba4542608cf2b8d9ba686206b9956baaf6\n"
    },
    {
      "commit": "6a4b2990c4b7577e7ceb463baf8250b1e8a0b619",
      "tree": "208467bc7518583e59bbd491125ed200fd094116",
      "parents": [
        "d9696b79c886b9a23b4a77063fac4a3e03e0406d"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jun 11 12:02:17 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 22 14:38:58 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.set() for static and instance fields.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  SetStaticFieldInt            2.421   0.00176\n  SetStaticFieldString         2.628   0.00230\n  SetFieldInt                  2.665   0.00175\n  SetFieldString               2.914   0.00225\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\nChange-Id: I13acda88ab881c1274fcd8e154de61150409d974\n"
    },
    {
      "commit": "5da0507fd2d2b6342a9b87f4cce5ebbfa2c67dd3",
      "tree": "ebc00f7f0504da88d5e0e4d1d3858b77caa2fc3d",
      "parents": [
        "4ef36490afb1cfa6a29442c8d76938ec9fd9b9dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 18 15:51:12 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 21 13:03:16 2021 +0000"
      },
      "message": "Support inlining methods that may have soft verifier failures.\n\nTest: 536-checker-needs-access-check\nTest: 675-checker-unverified-method\nBug: 28313047\nChange-Id: Ie532014a658935a20dbd0b6acebfda07c28c4af4\n"
    },
    {
      "commit": "893e2edbd5aa14ab2ccb1800ccd3154f21a2d8a7",
      "tree": "6093926743fa150ab6ad972e1ef106e22025f975",
      "parents": [
        "33ed33bcc8bd08fe743508a08b0b5f7e4be0d805"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 10 16:18:12 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jun 14 10:01:03 2021 +0000"
      },
      "message": "x86: fix helper function that displaces address by a given amount.\n\nChange the function from a non-const method to a static member to avoid\ngiving an impression that it modifies the old address.\n\nAdd a gtest that constructs addresses with some initial displacement and\nchecks that they are equal to addresses constructed in the same way only\nwithout displacement, and then displaced.\n\nThe added gtest reveals errors in the displace function. Some of the\nadded test cases crashed on checks, others failed test assertions. This\nshouldn\u0027t affect real world as the use of the helper function in the\ncompiler is limited to a few working cases.\n\nChecks failed because some of the address constructors do not expect ESP\nas base register. It is possible to construct such addresses with\nanother constructor like `x86::Address(x86::ESP, 0))`, but an attempt to\ndisplace this address would try to reassemble it using a forbidden\nconstructor and hit the check.\n\nSome of the failed test assertions were for Address::Absolute, such as:\n\n  Expected equality of these values:\n    x86::Address::displace(x86::Address::Absolute(0), 42)\n      Which is: 42(%ebp)\n    x86::Address::Absolute(42)\n      Which is: (%ebp)\n\nOther failed test assertions were due to the fact that one and the same\naddress can be encoded in more than one way, e.g. 32-bit displacement\nnormally requires mod 11b, but can also be achieved with mod 00b if EBP\nis used as r/m or base. Example of a test failure:\n\n  Expected equality of these values:\n    x86::Address::displace(x86::Address(EAX, TIMES_1, 42), -42)\n      Which is: 0(%ebp,%eax,1)\n    x86::Address(EAX, TIMES_1, 0)\n      Which is: 0(,%eax,1)\n\nBug: 65872996\nTest: m test-art-host-gtest  # changes covered by the new test\nTest: art/test.py --host -r\nChange-Id: I8dcdc968d7bd9da2c0a16ef0afeb13cf9a168359\n"
    },
    {
      "commit": "33ed33bcc8bd08fe743508a08b0b5f7e4be0d805",
      "tree": "e659a7f8ae1946c89ee0471ff30b456f41d9a122",
      "parents": [
        "a09d8b7d4cb6f35f12f2bd2ed4e04a0eb129eeea"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 10 17:43:02 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 14 07:46:00 2021 +0000"
      },
      "message": "x86_64: add intrinsic for Long.divideUnsigned\n\nFix: 156736938\nTest: art/test/testrunner/testrunner.py --host -t 082\nChange-Id: I8a72372cc54896c666a00218368f1587cbc09d11\n"
    },
    {
      "commit": "c8451cb4302e028d4e106c1a2a44749d5cb9bb31",
      "tree": "c59b852b27ef441c5a09c4755e33628315d2e678",
      "parents": [
        "322eced250f893a85dce0f78c74ef91eba5fdb1a"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 17:35:16 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jun 03 14:00:34 2021 +0100"
      },
      "message": "Factor out arch-independent ScaleFactor definition.\n\nBug: 65872996\nTest: m test-art-host-gtest\nTest: art/test.py --host -r --optimizing\nChange-Id: I27763286847b45a5a3a493c3dba48418575b3eb6\n"
    },
    {
      "commit": "322eced250f893a85dce0f78c74ef91eba5fdb1a",
      "tree": "e3a544f1012b236c6f42e90ac9de3134b452f37a",
      "parents": [
        "6034c0755a12c4c3836d49282269a2670e6ee264"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 15:39:36 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 03 12:47:34 2021 +0000"
      },
      "message": "x86: Deduplicate load from memory for non-reference types.\n\nDeduplicate common code in HandleFieldGet, VisitArrayGet and\nGenerateVarHandleGet. Reference types are handled individually in each\ncase because these functions have subtle differences.\n\nBug: 65872996\n\nTest: art/test.py --host -r --optimizing --32\nChange-Id: Idcbe0bdb98290732816deec0cb1c42c530d5026f\n"
    },
    {
      "commit": "5c824937bb82adbde857bc99cb03c769c9f68f7b",
      "tree": "7aaa6cc94120e39ed93e3c0e127318f41e7bb456",
      "parents": [
        "95313c5d14447ff5d75f51263bfd82fc6352dd72"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 15:54:17 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 03 08:09:43 2021 +0000"
      },
      "message": "Reduce Partial LSE memory usage.\n\nInstantiate ExecutionSubgraph only for partial singleton\ncandidates (currently NewInstance, possibly NewArray in the\nfuture). This reduces \"LSA\" allocations.\n\nReserve memory for PartialLoadStoreEliminationHelper members\nbased on the number of partial singletons instead of the\nnumber of reference infos. This reduces \"LSE\" allocations.\n\nThe peak scoped arena allocation for one compiled method\nis reduced from\n  MEM: used: 97424004, allocated: 99006568, lost: 1115968\n    LSA            46015104\n    LSE            51408900\ndown to\n  MEM: used: 17000744, allocated: 26713880, lost: 3332496\n    GVN            17000744\nwhere the LSA+LSE memory use is lower than GVN use.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 33650849\nChange-Id: I323b9f144b258f0fab034794770971547ce94b59\n"
    },
    {
      "commit": "161911c9acf9506d17297ef6e83d09ad480a1a2e",
      "tree": "71d5aa9bbf32f44d3b2c99d4152ec80608e546b4",
      "parents": [
        "2ee69693be5368d423685da0a86065c4c99bcdf8"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Tue Jun 01 15:47:28 2021 +0100"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 11:51:40 2021 +0100"
      },
      "message": "x86_64: Deduplicate load from memory for non-reference types.\n\nDeduplicate common code in HandleFieldGet, VisitArrayGet and\nGenerateVarHandleGet. Reference types are handled individually in each\ncase because these functions have subtle differences.\n\nBug: 65872996\n\nTest: art/test.py --host -r --optimizing --64\nChange-Id: Ia2abcd7f6607edb2e35eb20a65cef7bfca380d3c\n"
    },
    {
      "commit": "2ee69693be5368d423685da0a86065c4c99bcdf8",
      "tree": "a9755ec920793c4c751e9f5c9760afadc334eea5",
      "parents": [
        "dd446b17bedb28838f5866f7c29fb47265f332fc"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed May 19 14:15:14 2021 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jun 02 10:45:10 2021 +0000"
      },
      "message": "x86_64: Implement VarHandle.get() for static and instance fields.\n\nThe implementation follows code structure for arm64.\n\nVarHandle{Acquire,Opaque,Volatile}.get() have the same implementaiton as\nVarHandle.get() on x86-64 due to the x86 memory model.\n\nBenchmarks improvements (using benchmarks provided by\nhttps://android-review.googlesource.com/1420959):\n\n  benchmark                    before  after\n  --------------------------------------------\n  GetStaticFieldInt            2.277   0.00179\n  GetStaticFieldString         2.307   0.00214\n  GetFieldInt                  2.532   0.00173\n  GetFieldString               2.587   0.00203\n  GetAcquireStaticFieldInt     2.279   0.00177\n  GetAcquireStaticFieldString  2.358   0.00214\n  GetAcquireFieldInt           2.548   0.00173\n  GetAcquireFieldString        2.612   0.00202\n  GetOpaqueStaticFieldInt      2.274   0.00177\n  GetOpaqueStaticFieldString   2.348   0.00213\n  GetOpaqueFieldInt            2.554   0.00172\n  GetOpaqueFieldString         2.619   0.00207\n  GetVolatileStaticFieldInt    2.252   0.00177\n  GetVolatileStaticFieldString 2.343   0.00214\n  GetVolatileFieldInt          2.550   0.00172\n  GetVolatileFieldString       2.617   0.00202\n\nBug: 65872996\n\nTest: lunch aosp_cf_x86_64_phone-userdebug \\\n  \u0026\u0026 art/test.py --host -r -t 712-varhandle-invocations --64\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse.\nTest: Repeat with ART_HEAP_POISONING\u003dtrue.\n\nChange-Id: I1796faf6cb86b6882de459a02f5728ea56e4b668\n"
    },
    {
      "commit": "1d326f94a3fdd6292ccdf0022cedfb2a2b8acfee",
      "tree": "17fde709095f46eff040585e694b621676e5d0c0",
      "parents": [
        "654f01cd509ca11eae22177d4e764f1241fb3a53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 09:26:55 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 12:50:50 2021 +0000"
      },
      "message": "Avoid race on Thread::tlsPtr_::top_handle_scope.\n\nRequire mutator lock for that field and update tests to hold\nthe mutator lock when needed. This prevents GC thread that\nexecutes a thread roots flip on behalf of suspended threads\nfrom racing against construction or destruction of handle\nscopes by those threads and possibly seeing invalid values.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 189439174\nChange-Id: I268a0ef6e5aa838347956febca0d3b6e02fe3ae5\n"
    },
    {
      "commit": "d42902692d1fbb101a3c60ba314df69005da9c83",
      "tree": "76d495db0ab6160c1fe1b0e1f046da1260272265",
      "parents": [
        "8f8935ce292bec925e8a18719227df9ad06a111d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 16:36:23 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 24 13:03:10 2021 +0000"
      },
      "message": "dex2oat: Abort app compilation without boot image.\n\nAlso avoid crash in GraphChecker for bad instructions that\nthrow into catch block but do not have an environment. And\nDCHECK() that java_lang_Double_doubleToRawLongBits and\njava_lang_Float_floatToRawIntBits are intrinsics.\n\nTest: New test Dex2oatTest.MissingBootImageTest.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 188684102\nChange-Id: I13ec2ee8a7968c0a5652aa67ec6291d07a986c80\n"
    },
    {
      "commit": "642c8f6e69929f46a1a52583cb55b68d83828a02",
      "tree": "439e8e33788e7b346d245382f58a43436e9d89cc",
      "parents": [
        "a393988fe65af884b81c63db54ac4afb7d973da2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 09:24:03 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 21 09:28:10 2021 +0100"
      },
      "message": "Fix scheduler\u0027s `FieldAccessHeapLocation()`.\n\nUse the correct target for predicated get.\n\nAlso remove an always-false condition from LSE.\n\nTest: m\nBug: 188188275\nBug: 188847019\nChange-Id: I731e181c8c0d812120dc4fad0c011158053fa7a8\n"
    },
    {
      "commit": "06fb7fa55cca3210f38c92ac7cc7ad525ff30c83",
      "tree": "ee970452d8b5e63d09d1dd8157e11124fa35d731",
      "parents": [
        "dc65a4505a62b8ebd7e8c65bccbc469c01e500a7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 18 15:53:17 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 20 13:39:53 2021 +0000"
      },
      "message": "Fix ReplacementOrValue() for Partial LSE.\n\nAlso fix a bad DCHECK() in `FindSubstiute()` and fix the\nHeapLocationCollector::VisitPredicatedInstanceFieldGet()\nto use the correct input.\n\nTest: New tests in load_store_elimination_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 188188275\nChange-Id: Ifdace5ddbe1777af2109189013c0557f226d9cc9\n"
    },
    {
      "commit": "c63d9672264e894d8d409e8d582b4e086b26abca",
      "tree": "1e285cbab4c71aea3c8c37b4e4c5e8241a3ce117",
      "parents": [
        "0bf5b6729be507f1e78fc61f17554393dd978e46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 15:50:39 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 17 13:42:11 2021 +0000"
      },
      "message": "Rewrite profile file format.\n\nThe new format contains one mandatory section and several\noptional sections. This allows extending the profile with\nnew sections that shall be ignored by old versions of ART.\n\nWe add an \"extra descriptors\" section to support class\nreferences without a `dex::TypeId` in the referencing dex\nfile. Type indexes between the dex file\u0027s `NumTypeIds()`\nand `DexFile::kDexNoIndex16` are used to index these extra\ndescriptors. This prepares for collecting array classes\nwhich shall be tied to the element type\u0027s dex file even\nwhen the array type is not needed by that dex file and has\nbeen used only from another dex file. It also allows inline\ncaches to be self-contained, so we can remove the profile\nindex from data structures and serialized data.\n\nThe creation of the the binary profile from text files is\nupdated to correctly allow array types to be stored as the\nprofiled classes using the \"extra descriptors\". However,\nthe interface for filling in inline caches remains unchanged\nfor now, so we require a `TypeId` in one of the processed\ndex files. The data collection by JIT has not been updated.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nTest: boots.\nTest: atest BootImageProfileTest\nBug: 148067697\nChange-Id: Idd5f709bdc0ab4a3c7480d69d1dfac72d6e818fc\n"
    },
    {
      "commit": "ec06809b9fb7d4a0d2c3e46066bd37034130e53b",
      "tree": "c3a69b142e38d249a01ed425cde23caa78c1d36c",
      "parents": [
        "1651c6050d913fb38ebd293df9da6d189eb3851d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 17:28:32 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 07:38:39 2021 +0000"
      },
      "message": "Reland \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 39d4df62d4e2606073d05cc363370db825ad7b9f.\n\nReason for revert: fix JIT-zygote issue.\n\nTest: JIT zygote boots.\n\nChange-Id: I895ad8e59e472fb662ca9bc5394c2fd9c6babc74\n"
    },
    {
      "commit": "dac82393785d1d2fddae6bf6d8364b55b001925a",
      "tree": "2870783966316c965d40c3a6cd4b2cadce632c79",
      "parents": [
        "b1db5a110d312c5a51a52f7f6bc870f9205b6ff8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 10 15:44:24 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 08:49:06 2021 +0000"
      },
      "message": "Fix array location aliasing checks in LSE.\n\nTest: New tests in load_store_elimination_test.\nTest: New test in 539-checker-lse.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 187487955\nChange-Id: Iff66d5406cf1b36c3bebbce1d48117f83bb50553\n"
    },
    {
      "commit": "39d4df62d4e2606073d05cc363370db825ad7b9f",
      "tree": "8e4cf0ac432406081d11e9102981446498b3265b",
      "parents": [
        "a28c827fdb58ec489931d6e70e27818619bc1b75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 12:22:47 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 14:41:25 2021 +0000"
      },
      "message": "Revert \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 5024ddfd125b5c3b59d7f359ae33cf7f0255b048.\n\nBug: 187408838\n\nReason for revert: b/187408838\n\nChange-Id: If74f5ddbacc73296f66c55762e2a8d1ec2cd1f19\n"
    },
    {
      "commit": "5024ddfd125b5c3b59d7f359ae33cf7f0255b048",
      "tree": "b625ed5aa1c4976e4cd2de5732543d5d1eb34a0f",
      "parents": [
        "5859b689d4fdd36711187715c04e2e095f7975c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 14:42:09 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 06 10:37:17 2021 +0000"
      },
      "message": "Devirtualize to HInvokeStaticOrDirect.\n\nWhen we statically know the target method, devirtualize an\nHInvokeInterface or an HInvokeVirtual to a HInvokeStaticOrDirect.\n\nTest: test.py\nBug: 182538502\nChange-Id: Ie3a58603cde300fca9ca4972d4dfbbd20918f5ba\n"
    },
    {
      "commit": "807de1ed238c706ed781301cb6a764c7a2c348f4",
      "tree": "f6847c0329421be44e708f77bf207e4247445de8",
      "parents": [
        "6de68dd322de49a49bc5036cbe7e3426c02ffeff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 30 15:14:18 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 04 07:47:32 2021 +0000"
      },
      "message": "Fix partial LSE using removed load as Phi input.\n\nTest: New test in load_store_elimination_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 183897743\nChange-Id: I4ddf1657b5b9240c229016a3671a74b0582ac30d\n"
    },
    {
      "commit": "889da94a5931a68ca527dc7320ff0b5de69917fc",
      "tree": "1c5d50e5a63f35073ba7b6b84f6f6b5f965d7c62",
      "parents": [
        "d78f319c52888d1c45d17ce1521e4f78db2d7119"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 13:03:14 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 30 16:58:11 2021 +0000"
      },
      "message": "Fix gtests with mini-debug-info enabled by default.\n\nEnsure we can generate mini-debug-info if it is enabled by default.\nThe tests don\u0027t explicitly generate the info on background thread.\n\nTest: test.py -g\nChange-Id: If3cf9a067ce683f728d553394e1407beeadae670\n"
    },
    {
      "commit": "ba320165975387e780be2bd16fac4a522411b59c",
      "tree": "914a3c6b730e662131ad082ba3a9e1f51955efa8",
      "parents": [
        "7a76e234402df797c2cd97d0defbb507ed9a7329"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 22 15:15:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 30 03:32:43 2021 +0000"
      },
      "message": "Improve simplifier slightly\n\nIt\u0027s possible thanks to the dead-code-elimination and other passes to\nend up with a PredicatedInstanceFieldGet that either has a null or a\n\u0027never-null\u0027 target value. We can simplify this down to either the\ndefault value or a normal ifield-get respectively.\n\nTest: ./test.py --host\nChange-Id: I92d9ff159a7b30294d29dbf4349d201dc654f0e1\n"
    },
    {
      "commit": "e1e0e0f187587dfb019a1689c005b31813b4cfe7",
      "tree": "bce0bf9489c6cd7e40d4f96fdbf8fd6af8e60f2f",
      "parents": [
        "98e9a1236f15d1f8579e2a2311aa4a24b5316732"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 08:57:13 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 29 14:48:11 2021 +0000"
      },
      "message": "Reland \"Refactor code in inliner.\"\n\nThis reverts commit aa1b711a40bfe92785f52bff9700dc516eba1d09.\n\nReason for revert: Fix wrong method being recorded as CHA dependency.\n\nChange-Id: Ic8ed84979b4cd67e49b96166792729b3b586cc25\n"
    },
    {
      "commit": "aa1b711a40bfe92785f52bff9700dc516eba1d09",
      "tree": "eec7b87d1c62d94932537825a509bf3b603755d8",
      "parents": [
        "fd7044dd3a6b21e817b2d5859a1446213b69a9c4"
      ],
      "author": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Wed Apr 28 17:32:53 2021 +0000"
      },
      "committer": {
        "name": "Winson Chung",
        "email": "winsonc@google.com",
        "time": "Thu Apr 29 00:01:30 2021 +0000"
      },
      "message": "Revert \"Refactor code in inliner.\"\n\nThis reverts commit 921525030301fd4b8f6bb83aa6b20160d802e689.\n\nReason for revert: Potential cause of b/186637642, b/186637642\n\nChange-Id: Ia6f5cb742a068f148e290071cb0675648b22ec86\n"
    },
    {
      "commit": "921525030301fd4b8f6bb83aa6b20160d802e689",
      "tree": "60c9811c45ec00c31470cd44965c5fdc63006fd1",
      "parents": [
        "d4edf4fc8a25a1fb21a9b8e4e73303458652dbce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 23 09:16:13 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 13:16:13 2021 +0000"
      },
      "message": "Refactor code in inliner.\n\n- Code refactoring to dissociate CHA attempts and devirtualization\nattemps\n- Only devirtualize (currently invoke-interface -\u003e invoke-virtual) when\nthe target can be statically resolved. The benefits for CHA and inline\ncaches are less clear.\n\nTest: test.py\nChange-Id: I2d41cef8143ab1ce66b2c2e149674eaf228d15a3\n"
    },
    {
      "commit": "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d",
      "tree": "63e392ba73e02ddb7fb8fc73ca87bf47d6452332",
      "parents": [
        "1dab575cd635706f03d510763cb4ea1b115a2cee"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 16:22:48 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 28 10:44:11 2021 +0000"
      },
      "message": "Remove RETURN_VOID_NO_BARRIER byte-code.\n\nUnused and obsolete quickened byte-code.\n\nBug: 170086509\nTest: test.py -b --host --64\nChange-Id: I1e917c189da7bf64418412522676dc6b081d5c0b\n"
    },
    {
      "commit": "bb550e415da77e7e21c8f800657984c145bb42e1",
      "tree": "0596ce5d5b1b2f58cef50f8ef133febdd053399c",
      "parents": [
        "adfa1ad73a3a557bdec67d59894139b2727aaa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 21 17:04:13 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 26 09:10:12 2021 -0700"
      },
      "message": "Fix issue with Partial LSE and casts/instanceof\n\nIf PartialLSE encounters an instanceof or check-cast before the\nescapes it could not correctly handle it. Due to how java language\ncode is typically developed and compiled this is generally not a\nproblem but could lead to incorrect codegen on release builds or\nDCHECK failures on debug builds. This fixes the issues by (1) causing\npartial LSE to consider check-cast and instance-ofs to be escaping.\nThis also updates the instruction simplifier to be much more\naggressive in removing instance-of and check-casts.\n\nTest: ./test.py --host\nBug: 186041085\nChange-Id: Ia513c4210a87a0dfa92f10adc530e17ee631d006\n"
    },
    {
      "commit": "ffafe8babb6b278c9e4748f64670f99f223411a9",
      "tree": "d1509e5ebab6872798980f291ec6d40b19c0ff3f",
      "parents": [
        "f2e1bc757e354530e41b8d0e0c3f04c12d1f8ab7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 10:29:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 13:07:48 2021 +0000"
      },
      "message": "Clean up Handle\u003c\u003e comparison with null.\n\nThese operators do not need the mutator lock.\n\nTest: buildbot-build.sh\nChange-Id: I48f51853f1b3c2e56463140f23777ad26d8122f2\n"
    },
    {
      "commit": "b8958028680cb2b49df9826222268e548431b921",
      "tree": "9f66e84a5e99f64154cbba6f321a5daebf8da800",
      "parents": [
        "8d32baf3b02a00921ef9ecc7cfd7775e69f9e4e7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 15:12:31 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 12:23:09 2021 +0000"
      },
      "message": "Move intrinsic recognition logic in inliner.\n\nThe previous place `TryInlineAndReplace` did not cover all cases we try\ninlining. Because we always want to intrinsify, move the code to\n`TryBuildAndInline`, which is always called.\n\nTest: test.py\nTest: 638-checker-inline-cache-intrinsic\nChange-Id: Id74b664f6139c00224473af6c72cb6fd858aec4c\n"
    },
    {
      "commit": "674e8be2e29ebe597c420abd4ba78ce63488535a",
      "tree": "a3564c5eec03bb968f1612d93da91970f23c5f25",
      "parents": [
        "33022905107f22aeb26b9bd04e3cc896a7772c3b"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Apr 12 12:30:28 2021 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 13 09:47:40 2021 +0000"
      },
      "message": "Fix inliner instruction/register limits\n\nBecause instruction/register usage was compared with \u003e\u003d, the limits\nwere actually one lower than the constants. This prevented trivial\ngetters/setters from being inlined because they were 3 SSA\ninstructions.\n\nTest: build + boot + presubmit\nBug: 185143864\nChange-Id: Ie27c9163efe79bb7392c881c0165ab1164323a2c\n"
    },
    {
      "commit": "8731e70a0f197594ecee91953169ee3f902c48f5",
      "tree": "2c0a8e44a232d7d8225de22fd247cf00be31986a",
      "parents": [
        "a2f48a424c3d62efb5a14ccaea740e3f6c0b0032"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 06 12:11:59 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 08:40:28 2021 +0000"
      },
      "message": "Add a test and CHECKs around the combination of CHA and default methods.\n\nTest: 823-cha-inlining\nBug: 182538502\nChange-Id: Ie3e0014804216802af0addf13751a8f89adbfdfa\n"
    },
    {
      "commit": "de7c9e13a45d2f9163991d89a615ead98f2d9f29",
      "tree": "3318a5549571f8485b10d0e272cb75d74ab2a368",
      "parents": [
        "92a785785423b99cf903ce0e79d06fbf62ecf51a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 01 17:19:05 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 08 08:26:40 2021 +0000"
      },
      "message": "Fix issue with propagating partial values\n\nWe would incorrectly not propagate or calculate partial read values\nsometimes in the presence of loops. This fixes that issue by correctly\ninterpreting merged-unknowns as being phis when before escapes and\npropagating uses of removed reads when needed.\n\nTest: ./test.py --host\nTest: ./art/tools/compile-jar.py --dex2oat `which dex2oatd64`  --profile-line \u0027HSLcom/android/textclassifier/common/statsd/GenerateLinksLogger;-\u003elogGenerateLinks(Ljava/lang/CharSequence;Landroid/view/textclassifier/TextLinks;Ljava/lang/String;JLcom/google/common/base/Optional;Lcom/google/common/base/Optional;)V\u0027 --arch arm64 ~/GoogleExtServices.apk -j1  --runtime-arg -verbose:compiler  --dump-stats\nBug: 183554067\nChange-Id: I7f6e99934237174922ef2da2b77092e74cfb6a77\n"
    },
    {
      "commit": "e4f7fef5b3df18e7aab15307f39ae77998e4913d",
      "tree": "710717b876792242b08e88b1a4c8ac53b99f35a4",
      "parents": [
        "b2a1416f6d7031d8f255398407a3e8a2bb6d6447"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 30 17:17:50 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 31 20:57:58 2021 +0000"
      },
      "message": "Handle predicated-gets with default values\n\nDue to an oversight the default-value of a PredicatedGet did not\nsupport being a Default value. This fixes that oversight.\n\nTest: ./art/tools/compile-jar.py --profile-line \u0027HSLe/k/a/g/i;-\u003ei(Le/k/a/g/d;Ljava/io/OutputStream;)V\u0027 --arch arm64 ~/no.nrk.mobil.radio_10922_base_split.apk --compiler-filter\u003dspeed-profile --dump-stats -j1 --force-allow-oj-inlines\nTest: LoadStoreEliminationTest.PredicatedLoadDefaultValue\nBug: 183898383\nChange-Id: I11bccddb0b5a5c2e958690864ff2d4449a9f2fad\n"
    },
    {
      "commit": "7432805b24cb8b6d8c754807143a691dc51adaba",
      "tree": "7693475b3520e1673cdba6210e8dc64d2becf1c4",
      "parents": [
        "1a660c0bd57313bae9cd5632ab4252f417590a96"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 29 18:11:23 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 30 18:01:00 2021 +0000"
      },
      "message": "Fix simplifier issue with predicated ifield get\n\nIn cases where all targets of a HPredicatedInstanceFieldGet\ninstruction are known to not be null the simplifier would attempt to\nreplace the default value with a null instruction. This would cause a\nnull-pointer dereference. Correct the simplifier to handle this case\ncorrectly.\n\nMoved some LSE test helper functions to CommonCompilerTestHelper to\navoid duplicating code.\n\nFixed an incorrect (though until now unused) constructor for\nHPredicatatedInstanceFieldGet (the default value and target we\nswapped).\n\nTest: ./test.py --host\nTest: ./art/tools/compile_jars.py --profile-file bad-compile.txt ~/imgur.apk\nBug: 183942773\nChange-Id: I66f4ce37d768d5e457047a3f80bd4cb9aa4546a3\n"
    }
  ],
  "next": "c5cd58914325c7fcfd89b1a5bf4daa475c2d83ef"
}
