)]}'
{
  "log": [
    {
      "commit": "2ec38232c632a2c7f3069f02d5c4d7036f14575b",
      "tree": "2500a6189a53a6bccb1b475d7e8a45ce4acd01ec",
      "parents": [
        "81909865f1d82314b72d09d1ad1f4545efd809e7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 02 16:36:29 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 09 11:55:11 2021 +0000"
      },
      "message": "Clean up verifier interface.\n\nRemove verifier_callbacks and ArtMethod as argument. The verifier can\noperate without them.\n\nThis allows removing the bogus DexCache::SetResolvedType in ti_redefine.\n\nAlso turn runtime throw failures into VerifyError, for cleaner interface\nwith users of the verifier.\n\nTest: test.py\nBug: 28313047\nChange-Id: I9ba1300f198aaf482ed43061465daea789ea732b\n"
    },
    {
      "commit": "6a2e6893290eac83f59dac4ec5bc10abf985ae10",
      "tree": "ee7f59774da19363bb867df9c0e9dc4f35f01fa2",
      "parents": [
        "592bceac0c030794175ae41d9c7e2ca092739d2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 14:21:07 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 08 16:56:35 2021 +0000"
      },
      "message": "Add support for standalone ART gtests to MTS.\n\nThis change:\n- adds standalone ART gtests to test suite `mts-art`;\n- adds `MainlineTestModuleController` support to standalone ART\n  gtests. This in order to have these tests run in a Mainline context\n  only when the ART Module (either `com.google.android.art` or\n  `com.android.art`) is installed on the test device.\n\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art\nTest: m mts \u0026\u0026 mts-tradefed run commandAndExit mts-art-shard-00\nBug: 167385698\nChange-Id: I97d9c00b7c10debff8c63e4ae75f90da02be271c\n"
    },
    {
      "commit": "7209da0a46dd96ae5b9d73124ef09b4b0fe9ac25",
      "tree": "7a3227751b4eb8b8eef10eecf58c63d046bbbe62",
      "parents": [
        "6f244fa1658e216512cf6ef15a6301defaf0f5b0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 28 17:50:38 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 15:31:36 2021 +0000"
      },
      "message": "Support field VarHandle objects in boot image.\n\nTest: Build with WIP changes to implement AtomicInteger with\n      VarHandle. Build succeeds.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 191765508\nChange-Id: I084ab7b3cd082570a090f3470fdfb792b80f4505\n"
    },
    {
      "commit": "4dc6589f392d46800a3b64625245bdfe4bbbfc2f",
      "tree": "b159262fd300a650ab89277667641ebe7e13d357",
      "parents": [
        "e0386f10d4591afa9823658099e4f2ac7a693255"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 05 17:43:35 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 07 07:13:01 2021 +0000"
      },
      "message": "Don\u0027t wrap VerifyError into NoClassDefFoundError.\n\nFollow RI behavior by returning the VerifyError. NoClassDefFoundError\nonly wraps initializer errors.\n\nAlso rename the field in ClassExt from verifyError to\nerroneousStateError for better clarity.\n\nAnd remove now unused feature of storing a class in the verifyError\nfield.\n\nTest: test.py\nTest: 824-verification-rethrow\nBug: 28313047\nChange-Id: I19383f7b74f22a62ab1e0b8a13bea75a14c7b33f\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": "ea936c02701dc7ac773f5c2272dafde5e1967ea0",
      "tree": "2327327eff2fa2844fb71af8d9ee8a0f48dc7a74",
      "parents": [
        "8d5d58554519ffc673760ba932a77e113f68c5fe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 25 17:10:49 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 05 07:33:20 2021 +0000"
      },
      "message": "dex2oat: Faster retrieval of profile data.\n\nAvoid the slow `ProfileCompilationInfo::GetMethodHotness()`.\nCache profile index to avoid repeating the `DexFileData`\nsearch and use new specialized functions that retrieve only\nthe required information instead of full `MethodHotness`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Iaf8486a5e5b12f114c8abb9cfdedf6fc4ed62e20\n"
    },
    {
      "commit": "c94ab92f6e61b9ea9d90bdb3d72c4d4e2aab9db5",
      "tree": "b3159ecd96135c7a58999ae1bbcf4c625ee774fb",
      "parents": [
        "bf097b7f6354e7e1e8c0a7b97fb728744136e271"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 01 18:50:43 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Jul 04 17:30:34 2021 +0000"
      },
      "message": "Add `liblog` as a dependency of `dex2oat` Soong modules.\n\nThis is in order to reduce differences in ART between AOSP and the\ninternal tree.\n\n(partly cherry picked from commit bdd9d71101edf4fd8220c18e28a7dccf8a72afda)\n\nTest: mmma art\nChange-Id: Ie00f630d1bbc6c196616b1f781b1eda4ae64b39f\nMerged-In: Ifeacba4cccf048e437b1906cf1592b8c2608cce4\n"
    },
    {
      "commit": "971068dcaf5955634679dbfaf7b562ed52aff772",
      "tree": "3e76f60e7136f53ca0d19a23914721515e8b2725",
      "parents": [
        "3d12876bd9782831ad5c907f1f9dc94d10867f3d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 30 21:17:53 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 02 10:19:42 2021 +0000"
      },
      "message": "runtime: add -Xdeny-art-apex-data-files\n\nThis option prevents the runtime from loading AOT artifacts installed\nin /data/misc/apexdata/com.android.art.\n\nBug: 192049377\nTest: manually adding option and running odsign_e2e_tests\nTest: adding option and looking at proc/maps for system_server and zygote\n\nChange-Id: I56c7ce55b64de72faf39a06238089fe4b6b84b88\n"
    },
    {
      "commit": "f8b5288ab53fa3dbc95ddc22264c53165fdefbdd",
      "tree": "2fdee1be7012bc73d6776d508619f8c0ef4feeaa",
      "parents": [
        "d7b416118ab6820fb1fbe93ca194c4a748b9fa59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 25 17:00:30 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 30 12:14:25 2021 +0000"
      },
      "message": "Remove experimental flag in verifier.\n\nWe don\u0027t use it anymore. If we add new opcodes in the future, we can\ntest by disabling the verifier (something which was hard to do at the\ntime).\n\nTest: test.py\nBug: 28313047\nChange-Id: Idce9a520995d12fdfc3bd314bc06b542492a0ab8\n"
    },
    {
      "commit": "55ffe7fa9ead8b501a756bb53f2571e3e7602f5e",
      "tree": "c4f63e30679b3e11d65268e52bf7548416f26792",
      "parents": [
        "8bf1da992a15a79ae76bcf53e9a2909912fbe96a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 14 15:18:54 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 28 11:40:15 2021 +0000"
      },
      "message": "Rename some ART gtest related Soong modules.\n\nART gtests currently link with the debug (\"d\") versions of ART\nlibraries. The gtests themselves and their libraries are compiled as\ndebug artifacts. For the sake of consistency, perform the following\nrenaming of ART gtest related Soong modules:\n\n* `libart-compiler-gtest` -\u003e `libartd-compiler-gtest`\n* `libart-dex2oat-gtest`  -\u003e `libartd-dex2oat-gtest`\n* `libart-gtest-defaults` -\u003e `libartd-gtest-defaults`\n* `libart-gtest`          -\u003e `libartd-gtest`\n* `libart-runtime-gtest`  -\u003e `libartd-runtime-gtest`\n* `libartbase-art-gtest`  -\u003e `libartbased-art-gtest`\n\nAs we plan to introduce non-debug (\"non-d\"), standalone versions of\nART gtests in the context of uncoupling ART (target) gtests from the\nART APEX (b/162834439), this renaming will help us, as we\u0027ll be able\nto use the old names of a \"d\" module for the corresponding \"non-d\"\nversion.\n\nTest: mmma art\nTest: Run ART gtests on host and target\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dfalse art/build/apex/runtests.sh\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dtrue  art/build/apex/runtests.sh\nBug: b/162834439\nChange-Id: I4ca27a7f445a760398f41a9e60a7008d77294505\n"
    },
    {
      "commit": "a5082496431781271a0b363a567e6de793c3ec0c",
      "tree": "86dd85f0abb41a5bf823742fe18e76b775a3035d",
      "parents": [
        "ec11cf1e4a7400af1befae3a5194206f16a58047"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 21 11:14:27 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 23 08:23:49 2021 +0000"
      },
      "message": "dex2oat: Avoid unnecessary field/method resolution.\n\nThere is no reason to resolve fields and methods of a class\nwe have just resolved, so remove that code. Refactor type\nresolution and avoid resolving classes twice for boot image.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I01f182a5fdfd000819fa9d9b8926d5cb320c1e0c\n"
    },
    {
      "commit": "59edf4b8f09d02c10fa87831573151c6b99c3149",
      "tree": "b735be53783cb6945f281516c251212cfd7e26aa",
      "parents": [
        "156a8618372cda12eaff321c545d9126df225c0d"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 17 12:48:18 2021 -0700"
      },
      "committer": {
        "name": "Alan Stokes",
        "email": "alanstokes@google.com",
        "time": "Tue Jun 22 08:13:48 2021 +0000"
      },
      "message": "dex2oat: don\u0027t prune dex if passed as FD\n\ndex2oat prunes a dex file from its internal record if the file does not\nexist on the file path. This change avoids the pruning in case if the\ndex is passed as FD.\n\nBug: 186132447\nTest: odrefresh --use-compilation-os\u003d10 --force-compile\n      # complete successfully with other changes\nTest: TH\nChange-Id: I7dd2f0d1e100e465c2424eb36cb2d94da1e69001\n"
    },
    {
      "commit": "c893d1597b2e653659e0bc73cc2640590d01e8b0",
      "tree": "e2cb7ac8379875e7ac23d8d5683a96f57dbe4551",
      "parents": [
        "5da0507fd2d2b6342a9b87f4cce5ebbfa2c67dd3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 17 15:40:52 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 21 14:27:16 2021 +0000"
      },
      "message": "Only enable isolated compilation if requested\n\nIsolated compilation saves memory but takes much longer,\nso enable it only if requested.\n\nTest: adb install\nBug: 190277710\nChange-Id: Ia1bffb37ff25f80f7b6173fd42e6bd6ffff68e45\n"
    },
    {
      "commit": "40261171630159bfd46043c996be8521c453fee1",
      "tree": "3cae9dfcfd5f745b61da630d031eff4f67fe9185",
      "parents": [
        "af5d304844cd8e39fcc31ca4e07e3e887d2f0bd9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 14 10:59:51 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 14 17:55:51 2021 +0000"
      },
      "message": "Rewrite static/instance field search by index.\n\nThe old search was looking for a field with the given field\nindex in the class as well as superclasses and, for static\nfields, all interfaces. This was useless as as a field index\ncan match only in the declaring class. So, if the field was\nnot found in the declaring class we would have unnecessarily\nsearched wrong classes before resorting to string search.\n\nReuse the optimized `Class::FindField` by turning it into\na template implementation that can skip unnecessary static\nor instance field searches. Implementing the static and\ninstance field search this way allows ClassLinker to call\nonly one overload of `Class::Find{Static,Instance}Field`\nand helps avoid string searches in more cases.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nBug: 181943478\nChange-Id: I23309c87c3702d98812adfec0279c483c9037f2c\n"
    },
    {
      "commit": "4ab592315e766876d2ae96f28f05bab9ae46c160",
      "tree": "70434b91f12a6fe7d52581446ce879732ea07900",
      "parents": [
        "b10668cb6a34398eb720f9a6305ff9a51b3ebfd4"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu Jun 10 12:24:02 2021 -0700"
      },
      "committer": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 15:08:21 2021 +0000"
      },
      "message": "Add --dirty-image-objects-fd and --updatable-bcp-packages-fd\n\nAlso, let odrefresh pass the files as FD to dex2oat.\n\nReadCommentedInputFromZip is removed since it\u0027s not used at all.\n\nBug: 187327262\nTest: odrefresh --force-compile\nChange-Id: Ie9247362eebaf46ef473f84effeb6e66830d077e\n"
    },
    {
      "commit": "b10668cb6a34398eb720f9a6305ff9a51b3ebfd4",
      "tree": "ab155a0ae3c2966c20a3de68dbf53e6fe2ced86a",
      "parents": [
        "893e2edbd5aa14ab2ccb1800ccd3154f21a2d8a7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 10 09:52:53 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 14 12:51:59 2021 +0000"
      },
      "message": "Clean up Class::GetDirectInterface().\n\nFetch array interfaces from the `IfTable`. This removes the\nonly use of the `Thread* self` argument, so we can remove\nthat argument. We also make the function non-static to avoid\nthe explicit `klass` argument. Similarly clean up arguments\nof `Class::FindClass()` and `Class::FindStaticClass()`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Id639b675b4eb331a777cf318eb61bd19e05de4f0\n"
    },
    {
      "commit": "a09d8b7d4cb6f35f12f2bd2ed4e04a0eb129eeea",
      "tree": "79587d30dda7acb00545333067596dfcfa11bdb6",
      "parents": [
        "e300c4e4eabe3388b730efe35561e54f1c306710"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 24 14:21:55 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 10 15:22:02 2021 +0000"
      },
      "message": "Add runtime option -Xbootclasspathfds: for pre-opened fds\n\nThe new option allows the client to pass a pre-opened fds to the\nruntime. The number of elements must match the number of BCP jars\nspecified in -Xbootclasspath. An fd of negative number is a valid\noption, in such case the runtime will still open the jar in the\ncorresponding path in -Xbootclasspath.\n\nExample: -Xbootclasspathfds:10:11:-1:12\n\nThe option is currently only used in \"unstarted runtime\", but will also\nbe used elsewhere in the follow-up changes.\n\nBug: 187327262\nTest: patch odrefresh to use the option, no longer seeing such openat(2)\nTest: m test-art-host-gtest\n\nChange-Id: I1bebbd80136419c03ac1309a8cb8229a0fd69838\n"
    },
    {
      "commit": "4f6bb446f8fbaa192f4e5b69734414c66d5e1bae",
      "tree": "c07c8cf278137c14fda476ed682968ee3c01c65f",
      "parents": [
        "beb9f2012587035a5c30d0eca8af458b2ad659b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 02 18:05:51 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 09 11:03:12 2021 +0000"
      },
      "message": "Remove palette hooks.\n\nMake the method be part of the official palette API.\n\nBug: 186016399\nBug: 185778652\nChange-Id: I3dc9e879c647fd63f5826091813613fd97e25c0d\n"
    },
    {
      "commit": "028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68",
      "tree": "27631b722b16cc7a71de86e847fe023ccf01a384",
      "parents": [
        "e8efdaa09b7ff36d5a986f0320f29ac4a7563896"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 26 15:37:00 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 27 19:42:00 2021 +0000"
      },
      "message": "Use verify when speed-profile gets an empty profile\n\nChange the compiler filter to verify if we need to compile\nspeed-profile but we don\u0027t get a profile, or the profile is empty.\nThis will improve the clarity and the precision of the telemetry\ndata which usually expects speed-profile to outperform verify.\n\nTest: gtest\nBug: 188655918\nChange-Id: I215552e0001d56df0e0d676721f0a741ef2573be\n"
    },
    {
      "commit": "bdf1737bd17132525bcfdc778663123b61e97fa3",
      "tree": "ec097408de25394ac6444ae0589fcfa41d400257",
      "parents": [
        "f2d1a510bf36f98e0607f0527299789a64d755c9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 06 00:19:19 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 27 13:28:37 2021 +0000"
      },
      "message": "Introduce `art::FastExit` to replace all uses of `quick_exit` in ART.\n\nNo longer use `quick_exit(3)` in ART, as it does not play well with\nClang\u0027s code coverage instrumentation (see b/187935521 and\nb/186576313). Replace all its uses with a new routine,\n`art::FastExit`, calling either `exit(3)` when ART is built with\nClang\u0027s code coverage instrumentation (in order to dump coverage\nprofiles when the program terminates) or `_exit(2)` otherwise (to exit\nquickly).\n\nFunction `art::FastExit` is implemented as part of the\n`art_libartbase_headers` header library, so that it can be used easily\nin `dalvikvm`.\n\nTest: mmma art\nTest: ART tests\nBug: 186576313\nBug: 187935521\nChange-Id: I7b4f86f6f0e7b12814684ecea73a2ed0ef994395\n"
    },
    {
      "commit": "61ffd049d8d6946ba52884a8f679dde0e3a6654d",
      "tree": "6ce3787caae6d00bfb30165786fe40d42a86e045",
      "parents": [
        "6d8d68efbe2101e2d5fdf078556cbc1f286c37c7"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 20 15:14:25 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 24 20:05:49 2021 +0000"
      },
      "message": "Make the runtime option -Ximage a ParseStringList\n\nPreviously, the string spliting is done in multiple code locations,\nincluding ImageSpace::BootImageLayout::LoadOrValidate and\nGetPrimaryImageLocation (which may be called multiple times).\n\nThis change converts the -Ximage option from a string into a\nParseStringList\u003c\u0027:\u0027\u003e.\n\nIt may be worth pointing out that this doesn\u0027t change the current code\nexpectation that each image can have a profile (e.g.\n\"/path/to/foo.art!/some/profile.prof\").\n\nThere is a later plan to introduce new options of boot image fds with\nParseIntList\u003c\u0027:\u0027\u003e. This change would make them more consistent.\n\nBug: 187327262\nTest: boot looks normal\nTest: dexopt looks normal\nTest: TH\n\nChange-Id: I82657cb725cda2d3b782cbe7a6e6d9a871e80ee7\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": "826e6667c4d543c5c75a4a87d7cceb43f72078d0",
      "tree": "8ae4e9c93339c61fc1c30525a448b5c8ee61f77e",
      "parents": [
        "b3bc892bfae8267c3b82bbbd4263cb368f7a3be3"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 15:40:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Add --dex-fd to dex2oat\n\nBug: 187327262\nTest: odrefresh --force-compile\n      (also, no longer seeing openat(2) BCP extension jars via strace)\nTest: atest art_odrefresh_tests\n\nChange-Id: Icac9ed522eae307e8e4391ba9cc59927c57c0d68\n"
    },
    {
      "commit": "b3bc892bfae8267c3b82bbbd4263cb368f7a3be3",
      "tree": "7adc4bea5ed8e84def75d3078fdc04e1adc2053c",
      "parents": [
        "2f1ad346ad9524fa632368ae56cd2024638ace42"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Fri May 14 15:02:21 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Refactor to consolidate oat writer setup\n\nThe only difference betweeen the two loop in the change is which oat\nwriter to use (always 0th, or the i-th).\n\nWith this change, we can avoid code duplication inside the loop in the\nfollow-up change.\n\nBug: 187327262\nTest: TH\n\nChange-Id: I0ab6e3beda423ad5a6b78891d60417f10c5a7ae8\n"
    },
    {
      "commit": "2f1ad346ad9524fa632368ae56cd2024638ace42",
      "tree": "9255199d223d0c0c59036e147d3b5fe8652e0b0e",
      "parents": [
        "07ff2833c7425cef87abad3e21b3f884597dc58c"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon May 17 14:29:09 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 18 22:41:46 2021 +0000"
      },
      "message": "Parse --cpu-set as ParseIntList\n\nAn argument of --cpu-set\u003d1,2,3 is currently parsed into a\nvector\u003cint32_t\u003e. This causes two problems:\n\n1. With the type CmdlineType\u003cstd::vector\u003cint32_t\u003e\u003e that internally does\n   the comma spliting, it prevents us from adding another type of int\n   vector (e.g. multiple --dex-fd $FD). This is inconsistent to existing\n   string and vector\u003cstring\u003e parsing.\n\n2. A delimiter-separated argument like \"-Xbootclasspath:\" is parsed with\n   ParseStringList, which keeps the types of \"string vector\" seperated\n   (depending on whether it comes from a single argument, like\n   \"-Xbootclasspath:\", or multiple arguments, like --dex-file).\n\nThis change replaces the parser of vector\u003cint32_t\u003e with the new\nParseIntList, which solves the two problems above.\n\nBug: 187327262\nTest: atest art_cmdline_tests\nTest: TH\n\nChange-Id: I2f225ec2c9f47f1bf1df76507ccb67b23bb51861\n"
    },
    {
      "commit": "2ef367acf3f95ee4c0459b73c3b18613cfa7d74d",
      "tree": "193c094b51ab441159f04e40324d4ac51e1d32f9",
      "parents": [
        "833d76f4bdca60ed06a76b3d248ea643efafb844"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 14:14:03 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 16:46:48 2021 +0000"
      },
      "message": "Ensure verifier deps in the vdex file are 4-byte aligned.\n\nIt simplifies the encoding / decoding logic.\n\nTest: 663-odd-dex-size\nBug: 186405713\nChange-Id: I26bcf2b6cfa16548a520a501e6e1b38c238eb1df\n"
    },
    {
      "commit": "053e1383c721b0a1c4f87b2d391ab392c64caf84",
      "tree": "d6698eaf3f64440b47c06e5d6f670be06cfcc80e",
      "parents": [
        "bcec38f7b7dc92d89ce9d49b8c1ba9afe87dab6b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 05 16:07:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 10 08:12:24 2021 +0000"
      },
      "message": "Link libvixl statically.\n\nInstead of including shared library libvixl.so in the ART\nModule, link libvixl statically to all binaries that use it,\nnamely libart-compiler.so and libart-disassembler.so which\nshall increase in size with the additional libvixl code.\n\nThe ART Module size with default libvixl symbol visibility:\n  - before: 88460730B\n  - after: 86973943B (-1.42MiB)\nWith hidden libvixl symbol visibility:\n  - before: 88337851B\n  - after: 84962808B (-3.22MiB)\n(This is with master-art where we do not have a boot\nprofile and therefore compile more code in boot image.)\nThe change from default to hidden visibility is done in\n    https://android-review.googlesource.com/1697237 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 186902856\nChange-Id: I040b0115b94b8690ee7be53e3ded8610d9f13e99\n"
    },
    {
      "commit": "a28c827fdb58ec489931d6e70e27818619bc1b75",
      "tree": "038448d3d8d2922c05296b60b1280c3ed3f596b6",
      "parents": [
        "7eedd447cb5a4904acf80123ef813a7b8dead9a2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 30 17:09:10 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 07 09:13:03 2021 +0000"
      },
      "message": "Use `quick_exit` instead of `_exit` (except for error handling).\n\nReplace every occurrence of `_exit` (for cases other than pure error\nhandling) with `quick_exit`, in order to allow functions registered\nwith `at_quick_exit` to be called before exiting.\n\nIn particular, this change will allow LLVM\u0027s code coverage profile\ndumping routine to be called before exiting ART processes.\n\nTest: mmma art\nTest: ART tests\nBug: 186576313\nChange-Id: Ia9b0dbb471e2a26600c8bd23f7567931d050fc9d\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": "d3c45c298b02163e402e1eec97e7ba21a2ba333e",
      "tree": "3d45d277e8b85a08225c149c778b2b403853b969",
      "parents": [
        "ba320165975387e780be2bd16fac4a522411b59c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 27 13:21:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 30 08:42:29 2021 +0000"
      },
      "message": "Add apex versions in oat file headers.\n\nUse the versions to know whether we need to recompile.\n\nTest: oat_file_assistant_test\nBug: 182465342\nChange-Id: Ic656ed4465d35d325c1823d531f7c4c5bc74598d\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": "a220980389b87aa448b5f2d110eba7604c383c12",
      "tree": "66fa588b2b52279f662b3fd9edb0ad6953abb838",
      "parents": [
        "a61859210844849e97a479bcfa74d1a62f51f819"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 13:28:29 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 26 07:27:21 2021 +0000"
      },
      "message": "dex2oat: Expect boot image profiles for boot image.\n\nThe profile loading is currently permissive, so this\ndoes not really matter but we intend to make it more\nstrict soon.\n\nAlso clean up ScratchFile to avoid dex2oat_image_test\nerror logs related to ScratchFile destruction.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148067697\nChange-Id: I34526ddb0389444d54b9754afbedeb671c7b05a8\n"
    },
    {
      "commit": "2cca1e029c8b152498d48b548a63dd2aa8697b6c",
      "tree": "bf49f82e8276e51620e97fb265408a79c4e533d6",
      "parents": [
        "79578115a2ab67af3bd61dad2a6a6497f2e0b6b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 21 09:21:16 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 21 13:17:31 2021 +0000"
      },
      "message": "Add number of methods to OatClass.\n\nAnd use it for checks when reading oat file data.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: I3a2433f94397107a2ce3c198d22e660871c505a8\n"
    },
    {
      "commit": "3d76ebebfb50ce6e465f99b96078790a2576ca38",
      "tree": "2b4b41b6444f681d9d4200426afc4b9603bc091d",
      "parents": [
        "6e741a743cda2a85830b8cf85943e68feeebe3c7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 19 15:07:50 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 20 08:00:45 2021 +0000"
      },
      "message": "Change OatClassType to enum class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: I0709a467c92f38e6886d3936b20c2c7869429956\n"
    },
    {
      "commit": "0b943287e7dec0cbe1734752f5a1f30f3c29973b",
      "tree": "9b423991fc85968f2cccf926a39f844ac54f7f59",
      "parents": [
        "5db2fd0e535b056ccb11e137f195b311627b48ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 09:16:00 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 09:57:45 2021 +0000"
      },
      "message": "Reland \"Move the type lookup table to vdex.\"\n\nThis reverts commit 640c448bad41c00599f8f8fb056eba679edc891e.\n\nReason for revert: CL is not the culprit\n\nChange-Id: Ia9a404980601998ade118b0e14008e2bc6317d76\n"
    },
    {
      "commit": "640c448bad41c00599f8f8fb056eba679edc891e",
      "tree": "05c9293b0e17908efe82a5f4048bf092a99996e2",
      "parents": [
        "f4d05ff134347d723e27919ccc89ce9d412b2d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 08:31:29 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 08:31:57 2021 +0000"
      },
      "message": "Revert \"Move the type lookup table to vdex.\"\n\nThis reverts commit c005ada78df5edebac74739b2c344e1a2a3efcba.\n\nBug: 112676029\n\nReason for revert: Fails on asan\n\nChange-Id: Id21b84f1f078d6b1c701559e0cbbd3704d269dfb\n"
    },
    {
      "commit": "f4d05ff134347d723e27919ccc89ce9d412b2d58",
      "tree": "aa368066676880ef1f4fbbec722ad8d88cad8771",
      "parents": [
        "c005ada78df5edebac74739b2c344e1a2a3efcba"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 14 09:39:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 16 08:21:03 2021 +0000"
      },
      "message": "Clean up profile tests.\n\nUse TestDexFileBuilder and remove FakeDex. Add a helper\nclass for shared code between ProfileCompilationInfoTest\nand ProfileAssistantTest.\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nBug: 148067697\nChange-Id: I0bf5d3fb7a456dcd717bce694d7f832a654fcccb\n"
    },
    {
      "commit": "c005ada78df5edebac74739b2c344e1a2a3efcba",
      "tree": "a3a682bcc841426ac57629f937d718a5f530ea81",
      "parents": [
        "c8fe6517faf91b45683cddff3c15e08e489e12e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 18:26:20 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 16:31:34 2021 +0000"
      },
      "message": "Move the type lookup table to vdex.\n\nThe table format has been stable for many releases now, so \"promote\" it\nto .vdex, which remains post-OTA.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: Ie1bbb24b4ab9c7864ae7e69e97db5ee5d1fc9ea1\n"
    },
    {
      "commit": "4531afd0d813fdfa2bb115522bc5918477c03dc2",
      "tree": "242c721965aff12f8bd4246d13b18ef71fcdbd97",
      "parents": [
        "d187d879b0cd627b8b50d80d40b0d6b1cb91598c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 30 17:13:30 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 12 15:53:01 2021 +0000"
      },
      "message": "Add a --force-allow-oj-inlines dex2oat flag\n\nWhen reproducing compilation failures on the host sometimes the\nautomatic core-oj noinline will prevent the issue from reproducing.\nAdd a new --force-allow-oj-inlines to disable this behavior.\n\nTest: ./art/tools/compile-jar.py --profile-file bad_compile.prof --arch arm64 ~/no.nrk.mobil.radio_10922_base_split.apk --compiler-filter\u003dspeed-profile --dump-stats -j1 --force-allow-oj-inlines\nChange-Id: I76204bfb061635819d55c2459cfea4e4cfebce79\n"
    },
    {
      "commit": "d187d879b0cd627b8b50d80d40b0d6b1cb91598c",
      "tree": "efce480c24d4a8cfe079116621b89975c3c91ac2",
      "parents": [
        "a57e103e99c23ad2a7c20454b8fbca5075906dc6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 13:52:56 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 15:04:25 2021 +0000"
      },
      "message": "Remove option CreateTypeLookupTable.\n\nWe have always created them for a while now.\n\nTest: test.py\nChange-Id: I6c9293d90c4b8449f7bd9b26ff8f4666c8ceca0a\n"
    },
    {
      "commit": "92a785785423b99cf903ce0e79d06fbf62ecf51a",
      "tree": "09553e0a28050395d2e1a9255af04d93949758f0",
      "parents": [
        "722992f7b63b5e2962aaba6119402c7b93deb2f4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 05 17:43:17 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 08 04:52:33 2021 +0000"
      },
      "message": "Validate vdex checksums during dex2oat compilation\n\nIf the checksums from the vdex files that comes from the .dm archive\ndoes not match the input dex files, the compilation will fail.\n\nTest: gtest\nBug: 184291791\nChange-Id: I10db75b4381946d7f2b695ff317d0b4e897a32b0\n"
    },
    {
      "commit": "ac57691c29ffa8a31d0b789492ee3f904c059f89",
      "tree": "928969620553619e0fede06c18967c182a4b32aa",
      "parents": [
        "9d393d52fe27199325c7c123533fbc513a8af454"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 11:16:22 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 14:12:53 2021 +0000"
      },
      "message": "dex2oat: Do not crash on InitializeClass() exceptions.\n\nPreviously `ClassLinker::EnsureInitialized()` could have\nreturned with a pending exception even when initializing\nfields and parents was not allowed and the CompilerDriver\ndid not expect it, leading to a crash. Change the behavior\nto consistently suppress exceptions when initializing\nfields and/or parents is not allowed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 184094466\nChange-Id: I6a8af8c1da792c946f8f52ed4513ab1f0ccf2c9f\n"
    },
    {
      "commit": "0685b981042acb57355e6742cf0ab18fbcfc4e25",
      "tree": "b9af226c72e2f173943c96c95a04349fe63134bb",
      "parents": [
        "579db19af4f718c1aac5ca95c180a70c5114c6bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 25 11:59:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 30 14:39:19 2021 +0000"
      },
      "message": "Abort transaction when Class.forName() fails.\n\nAnd update VmClassLoader.findLoadedClass implementation in\nUnstartedRuntime which has erroneously diverged since\n    https://android-review.googlesource.com/145075 .\nAlso prevent transactional interpreter from transfering\ncontrol to a catch handler for aborted transactions.\n\nAlso clean up Transaction::kAbortExceptionDescriptor naming\nand some unused parameters.\n\nTest: TransactionTest.CatchClassForNameAbortClass\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ibfc544283f5434efbaab238d11a6152ed2578050\n"
    },
    {
      "commit": "982ecedecd2326f9b28ee60a3feb56b299e1c2bc",
      "tree": "d319249a25c0f13bab0bb45efd8cf70a4a238985",
      "parents": [
        "09108b274c15b55d8577ae3590005e990694c5b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 29 08:49:38 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 29 12:46:54 2021 +0000"
      },
      "message": "Remove \u0027\u0026\u0027 class loader context.\n\nThis is now an unsupported context.\n\nTest: class_loader_context\nBug: 132357300\nChange-Id: I21bc6e3529944a57379845e90c7f49759db30d40\n"
    },
    {
      "commit": "a129d8aef0dfe39edf39b5537852bc2c60496bfa",
      "tree": "b5eded46436a3ff1b371a6a706cb7cf8a7e0878b",
      "parents": [
        "ec7b19485ba4af8b0fd0804389c470b556322d13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 18 22:23:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 25 18:08:51 2021 +0000"
      },
      "message": "Revamp vdex format for better extensibility.\n\n- Remove class loader context and boot classpath checksum sections.\n  Those are not needed now that VerifierDeps don\u0027t depend on them.\n- Remove remaining quickening encoding.\n- Introduce sections in a vdex file, which can be extended without\n  requiring a version change.\n\nTest: test.py\nBug: 160294863\n\nChange-Id: I4e3e25f34d242dc4de37f30ba9d78bcffbc1436d\n"
    },
    {
      "commit": "ec7b19485ba4af8b0fd0804389c470b556322d13",
      "tree": "7a67a529921b0bc39d7eed82fb6103dfbb390cc5",
      "parents": [
        "25e60fc34a1a746c377c80cf36284cd60d4204c8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 24 15:46:11 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 25 01:56:20 2021 +0000"
      },
      "message": "Fix UnstartedRunime leaking local reference.\n\nAnd assert that class initialization in CompilerDriver\ndoes not leave any local references alive.\n\nTest: m test-art-host-gtest\nChange-Id: Icd6a141da340d21d0103308a9e056009eb86f485\n"
    },
    {
      "commit": "5b0b2e1b5d60514b829f99aed5712dcae3647115",
      "tree": "45b58e4e97de2112fd0903a7de0d6a5a86ff3ba6",
      "parents": [
        "f0407cf39600b2e87ee6c18f066df2987bd4ba29"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 19 14:48:40 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 22 14:03:36 2021 +0000"
      },
      "message": "Explictly pass VerifierDeps when asking for class verification.\n\nThis will simplify creating and populating VerifierDeps at runtime,\nwhich is needed for doing and saving background verifcation of secondary\ndex files.\n\nTest: test.py\nBug: 158463186\nChange-Id: Ic17913ebd173700e866ba9309bf6ae131fcbc423\n"
    },
    {
      "commit": "d3d1a1a11626bd5198edb9242831c7b120652fbb",
      "tree": "ff8a97051ef08c463ae49d0d04faa24aa26713fa",
      "parents": [
        "9cf17115d93649311da4fd2ac0cd1f8e97e06490"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 14:11:11 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 20:37:45 2021 +0000"
      },
      "message": "Remove DexToDexCompiler\n\nSince quickening is deprecated, it is no longer used.\n\nThis CL only removes compile-time dead code.\n\nBug: 170086509\nTest: test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I46c02fb7a9304f8361cecfafb9507c906a93592f\n"
    },
    {
      "commit": "ef8c3376a812e943d4e7c4ef96f17e218d11bc7c",
      "tree": "18b28f41b7764a7f14bbc57b69b7d6b37c8c03b4",
      "parents": [
        "35363cf978d4d0b452cb8849041ff7dd6a6718bc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 15:01:42 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 18 16:43:46 2021 +0000"
      },
      "message": "Do not crash on out-of-date oat files.\n\nCheck that the OatHeader is valid before searching\nthe key-value store for \"debuggable\".\n\nTest: New test in dex2oat_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 179221298\nChange-Id: Ib10c919883b31b71810cc876fb38105b48a58bcb\n"
    },
    {
      "commit": "e3ca16f035ca100bad8225d5dc2cf9ccd1090a41",
      "tree": "a0a89a9beff32c7e2a357690f98c9be72238592e",
      "parents": [
        "375257870bae0f9fc66f99b69a2b1e519c170c1c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 12:41:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 15:56:46 2021 +0000"
      },
      "message": "Do not use absolute addresses in image test oat files.\n\nWe have not been using oat files with absolute addresses\nfor a long time, except that we forgot to remove code that\ncreates such files for image tests (gtests). Remove that\ncode now as well as related code including code that deals\nwith obsolete `oat_patches` sections.\n\nTest: m test-art-host-gtest\nChange-Id: If3e752f01c453e2a2628ac82c3a990c68047610e\n"
    },
    {
      "commit": "7c5e5c61e7c319ec88dc037f30b2ab357ec4db9a",
      "tree": "d4a662d3e2c9bbe4391ebcb31c592ad0d3b81800",
      "parents": [
        "0e9d9fce596125df602c1210c948259e9e7ca4ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 16 16:46:00 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 09:06:28 2021 +0000"
      },
      "message": "Fix DexToDexCompiler setup condition.\n\nWe were wasting unnecessary time for DexToDexCompiler setup\ndespite dex-to-dex compile being deprecated and disabled.\n\nTest: m\nBug: 170086509\nBug: 181943478\nChange-Id: I420b26fbc0b870c8c9a879c5f24b1583afecce76\n"
    },
    {
      "commit": "113d6ea4c5182bac718a0350e858b420d1bac9e2",
      "tree": "9189f60176478265c9bbc888d72e35fcb29c96da",
      "parents": [
        "bc1748f825aed2a59a9bfbb087ab6e29e875d2d1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 22:49:46 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 09 15:00:30 2021 +0000"
      },
      "message": "Move code size from OatQuickMethodHeader to CodeInfo.\n\nThis saves 0.5% of oat file size.\n(0.8% saving from this CL minus 0.3% due to go/aog/1614482)\n\nBug: 123510633\nTest: m dump-oat\nTest: m test-art-host-gtest\nTest: ./art/test.py -b -r --host\nChange-Id: I035b54a47b300a5808aa8c2992f87eae009fd245\n"
    },
    {
      "commit": "4f3959bd5c12a70bb128985a8469ae614a91f6fa",
      "tree": "38b6fd376cb1cff7c3cfb7971be72b5855fb07c1",
      "parents": [
        "21dafaf33ed6d7d6df1ee00371a3503802a060f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 11:51:07 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 02 09:44:09 2021 +0000"
      },
      "message": "Avoid duplicate hash calculation in ImageWriter.\n\nThe hash was calculated by both TableSlot constructor\nand HashSet\u003c\u003e\u0027s `insert` function.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 175869411\nChange-Id: I4eb73bcd0a0d1abc2247f8a3c948ca242201194c\n"
    },
    {
      "commit": "9150de6901996679c0ea6b34e74c8ddcc718d309",
      "tree": "496386b00b2a1b0b3bfbc36b09cf8083e3922f9b",
      "parents": [
        "8da26145fba859a5aba047f6280568565ffb8bfc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 26 03:22:24 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 02 07:18:14 2021 +0000"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to art\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  adbconnection/Android.bp\n  benchmark/Android.bp\n  build/Android.bp\n  build/Android.cpplint.mk\n  build/Android.gtest.mk\n  build/apex/Android.bp\n  build/boot/Android.bp\n  build/sdk/Android.bp\n  cmdline/Android.bp\n  compiler/Android.bp\n  dalvikvm/Android.bp\n  dex2oat/Android.bp\n  dexdump/Android.bp\n  dexlayout/Android.bp\n  dexlist/Android.bp\n  dexoptanalyzer/Android.bp\n  disassembler/Android.bp\n  dt_fd_forward/export/Android.bp\n  imgdiag/Android.bp\n  libartbase/Android.bp\n  libartpalette/Android.bp\n  libartservice/Android.bp\n  libartservice/tests/Android.bp\n  libarttools/Android.bp\n  libdexfile/Android.bp\n  libelffile/Android.bp\n  libnativebridge/Android.bp\n  libnativebridge/tests/Android.bp\n  libnativeloader/Android.bp\n  libnativeloader/test/Android.bp\n  libnativeloader/test/Android.mk\n  libprofile/Android.bp\n  oatdump/Android.bp\n  odrefresh/Android.bp\n  perfetto_hprof/Android.bp\n  profman/Android.bp\n  runtime/Android.bp\n  simulator/Android.bp\n  test/001-HelloWorld/Android.bp\n  test/001-Main/Android.bp\n  test/002-sleep/Android.bp\n  test/004-InterfaceTest/Android.bp\n  test/004-SignalTest/Android.bp\n  test/004-UnsafeTest/Android.bp\n  test/004-checker-UnsafeTest18/Android.bp\n  test/006-args/Android.bp\n  test/007-count10/Android.bp\n  test/009-instanceof/Android.bp\n  test/010-instance/Android.bp\n  test/011-array-copy/Android.bp\n  test/012-math/Android.bp\n  test/013-math2/Android.bp\n  test/014-math3/Android.bp\n  test/015-switch/Android.bp\n  test/016-intern/Android.bp\n  test/017-float/Android.bp\n  test/018-stack-overflow/Android.bp\n  test/019-wrong-array-type/Android.bp\n  test/020-string/Android.bp\n  test/021-string2/Android.bp\n  test/022-interface/Android.bp\n  test/025-access-controller/Android.bp\n  test/026-access/Android.bp\n  test/027-arithmetic/Android.bp\n  test/028-array-write/Android.bp\n  test/029-assert/Android.bp\n  test/030-bad-finalizer/Android.bp\n  test/033-class-init-deadlock/Android.bp\n  test/034-call-null/Android.bp\n  test/035-enum/Android.bp\n  test/036-finalizer/Android.bp\n  test/037-inherit/Android.bp\n  test/038-inner-null/Android.bp\n  test/039-join-main/Android.bp\n  test/040-miranda/Android.bp\n  test/041-narrowing/Android.bp\n  test/043-privates/Android.bp\n  test/044-proxy/Android.bp\n  test/045-reflect-array/Android.bp\n  test/046-reflect/Android.bp\n  test/047-returns/Android.bp\n  test/048-reflect-v8/Android.bp\n  test/049-show-object/Android.bp\n  test/050-sync-test/Android.bp\n  test/051-thread/Android.bp\n  test/052-verifier-fun/Android.bp\n  test/053-wait-some/Android.bp\n  test/054-uncaught/Android.bp\n  test/055-enum-performance/Android.bp\n  test/058-enum-order/Android.bp\n  test/059-finalizer-throw/Android.bp\n  test/061-out-of-memory/Android.bp\n  test/062-character-encodings/Android.bp\n  test/063-process-manager/Android.bp\n  test/067-preemptive-unpark/Android.bp\n  test/070-nio-buffer/Android.bp\n  test/072-precise-gc/Android.bp\n  test/072-reachability-fence/Android.bp\n  test/074-gc-thrash/Android.bp\n  test/076-boolean-put/Android.bp\n  test/078-polymorphic-virtual/Android.bp\n  test/079-phantom/Android.bp\n  test/080-oom-fragmentation/Android.bp\n  test/080-oom-throw-with-finalizer/Android.bp\n  test/080-oom-throw/Android.bp\n  test/081-hot-exceptions/Android.bp\n  test/082-inline-execute/Android.bp\n  test/083-compiler-regressions/Android.bp\n  test/084-class-init/Android.bp\n  test/086-null-super/Android.bp\n  test/087-gc-after-link/Android.bp\n  test/090-loop-formation/Android.bp\n  test/092-locale/Android.bp\n  test/093-serialization/Android.bp\n  test/094-pattern/Android.bp\n  test/095-switch-MAX_INT/Android.bp\n  test/096-array-copy-concurrent-gc/Android.bp\n  test/098-ddmc/Android.bp\n  test/099-vmdebug/Android.bp\n  test/100-reflect2/Android.bp\n  test/1004-checker-volatile-ref-load/Android.bp\n  test/101-fibonacci/Android.bp\n  test/102-concurrent-gc/Android.bp\n  test/103-string-append/Android.bp\n  test/104-growth-limit/Android.bp\n  test/105-invoke/Android.bp\n  test/106-exceptions2/Android.bp\n  test/107-int-math2/Android.bp\n  test/108-check-cast/Android.bp\n  test/109-suspend-check/Android.bp\n  test/110-field-access/Android.bp\n  test/112-double-math/Android.bp\n  test/114-ParallelGC/Android.bp\n  test/115-native-bridge/Android.bp\n  test/116-nodex2oat/Android.bp\n  test/120-hashcode/Android.bp\n  test/121-simple-suspend-check/Android.bp\n  test/122-npe/Android.bp\n  test/123-compiler-regressions-mt/Android.bp\n  test/123-inline-execute2/Android.bp\n  test/125-gc-and-classloading/Android.bp\n  test/128-reg-spill-on-implicit-nullcheck/Android.bp\n  test/129-ThreadGetId/Android.bp\n  test/132-daemon-locks-shutdown/Android.bp\n  test/133-static-invoke-super/Android.bp\n  test/1336-short-finalizer-timeout/Android.bp\n  test/1337-gc-coverage/Android.bp\n  test/1339-dead-reference-safe/Android.bp\n  test/136-daemon-jni-shutdown/Android.bp\n  test/139-register-natives/Android.bp\n  test/140-dce-regression/Android.bp\n  test/140-field-packing/Android.bp\n  test/143-string-value/Android.bp\n  test/144-static-field-sigquit/Android.bp\n  test/148-multithread-gc-annotations/Android.bp\n  test/149-suspend-all-stress/Android.bp\n  test/150-loadlibrary/Android.bp\n  test/151-OpenFileLimit/Android.bp\n  test/152-dead-large-object/Android.bp\n  test/153-reference-stress/Android.bp\n  test/154-gc-loop/Android.bp\n  test/156-register-dex-file-multi-loader/Android.bp\n  test/158-app-image-class-table/Android.bp\n  test/159-app-image-fields/Android.bp\n  test/163-app-image-methods/Android.bp\n  test/165-lock-owner-proxy/Android.bp\n  test/168-vmstack-annotated/Android.bp\n  test/169-threadgroup-jni/Android.bp\n  test/170-interface-init/Android.bp\n  test/172-app-image-twice/Android.bp\n  test/174-escaping-instance-of-bad-class/Android.bp\n  test/175-alloc-big-bignums/Android.bp\n  test/176-app-image-string/Android.bp\n  test/177-visibly-initialized-deadlock/Android.bp\n  test/178-app-image-native-method/Android.bp\n  test/179-nonvirtual-jni/Android.bp\n  test/1900-track-alloc/Android.bp\n  test/1901-get-bytecodes/Android.bp\n  test/1902-suspend/Android.bp\n  test/1903-suspend-self/Android.bp\n  test/1904-double-suspend/Android.bp\n  test/1905-suspend-native/Android.bp\n  test/1906-suspend-list-me-first/Android.bp\n  test/1907-suspend-list-self-twice/Android.bp\n  test/1908-suspend-native-resume-self/Android.bp\n  test/1909-per-agent-tls/Android.bp\n  test/1910-transform-with-default/Android.bp\n  test/1911-get-local-var-table/Android.bp\n  test/1912-get-set-local-primitive/Android.bp\n  test/1913-get-set-local-objects/Android.bp\n  test/1914-get-local-instance/Android.bp\n  test/1915-get-set-local-current-thread/Android.bp\n  test/1916-get-set-current-frame/Android.bp\n  test/1917-get-stack-frame/Android.bp\n  test/1919-vminit-thread-start-timing/Android.bp\n  test/1920-suspend-native-monitor/Android.bp\n  test/1921-suspend-native-recursive-monitor/Android.bp\n  test/1922-owned-monitors-info/Android.bp\n  test/1923-frame-pop/Android.bp\n  test/1924-frame-pop-toggle/Android.bp\n  test/1925-self-frame-pop/Android.bp\n  test/1926-missed-frame-pop/Android.bp\n  test/1927-exception-event/Android.bp\n  test/1928-exception-event-exception/Android.bp\n  test/1930-monitor-info/Android.bp\n  test/1931-monitor-events/Android.bp\n  test/1932-monitor-events-misc/Android.bp\n  test/1933-monitor-current-contended/Android.bp\n  test/1934-jvmti-signal-thread/Android.bp\n  test/1935-get-set-current-frame-jit/Android.bp\n  test/1936-thread-end-events/Android.bp\n  test/1937-transform-soft-fail/Android.bp\n  test/1938-transform-abstract-single-impl/Android.bp\n  test/1939-proxy-frames/Android.bp\n  test/1941-dispose-stress/Android.bp\n  test/1942-suspend-raw-monitor-exit/Android.bp\n  test/1943-suspend-raw-monitor-wait/Android.bp\n  test/1945-proxy-method-arguments/Android.bp\n  test/1947-breakpoint-redefine-deopt/Android.bp\n  test/1949-short-dex-file/Android.bp\n  test/1951-monitor-enter-no-suspend/Android.bp\n  test/1953-pop-frame/Android.bp\n  test/1954-pop-frame-jit/Android.bp\n  test/1955-pop-frame-jit-called/Android.bp\n  test/1956-pop-frame-jit-calling/Android.bp\n  test/1957-error-ext/Android.bp\n  test/1958-transform-try-jit/Android.bp\n  test/1959-redefine-object-instrument/Android.bp\n  test/1960-checker-bounds-codegen/Android.bp\n  test/1960-obsolete-jit-multithread-native/Android.bp\n  test/1961-checker-loop-vectorizer/Android.bp\n  test/1961-obsolete-jit-multithread/Android.bp\n  test/1962-multi-thread-events/Android.bp\n  test/1963-add-to-dex-classloader-in-memory/Android.bp\n  test/1967-get-set-local-bad-slot/Android.bp\n  test/1968-force-early-return/Android.bp\n  test/1969-force-early-return-void/Android.bp\n  test/1970-force-early-return-long/Android.bp\n  test/1971-multi-force-early-return/Android.bp\n  test/1972-jni-id-swap-indices/Android.bp\n  test/1973-jni-id-swap-pointer/Android.bp\n  test/1974-resize-array/Android.bp\n  test/1975-hello-structural-transformation/Android.bp\n  test/1976-hello-structural-static-methods/Android.bp\n  test/1977-hello-structural-obsolescence/Android.bp\n  test/1978-regular-obsolete-then-structural-obsolescence/Android.bp\n  test/1979-threaded-structural-transformation/Android.bp\n  test/1980-obsolete-object-cleared/Android.bp\n  test/1982-no-virtuals-structural-redefinition/Android.bp\n  test/1984-structural-redefine-field-trace/Android.bp\n  test/1985-structural-redefine-stack-scope/Android.bp\n  test/1986-structural-redefine-multi-thread-stack-scope/Android.bp\n  test/1987-structural-redefine-recursive-stack-scope/Android.bp\n  test/1988-multi-structural-redefine/Android.bp\n  test/1989-transform-bad-monitor/Android.bp\n  test/1990-structural-bad-verify/Android.bp\n  test/1991-hello-structural-retransform/Android.bp\n  test/1992-retransform-no-such-field/Android.bp\n  test/1993-fallback-non-structural/Android.bp\n  test/1994-final-virtual-structural/Android.bp\n  test/1995-final-virtual-structural-multithread/Android.bp\n  test/1996-final-override-virtual-structural/Android.bp\n  test/1997-structural-shadow-method/Android.bp\n  test/1998-structural-shadow-field/Android.bp\n  test/1999-virtual-structural/Android.bp\n  test/2003-double-virtual-structural/Android.bp\n  test/2004-double-virtual-structural-abstract/Android.bp\n  test/2005-pause-all-redefine-multithreaded/Android.bp\n  test/2008-redefine-then-old-reflect-field/Android.bp\n  test/201-built-in-except-detail-messages/Android.bp\n  test/2011-stack-walk-concurrent-instrument/Android.bp\n  test/2019-constantcalculationsinking/Android.bp\n  test/202-thread-oome/Android.bp\n  test/2020-InvokeVirtual-Inlining/Android.bp\n  test/2021-InvokeStatic-Inlining/Android.bp\n  test/2022-Invariantloops/Android.bp\n  test/2023-InvariantLoops_typecast/Android.bp\n  test/2024-InvariantNegativeLoop/Android.bp\n  test/2025-ChangedArrayValue/Android.bp\n  test/2026-DifferentMemoryLSCouples/Android.bp\n  test/2027-TwiceTheSameMemoryCouple/Android.bp\n  test/2028-MultiBackward/Android.bp\n  test/2029-contended-monitors/Android.bp\n  test/203-multi-checkpoint/Android.bp\n  test/2030-long-running-child/Android.bp\n  test/2031-zygote-compiled-frame-deopt/Android.bp\n  test/2033-shutdown-mechanics/Android.bp\n  test/2036-jni-filechannel/Android.bp\n  test/2037-thread-name-inherit/Android.bp\n  test/2231-checker-heap-poisoning/Android.bp\n  test/2232-write-metrics-to-log/Android.bp\n  test/300-package-override/Android.bp\n  test/301-abstract-protected/Android.bp\n  test/302-float-conversion/Android.bp\n  test/304-method-tracing/Android.bp\n  test/305-other-fault-handler/Android.bp\n  test/401-optimizing-compiler/Android.bp\n  test/402-optimizing-control-flow/Android.bp\n  test/403-optimizing-long/Android.bp\n  test/404-optimizing-allocator/Android.bp\n  test/405-optimizing-long-allocator/Android.bp\n  test/406-fields/Android.bp\n  test/407-arrays/Android.bp\n  test/408-move-bug/Android.bp\n  test/409-materialized-condition/Android.bp\n  test/410-floats/Android.bp\n  test/411-checker-hdiv-hrem-const/Android.bp\n  test/411-checker-hdiv-hrem-pow2/Android.bp\n  test/411-checker-instruct-simplifier-hrem/Android.bp\n  test/411-optimizing-arith/Android.bp\n  test/413-regalloc-regression/Android.bp\n  test/414-static-fields/Android.bp\n  test/418-const-string/Android.bp\n  test/419-long-parameter/Android.bp\n  test/420-const-class/Android.bp\n  test/421-exceptions/Android.bp\n  test/421-large-frame/Android.bp\n  test/422-instanceof/Android.bp\n  test/422-type-conversion/Android.bp\n  test/423-invoke-interface/Android.bp\n  test/424-checkcast/Android.bp\n  test/426-monitor/Android.bp\n  test/427-bitwise/Android.bp\n  test/427-bounds/Android.bp\n  test/429-ssa-builder/Android.bp\n  test/430-live-register-slow-path/Android.bp\n  test/433-gvn/Android.bp\n  test/434-shifter-operand/Android.bp\n  test/435-try-finally-without-catch/Android.bp\n  test/436-rem-float/Android.bp\n  test/436-shift-constant/Android.bp\n  test/437-inline/Android.bp\n  test/438-volatile/Android.bp\n  test/439-npe/Android.bp\n  test/439-swap-double/Android.bp\n  test/440-stmp/Android.bp\n  test/441-checker-inliner/Android.bp\n  test/443-not-bool-inline/Android.bp\n  test/444-checker-nce/Android.bp\n  test/445-checker-licm/Android.bp\n  test/446-checker-inliner2/Android.bp\n  test/447-checker-inliner3/Android.bp\n  test/449-checker-bce-rem/Android.bp\n  test/449-checker-bce/Android.bp\n  test/450-checker-types/Android.bp\n  test/451-regression-add-float/Android.bp\n  test/451-spill-splot/Android.bp\n  test/454-get-vreg/Android.bp\n  test/455-checker-gvn/Android.bp\n  test/456-baseline-array-set/Android.bp\n  test/458-long-to-fpu/Android.bp\n  test/461-get-reference-vreg/Android.bp\n  test/464-checker-inline-sharpen-calls/Android.bp\n  test/465-checker-clinit-gvn/Android.bp\n  test/466-get-live-vreg/Android.bp\n  test/469-condition-materialization/Android.bp\n  test/470-huge-method/Android.bp\n  test/471-deopt-environment/Android.bp\n  test/472-type-propagation/Android.bp\n  test/473-checker-inliner-constants/Android.bp\n  test/473-remove-dead-block/Android.bp\n  test/474-checker-boolean-input/Android.bp\n  test/474-fp-sub-neg/Android.bp\n  test/475-simplify-mul-zero/Android.bp\n  test/476-checker-ctor-fence-redun-elim/Android.bp\n  test/476-checker-ctor-memory-barrier/Android.bp\n  test/476-clinit-inline-static-invoke/Android.bp\n  test/477-checker-bound-type/Android.bp\n  test/477-long-2-float-convers-precision/Android.bp\n  test/478-checker-clinit-check-pruning/Android.bp\n  test/478-checker-inline-noreturn/Android.bp\n  test/478-checker-inliner-nested-loop/Android.bp\n  test/479-regression-implicit-null-check/Android.bp\n  test/480-checker-dead-blocks/Android.bp\n  test/481-regression-phi-cond/Android.bp\n  test/482-checker-loop-back-edge-use/Android.bp\n  test/483-dce-block/Android.bp\n  test/485-checker-dce-switch/Android.bp\n  test/486-checker-must-do-null-check/Android.bp\n  test/487-checker-inline-calls/Android.bp\n  test/488-checker-inline-recursive-calls/Android.bp\n  test/489-current-method-regression/Android.bp\n  test/490-checker-inline/Android.bp\n  test/491-current-method/Android.bp\n  test/492-checker-inline-invoke-interface/Android.bp\n  test/493-checker-inline-invoke-interface/Android.bp\n  test/494-checker-instanceof-tests/Android.bp\n  test/495-checker-checkcast-tests/Android.bp\n  test/496-checker-inlining-class-loader/Android.bp\n  test/497-inlining-and-class-loader/Android.bp\n  test/499-bce-phi-array-length/Android.bp\n  test/500-instanceof/Android.bp\n  test/505-simplifier-type-propagation/Android.bp\n  test/507-boolean-test/Android.bp\n  test/507-referrer/Android.bp\n  test/508-checker-disassembly/Android.bp\n  test/508-referrer-method/Android.bp\n  test/513-array-deopt/Android.bp\n  test/514-shifts/Android.bp\n  test/519-bound-load-class/Android.bp\n  test/521-checker-array-set-null/Android.bp\n  test/521-regression-integer-field-set/Android.bp\n  test/524-boolean-simplifier-regression/Android.bp\n  test/525-checker-arrays-fields1/Android.bp\n  test/525-checker-arrays-fields2/Android.bp\n  test/526-checker-caller-callee-regs/Android.bp\n  test/526-long-regalloc/Android.bp\n  test/527-checker-array-access-simd/Android.bp\n  test/527-checker-array-access-split/Android.bp\n  test/528-long-hint/Android.bp\n  test/529-long-split/Android.bp\n  test/530-checker-loops1/Android.bp\n  test/530-checker-loops2/Android.bp\n  test/530-checker-loops3/Android.bp\n  test/530-checker-loops4/Android.bp\n  test/530-checker-loops5/Android.bp\n  test/530-checker-lse-ctor-fences/Android.bp\n  test/530-checker-lse-simd/Android.bp\n  test/530-checker-lse/Android.bp\n  test/530-checker-lse2/Android.bp\n  test/530-instanceof-checkcast/Android.bp\n  test/530-regression-lse/Android.bp\n  test/532-checker-nonnull-arrayset/Android.bp\n  test/534-checker-bce-deoptimization/Android.bp\n  test/535-deopt-and-inlining/Android.bp\n  test/536-checker-intrinsic-optimization/Android.bp\n  test/537-checker-arraycopy/Android.bp\n  test/537-checker-jump-over-jump/Android.bp\n  test/538-checker-embed-constants/Android.bp\n  test/540-checker-rtp-bug/Android.bp\n  test/542-bitfield-rotates/Android.bp\n  test/542-inline-trycatch/Android.bp\n  test/542-unresolved-access-check/Android.bp\n  test/545-tracing-and-jit/Android.bp\n  test/548-checker-inlining-and-dce/Android.bp\n  test/549-checker-types-merge/Android.bp\n  test/550-checker-multiply-accumulate/Android.bp\n  test/550-new-instance-clinit/Android.bp\n  test/551-checker-clinit/Android.bp\n  test/551-checker-shifter-operand/Android.bp\n  test/551-implicit-null-checks/Android.bp\n  test/552-checker-sharpening/Android.bp\n  test/552-checker-x86-avx2-bit-manipulation/Android.bp\n  test/554-checker-rtp-checkcast/Android.bp\n  test/555-UnsafeGetLong-regression/Android.bp\n  test/557-checker-instruct-simplifier-ror/Android.bp\n  test/558-switch/Android.bp\n  test/559-bce-ssa/Android.bp\n  test/559-checker-rtp-ifnotnull/Android.bp\n  test/560-packed-switch/Android.bp\n  test/561-divrem/Android.bp\n  test/561-shared-slowpaths/Android.bp\n  test/562-bce-preheader/Android.bp\n  test/562-checker-no-intermediate/Android.bp\n  test/563-checker-invoke-super/Android.bp\n  test/564-checker-bitcount/Android.bp\n  test/564-checker-inline-loop/Android.bp\n  test/564-checker-negbitwise/Android.bp\n  test/565-checker-condition-liveness/Android.bp\n  test/566-checker-codegen-select/Android.bp\n  test/566-polymorphic-inlining/Android.bp\n  test/567-checker-builder-intrinsics/Android.bp\n  test/568-checker-onebit/Android.bp\n  test/570-checker-select/Android.bp\n  test/572-checker-array-get-regression/Android.bp\n  test/573-checker-checkcast-regression/Android.bp\n  test/576-polymorphic-inlining/Android.bp\n  test/577-checker-fp2int/Android.bp\n  test/578-bce-visit/Android.bp\n  test/578-polymorphic-inlining/Android.bp\n  test/579-inline-infinite/Android.bp\n  test/580-checker-round/Android.bp\n  test/580-crc32/Android.bp\n  test/581-rtp/Android.bp\n  test/582-checker-bce-length/Android.bp\n  test/583-checker-zero/Android.bp\n  test/584-checker-div-bool/Android.bp\n  test/589-super-imt/Android.bp\n  test/590-checker-arr-set-null-regression/Android.bp\n  test/591-checker-regression-dead-loop/Android.bp\n  test/593-checker-long-2-float-regression/Android.bp\n  test/594-checker-array-alias/Android.bp\n  test/594-load-string-regression/Android.bp\n  test/595-profile-saving/Android.bp\n  test/597-deopt-busy-loop/Android.bp\n  test/597-deopt-invoke-stub/Android.bp\n  test/597-deopt-new-string/Android.bp\n  test/602-deoptimizeable/Android.bp\n  test/603-checker-instanceof/Android.bp\n  test/604-hot-static-interface/Android.bp\n  test/605-new-string-from-bytes/Android.bp\n  test/607-daemon-stress/Android.bp\n  test/609-checker-inline-interface/Android.bp\n  test/609-checker-x86-bounds-check/Android.bp\n  test/610-arraycopy/Android.bp\n  test/611-checker-simplify-if/Android.bp\n  test/614-checker-dump-constant-location/Android.bp\n  test/615-checker-arm64-store-zero/Android.bp\n  test/616-cha-abstract/Android.bp\n  test/616-cha-interface/Android.bp\n  test/616-cha-miranda/Android.bp\n  test/616-cha-native/Android.bp\n  test/616-cha-regression-proxy-method/Android.bp\n  test/616-cha/Android.bp\n  test/617-clinit-oome/Android.bp\n  test/618-checker-induction/Android.bp\n  test/619-checker-current-method/Android.bp\n  test/620-checker-bce-intrinsics/Android.bp\n  test/622-checker-bce-regressions/Android.bp\n  test/623-checker-loop-regressions/Android.bp\n  test/625-checker-licm-regressions/Android.bp\n  test/626-set-resolved-string/Android.bp\n  test/627-checker-unroll/Android.bp\n  test/628-vdex/Android.bp\n  test/629-vdex-speed/Android.bp\n  test/631-checker-get-class/Android.bp\n  test/632-checker-char-at-bounds/Android.bp\n  test/635-checker-arm64-volatile-load-cc/Android.bp\n  test/636-arm64-veneer-pool/Android.bp\n  test/637-checker-throw-inline/Android.bp\n  test/638-checker-inline-cache-intrinsic/Android.bp\n  test/639-checker-code-sinking/Android.bp\n  test/640-checker-boolean-simd/Android.bp\n  test/640-checker-integer-valueof/Android.bp\n  test/640-checker-simd/Android.bp\n  test/641-checker-arraycopy/Android.bp\n  test/641-iterations/Android.bp\n  test/642-fp-callees/Android.bp\n  test/643-checker-bogus-ic/Android.bp\n  test/645-checker-abs-simd/Android.bp\n  test/646-checker-arraycopy-large-cst-pos/Android.bp\n  test/646-checker-long-const-to-int/Android.bp\n  test/646-checker-simd-hadd/Android.bp\n  test/647-jni-get-field-id/Android.bp\n  test/650-checker-inline-access-thunks/Android.bp\n  test/652-deopt-intrinsic/Android.bp\n  test/654-checker-periodic/Android.bp\n  test/655-checker-simd-arm-opt/Android.bp\n  test/655-jit-clinit/Android.bp\n  test/656-checker-simd-opt/Android.bp\n  test/656-loop-deopt/Android.bp\n  test/657-branches/Android.bp\n  test/658-fp-read-barrier/Android.bp\n  test/660-checker-sad/Android.bp\n  test/660-checker-simd-sad/Android.bp\n  test/660-clinit/Android.bp\n  test/661-checker-simd-reduc/Android.bp\n  test/661-oat-writer-layout/Android.bp\n  test/662-regression-alias/Android.bp\n  test/664-aget-verifier/Android.bp\n  test/665-checker-simd-zero/Android.bp\n  test/666-dex-cache-itf/Android.bp\n  test/667-checker-simd-alignment/Android.bp\n  test/667-jit-jni-stub/Android.bp\n  test/667-out-of-bounds/Android.bp\n  test/669-checker-break/Android.bp\n  test/671-npe-field-opts/Android.bp\n  test/672-checker-throw-method/Android.bp\n  test/673-checker-throw-vmethod/Android.bp\n  test/674-HelloWorld-Dm/Android.bp\n  test/674-hotness-compiled/Android.bp\n  test/676-proxy-jit-at-first-use/Android.bp\n  test/677-fsi2/Android.bp\n  test/679-locks/Android.bp\n  test/680-checker-deopt-dex-pc-0/Android.bp\n  test/680-sink-regression/Android.bp\n  test/684-checker-simd-dotprod/Android.bp\n  test/684-select-condition/Android.bp\n  test/685-deoptimizeable/Android.bp\n  test/687-deopt/Android.bp\n  test/689-multi-catch/Android.bp\n  test/689-zygote-jit-deopt/Android.bp\n  test/693-vdex-inmem-loader-evict/Android.bp\n  test/694-clinit-jit/Android.bp\n  test/695-simplify-throws/Android.bp\n  test/696-loop/Android.bp\n  test/697-checker-string-append/Android.bp\n  test/698-selects/Android.bp\n  test/700-LoadArgRegs/Android.bp\n  test/703-floating-point-div/Android.bp\n  test/704-multiply-accumulate/Android.bp\n  test/705-register-conflict/Android.bp\n  test/707-checker-invalid-profile/Android.bp\n  test/708-jit-cache-churn/Android.bp\n  test/711-checker-type-conversion/Android.bp\n  test/717-integer-value-of/Android.bp\n  test/718-zipfile-finalizer/Android.bp\n  test/720-thread-priority/Android.bp\n  test/721-osr/Android.bp\n  test/726-array-store/Android.bp\n  test/728-imt-conflict-zygote/Android.bp\n  test/805-TooDeepClassInstanceOf/Android.bp\n  test/806-TooWideClassInstanceOf/Android.bp\n  test/812-recursive-default/Android.bp\n  test/813-fp-args/Android.bp\n  test/814-large-field-offsets/Android.bp\n  test/815-invokeinterface-default/Android.bp\n  test/818-clinit-nterp/Android.bp\n  test/900-hello-plugin/Android.bp\n  test/901-hello-ti-agent/Android.bp\n  test/902-hello-transformation/Android.bp\n  test/903-hello-tagging/Android.bp\n  test/904-object-allocation/Android.bp\n  test/905-object-free/Android.bp\n  test/906-iterate-heap/Android.bp\n  test/907-get-loaded-classes/Android.bp\n  test/908-gc-start-finish/Android.bp\n  test/910-methods/Android.bp\n  test/911-get-stack-trace/Android.bp\n  test/913-heaps/Android.bp\n  test/914-hello-obsolescence/Android.bp\n  test/915-obsolete-2/Android.bp\n  test/916-obsolete-jit/Android.bp\n  test/917-fields-transformation/Android.bp\n  test/918-fields/Android.bp\n  test/919-obsolete-fields/Android.bp\n  test/920-objects/Android.bp\n  test/921-hello-failure/Android.bp\n  test/922-properties/Android.bp\n  test/923-monitors/Android.bp\n  test/924-threads/Android.bp\n  test/925-threadgroups/Android.bp\n  test/926-multi-obsolescence/Android.bp\n  test/927-timers/Android.bp\n  test/928-jni-table/Android.bp\n  test/930-hello-retransform/Android.bp\n  test/931-agent-thread/Android.bp\n  test/932-transform-saves/Android.bp\n  test/933-misc-events/Android.bp\n  test/937-hello-retransform-package/Android.bp\n  test/939-hello-transformation-bcp/Android.bp\n  test/940-recursive-obsolete/Android.bp\n  test/941-recursive-obsolete-jit/Android.bp\n  test/942-private-recursive/Android.bp\n  test/943-private-recursive-jit/Android.bp\n  test/944-transform-classloaders/Android.bp\n  test/945-obsolete-native/Android.bp\n  test/946-obsolete-throw/Android.bp\n  test/947-reflect-method/Android.bp\n  test/949-in-memory-transform/Android.bp\n  test/950-redefine-intrinsic/Android.bp\n  test/951-threaded-obsolete/Android.bp\n  test/963-default-range-smali/Android.bp\n  test/982-ok-no-retransform/Android.bp\n  test/983-source-transform-verify/Android.bp\n  test/984-obsolete-invoke/Android.bp\n  test/985-re-obsolete/Android.bp\n  test/986-native-method-bind/Android.bp\n  test/987-agent-bind/Android.bp\n  test/988-method-trace/Android.bp\n  test/989-method-trace-throw/Android.bp\n  test/990-field-trace/Android.bp\n  test/991-field-trace-2/Android.bp\n  test/992-source-data/Android.bp\n  test/993-breakpoints/Android.bp\n  test/994-breakpoint-line/Android.bp\n  test/995-breakpoints-throw/Android.bp\n  test/996-breakpoint-obsolete/Android.bp\n  test/997-single-step/Android.bp\n  test/Android.bp\n  tools/Android.bp\n  tools/ahat/Android.bp\n  tools/ahat/Android.mk\n  tools/art_verifier/Android.bp\n  tools/cpp-define-generator/Android.bp\n  tools/dexanalyze/Android.bp\n  tools/dexfuzz/Android.bp\n  tools/dmtracedump/Android.bp\n  tools/hiddenapi/Android.bp\n  tools/jfuzz/Android.bp\n  tools/jvmti-agents/breakpoint-logger/Android.bp\n  tools/jvmti-agents/chain-agents/Android.bp\n  tools/jvmti-agents/dump-jvmti-state/Android.bp\n  tools/jvmti-agents/enable-vlog/Android.bp\n  tools/jvmti-agents/field-counts/Android.bp\n  tools/jvmti-agents/field-null-percent/Android.bp\n  tools/jvmti-agents/jit-load/Android.bp\n  tools/jvmti-agents/list-extensions/Android.bp\n  tools/jvmti-agents/simple-force-redefine/Android.bp\n  tools/jvmti-agents/simple-profile/Android.bp\n  tools/jvmti-agents/ti-alloc-sample/Android.bp\n  tools/jvmti-agents/ti-fast/Android.bp\n  tools/jvmti-agents/titrace/Android.bp\n  tools/jvmti-agents/wrapagentproperties/Android.bp\n  tools/signal_dumper/Android.bp\n  tools/tracefast-plugin/Android.bp\n  tools/veridex/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  sigchainlib/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-GPL-2.0\nto:\n  Android.bp\n  Android.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  dt_fd_forward/Android.bp\n  openjdkjvmti/Android.bp\n\nAdded SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  openjdkjvm/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: If775045c12955fa6d72d40ccf2a09beef93d1699\nMerged-in: If775045c12955fa6d72d40ccf2a09beef93d1699\n"
    },
    {
      "commit": "1ece299441d0f5245e8b1e4ca79a441180039fa2",
      "tree": "2b9541dd3157c46cf93e83e16a01c0b6bab5e8c9",
      "parents": [
        "16f60dc094fe283d1fcfd062b3144452e005c133"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 17:02:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 14:45:14 2021 +0000"
      },
      "message": "dex2oat: Move where we report end of compilation.\n\n- Merge CompileApp and CompileImage which shared most of the logic.\n- Add a scoped reporting class to report start and end of compilation.\n- Dup the fds in the reporting, to not be subject to dex2oat\n  refactorings.\n\nBug: 134558686\nTest: test.py\nChange-Id: I5db4b3fcb897b04aab325e7fe006e289d6f6b87d\n"
    },
    {
      "commit": "001bb57849d1cd31612fb8958d85a2342c31b534",
      "tree": "a6c0f3457e24256d490602c61e2b38c1517c6b05",
      "parents": [
        "a82fb5713e392bc71672e9c87de8e3eaf2ddb0de"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 11:54:38 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 11:08:44 2021 +0000"
      },
      "message": "Change dirty-image-objects file format.\n\nUse actual descriptors instead of \"pretty decriptors\"\nto avoid conversion during boot image compilation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots\nTest: Boot images before and after are identical.\nBug: 175869411\nChange-Id: Iab12cc1444045fb297c2e062ff07bb1feb5dd781\n"
    },
    {
      "commit": "b9b7d91f5ceb0b738e1774992fd6fe205c6091e9",
      "tree": "06210044d3f66a0eb72e491ba9effc13bb827ced",
      "parents": [
        "4c3ade67c470543562a0029e39b576954a807321"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 24 09:24:47 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 12:12:16 2021 +0000"
      },
      "message": "Revert \"Lazily allocate DexCache arrays.\"\n\nThis reverts commit 1214319d27e7fb4c4ff00b39799df6f15288098a.\n\nReason for revert: Post-submit fails\nBug: b/181097963\nTest: TH\n\nChange-Id: I9fd21140f1703d0020458b786f48bd39889a9948\n"
    },
    {
      "commit": "1214319d27e7fb4c4ff00b39799df6f15288098a",
      "tree": "8708943822a634322bd9790c4d008210e44b3ddb",
      "parents": [
        "b7cb691fb8da124e8a6276a5a7fee47dd0aaa338"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 16 14:06:31 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 23 15:24:27 2021 +0000"
      },
      "message": "Lazily allocate DexCache arrays.\n\nWe rarely need the DexCache for compiled code.\nDelay the allocation in hope we never need it.\n\nThis reduces DexCache memory usage by ~25% at startup.\n\nTest: m test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I680a59c905c2b821ee954e4b32abd5d24876bd11\n"
    },
    {
      "commit": "5de5efef38f52f248d1e1c88fdcf3d211aabe712",
      "tree": "fb991b4dbee4d9afecad141bc75dab14893633a1",
      "parents": [
        "18af6447e5963265f6e7e61d6630064f66891f94"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 15 21:23:00 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 18 16:51:21 2021 +0000"
      },
      "message": "Remove pointer-size arguments from DexCache.\n\nThe DexCache is always allocated at runtime now and thus\nit always has runtime pointer-size. Remove the dead code.\n\nTest: m test-art-host-gtest\nChange-Id: Ic21dc20649e1fd70f8981602d75b5690065aec20\n"
    },
    {
      "commit": "6dc86d14129b19c41cb7a2e90d96be3a4abc65a1",
      "tree": "8377b8e88b4d53444aa812605b7072ceba720946",
      "parents": [
        "eae6a7121925b95477b92b404d85645e665bc948"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 12:17:09 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 12:18:04 2021 +0000"
      },
      "message": "Put method pointer arrays together in images.\n\nThese arrays are always clean, so use a separate bin in\nImageWriter to group them together.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 175869411\nChange-Id: Ieb27c7607a66efade6ad69a9365733a1945dd325\n"
    },
    {
      "commit": "1ee12675375f97790f2ad2bbd0196c1847f858fb",
      "tree": "7115f51624a922cd7c08e5383ff5a1dc2782dce1",
      "parents": [
        "7302a74df6f956fe7e20b2c62441666835f1a1f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 05 09:37:57 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 09:04:39 2021 +0000"
      },
      "message": "Rewrite pointer array relocation in ImageWriter.\n\nVisit vtables and iftables through their classes to avoid\na HashSet\u003c\u003e and save both memory and compilation time.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 175869411\nChange-Id: Ib0862127a2e52035c064cc736468fb9556258ec4\n"
    },
    {
      "commit": "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af",
      "tree": "c81fb19ae8c7a12ffb70ea6caa62bcc6c637a742",
      "parents": [
        "b6dda5a1fa90b08d3ebf83a5d1f882e5355bc68b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 04 21:20:30 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 06 15:59:32 2021 +0000"
      },
      "message": "libartpalette: Use fixed width typedef rather than enum for status\n\nAs the NDK guidelines note, the size of an enum is a compiler choice\nso an enum of unqualifed width cannot be considered stable ABI.\n\nBug: 122824298\nTest: TH\nChange-Id: I63d42fdb5a989aab15ec995529781b1b8c3ddb7a\n"
    },
    {
      "commit": "32bf6d39bc020cacfc655ce60630f4a0da3b45cf",
      "tree": "e21933e9bfab866807b07f9071eaf8c67aad8f1c",
      "parents": [
        "649beaaead32f7dc98def517414cc50050a09f35"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 02 19:29:29 2021 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 04 01:42:35 2021 +0000"
      },
      "message": "Ignore corrupt vdex files from .dm\n\nPerform an earlier validation of the .vdex files when they come\nfrom .dm and if they turn out to be out of date or corrupt, ignore\nthem. The compilation can proceed without them.\n\nThis will accomodate cases like the .vdex being out of date or\nbuild with a previous version of the compiler.\n\nTest: gtest\nBug: 177462384\nChange-Id: Ib1ad0f86950877cedbb57668767b6acb884c3227\n"
    },
    {
      "commit": "b1cf83748ce8165fe7e41ce6a57eb5529946a971",
      "tree": "56fe4acb1a5310cf015467a79427f4de67a53b68",
      "parents": [
        "0f0caf869a9026e723caf79d8f50d8da25bc4185"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 02 13:32:20 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 02 18:08:12 2021 +0000"
      },
      "message": "Fix image bug around clinit and nterp.\n\nnterp trampoline doesn\u0027t do clinit checks, so we should install the\nresolution stub if a method needs a clinit check before being entered.\n\nTest: 818-clinit-nterp\nBug: 178992601\nChange-Id: I9d6b023a6c6620adfcd2a6ed5cd1e042a7cb449b\n"
    },
    {
      "commit": "d1728bfca62a0757000ef3aa0388b5e51269a2a2",
      "tree": "04d75ba364e3ce0c39735a38083383408f9f7cf4",
      "parents": [
        "36e4d1d398a1526c6bc5eba12b32279dc07749d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:02:29 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 14:48:53 2021 +0000"
      },
      "message": "Add a kTypeChecksFailure.\n\nThis is to distinguish between a soft failure due to type checks, or a\nsoft failure due to other reasons.\n\nA follow-up CL will start using that information and use the type checks\nin the vdex file to perform fast verification at runtime.\n\nTest: test.py\nBug: 176960283\n\nChange-Id: I04bff9ff26033f41e9439d366667a9aec1f339a0\n"
    },
    {
      "commit": "f3f1c8b41ebee81a34cb104417e1a78e6ad45173",
      "tree": "9cf3b4ef81d4b7c1d6e7bd5861d621b736d1e692",
      "parents": [
        "a7c66e7e5845b26711b261773179abf0f8b34ced"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 26 13:44:07 2021 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 28 21:45:09 2021 +0000"
      },
      "message": "Add comment to art_jni_trampoline.\n\nBug: 175226454\nTest: N/A\nChange-Id: Ia83c3afa69d7e1efb9685cfaa5401242712fa02a\n"
    },
    {
      "commit": "7203b2052c1b77a369a2fa5647529576f57de0cc",
      "tree": "030fcdab28eda073f2a4f09acef5807dea93870b",
      "parents": [
        "151e23a09cc820584493e6c80daff762bb2f4d5d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 14:20:23 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 28 10:43:05 2021 +0000"
      },
      "message": "Do not fill ImageWriter::oat_index_map_ for single image.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I7213db34899a6f53abb4e383c19b0c29c445d57f\n"
    },
    {
      "commit": "151e23a09cc820584493e6c80daff762bb2f4d5d",
      "tree": "8c53ddbfa62cf57ae33a638254f289bad3863278",
      "parents": [
        "f6510e4c9d5626049df3c21d457a4cea614f1c84"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 10:11:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 28 10:14:09 2021 +0000"
      },
      "message": "Rewrite intern table construction in ImageWriter.\n\nMake sure that intern tables in images are at maximum load\nfactor (full) and make that maximum load factor independent\nof runtime parameters. As we pre-allocate an intern table\nbuffer of the right size in ImageWriter, we also avoid\nunnecessary resizing of the temporary intern table.\n\nInstead of using InternTable::LookupStrong() for intern\nlookup, access the internal non-boot image intern table\ndirectly. This avoids unnecessary lookups in boot image\nintern tables and the intern table lock is locked only once\ninstead of locking for each StringId in input dex files.\n\nRemove obsolete comment related to patchoat relocations.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: Ie74e1ac1b1b1d25add74edd38b7e1d70b6654ee3\n"
    },
    {
      "commit": "c39af9409ed4c8dd711be606f758a9b378cd0ee3",
      "tree": "43f8cc23a07a41fb8fc03be77a15fa203e27194d",
      "parents": [
        "3a73ffb70151dbc99fa41f300a237f8c29783e0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 25 08:43:57 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 27 08:29:40 2021 +0000"
      },
      "message": "Add a nterp trampoline in the oat file, replaced at runtime.\n\nTo avoid checking whether an ArtMethod can run nterp when loading an\nimage, record that information directly in the image, and patch the\nentrypoint so nterp can do direct pointer checks when calling an\nArtMethod.\n\nTest: test.py\nBug: 177444058\nChange-Id: Ia87367c37848e1efe33336b3677490c07d7e1767\n"
    },
    {
      "commit": "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d",
      "tree": "46bafbf1bc58b492d60b338362a2bd89653108b9",
      "parents": [
        "47d89dde45b24ee09eb96cc676d7939959fb04cf"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 22 16:08:48 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jan 24 13:44:23 2021 +0000"
      },
      "message": "Remove unused flag is_zygote flag from ImageSpace.\n\nBug: 169925964\nTest: cd art \u0026\u0026 mma\nChange-Id: I5f69a6d3fb3fe2fec5b32b0ae91c00ccbcabedf0\n"
    },
    {
      "commit": "4c796aad94ecf594d3e792da4e5d2424638791da",
      "tree": "466b796ded30a136713b7b2756e8fa6d5db6dafb",
      "parents": [
        "dd732cc38f57844bfcedc5687d4b66df7102f31f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 15 10:04:45 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 19 09:11:51 2021 +0000"
      },
      "message": "Rewrite class table construction in ImageWriter.\n\nMake sure that class tables in images are at maximum load\nfactor (full) and make that maximum load factor independent\nof runtime parameters. As we pre-allocate a class table\nbuffer of the right size in ImageWriter, we also avoid\nunnecessary resizing of the temporary class table.\n\nMake sure that app image class tables are deterministic.\nWe previously just copied the class table from the app class\nloader even though some entries may have been inserted there\nduring multi-threaded phases of the compilation, causing\nnon-deterministic contents based on insertion order.\n\nRemove obsolete comment related to patchoat relocations.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I605048b639f67a5ed4b03eb8888cbaafa9ba4091\n"
    },
    {
      "commit": "365f94f828ebd8aa5f55e3a3882f847960ed6bb5",
      "tree": "b9f8bac488e85093e203f8c079a13dd44a7c033d",
      "parents": [
        "923141b0faf9a0ea3b61bf0a507d95578b2b95e6"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 13 16:27:57 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 14 10:58:35 2021 +0000"
      },
      "message": "Minor updates to fd_file.h\n\n* Add a static IsOpenFd() method for checking if fd is open.\n* File::IsOpened() now checks when underlying FD is open (not just valid)\n* Centralize a definition for kInvalidFd in art projects.\n\nTest: art_libartbase_tests\nChange-Id: Ic5db8b6c80e184308c6ad8979ed31585120eb89f\n"
    },
    {
      "commit": "923141b0faf9a0ea3b61bf0a507d95578b2b95e6",
      "tree": "5af19bf1bd727291a7332743f2a7bb4cbf2f8e1c",
      "parents": [
        "3f2980f1b0fc22f3566e6759141994a8269912ba"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Aug 06 14:01:16 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 14 09:55:52 2021 +0000"
      },
      "message": "Add dex2oat validity check for output file open\n\nTest: manual with bad output path\nChange-Id: I607071b8cdfc93fb9b1a6abc81ca69eca094c295\n"
    },
    {
      "commit": "b52515830da6688524bfde8bb79f1fa781451cda",
      "tree": "6febcf8c2d27fe8775f257e0ff3c68097b55e71e",
      "parents": [
        "8ef84f233a55972eb3a3d84c11c1617531af8e92"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 10:19:28 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 12 17:19:13 2021 +0000"
      },
      "message": "lld is the only choice, and has been for a while.\n\nBug: http://b/148819762\nTest: treehugger\nChange-Id: Ie071c069da80666f79db49ae298cbf6e86cdd86f\n"
    },
    {
      "commit": "c3c4417c5362b301dc8602d47c860379919a2145",
      "tree": "137fb4a8dc9d759953582f9a270c01d0ea666be7",
      "parents": [
        "4ebb99c2ecdd64b2364a44c4925b76f4bfa5d293"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 10:03:39 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 12:08:47 2021 +0000"
      },
      "message": "Refactor code around the verifier.\n\n- For classes that are not resolved, we were doing verification but were\n  not recording the outcome - fix that.\n- Clear the verifier deps (for space reasons) only when a class is hard\n  fail or needs to be verified at runtime.\n\nTest: test.py\nBug: 176960283\nChange-Id: If19c0e6171ce945a6cd56ba4a42fbb8e2a5ccee7\n"
    },
    {
      "commit": "26de89604fdb6f7db3effcf775860f9f0dcd00f0",
      "tree": "2830f9340b2af2c7d5f3919a46a014f20ad04368",
      "parents": [
        "cea158fa671917938562c69c143ac5a8b2a29fc7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 14:36:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 15:46:20 2020 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in dex2oat.\n\nUse HashMap\u003c\u003e instead of std::unordered_map\u003c\u003e in ImageWriter\nas it is much faster thanks to avoiding individual nodes\nthat need malloc/free. However, for larger value types, such\nas `NativeObjectRelocation`, this can increase memory usage.\n\nAvoid storing individual ArtField relocations to reduce the\nmemory usage and re-hashing time. Rename `pointer_arrays_`\nto `method_pointer_arrays_` and change it to HashSet\u003c\u003e,\nremoving the unnecessary storage for `Bin`, as it has not\nbeen used for fields since\n    https://android-review.googlesource.com/162796 .\n\nAvoid double-lookups for insertion CHECK()s by using the\nresult of HashSet\u003c\u003e::insert(). Remove obsolete comments from\nthe HashSet\u003c\u003e::insert() API that have been wrong since\n    https://android-review.googlesource.com/1169846 .\n\nSimilary, use HashSet\u003c\u003e instead of std::unordered_set\u003c\u003e in\nCompilerDriver.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I538c3ac2ce8d7cad69bb14709702ac7ee0af810d\n"
    },
    {
      "commit": "5ff2393e1fb6e61fc74f20c66f80f4b8656987d1",
      "tree": "e94b8cfc92379678b4f2e6446aa6d28a6408222f",
      "parents": [
        "99459f3bdd8d569ec7054920cbc32e6915d1e125"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 11 18:26:14 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 14 19:00:35 2020 +0000"
      },
      "message": "Remove stripped-apk related logic from CLC\n\nStripped-apks are no longer supported by the runtime and\nthe current logic prevents bug fixes and code evolution.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: I30d5825e4f6453981ca9165bebafe67557c28b93\n"
    },
    {
      "commit": "1480f090379622ed0f4387714f71832711f5ae2a",
      "tree": "64d6d9be76538ed4419a5df975222db38cd45f8f",
      "parents": [
        "5e82b184ef51672df491374f81cd6a69b40a133c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 13:28:00 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 14 14:27:20 2020 +0000"
      },
      "message": "Move NotifyStartDex2oatCompilation earlier.\n\nOtherwise, the zip file gets closed.\n\nTest: log the fds before calling NotifyStartDex2oatCompilation, see that\nfor a speed-profile install, they are all different to -1.\n\nBug: 134558686\nChange-Id: I464cbd7076c20ce5689a903280be9648041b1dd5\n"
    },
    {
      "commit": "046cecfed5a4df1e180e3491ba7b566bf50a2026",
      "tree": "70a87fa85111b6eb4024a9f5d7d7b79d64b874a0",
      "parents": [
        "4462b11094614d0d536eac22b71e1c33030f2418"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 07 18:31:28 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 10 00:10:39 2020 +0000"
      },
      "message": "Do not accept vdex with dex sections from .dm files\n\nCheck that the input vdex does not contain dex files when it originates\nfrom dex metadata files.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: I5b104329af899ea62dc1779800264bad6b5424a4\n"
    },
    {
      "commit": "ce36b5f924283240a27fbaa520269b43e13ffd69",
      "tree": "fd47cfdf00452f975ae451f883c9c0e67eccc957",
      "parents": [
        "1f947b4dd13fe560a371fb5610ac619ef0546306"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 08 13:36:18 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 09 13:24:08 2020 +0000"
      },
      "message": "Keep a copy of the zip archive to report to Palette.\n\nOatWriter takes ownership of the fd and closes it in CloseSources.\n\nTest: test.py\nBug: 134558686\nChange-Id: I69c86bd99ee0d04c47ebd03c67f895efa893c66c\n"
    },
    {
      "commit": "33787687f52798fd5b584edb4c88717d134c367a",
      "tree": "d55000cc678080980e6f4dd99d4acbe032119408",
      "parents": [
        "858cfd81c4fddbc950f9be2e3599b15aabaa501a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jul 26 14:27:18 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 08 23:29:58 2020 +0000"
      },
      "message": "SDK-stub controlled dex2oat verification\n\nAllow dex2oat to further limit the resolved (boot classpath) symbols\nduring verification according to an additional list of public SDK files.\n\nThe additional SDKs can be specified as regular classpath (a list\nof dex files) and has the effect of limiting what can be resolved from\nthe boot classpath. The extra checks are performed by comparing the\nsymbol descriptors and do not replace common verification access-checks\nflow.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: Idc13722f34b591d7f858ebeb94bd6f568102b458\n"
    },
    {
      "commit": "858cfd81c4fddbc950f9be2e3599b15aabaa501a",
      "tree": "ec99cb338f91bdb5d7b6b2aafe14691634608786",
      "parents": [
        "5f1c452b6e4eab1d16ae3d37c895975285150c9d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 23 19:21:09 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 08 23:29:58 2020 +0000"
      },
      "message": "Move dex2oat invocation to common header\n\ndex2oat_test is becoming overly complex with a huge number of tests.\nIn order to reduce the complexity in preparation for new tests,\nmove the common dex2oat invocation to the shared header.\n\nTest: gtest\nBug: 112285035\nChange-Id: I741ef3e78f7eb4302d786feb53b5fd90b63dcf94\n"
    },
    {
      "commit": "86d6cd53385eae365f16f45e1a5947cc6595eb63",
      "tree": "ce94ee1f5d574b2891163f9b9695c97142efd00d",
      "parents": [
        "af17e5f33380ad39d83c31d97a29f3c836150fa1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 02 18:13:10 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 04 14:31:35 2020 +0000"
      },
      "message": "Remove DexCache arrays from image.\n\nRemove the hashtable storage from the image and allocate it at\nruntime instead (but keep the DexCache object in the image).\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nThe next step will be to make DexCache variable-size so it can\nadapt to both of the extremes (taking minimal amount of memory\nfor compiled code and avoiding cache evictions in interpreter).\n\nTest: test.py --host\nChange-Id: I9f89e8f19829b812cf85dea1a964259ed8b87f4d\n"
    },
    {
      "commit": "07b62e3d0808cc0890717a3a589c1f7b1ac51e5c",
      "tree": "d15c79302f3498278e9d22c6319e8e02a3087973",
      "parents": [
        "a07de551da5147f3635c665a31f262cf65647118"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 07 15:54:08 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 16 17:35:42 2020 +0000"
      },
      "message": "Change vdex format to easily access verification data per class.\n\nSee changes in vdex_file.h to see the changes in format.\nAlongside, remove the redefined_classes_ set, which is not needed now\nthat we record verification data per class.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: I7cc1e9ba465303f105cddec4ce86c4efaaed7e7b\n"
    },
    {
      "commit": "a07de551da5147f3635c665a31f262cf65647118",
      "tree": "d6f8199cc45ab8b6ef779f97ef0e8f0d04520ef8",
      "parents": [
        "4483d2a4ed7e6c018e304c234484940ec0476039"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Sun Nov 01 22:42:43 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 16 14:31:54 2020 +0000"
      },
      "message": "Revert^2 \"ART: Fix breaking changes from recent VIXL update.\"\n\nThis reverts commit eeaf47f7c9bbad29afab84a0f199a5751d9c616b.\n\nAlso fixes the gtest failure when VIXL simulator stack\nwas overflown.\n\nTest: test-art-target, test-art-host.\nTest: ART_USE_READ_BARRIER\u003dfalse \\\n      SANITIZE_HOST\u003daddress \\\n      ASAN_OPTIONS\u003d\u0027detect_leaks\u003d0\u0027 \\\n      SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue \\\n      ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\n\nChange-Id: Ibc1f21204940083879f767d6993127bdde8326af\n"
    },
    {
      "commit": "8411c5ddb824bae1d3202a3bc2e42c77d351e916",
      "tree": "dfac3f21998c8b7dad2971db355420dc58b057fc",
      "parents": [
        "e7f659f029e2625585fc7aac42e8688ca28fe5b2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 08:30:22 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:31:34 2020 +0000"
      },
      "message": "Record all type assignability checks in the verifier.\n\nWe used to only record at boot classpath boundaries. But due to making vdex\nverification per class at runtime, we now need to record all checks.\n\nThis means when before we would look at the superclass chain of an app\u0027s\nclass to find the one in the boot claspath, we now will encode the class directly.\n\nTest: test.py\nBug: 112676029\nChange-Id: I58a18ed13c2d3fdc41a37f56624cc4b24f58bf80\n"
    },
    {
      "commit": "1960c42c5df95f3011c020b07328d03716532037",
      "tree": "839c5085cc89586081bb20dc873fb549daf2bea0",
      "parents": [
        "85b125f4ac9c687e3bd217f9c6eab999be104c17"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 08:45:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 09:18:57 2020 +0000"
      },
      "message": "Change vdex format to store per-class assignable types.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6cd784381efb13a2c669ab77fe2c2b3e5da838f9\n"
    },
    {
      "commit": "eeaf47f7c9bbad29afab84a0f199a5751d9c616b",
      "tree": "3b1572bd8c3cd89dbe060b52d1760bd857e999ed",
      "parents": [
        "1f3612f93759823d630e117be5216f694e0702e9"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Oct 28 15:59:29 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 28 17:42:50 2020 +0000"
      },
      "message": "Revert \"ART: Fix breaking changes from recent VIXL update.\"\n\nRevert submission 1331125-VIXL_UPDATE_SVE\n\nReason for revert: broken build git_master-art-host/art-gtest-heap-poisoning @ 6936943\nReverted Changes:\nIc10af84a0:Merge remote-tracking branch \u0027aosp/upstream-master...\nI752a0b0ba:ART: Fix breaking changes from recent VIXL update....\n\nBug: 171879890\nChange-Id: Idb0d5c2e88948d799a4ef2c828be2828ea2270ea\n"
    },
    {
      "commit": "4955036617ff4940bd35fa8ce63f0728c1042902",
      "tree": "20ebe9c047b9ed5e21e99f2f0a00a3946fa731e8",
      "parents": [
        "036b0708c12a33469db4a5adde9ded152b5eb700"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jul 05 18:23:03 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 12:03:34 2020 +0000"
      },
      "message": "ART: Fix breaking changes from recent VIXL update.\n\nAlso fixes the vixl-related headers includes.\n\nTest: test-art-target, test-art-host\n\nChange-Id: I752a0b0baf741aa2a0693253155042104c8b3b27\n"
    },
    {
      "commit": "3e9abfc9779399815a7dc8d492466a1234b7fdcd",
      "tree": "fd1017f153d3759488914c4d372f543125722ad1",
      "parents": [
        "35b132e3377029a356cfbc9e4682e3ebceb83edf"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 09 22:17:51 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Oct 23 10:03:13 2020 +0000"
      },
      "message": "Rename ART release APEX to com.android.art.\n\nTest: Build \u0026 boot on AOSP master\nTest: `m` on AOSP master, flipping\n  PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD between true and false, and\n  check out/target/product/bonito/symbols/apex/com.android.art.\nTest: art/build/apex/runtests.sh\nTest: art/tools/buildbot-build.sh {--host,--target}\nTest: art/tools/run-gtests.sh\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --64 --optimizing\nTest: m build-art-target-golem\nBug: 169639321\nChange-Id: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\nMerged-In: Ic4bb8d6f9988ce99bba326b9c635bd3c01ed74ab\n"
    },
    {
      "commit": "938a0670d551d81d5f0710d0d565167b42227337",
      "tree": "dde8d8711384a1caf464c86f2c5944cbfdff61f8",
      "parents": [
        "5b041c05d6b73b73c43a425dc4ff3b784722c4a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 16:03:42 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:38:43 2020 +0100"
      },
      "message": "Remove the checkcast quickening optimization.\n\nQuickening is now disabled, and the optimization uses VerifierDeps\npost-verification, which we plan on not supporting for future verifier\nimprovements.\n\nTest: test.py\nBug: 112676029\nChange-Id: Ie9004b27c93e1189e6c1142494e79cd84b05400c\n"
    },
    {
      "commit": "5b041c05d6b73b73c43a425dc4ff3b784722c4a2",
      "tree": "0425b87cf343b8a45182c053d7e300623b64d419",
      "parents": [
        "8bea400eec977e433ad3453c5a21f74955afbc2a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 15:17:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 13:23:28 2020 +0000"
      },
      "message": "Remove unassignable_types from vdex.\n\nThese were used in case a class went from \"verified-at-runtime\" to\n\"verified\". With go/nterp, we\u0027re re not going to handle this situation\nand we should only record what types the verifier expects to be\nassignable.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6ffa61cef3aa767dfccadbdfdd5432e72e143ca3\n"
    },
    {
      "commit": "f50975ab491fa962e6e5ec4405fdb31591d51d96",
      "tree": "eb055d2d3128fd5c3f2950bb11e3996780e25b80",
      "parents": [
        "bd11057e44ab16a03c7c64d8ef46d0f6ca8d0c92"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 13:34:55 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 12:43:06 2020 +0000"
      },
      "message": "Reland \"Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\"\n\nThis reverts commit 7e9fc9d6d1622192f118bab771784eedfb66c60e.\n\nBug: 170086509\n\nBug: 170588354\nBug: 170589481\nBug: 170589988.\n\nReason for revert: TODO\n\nChange-Id: Ia1de625e90e4279b1cf0a584e5f0fbc8caa94efd\n"
    },
    {
      "commit": "eb9eb00868106af52386d7113a8aafaa6d44e8b6",
      "tree": "05b1243b30b31d6e2d3215ebdaa329c90d9875f8",
      "parents": [
        "5fa36f99fdb5617d1ced977c637dcaa2762704fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 13:54:19 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 17:01:09 2020 +0000"
      },
      "message": "Faster @CriticalNative for boot image.\n\nThe @CriticalNative call does not need the target method, so\nwe can avoid one instruction on x86, x86-64 and arm64. The\ncurrent approach for arm does not allow such optimization.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --64 --optimizing\nBug: 112189621\nChange-Id: I11b7e415be2697757cbb11c9cccf4058d1d72d7d\n"
    },
    {
      "commit": "6ebe40fce5927e3f40ec1d375590648d48d458f0",
      "tree": "677e3c908d87a92becbf23ecfbad6779852c2947",
      "parents": [
        "801f6a7b003659251bf2386febb0030f04697750"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 14 16:37:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 08:30:15 2020 +0000"
      },
      "message": "Remove field/method/class resolution metadata in vdex.\n\nThey can now be handled at runtime with access checks.\n\nBug: 112676029\nTest: test.py\nChange-Id: I08c838334fb0dc94e58fa24463f49633ef7989fc\n"
    },
    {
      "commit": "ae7168e19f886ed43ed200f9b0e769613df485f9",
      "tree": "0c7169d33b71d643957e1acdaffc0ff61d4526fb",
      "parents": [
        "5e8e5161e5f5a1e944f5bc6fd2ef893e0a33551b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Oct 09 15:13:29 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 15:42:21 2020 +0000"
      },
      "message": "Remove unused image space order argument\n\nBug: 160683548\nTest: Treehugger\nChange-Id: I249d2891b645fa103106ee946f014b9ce362cbda\n"
    },
    {
      "commit": "7e9fc9d6d1622192f118bab771784eedfb66c60e",
      "tree": "98c89934b8907d62ff5e97eda11f20d3d4e97b2d",
      "parents": [
        "384dae4c7e51c34e1fd047c6f58dde63e08ab6a3"
      ],
      "author": {
        "name": "Ming-Shin Lu",
        "email": "lumark@google.com",
        "time": "Mon Oct 12 03:36:52 2020 +0000"
      },
      "committer": {
        "name": "Ming-Shin Lu",
        "email": "lumark@google.com",
        "time": "Mon Oct 12 07:15:39 2020 +0000"
      },
      "message": "Revert \"Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\"\n\nThis reverts commit 4f0e8daf7ed79c0712c0fd927c8ad2c903c15773.\n\nReason for revert: Droidcop-triggered revert due to breakage https://android-build.googleplex.com/builds/tests/view?invocationId\u003dI69100006175866595\u0026testResultId\u003dTR93113908724113263, bug 170588354, bug 170589481, bug 170589988.\n\nChange-Id: If8f4396aa0db024ed5817a4fed61c13caf32f785\n"
    },
    {
      "commit": "4f0e8daf7ed79c0712c0fd927c8ad2c903c15773",
      "tree": "6838f8b413a444b711bdab8136826be07ab95f39",
      "parents": [
        "a79872b016ea95b6ec530ae1ac35f3c5b0d9997f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 09:34:13 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 08:07:17 2020 +0000"
      },
      "message": "Make \u0027quicken\u0027 an alias to \u0027verify\u0027.\n\nBug: 170086509\nTest: test.py\nChange-Id: I3267ddd51d36c35f23cb05e26dc1a1f062065d7f\n"
    },
    {
      "commit": "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa",
      "tree": "6e9bbf5ad71a55f701f740e2995e0b84e9b87307",
      "parents": [
        "7aa2bfc09541ea5d2516738de84c24cd0269fed0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:10:28 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:58:32 2020 +0000"
      },
      "message": "Faster access to unresolved classes from compiled code.\n\nAdd two new load kinds to LoadClass, similar to kBssEntry\nbut using the access-checking entrypoint on the slow-path.\nOne is used for classes that are in the literal package and\nthe other for classes outside the literal package of the\ncompiling class. Associate new .bss entries with these load\nkinds and update them from entrypoints based on the resolved\nclass properties. If the resolved class is public, both\ntypes of entries can be updated, otherwise only the package\nlocal entry can be updated and only if the defining class\nloader of the class is the same as the caller\u0027s defining\nclass loader (which is identical for all code in an oat\nfile) because the run time access check for same package\nrequires both class loader and literal package name match.\n\nTest: Additional tests in 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 161898207\nChange-Id: I281e06ac2825caf81c6d7ee3128af833abd39992\n"
    },
    {
      "commit": "199f2ecd9e8c915d93d365e12405f7d6a1d5d924",
      "tree": "5fb614ab9f1a9d3c4cc10d171177c49b36405aea",
      "parents": [
        "1d34c08cf005df789e72fa36dfbb99b5b9edda2c"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Sep 28 18:11:41 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 28 20:11:18 2020 +0000"
      },
      "message": "Add missing art_(debug_)defaults to dex2oat host static libs.\n\nThis fixes build breakage on mac since art_defaults disables darwin.\n\nBug: 169576709\nBug: 145934348\nTest: Build ART prebuilt SDK, set prefer:true on prebuilts and build\n  platform system image using prebuilts\nTest: Build and run out/soong/host/linux-x86/bin/dex2oat(d)\n  on linux\nTest: build/soong/soong_ui.bash --make-mode \\\n      TARGET_PRODUCT\u003dsdk TARGET_BUILD_VARIANT\u003duserdebug nothing\n  on mac\nChange-Id: Iabbfbfd98974b62157d85f84b651bdfef20a122e\n"
    }
  ],
  "next": "35f765b9c66a9d999d35afd54c693f8636d0a7ee"
}
