)]}'
{
  "log": [
    {
      "commit": "1ff9056b87705e251501ea4d19280a7e4fe2d009",
      "tree": "aefef09122429a3960d810033443c461f73b5023",
      "parents": [
        "c893d1597b2e653659e0bc73cc2640590d01e8b0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 16 14:37:42 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 21 14:27:16 2021 +0000"
      },
      "message": "Move metric reporting config to flags\n\nThis will enable us to enable periodic reporting according\nto the properties set in the device config.\n\nAs part of this CL, enable cmdline only flags for thing that\ndo not make sense to read from system properties.\n\nTest: gtest\nBug: 170149255\n\nChange-Id: I99bae25d89cf3a17906b4d3c671e5c63e9a3c180\n"
    },
    {
      "commit": "4ef36490afb1cfa6a29442c8d76938ec9fd9b9dc",
      "tree": "6c704a77c182cdca46e210f05c539c4723123056",
      "parents": [
        "d5abbb91247742d2bd8c4fc0adf60ad0512c0dfe"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 16 17:26:51 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 21 12:05:56 2021 +0000"
      },
      "message": "Fix missing nterp initializing when loading a class.\n\nFor instance methods, we were not setting the nterp entrypoint.\n\nTest: test.py\nChange-Id: If3c5e0d30120e50b98340e11ca576de219741990\n"
    },
    {
      "commit": "869746ef31936f09a93717ee1ef3960f8fb6dd69",
      "tree": "b7c534bc792b8128ee6d53089692e6b5477482c0",
      "parents": [
        "f5690ca22446968e6c28ebb06b1d7451e02e203d"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jun 14 14:13:14 2021 -0700"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 17 08:22:41 2021 +0000"
      },
      "message": "runtime: fix potential NULL dereferences\n\nif `found` or `ret` isn\u0027t found, one or both of them may be NULL. hence,\nwe shouldn\u0027t be unconditionally calling `-\u003ePrettyField()` here.\n\nBug: None\nTest: TreeHugger\nChange-Id: Ia40dd0e726d04945d3dedf5c2beb6dd2cff84c21\n"
    },
    {
      "commit": "f5690ca22446968e6c28ebb06b1d7451e02e203d",
      "tree": "1c52e247ff3a115cb0992d921df0229bcaca6b44",
      "parents": [
        "b3a4e01448a32b2dc53cad8a981ed7c75d12d2cc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 16 14:27:34 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 16 16:57:28 2021 +0000"
      },
      "message": "Reject a vdex file if its dex contents are out of date.\n\nThis will make sure the runtime doesn\u0027t think the APK optimization state\nis \"verify\", when at runtime we\u0027ll actually run from the APK\n\nTest: m\nBug: 191245631\nChange-Id: I46e056e52d1f7ff4a4ec8d952f325c54d9efad8f\n"
    },
    {
      "commit": "f667c33fc88356aa80d455430752719aaae57717",
      "tree": "ab752c06377a4db0855b307f8d9b806065820794",
      "parents": [
        "319333f6ea3408b8c99bd9c644f0f34b66fe31b8"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Thu May 27 11:35:44 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 16 16:52:52 2021 +0000"
      },
      "message": "Avoid opening BCP jars if the corresponding FDs exist\n\nWith -Xbootclasspathfds, we already have the FD available in the\nruntime. When loading a BCP oat, it also needs to check the\ncorresponding BCP jar. When the jar\u0027s FD is available, this change\navoids the open by path.\n\nBug: 187327262\nTest: odrefresh --force-compile  # success\nTest: strace  # no more open for such case\n\nChange-Id: I8c488254d9bf923a2e181f578c9ed167cd75335c\n"
    },
    {
      "commit": "ecaf7d1657d8e92697775d3979ff42c59e5cfc89",
      "tree": "e6bd3743161e513234b08cecf78531e2fe6ec372",
      "parents": [
        "7f21ebe84b726081874cd2bd3fc8dd1ea39aa2d8"
      ],
      "author": {
        "name": "Victor Hsieh",
        "email": "victorhsieh@google.com",
        "time": "Mon Jun 14 11:09:21 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 15 16:17:49 2021 +0000"
      },
      "message": "Fix double close in dex2oat when BCP is passed as FDs\n\nBug: 191052821\nTest: Modify odrefresh to pass BCP as FDs to dex2oat. Run w/ --force-compile.\n      # With thix fix, no longer seeing \"fdsan: double-close of file\n      descriptor 24 detected\"\n\nChange-Id: Iac09b06c8e7aa93114896632cdea6c610662455b\n"
    },
    {
      "commit": "0886d4e7e0243a02c081d6015de88e10f7eb79f5",
      "tree": "7ccd33cabb120ee814001975e8469cdd5cfe5bc9",
      "parents": [
        "40261171630159bfd46043c996be8521c453fee1"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 14 17:59:42 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 15 09:41:47 2021 +0000"
      },
      "message": "Revert \"Enable strict gcstress unwind checks.\"\n\nThis reverts commit 022f9e555bbad95b3e8699731ca5455151dfca8a.\n\nReason for revert: Strict unwind checks are breaking ART run-test\n`1963-add-to-dex-classloader-in-memory` in gcstress mode; disable\nthem until a proper fix is found for this test failure.\n\nTest: Run `1963-add-to-dex-classloader-in-memory` with gcstress\nBug: 190805741\nChange-Id: Ic9afab0e5f8571c75c8bde8270a7655a6343c35e\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": "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": "e300c4e4eabe3388b730efe35561e54f1c306710",
      "tree": "1866d5772e2c3643f30aa32b7bf0c02cec2e4c18",
      "parents": [
        "f761f5887918375b842e4cc62ed9cbe7521c8444"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 08 16:00:05 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 10 13:47:14 2021 +0000"
      },
      "message": "Faster Class::FindField().\n\nChange `Class::FindField()` to take dex cache and type index\narguments instead of strings and optimize it similarly to\n`Class::FindClassMethod()`, namely search by indexes when\npossible (except when searching interfaces where we only add\na TODO comment for now) and avoid `strlen()` calls for ASCII\nnames and type descriptors.\n\nUpdate `ClassLinker::FindResolvedFieldJLS()` to pass the new\narguments and replace all other `Class::FindField()` calls\nwith more direct calls as we know the classes where those\nfields are defined.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Iba798819043eb1b53b0dbc41ef8d7fd1c5d2164d\n"
    },
    {
      "commit": "094b1cfc9fa9e1c02238a2352c190be1746f5622",
      "tree": "2ce218587228aafd5cdaf3bd17ee2cecde484957",
      "parents": [
        "4f6bb446f8fbaa192f4e5b69734414c66d5e1bae"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jun 08 09:28:28 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 09 11:34:22 2021 +0000"
      },
      "message": "odrefresh: enable loading of system_server image files\n\nFix check in ValidateBootImageChecksum() to account for image files\nwith multiple components which exists for boot-framework when\ncompiling on device.\n\nUpdate logic for only_load_system_executable to be\nonly_load_trusted_executable and treat /system and the ART APEX data\ndirectory as trusted.\n\nAdd test to check .art,.odex,.vdex files derived from the\nsystem_server classpath are mapped when the ART module updates.\n\nAdd test to check .art,.oat,.vdex files for the boot class path\nextensions are present in the zygote processes.\n\nBug: 180949581\nTest: atest com.android.tests.odsign.OnDeviceSigningHostTest#verifyGeneratedArtifactsLoaded\nChange-Id: I3114fc6393402d8da2eb16ba756ab5fab713dc20\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": "beb9f2012587035a5c30d0eca8af458b2ad659b7",
      "tree": "ebc2509c9d3250d47e6e54c2c67f2f4bce74c80b",
      "parents": [
        "f31b75b2b80154112835c25bb0a21196453ac71a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 02 14:42:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 08 20:58:43 2021 +0000"
      },
      "message": "Consider the size of the reference profile when assessing IsFirstSave\n\nThis makes the detection logic for the first profile save much more\nprecise. It prevents the case where we would return true if\nthe data was already moved from the current profile to the reference\nprofile.\n\nAt the same time, rework part of the logic for early save. The checks\nneeded to be moved earlier to encompass the startup class resolution.\n\nTest: run-test \u0026 manual\nadb shell stop;\nadb shell setprop dalvik.vm.ps-min-save-period-ms 300;\nadb shell setprop dalvik.vm.extra-opts -verbose:profiler;\nadb shell start;\nadb shell cmd package compile com.android.systemui -r bg-dexopt\nrestart \u0026 check\n\nBug: 185979271\nChange-Id: Icfec30c6f49c8e03b03ff4bcbc2b869393fdcbfe\n"
    },
    {
      "commit": "4573be38b0fb938c1177b8aa474e980c64ab5587",
      "tree": "ac2a02e6e40c60c7b6bede1c863f376882deb594",
      "parents": [
        "b89e731029b61d66aa8c44f188bce48ec59a733e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 07 11:07:05 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 08 14:34:40 2021 +0000"
      },
      "message": "Faster Class::FindClassMethod().\n\nAvoid using `strlen()` on ASCII strings from DexFile.\nThis was a missed opportunity in\n    https://android-review.googlesource.com/963405 .\n\nAlso optimize iteration over declared methods of a class.\nLoad the dex file before the loop and avoid the runtime\nmethod check in `ArtMethod::GetMethodNameView()` by using\nthe `DexFile` interface directly.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I1ce3659b7f1fbcfc11d52626f9feb9be666d1161\n"
    },
    {
      "commit": "977abde30ffe7a8c9a108498468f00b279191497",
      "tree": "90f4f97e939609f6835b09d19cb14f5e434c0d9b",
      "parents": [
        "9ed2427971bcaf439afd12b8a1ec375ea78edd2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 07 14:29:05 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 08 11:21:26 2021 +0000"
      },
      "message": "Move code around in x86 assembly files.\n\nSo nterp x86 can use the helpers.\n\nTest: m\nBug: 112676029\nChange-Id: I570847e3e5ee0b49e951e05a118f8f4ec8753352\n"
    },
    {
      "commit": "04c9f3a978f3e219e7d407f08f4063b3fbb53907",
      "tree": "5360195b36cb3d2976fd1601b23441e534c6aac5",
      "parents": [
        "1e7faf706563593de8e9d47bb5ef366f68dce1a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 04 09:51:28 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 07 08:09:55 2021 +0000"
      },
      "message": "x86: Don\u0027t use the GOT to access art::Runtime::instance_.\n\nAnd also get the address of art_quick_instrumentation_exit\nwithout going through GOT.\n\nBecause ART is built with -fvisibility\u003dprotected, the\nlocation of these symbols can be statically resolved by the\nlinker, so there is no need to go via the GOT.\n\nAlso rewrite macros to avoid the __x86.get_pc_thunk.bx and\nuse a local `call +0` instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --32 --optimizing --interpreter\nBug: 112676029\nChange-Id: Ib63aa71518ab7c015626a99a0bbfc587032f4a76\n"
    },
    {
      "commit": "1e7faf706563593de8e9d47bb5ef366f68dce1a2",
      "tree": "4e65e4a59cc3cf95f82149f0fb417a4beba8e893",
      "parents": [
        "530552ac735c59a3ae44b16f751df265e820dad2"
      ],
      "author": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Thu May 27 13:05:22 2021 +0000"
      },
      "committer": {
        "name": "Sorin Basca",
        "email": "sorinbasca@google.com",
        "time": "Mon Jun 07 08:01:11 2021 +0000"
      },
      "message": "Use tinyxml2-based generated Apex Info List sources\n\nWe can reduce the size of odrefresh and runtime binaries by switching from\nlibxml2 to libtinyxml2. The dependency comes from the usage of the Apex Info\nList.\n\nSince the xsdc tool has been updated to have a new option, -t/--tinyxml, which\ngenerates the source files that use the libtinyxml2 API, we should use this\nfeature to gain the binary size advantage.\n\nSize of odrefresh when using libxml2: 444752\nSize of odrefresh when using libtinyxml2: 137724\n\nBug: 177209057\nTest: m\nChange-Id: I5c92d44f9ccbe94507a2dd8653814451ed10c645\n"
    },
    {
      "commit": "530552ac735c59a3ae44b16f751df265e820dad2",
      "tree": "2ca5654c5152df395af60811ceb0dc891e1137b7",
      "parents": [
        "bbc4dc3f98bdc2f984371b39ea5a96d85a3ab2a1"
      ],
      "author": {
        "name": "wangguibo",
        "email": "wangguibo@xiaomi.com",
        "time": "Sun Jun 06 09:26:07 2021 +0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun Jun 06 18:35:48 2021 +0000"
      },
      "message": "Fix DumpUnattachedThreads logic for CTS.\n\nThe thread should not be in thread list when dumping from\nDumpUnattachedThread.\n\nBug:140968481\nBug:188918448\nBug:188918454\nTest:CtsWindowManagerDeviceTestCases android.server.wm.AnrTests\n\nSigned-off-by: wangguibo \u003cwangguibo@xiaomi.com\u003e\nChange-Id: Icc4c7907c5386280c04d8e56496361e32cbac350\n"
    },
    {
      "commit": "09eacd9a5d982687b68031a884e4daaa11560f0c",
      "tree": "79a7fdac9c3330e850d05028cf95b3de6cb108a3",
      "parents": [
        "341be9e71c8dbb1f6e29e860336e8e4944d54c63"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 19 17:03:55 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 03 19:35:14 2021 +0000"
      },
      "message": "Setup ART experiments infra\n\nAdd a flexible class for ART Flags that can take their\nvalues from cmdline arguments, system properties or\ndevice config settings.\n(the flags concept is evolved from Eric\u0027s previous CL\n3dba023d4fb47882fa215715c196cfa3be30c098)\n\nPlumb the loading/re-loading of flags in the runtime\ninitialization and after forking from zygote (so that\nwe don\u0027t require restarts to refresh the flags).\n\nIf multiple values are given for the same flag the\nevaluation order is:\n1) device config (configurable from server side)\n2) system properties\n3) cmdline arguments\n4) the default value\n\nThe existing cmdline arguments are not migrated to the\nnew infra and will be done only on a per need basis.\n\nTest: gtest \u0026 manual\nBug: 181748174\nChange-Id: If3940393493af1052367d725a3f2aa94eee927c2\n"
    },
    {
      "commit": "341be9e71c8dbb1f6e29e860336e8e4944d54c63",
      "tree": "bf2ece6bb127d67143395be9caf70cecc8bdddd6",
      "parents": [
        "6031ec1e5d916c3537dbbacb14bc16c6fff4bf3c"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jun 02 18:21:35 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jun 03 18:29:57 2021 +0000"
      },
      "message": "Revert \"Do not sleep while waiting for GC\"\n\nThis reverts commit bcec38f7b7dc92d89ce9d49b8c1ba9afe87dab6b.\n\nIt thereby relands the missing piece of aosp/1690649 .\n\nReason for revert: b/189955496\n\nPS2 resolves conflicts with the recently added checking code,\nwhich should make this fail more conspicuously if we still have\nbugs in this area.\n\nBug: 189955496\nTest: Build and boot AOSP\nChange-Id: I239426d2e25791e68a41c211ba08bb99f1494185\n"
    },
    {
      "commit": "95313c5d14447ff5d75f51263bfd82fc6352dd72",
      "tree": "bfbeeb83a876b3ab754bee6d1bfb4c7c0ca193ad",
      "parents": [
        "6b60a36ad10110933e53e4094b784946baf991b8"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jun 02 14:07:56 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jun 03 04:31:18 2021 +0000"
      },
      "message": "Delete spurious gc_type assignment\n\nIt serves no apparent purpose and provides misinformation.\n\nBug: 189830999\nTest: Build and boot AOSP\nChange-Id: I96dd0c5ec93cc1db386b388123ec541a6617decc\n"
    },
    {
      "commit": "6b60a36ad10110933e53e4094b784946baf991b8",
      "tree": "6d46a2850e16e9676abeeabafb5270982ca3a2bc",
      "parents": [
        "8ef8ad5ab4f1510b0a7faa6d7c5db7e66b58f083"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri May 21 17:18:49 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 22:18:43 2021 +0000"
      },
      "message": "[metrics] Rename datum IDs\n\nThe new names make it clearer which ones are counters or histograms,\nand what the units are for each one.\n\nBug: 170149255\nTest: m\nMerged-In: Ia7477bd84111fc42108ddaa20b1e50c6ceaeed71\nChange-Id: I179e1b90e8a974eb2282f8f06853b4848cc33acc\n"
    },
    {
      "commit": "dd446b17bedb28838f5866f7c29fb47265f332fc",
      "tree": "452e7b258216b720a9407ab0255a01636f0135e6",
      "parents": [
        "20e77ff50047e62e90b3ce9b7849777ffcd55b0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 20 14:35:51 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 08:38:20 2021 +0000"
      },
      "message": "Collect array classes in profiles.\n\nCollect array classes including primitive array classes for\nboot class path profile. Do not exclude resolved erroneous\nclasses, they can still be useful as resolved even if the\nruntime intialization fails.\n\nOptimize the performance, especially the time we need to\nhold the mutator lock. Use that fact that most `ArtMethod`\nmembers can be queried without the mutator lock.\nRemove the GC critical section as it is unnecessary.\n\nTest: Collect a profile by manually running steps from\n      BootImageProfileTest#testSystemServerProfile,\n      pull and dump the profile and check that there are\n      many array classes, including \"[[[B\" and \"[[[I\".\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nBug: 148067697\nChange-Id: I76276d61551c16f532a0e34289bab4acb61b30c6\n"
    },
    {
      "commit": "20e77ff50047e62e90b3ce9b7849777ffcd55b0d",
      "tree": "8877f8f91f3d2cafefac601e62f169009a52f4ea",
      "parents": [
        "1d326f94a3fdd6292ccdf0022cedfb2a2b8acfee"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 26 21:00:46 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Jun 02 01:21:36 2021 +0000"
      },
      "message": "Ensure that ConcurrentGC always increments GC num\n\nConcurrentGC could end up waiting for a GC type like TrimSpaces()\nthat does not actually end up incrementing completed_gcs_.\nIt would erroneously think it was done, leaving gcs_requested_\n\u003e gcs_completed_, with no task running to perform the requested\nGCs, but further requests getting ignored until the next explicit\nor heap-overflow GC.\n\nMake ConcurrentGC() actually perform a GC unless the GC number\nwas incremented. Add a CHECK in ConcurrentGCTask::Run that can catch\nthis. (Confirmed because it did catch it before we added the fix.)\n\nHave RequestConcurrentGC() return a bool to indicate whether it\ndid anything. This makes another CHECK possible, and should\neventually allow us to again sleep() until a GC starts.\n\nBug: 186592536\nBug: 189150802\n\nTest: Build and boot AOSP\nChange-Id: Ib11734a9c87b9f9e19c5a3557eac9024f84cadf3\n"
    },
    {
      "commit": "1d326f94a3fdd6292ccdf0022cedfb2a2b8acfee",
      "tree": "17fde709095f46eff040585e694b621676e5d0c0",
      "parents": [
        "654f01cd509ca11eae22177d4e764f1241fb3a53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 09:26:55 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 01 12:50:50 2021 +0000"
      },
      "message": "Avoid race on Thread::tlsPtr_::top_handle_scope.\n\nRequire mutator lock for that field and update tests to hold\nthe mutator lock when needed. This prevents GC thread that\nexecutes a thread roots flip on behalf of suspended threads\nfrom racing against construction or destruction of handle\nscopes by those threads and possibly seeing invalid values.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 189439174\nChange-Id: I268a0ef6e5aa838347956febca0d3b6e02fe3ae5\n"
    },
    {
      "commit": "654f01cd509ca11eae22177d4e764f1241fb3a53",
      "tree": "d17db438be0691a5e4e6b4721b670530e336690e",
      "parents": [
        "028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 26 16:40:20 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 28 00:31:54 2021 +0000"
      },
      "message": "Fix lock visiting for synchronized native methods.\n\nThe `GetGenericJniSynchronizationObject()` function was used\nin the wrong context. As documented, it can be used only for\na method with a GenericJni frame and also on the top of the\nstack. When visiting locks, we can have a non-GenericJni\nmethod frame as well as a method deeper in the stack.\nReplace the wrong use with specialized code.\n\nTest: Added regression test to 178-app-image-native-methods\nTest: testrunner.py --host --debug --ndebug\nBug: 172332525\nBug: 189235039\nChange-Id: Ia26f0b980c04a766e31b1588a1c011bcf46c90d8\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": "e8efdaa09b7ff36d5a986f0320f29ac4a7563896",
      "tree": "5066cecab43006a7bf23f793aa911f74559c8017",
      "parents": [
        "ae553e0e1b26d95006aa27df4675104bfb55d49d"
      ],
      "author": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 26 17:33:54 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 27 19:28:16 2021 +0000"
      },
      "message": "Revert \"Remove stack protector from some interpreter functions\"\n\nA performance regression was noticed in go/lem banchmarks for ART.  This\nis likely caused by the no_stack_protector attribute preventing inlining\ninto hot functions.\n\nReason for revert: performance regression\nReverted Changes:\nIe0c81f97f:Remove stack protector from some interpreter funct...\nIaf565a374:Reset stack guard after fork from Zygote\n\nBug: 168258494\nChange-Id: I018d58759c3a5bb624ea8e7fe09b6b49c9b19b6a\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": "d196f661fae8473dedfd4b544c6873144202bc78",
      "tree": "86cfc190bd2a5e57a86e10f3ae5606643bb25c84",
      "parents": [
        "46bf0f2c4423bc6e7c59b228d5c4a17e4a4e6200"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Tue Apr 27 18:31:03 2021 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Wed May 26 00:26:18 2021 +0000"
      },
      "message": "Rename setters to conform Android API guidelines\n\nBug: 184654804\nTest: m droid\nChange-Id: I6ae5dd363bdb32cea6acd9dab7afbd4579fb0c4c\n"
    },
    {
      "commit": "abe7c69edb5ff8f9a4b8019d475caa2f35085aa7",
      "tree": "d8d86bf8c2264897eb9f7cf35be7c523f611688e",
      "parents": [
        "571a6bea24452e9b288106f379c7510c380a7f61"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 12 17:16:50 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Tue May 25 17:47:38 2021 +0000"
      },
      "message": "Remove stack protector from some interpreter functions\n\nThis CL removes stack protection from several functions in the\ninterpreter to allow us to re-set the stack protector cookie when new\nprocesses fork from any of the zygotes.\n\nTest: boot\nTest: atest KeyboardVisibilityControlTest\nBug: 168258494\nChange-Id: Ie0c81f97fedfcdde7afc1b6b4befa65524724194\n"
    },
    {
      "commit": "9d27fbc8ced914f4726187920a7794b07eca3e71",
      "tree": "0fd6eb99d0766ac78513d650d629f217273ab294",
      "parents": [
        "e3124d26d725a2b042b4409abfb30a39bb76794d"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri May 21 09:23:38 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue May 25 16:34:18 2021 +0000"
      },
      "message": "Improve suspension timeout diagnostic and fix race\n\nFix a data race on state_and_flags. Since the access was volatile\nand there are system calls in the loop, this is extremely unlikey\nto have casused the bug here, but ...\n\nSo, assuming this is still broken, produce more informative\noutput once we time out.\n\nRemove unused argument from SuspendThreadByPeer(). It made the\nlogic more complicated and made it harder to reason about\ncorrectness.\n\nRemove dead code after LOG(FATAL, ...)\n\nBug: 181778559\nTest: TreeHugger, temporarily paste log message into hotter path.\nChange-Id: I6f3455925b3a3f4726a870150aeb54ea60a38d67\n"
    },
    {
      "commit": "3156695aa5a69e3ca27b5befcaf0934e7e62e9fb",
      "tree": "64977ebf92e992ce978cd1d5a4e378a12463522b",
      "parents": [
        "61ffd049d8d6946ba52884a8f679dde0e3a6654d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 17 11:56:40 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 24 23:22:57 2021 +0000"
      },
      "message": "Enable ProfileSaver to have a different delay for the first ever save\n\nThe runtime now supports -Xps-first-save-ms, which when configured\nmay alter the delay for the first ever profile save. Subsequent\nsaves will proceed based on the existing -Xps-min-save-period-ms.\n\nThe first ever save is an approximation, and computed by checking\nthe profiles size.\n\nTest: gtest \u0026 manual\nBug: 185979271\nChange-Id: I7119b9d2b8829653046565426090c89f6a619a27\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": "f3e67db05f3551d2a12c3c71ab2432d31b390c06",
      "tree": "ca4ca10141ce9e602c4b5b1850c0293b6b845946",
      "parents": [
        "ca15b8d4b05e374569fd98599b5c395b4aa655c7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 19 13:58:45 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 20 22:34:20 2021 +0000"
      },
      "message": "Reduce excessive gcstress mode logging.\n\nIncrease the default log thresholds by 10x in gcstress mode\nto silence most logging (but still log pathological cases).\n\nOn the other hand, still log at least one GC per 10 seconds,\nso that we preserve some informational value and progress.\nFurthermore, the sampling is biased to reporting expensive GCs.\n\nBug: 170871390\nTest: jdwp tests in gcstress mode.\nChange-Id: I1747f0af3dcf313d9eb1a657bdfb8e0802f74993\n"
    },
    {
      "commit": "3ddf4d4916fdb7bc3157aa375fb1d670f4cf80bb",
      "tree": "45d67decea87e2f47339250a1bc6c253855d977a",
      "parents": [
        "06fb7fa55cca3210f38c92ac7cc7ad525ff30c83"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 11 10:19:28 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 20 21:45:57 2021 +0000"
      },
      "message": "Update registerAppInfo signatures to accomodate more data.\n\nTest: m\nBug: 182793486\nBug: 185979271\nChange-Id: Ib92327e39bad5914d48ae8a37dd4b5092c5e1407\n"
    },
    {
      "commit": "26e9e75dc4ef6fbe863651e29aaaeff00edcdf92",
      "tree": "90189425907c2fd8642470a71d65d59a1bb70e7e",
      "parents": [
        "1dc77abf87d303a8f4aa35148c57f7ab20832222"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue May 18 04:16:06 2021 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed May 19 16:34:14 2021 +0000"
      },
      "message": "Improve OOME log message informing OOME before heap full\n\nWe throw OOME when \u003c1% of the heap is free after GC. We should improve\nthe corresponding log message to clarify why we throw OOME even when\nallocation size is \u003c largest contiguous chunk.\n\nTest: art/test/testrunner/testrunner.py\nBug: 188465700\nChange-Id: I71bf744a3966271ba31f336f7ceb58c848105df7\n"
    },
    {
      "commit": "c07e873ddb17620c18420cf2bfcf76b1978dc291",
      "tree": "40b9fd5f950c3cf3b6e28b9480148bae6e4d8be9",
      "parents": [
        "826e6667c4d543c5c75a4a87d7cceb43f72078d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 18 14:26:42 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 19 08:41:42 2021 +0000"
      },
      "message": "Use odex_location instead of oat_file-\u003eGetLocation.\n\noat_file might be null at this point.\n\nTest: m\nBug: 177175508\nBug: 183824895\nChange-Id: I945b8a3053ff2ea1967758a621b7e88c3de1f222\n"
    },
    {
      "commit": "07ff2833c7425cef87abad3e21b3f884597dc58c",
      "tree": "a7ab412fa286c7af891aa438b187b6bf9f9f907b",
      "parents": [
        "ca7de40e2d0f1f5c3c29aec2899f6fbe8d7217f3"
      ],
      "author": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue Aug 25 10:43:12 2020 -0700"
      },
      "committer": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue May 18 21:23:45 2021 +0000"
      },
      "message": "Compile libart.so and libart-compiler.so with 2MB section alignment.\n\nAdds the appropriate linker flags for libart and libart-compiler to have\n2MB section alignment. This allows the executable segment of these\nlibraries to be backed by transparent hugepages on supporting systems.\n\nBug: 158135888\nTest: Verified ELF format\n\nChange-Id: Ia6455418cf1fdd3a1a98d662bf381db4b58b8536\n"
    },
    {
      "commit": "c3632b1aab9fa47a0193b200b61bbc9ff1374fb6",
      "tree": "de8984b47580239c095a8104a1791a0345d935b4",
      "parents": [
        "7414ec29f15bf9c5c8ad5af5ce45b3f5fc41ce80"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 17 15:18:14 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue May 18 15:47:31 2021 +0000"
      },
      "message": "Avoid timeout with \u003e\u003d 1 billion nsecs\n\nRegistering a timeout of \u003e\u003d 1000 msecs produced an error message,\nbut still resulted in a system call with timeout nsecs \u003e\u003d 1 billion,\nwhich would cause an error return from the system call and a crash.\n\nAvoid this by restricting timeouts to the maximum. Also enforce\nminimum for symmetry.\n\nBug: 140968481\nTest: TreeHugger\nChange-Id: I191fb88a03bf09d2c5a93864bb26624c10b6e52d\n"
    },
    {
      "commit": "7414ec29f15bf9c5c8ad5af5ce45b3f5fc41ce80",
      "tree": "90409c332610a466ffeaa6fee1574ba1f824e4db",
      "parents": [
        "0d290721a8d63d5e0d38a64d3ecf922a91becb10"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu May 13 17:18:34 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 17 21:40:35 2021 +0000"
      },
      "message": "[metrics] Add prebuilt and cmdline compilation reason\n\nTest: manual\nBug: 188104237\nChange-Id: I91cb31ddd178230bc435672b6a657cd9eb572c31\n"
    },
    {
      "commit": "0d290721a8d63d5e0d38a64d3ecf922a91becb10",
      "tree": "02daf3bb3ae703da0a9b99a307f8bbfb2c03c748",
      "parents": [
        "c63d9672264e894d8d409e8d582b4e086b26abca"
      ],
      "author": {
        "name": "wangguibo",
        "email": "wangguibo@xiaomi.com",
        "time": "Sat Apr 24 11:27:06 2021 +0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 17 18:19:16 2021 +0000"
      },
      "message": "Dump java backtrace when contending lock too long time.\n\nIt’s easy to cause a problem when execute time-consuming work inside\na synchronized method/block. Previously, we use \"dvm_lock_sample\" in\nevent log to help us look into.\n\nBut it\u0027s always after the event, \"dvm_lock_sample\" is printed after the\nowner thread exited the critical section, we don\u0027t know more details\nthat which statement get stuck or more time-consuming.\n\nThis implementation provides a lot more information about what the\ncontending thread is doing. when a thread contend for a long time,\nwe will print backtrack which thread holding the lock.\nMaybe many threads waiting this lock, those threads will request\nprinting backtrack many times, which is helpful for finding and\nlocating problems.\n\nThis mechanism is only suitable for very long wait times, not lots of\nshort wait times.\nThis feature is heavyweight, it\u0027s not enabled by default. we can\nturn on by \"-XX:MonitorTimeoutEnable\" in AndroidRuntime::startVm.\n\nBug:140968481\nTest: Manually check contention log messages.\n\nSigned-off-by: wangguibo \u003cwangguibo@xiaomi.com\u003e\nChange-Id: I29784d11355ae3c581723254848a87cd80e71456\n"
    },
    {
      "commit": "c63d9672264e894d8d409e8d582b4e086b26abca",
      "tree": "1e285cbab4c71aea3c8c37b4e4c5e8241a3ce117",
      "parents": [
        "0bf5b6729be507f1e78fc61f17554393dd978e46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 15:50:39 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 17 13:42:11 2021 +0000"
      },
      "message": "Rewrite profile file format.\n\nThe new format contains one mandatory section and several\noptional sections. This allows extending the profile with\nnew sections that shall be ignored by old versions of ART.\n\nWe add an \"extra descriptors\" section to support class\nreferences without a `dex::TypeId` in the referencing dex\nfile. Type indexes between the dex file\u0027s `NumTypeIds()`\nand `DexFile::kDexNoIndex16` are used to index these extra\ndescriptors. This prepares for collecting array classes\nwhich shall be tied to the element type\u0027s dex file even\nwhen the array type is not needed by that dex file and has\nbeen used only from another dex file. It also allows inline\ncaches to be self-contained, so we can remove the profile\nindex from data structures and serialized data.\n\nThe creation of the the binary profile from text files is\nupdated to correctly allow array types to be stored as the\nprofiled classes using the \"extra descriptors\". However,\nthe interface for filling in inline caches remains unchanged\nfor now, so we require a `TypeId` in one of the processed\ndex files. The data collection by JIT has not been updated.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nTest: boots.\nTest: atest BootImageProfileTest\nBug: 148067697\nChange-Id: Idd5f709bdc0ab4a3c7480d69d1dfac72d6e818fc\n"
    },
    {
      "commit": "a6cb451f4a14a9102f941c7c795e9cbe729ee359",
      "tree": "5012f39bd273086036ede25acb015c7e33907ede",
      "parents": [
        "93c28ed5e8303eed09d6286725029a21293d3f56"
      ],
      "author": {
        "name": "Wessam Hassanein",
        "email": "wessam@google.com",
        "time": "Tue May 11 18:26:33 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 14 18:21:18 2021 +0000"
      },
      "message": "Add Java Heap Profiler sampling to large space allocations.\n\nThis cl adds both large space and non-movable allocations.\n\nTest: Passing Tests\nLocal Testing\n\nBug: 160214819\nChange-Id: Ice8950c12bd0ef8d765da21aeb2cc294850b2a07\n"
    },
    {
      "commit": "93c28ed5e8303eed09d6286725029a21293d3f56",
      "tree": "2194b6025407b02be2f87e2e2b597dd7ad0660e7",
      "parents": [
        "2ef367acf3f95ee4c0459b73c3b18613cfa7d74d"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 14:11:42 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 14 17:51:59 2021 +0000"
      },
      "message": "Use the system namespace to get the right permitted paths for loading OAT files.\n\nThe ART namespace doesn\u0027t permit e.g. /product/apps, and there may be\nother locations too that need to be configurable from the system linker\nconfig.\n\nTest: Boot\nBug: 188078687\nBug: 130340935\nChange-Id: Id23c45dec6aef8379b125d70f2a47289f34c5a3a\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": "8ffaef9fbd1dc5194dbdcd3405360f8eb1e47a9e",
      "tree": "b73775bad6edbc0884225f40246aee72a2f18e76",
      "parents": [
        "022f9e555bbad95b3e8699731ca5455151dfca8a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 12:51:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 14 08:22:44 2021 +0000"
      },
      "message": "Remove BUILDING_LIBART macro.\n\nIt has been used only to prevent including the libart header\n`runtime_asm_entrypoints.h` when compiling other targets.\nInstead make symbols in that header hidden so that using\nthem from other targets shall yield a link time error. (This\nis somewhat pointless because the header defines only inline\nfunctions but the actual entrypoint symbols defined in\nassembly are already hidden anyway.)\n\nThis change adds the symbol visibility macros `HIDDEN` and\n`EXPORT` which were originally included in the reverted CL\n    https://android-review.googlesource.com/1137699 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 186902856\nChange-Id: Ia9fed6b3f49d7356888d702f4ad3bb48e5884793\n"
    },
    {
      "commit": "022f9e555bbad95b3e8699731ca5455151dfca8a",
      "tree": "fd95ab4e9f2234f31c396401e9f116b2251b5e72",
      "parents": [
        "ec06809b9fb7d4a0d2c3e46066bd37034130e53b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 12 16:46:50 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 14 07:56:47 2021 +0000"
      },
      "message": "Enable strict gcstress unwind checks.\n\nReport if we fail to unwind during the gcstress tests.\n\nI have fixed several races and ART unwind issues recently.\n\nThis CL might need to be reverted if I missed anything.\n\nTest: test.py -r --gcstress --target --ndebug\nChange-Id: Ib4de7451bab959be310b4e4a2cb3e448c6e73caa\n"
    },
    {
      "commit": "ec06809b9fb7d4a0d2c3e46066bd37034130e53b",
      "tree": "c3a69b142e38d249a01ed425cde23caa78c1d36c",
      "parents": [
        "1651c6050d913fb38ebd293df9da6d189eb3851d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 17:28:32 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 07:38:39 2021 +0000"
      },
      "message": "Reland \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 39d4df62d4e2606073d05cc363370db825ad7b9f.\n\nReason for revert: fix JIT-zygote issue.\n\nTest: JIT zygote boots.\n\nChange-Id: I895ad8e59e472fb662ca9bc5394c2fd9c6babc74\n"
    },
    {
      "commit": "8e270af0b0c1244c5c0ece4fe99116e4156144a3",
      "tree": "d6d7c5166eaba17bb9af9c0c1cb0535a0445384e",
      "parents": [
        "2b527c4f8641f42e6ec917a63614d50d3c4e8821"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 12 16:40:58 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 13 17:44:26 2021 +0000"
      },
      "message": "Stricter gcstress unwind checks.\n\nDon\u0027t retry the unwind unconditionally, it masks race issues.\nRetry only if missing proc mmaps are likely cause of the failure.\n\nFail on most unwind errors.\n\nStricter instrumentation exit pc check.\n\nTest: test.py -r --gcstress --target --ndebug\nChange-Id: Idbed80416279717792160fa4531f196d11e909db\n"
    },
    {
      "commit": "3606cc69f5975d7ae81044a51706a6896d148781",
      "tree": "6cb682d7bb8ec086c43caf873b3c854181806be9",
      "parents": [
        "0da7dfc71506d1f6bfa93f0c5fdb33df49dea0e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 10:29:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 13 14:25:56 2021 +0000"
      },
      "message": "Do not try to do OSR in transactional interpreter.\n\nTest: testrunner.py --host --optimizing --jit\nBug: 175869411\nBug: 181943478\nChange-Id: I005c532c23d34c16a8b6bd2f7dd464f9ef2a2b75\n"
    },
    {
      "commit": "b1db5a110d312c5a51a52f7f6bc870f9205b6ff8",
      "tree": "9ab0ca4cc92dda3b9ebcbaf32583463e0f25ea86",
      "parents": [
        "f7f97d2c3e847e68f87490e110e192dd587572bb"
      ],
      "author": {
        "name": "Sekyeong Heo",
        "email": "sekyeong.heo@samsung.com",
        "time": "Tue Dec 22 19:38:28 2020 +0900"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 13 08:39:27 2021 +0000"
      },
      "message": "[art] Add GetObjectsAllocated and TotalTimeWaitingForGc APIs\n\nIt\u0027s difficult to analyze sluggish issue due to excessive GC.\nSo, I would like to add APIs for GC status check.\n\nGetObjectsAllocated : return count of allocated objects.\n how to use : Debug.getRuntimeStat(\"art.gc.objects-allocated)\nTotalTimeWaitingForGc : return total waiting time for GC.\n how to use : Debug.getRuntimeStat(\"art.gc.total-time-waiting-for-gc\")\n\nThis must be submitted with the libcore code.\n\nTest: check value using Debug.getRuntimeStat()\n\nChange-Id: I2e865957ddb7e8cb5ac955e65a18d2aaffe4c672\n"
    },
    {
      "commit": "f7f97d2c3e847e68f87490e110e192dd587572bb",
      "tree": "73fa70ebc77fab74eceefd3d477148efccdb38ec",
      "parents": [
        "81a6bd5a05ee3b2bb87ec4a0b471198dbbef3ce3"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 22 21:21:58 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 12 18:52:47 2021 +0000"
      },
      "message": "Avoid invalidating kInstrumented via suspension\n\nMake sure we no longer trust kInstrumented after executing allocation\ncode that may suspend.\n\nDon\u0027t just switch to the new normal allocator if we were originally\nasked for a nonmoving allocation.\n\nDocument the convention we need to enforce.\n\nTest: Build and boot AOSP.\nBug: 187958881\nChange-Id: Ife722082e87f85e907bfed3f5371865a5642157f\n"
    },
    {
      "commit": "81a6bd5a05ee3b2bb87ec4a0b471198dbbef3ce3",
      "tree": "e216bc4c698c259cfcfdac2d2f42ae3296955bfb",
      "parents": [
        "36138acc671d7781840bc209033994fd34fbd0e7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 09 22:03:07 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 12 18:06:20 2021 +0000"
      },
      "message": "Fix unwinding for art_quick_generic_jni_trampoline\n\nDELIVER_PENDING_EXCEPTION spills LR which is unused/garbage.\nThis breaks backtraces when the unwinder tries to follow it.\n\nAdd trivial call so that the LR is initialized.\n(spills at the start of method are expected and working)\n\nBug: 187632012\nTest: test.py -r --gcstress --all-run -t 1927 -t 178\nChange-Id: I151aa7595f9fd90169402187066a04efba5d54c9\n"
    },
    {
      "commit": "9a5a2b817c53fe86b0ebbc9390a97e7c5acbb44e",
      "tree": "7f2c1532f1ba6317bdad718eb833125eed677d32",
      "parents": [
        "9d00bf1e0a9441153e69ea26c4cf111690a6e6a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 09 21:37:02 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 10 11:02:01 2021 +0000"
      },
      "message": "Fix debug symbol for art_quick_throw_null_pointer_exception_from_signal\n\nMake sure the end and start symbol names match.\n\nTest: Fixes broken backtraces during gcstress\nChange-Id: I1fa57a94fba4f74cd56975f0e2adcd4e72972e3d\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": "bcec38f7b7dc92d89ce9d49b8c1ba9afe87dab6b",
      "tree": "672ac33f3e719b67f4eb29525c5620fdd186305d",
      "parents": [
        "c256028e1fb92b47c741db67b6bc8ca6995e6c1b"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri May 07 17:34:51 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun May 09 18:33:57 2021 +0000"
      },
      "message": "Do not sleep while waiting for GC\n\nThis is a partial revert of aosp/1690649. It backs out the\naddition of the wait loop in CheckGCForNative().\n\nWe can apparently still encounter cases in which we sleep for a\nnonexistent GC.\n\nTest: Build and boot AOSP\nBug: 187531176\nBug: 186592536\nChange-Id: Icaf75ae3582ea51eecf9fe4b81e629bc1d862788\n"
    },
    {
      "commit": "6958df93f8cb3d82bddadbabb5ed94b3b63a7f14",
      "tree": "6f2e721a55f717fe769392d4f814ea40b4c77e66",
      "parents": [
        "30cf977ce14391bde90aa25633bc852796101dee"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 07 17:40:34 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat May 08 20:30:46 2021 +0000"
      },
      "message": "Use cached memory for gcstress unwinds.\n\nChris added faster memory recently which does page-based caching.\n\nChange-Id: I94f3baf48bef107a1994d03de47909e9a5433e83\n"
    },
    {
      "commit": "39d4df62d4e2606073d05cc363370db825ad7b9f",
      "tree": "8e4cf0ac432406081d11e9102981446498b3265b",
      "parents": [
        "a28c827fdb58ec489931d6e70e27818619bc1b75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 12:22:47 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 07 14:41:25 2021 +0000"
      },
      "message": "Revert \"Devirtualize to HInvokeStaticOrDirect.\"\n\nThis reverts commit 5024ddfd125b5c3b59d7f359ae33cf7f0255b048.\n\nBug: 187408838\n\nReason for revert: b/187408838\n\nChange-Id: If74f5ddbacc73296f66c55762e2a8d1ec2cd1f19\n"
    },
    {
      "commit": "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": "6e1b7d85d9b86971885d13a464482e9f42870709",
      "tree": "bd1eb101c3f2d97565c1e1085cc72020ffe4f654",
      "parents": [
        "0877daf3a4c81a3b7508851b751d3e4a4cd1d7aa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 06 09:58:46 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 06 20:31:01 2021 +0000"
      },
      "message": "Add heterogenous lookup to Thread::custom_tls_\n\nThis avoids needing to allocate strings when performing lookups.\n\nTest: ./test.py --host\nBug: 135266723\nChange-Id: I4eb4d890816ed25199077ab017723078a531e09e\n"
    },
    {
      "commit": "0877daf3a4c81a3b7508851b751d3e4a4cd1d7aa",
      "tree": "45e3289b790068dbfc8fe948355b53d5741ab604",
      "parents": [
        "7a147a05dcaadb69fb2619cc6161acbd0114cfed"
      ],
      "author": {
        "name": "Wessam Hassanein",
        "email": "wessam@google.com",
        "time": "Thu Apr 29 23:53:14 2021 -0700"
      },
      "committer": {
        "name": "Wessam Hassanein",
        "email": "wessam@google.com",
        "time": "Thu May 06 17:46:13 2021 +0000"
      },
      "message": "Avoid the warning heapprofd_client_api.so does not include an\ninitialization function.\nSince heapprofd_client_api.so is not an ART plugin change the code to\nremove that and cleanup.\n\nTest: Passing Tests\nLocal Testing\nBug: 183123789\n\nChange-Id: I60ae00d7628a4b54664dbd27b50624e358928095\n"
    },
    {
      "commit": "5024ddfd125b5c3b59d7f359ae33cf7f0255b048",
      "tree": "b625ed5aa1c4976e4cd2de5732543d5d1eb34a0f",
      "parents": [
        "5859b689d4fdd36711187715c04e2e095f7975c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 28 14:42:09 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 06 10:37:17 2021 +0000"
      },
      "message": "Devirtualize to HInvokeStaticOrDirect.\n\nWhen we statically know the target method, devirtualize an\nHInvokeInterface or an HInvokeVirtual to a HInvokeStaticOrDirect.\n\nTest: test.py\nBug: 182538502\nChange-Id: Ie3a58603cde300fca9ca4972d4dfbbd20918f5ba\n"
    },
    {
      "commit": "5859b689d4fdd36711187715c04e2e095f7975c0",
      "tree": "84b374c23e07024935ee899b9a34916168d93228",
      "parents": [
        "68dc4a524c00958cf4f11fc687eabf4c677cde69"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 05 12:34:56 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 06 09:24:35 2021 +0000"
      },
      "message": "Clean up `ResetOffset()` calls in profile tests.\n\nMost are unnecessary since\n    https://android-review.googlesource.com/1685637\nand we remove a few more by using `PreadFully()` instead\nof `ReadFully()`.\n\nTest: m test-art-host-gtest\nBug: 148067697\nChange-Id: Ia654f4519ea9ca91f9a5ca26af55899ccdf4bb78\n"
    },
    {
      "commit": "107d22b9c7a97275e62bb5a97eb871713cfa0616",
      "tree": "356b800329a1c39a5e117bea3a0e1db7c94383e4",
      "parents": [
        "17c50188958aded77367ae9c9ad649a90ff26d6c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 04 10:57:36 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 05 10:44:32 2021 +0000"
      },
      "message": "Handle potential race in oat file loading.\n\nIt could be that the oat file we\u0027re trying to load non-executable is not\nthere anymore.\n\nTest: test.py\nBug: 177175508\nChange-Id: Ic7240d09604d1d967a575c72244f28f36c8ad3b5\n"
    },
    {
      "commit": "8078996ff904d3038f774c6c355796cfa42d67b2",
      "tree": "a8e5659963b3b558b46c19d9de9e9947b0cd48df",
      "parents": [
        "e059ef1ca72c1750f104194d6333931ee62120a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 30 16:50:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 05 07:42:38 2021 +0000"
      },
      "message": "Handle a potential race when verifying dex files in the background.\n\nIn case the runtime has verified a class already, explicitly still\nperform another verification in order to get the verifier_deps\npopulated.\n\nTest: test.py\nChange-Id: I17dcec9545dab1b0cae170b584cd091f00145344\n"
    },
    {
      "commit": "d808f69a57bef8c2405da2fb07fc2f8dc9c09d10",
      "tree": "8fdbb9c49fa5c26c53e9a763b22e0733f0484d3c",
      "parents": [
        "807de1ed238c706ed781301cb6a764c7a2c348f4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat May 01 11:09:04 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 04 10:51:35 2021 +0000"
      },
      "message": "string_view: handle with care.\n\nDon\u0027t create temporary std::strings in InitializeApexVersions as we\u0027re\nusing string_view of these strings in maps.\n\nTest: test.py, asan build\nBug: 186883886\nChange-Id: I6129dee4a06db3cf2bd73157da5b40b67704cbfb\n"
    },
    {
      "commit": "5c4d0df0ee900a174b6c582cc1e918596f19db36",
      "tree": "954464e0858156fafea09791528f21c99d062404",
      "parents": [
        "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 16:16:39 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 30 21:12:17 2021 +0000"
      },
      "message": "Revert^2 \"Solidify GC triggering and reporting\"\n\nPS1 is identical to aosp/1626960 and a straight revert of aosp/1689119 .\n\nChanges in PS2:\n\nAdds aosp/1690271 (abandoned)\n\nDon\u0027t wait for nonexistent GC\n\nMake sure that when we request a concurrent GC, it will eventually\nincrement the GC count. Test the GC count correctly.\n\nDon\u0027t sleep quite as many times to reduce damage in case we still got\nsomething wrong.\n\nBug: 186592536\nBug: 181351667\n\nTest: Build and boot AOSP with kStopForNativeFactor set to 1.0.\n\nChange-Id: I0c53ec9ad91691e59427a008af3b21834ee84978\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": "0bc9beff1d9a15c864c06de386b5b004afb3bb69",
      "tree": "ef5d94b688ab1434e445c7fa095b41b5823cde25",
      "parents": [
        "891ec2cb03c8d9ca4ec355b749e0eb69a1f5307d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Apr 28 15:52:33 2021 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Apr 29 18:36:55 2021 +0000"
      },
      "message": "Allow apps to be profileable by trusted system services.\n\nBug: 170284829\nChange-Id: Ie5dc3669bc8e7ce545484b1ec55e29fe137cf7e4\n"
    },
    {
      "commit": "afff75850413713ca3bff3eb78193a3a8ecbd277",
      "tree": "bbf7b4864b7f424a492f5e36331fad60e8088211",
      "parents": [
        "c86345c61fa4d74471a04a682284ce29354c329b"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Apr 28 23:11:30 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 14:21:02 2021 +0000"
      },
      "message": "Revert \"Solidify GC triggering and reporting\"\n\nThis reverts commit 6d5a49c9b0f26a21316577683f282cf3bef492e3.\n\nReason for revert: Probably causes occasional severe jank. b/186592536.\n\nChange-Id: I76d816b1e4c71569e195366088047d5a2a0aa8c1\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": "1dab575cd635706f03d510763cb4ea1b115a2cee",
      "tree": "cc885f34c0c4c139e9095ee840e3936662243581",
      "parents": [
        "854725b10087bfe86b5a794093e88786ff7b9f28"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 15:41:33 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 28 08:11:45 2021 +0000"
      },
      "message": "Remove some dead code around ClassTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 175869411\nChange-Id: Ifb3ac102129470aff6eb228e5523b240c113818f\n"
    },
    {
      "commit": "baf563dc6f17075583cc5dbffcf9a27e28d5ed17",
      "tree": "00ab52dc55f84a7cd1867d81262deb043e8c7e11",
      "parents": [
        "957fb15e70533874f1e60da2ef89fdd0f1469a6d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 08 07:53:54 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 28 07:34:37 2021 +0000"
      },
      "message": "odrefresh: Add support for uploading stats\n\nAdds support for loading odrefresh metrics saved to file and uploading\nthem when system_server starts.\n\nBug: 169925964\nTest: manual module update with instrumentation showing statsd got data\n\n(cherry picked from commit 55ca8ab5216e4c20638f34b44c6bc53866b991ce)\nMerged-In: Iccc6ede1583235d09dbfd42996eb4ba118b700f8\nChange-Id: Iad588f05622864b37d40333d081bd89fbf76051c\n"
    },
    {
      "commit": "c3db254375df1f1459ac83cbf54b3eee92b138bd",
      "tree": "e6262127c6f4215ac0fffb98690b33f05daa7f9b",
      "parents": [
        "0349b152f29a286d7365f17d0b21d735c71c39e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:50:04 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 27 13:04:54 2021 +0000"
      },
      "message": "Revert^2 \"Add hooks in palette for reporting JNI invocations.\"\n\nTest: test.py\nBug: 140968481\n\nChange-Id: I3ebbec153040b9bcfe4fb86618c15d2f9c93abb6\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": "8f187c3326b30fc43bedb254351ea55185fbd51a",
      "tree": "8f51159f835f112dcd9ada2e17b234744aac3cca",
      "parents": [
        "e0f5839ae6e8dd90ccb31e658e3c20a8db10c219"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 20 14:29:00 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 23 22:56:43 2021 +0000"
      },
      "message": "Add static asserts we have a full list of mirror classes\n\nWe need to know if a particular object is of a mirrored class type in\norder for structural class redefinition to work correctly. For\nsimplicity and to avoid making class objects larger we do this with a\nsimple list of mirror-class descriptors. This adds some basic\nstatic_assert checking and a documenting macro to all mirror classes.\nThis should help to ensure nobody in the future unintentionally breaks\nstructural class redefinition by adding a new mirror type.\n\nTest: treehugger\nBug: 144349987\nChange-Id: I47c7b256655e9ce9bcf21d9670e0511bcbac65c9\n"
    },
    {
      "commit": "6d5a49c9b0f26a21316577683f282cf3bef492e3",
      "tree": "ec8da125e2cc663c1ecc94e5ebda33a212f6f72b",
      "parents": [
        "0cdbf97c3d654b8e985361e44952ef03d3fa4714"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Mar 08 09:21:16 2021 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 23 21:37:25 2021 +0000"
      },
      "message": "Solidify GC triggering and reporting\n\nEnsure that multiple roughly simultaneous collection requests are\nunlikely to result in multiple GCs. Previously multiple direct calls\nto CollectGarbageInternal would essentially be queued, with each\nwaiting for the previous one to complete. This might happen if we\u0027re\nessentially out of memory, with multiple threads running.\n\nWhenever easily possible, capture the GC number before checking\nwhether we should GC, so that we can corrrectly check for a GC\ntriggered since we performed the test.\n\nReset GC cause when appropriate so HeapTrim doesn\u0027t always show\nup as the cause.\n\nUpdate old_native_bytes_allocated before FinishGC(), closing the\nwindow during which we could decide to start a second native-triggered\nGC without having seen the effect of the first.\n\nNo longer support ConcurrentGC() calls from VMRuntime, since they\nweren\u0027t safe anyway.\n\nNo longer mark the GC following a WaitForGCToComplete triggered by\nnative allocation as blocking. That wait just waits for the previous\nGC and does not trigger a new one. We already marked the previous\none as blocking.\n\nHave CheckGCForNative sleep briefly if the GC it\u0027s waiting for\nhasn\u0027t started yet. Previously it waited for a running GC to finish,\nbut the requested one may not yet have started by then.\n\nDrive-by fix for TotalBytesAllocated() metric.\n\nTest: Build and boot AOSP. Manually check GC log messages.\nBug: 181351667\nChange-Id: Ifd1e4afdffca7de25844d49299d552fce44b6760\n"
    },
    {
      "commit": "ffafe8babb6b278c9e4748f64670f99f223411a9",
      "tree": "d1509e5ebab6872798980f291ec6d40b19c0ff3f",
      "parents": [
        "f2e1bc757e354530e41b8d0e0c3f04c12d1f8ab7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 10:29:27 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 13:07:48 2021 +0000"
      },
      "message": "Clean up Handle\u003c\u003e comparison with null.\n\nThese operators do not need the mutator lock.\n\nTest: buildbot-build.sh\nChange-Id: I48f51853f1b3c2e56463140f23777ad26d8122f2\n"
    },
    {
      "commit": "13ab541da6fb9d56958c0aace0b4ec2b0a135427",
      "tree": "0279e48158c1a8967871ad52c20c15b208ab7b5c",
      "parents": [
        "52f1f57df7fa36bcbc05d4f044874c0332d4086f"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Apr 21 14:15:45 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Apr 21 16:09:32 2021 +0000"
      },
      "message": "Static libunwindstack has a static dependency on libasync_safe.\n\nCf.\nhttps://cs.android.com/android/platform/superproject/+/master:system/unwinding/libunwindstack/Android.bp;l\u003d100;drc\u003d7b46d3741e3915091fec30877f46a6e8327db6bb\n\nWithout this static linking may fail, e.g. in libdex2oat_static.\n\nTest: env DIST_DIR\u003dout/dist ALLOW_MISSING_DEPENDENCIES\u003dtrue \\\n  TARGET_PRODUCT\u003darmv8 TARGET_BUILD_VARIANT\u003deng \\\n  ./art/tools/dist_linux_bionic.sh -j80 com.android.art.host\nBug: 185984634\nChange-Id: I6d445bb5bc676b92239b464c8917879e1b648e28\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": "1c7d0ce3c63a14f569e64939c48bf6b7db2ac9a7",
      "tree": "5d5c950f140998c975fbc2321c98e4999f2e8407",
      "parents": [
        "4501517c28357189f60f05494facc7e6ba2a8513"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 19 14:00:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 20 15:52:54 2021 +0000"
      },
      "message": "Extra OatDexFile checks when defining classes.\n\nAdd a check that the class def index from TypeLookupTable is\nvalid and checks that OatClass data is within the oat file.\nAdd a TODO for a check that we cannot do with the data\ncurrently recorded in the oat file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: Ie23a24cf72bb5a3cc432680db2c870a33d58b030\n"
    },
    {
      "commit": "4501517c28357189f60f05494facc7e6ba2a8513",
      "tree": "2c12fb101942d86dd70262948dce31d7d8580bf3",
      "parents": [
        "a9fed15c697d67bfbd2131d090a876145ad33910"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 13:41:09 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 20 15:49:27 2021 +0000"
      },
      "message": "Revert \"Add hooks in palette for reporting JNI invocations.\"\n\nRevert \"Add JNI headers to palette dependencies.\"\n\nRevert submission 1678069-palette-jni\n\nReason for revert: Overhead of GetHooks call.\nReverted Changes:\nI909fc720f:Add hooks in palette for reporting JNI invocations...\nI5f036e5c0:Add JNI headers to palette dependencies.\n\nChange-Id: I327ae5f0e6e63f618d2e4cf08b7c4926071cb8ce\n"
    },
    {
      "commit": "68c07589eb1a20ee311833fe76e816ee4bc9e404",
      "tree": "e39cd677eb97bdac46cbc5ca3943559d29a9a576",
      "parents": [
        "fac1a9a6f9ff2c5a030f1f3d51ceb3d86d48c994"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 19 16:01:15 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 20 10:11:33 2021 +0000"
      },
      "message": "Clean up defining classes in ClassLinker.\n\nChange ClassLinker::FindClassInBaseDexClassLoaderClassPath()\nto separate class def lookup from class definition to avoid\ndeep call hierarchy and clean up an obsolete comment.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 148412019\nChange-Id: If3d3900c06579a38065b24cff61f8c256209690d\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": "511392f151143f7d8bf2f82d5201ffa6d5d051de",
      "tree": "90b099b337432e8671f47c8eac6b1d5021db3293",
      "parents": [
        "ae3aa6ca3e1bb29845da8844ab72ae2dc76d7793"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 16 13:27:20 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 16:04:21 2021 +0000"
      },
      "message": "Add hooks in palette for reporting JNI invocations.\n\nTest: test.py\nChange-Id: I909fc720fe5b891da6919fe20ad162ec12524f02\n"
    },
    {
      "commit": "525fa42b13863305bc7cad34bba1c9ab5567894e",
      "tree": "0315618e0f82b8ac3d272328f6beca1bdef10398",
      "parents": [
        "0744d72e304fddd5453d05f8e06fa85c0467e86d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 07:50:35 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 13:35:47 2021 +0000"
      },
      "message": "Revert \"Revert \"Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\"\"\n\nThis reverts commit 656fdcd7f2aa9920ecd464dbb59d284e17969baa.\n\nBug: 176960283\n\nReason for revert: Racy code fixed in https://android-review.googlesource.com/c/platform/art/+/1678727\n\nChange-Id: I7561aa8fad060bd076006dd4b1fbffc076834635\n"
    },
    {
      "commit": "0744d72e304fddd5453d05f8e06fa85c0467e86d",
      "tree": "25ed932d34a9a440acdda406cdd580d9a74b7e94",
      "parents": [
        "0b943287e7dec0cbe1734752f5a1f30f3c29973b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 08:46:32 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 12:43:16 2021 +0000"
      },
      "message": "Fix race in GetPrimaryOatFile.\n\nGetPrimaryOatFile is broken and racy:\n- Broken as it returns the first entry of a set, which isn\u0027t guaranteed\n  to be the primary oat file.\n- Racy as is returns an .oat file and then drops the oat_file_manager lock,\n  so the OatFile may be concurrently deleted.\n\nThis CL fixes the race by only returning the information needed by the\nonly user of GetPrimaryOatFile.\n\nTest: test.py\nChange-Id: I512cb82a1c8856c06abf9bb243a5eeee33701dd1\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": "656fdcd7f2aa9920ecd464dbb59d284e17969baa",
      "tree": "d4be59ae4c11c12a7bc7d6343f9add9bed0b6e33",
      "parents": [
        "efbc659ba4566f6fbad3d13bea170fb522955b8a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 17 16:47:01 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 17 19:19:50 2021 +0000"
      },
      "message": "Revert \"Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\"\n\nThis reverts commit c8fe6517faf91b45683cddff3c15e08e489e12e9.\n\nReason for revert: Breaks 1002-notify-startup (flaky)\n\nTest: \"art/test.py -r --host -t 1002\" in a loop\nBug: 176960283\nChange-Id: I4f5467efa5a1e09452b28b86b183791e4105b19e\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": "c8fe6517faf91b45683cddff3c15e08e489e12e9",
      "tree": "10bf664496e680bbae0d22ff7da32dbbb923613f",
      "parents": [
        "0c39de679bc4b647cfeb1c5c94c86d879848aa55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 01 14:22:40 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 12:30:01 2021 +0000"
      },
      "message": "Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\n\nThis reduces some code duplication between\nOatFileManager::OpenDexFilesFromOat and GetDexoptNeeded.\n\nIt also gives the chance for OatFileAssistant and GetDexoptNeeded to\nfind the real best oat file.\n\nTest: test.py\nBug: 176960283\nChange-Id: Id366aef7a9e91833d8edaea965abda4cfdcd8455\n"
    },
    {
      "commit": "33022905107f22aeb26b9bd04e3cc896a7772c3b",
      "tree": "8e3371c8d5796ca32e2fcdae73b8afc9104a8e17",
      "parents": [
        "738060c9c5e3c58bf5270fd03361183163c4fc1d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 12 16:17:00 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 13 08:10:38 2021 +0000"
      },
      "message": "Switch mterp to python3.\n\nTest: buildbot-build.sh --target\nChange-Id: I887caf29b109457c4fdef267d468dedebd9f7430\n"
    },
    {
      "commit": "d3e9ff326a511ef48ea85afd2de9c292aa6ea20b",
      "tree": "da924af40549dca5fb679173036049e70ca395e9",
      "parents": [
        "4531afd0d813fdfa2bb115522bc5918477c03dc2"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 16 00:44:25 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Apr 12 16:36:03 2021 +0000"
      },
      "message": "Merge libdexfile_external into libdexfile (reland 2).\n\nTo reduce the number of DSO\u0027s. libdexfile_external only adds a few\nsmall functions on top of libdexfile, and it\u0027s still only those\nfunctions that are available in the APEX stubs.\n\nAlso rename libdexfile_external_static to libdexfile_static, for\nconsistency.\n\nSince libdexfile now has stubs, we need to add test_for properties to\navoid linking against the stubs in tests.\n\nThis relands https://r.android.com/1666119 that got submitted out of\norder from https://r.android.com/1664026 - prerequisite changes now\nsubmitted with https://r.android.com/1671709.\n\nTest: Flash and boot with userdebug and eng to try both release and\n  debug modules.\nTest: art/tools/buildbot-build.sh {--target,--host}\nTest: art/build/apex/runtests.sh\nTest: mmm art\nBug: 143978909\nChange-Id: I6de99052d6d8a9d01d748baabbbcecfe1f4509dc\n"
    },
    {
      "commit": "8731e70a0f197594ecee91953169ee3f902c48f5",
      "tree": "2c0a8e44a232d7d8225de22fd247cf00be31986a",
      "parents": [
        "a2f48a424c3d62efb5a14ccaea740e3f6c0b0032"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 06 12:11:59 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 08:40:28 2021 +0000"
      },
      "message": "Add a test and CHECKs around the combination of CHA and default methods.\n\nTest: 823-cha-inlining\nBug: 182538502\nChange-Id: Ie3e0014804216802af0addf13751a8f89adbfdfa\n"
    },
    {
      "commit": "a2f48a424c3d62efb5a14ccaea740e3f6c0b0032",
      "tree": "668f61d2231be94a7bc764223164da52f3c77869",
      "parents": [
        "e38d78871261ec567d45095ea09b1950bb021fae"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Apr 09 13:23:21 2021 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Apr 12 07:22:07 2021 +0000"
      },
      "message": "Fix apex_available lists to avoid APEX stubs between internal libs.\n\nTest: m TARGET_PRODUCT\u003dfull TARGET_BUILD_VARIANT\u003deng \\\n  out/soong/.intermediates/art/compiler/libartd-compiler/android_arm_armv7-a-neon_shared/unstripped/libartd-compiler.so\nTest: mmm art\nBug: 184929782\nBug: 143978909\nBug: 183882457\nChange-Id: I6350257ad1fc9dfb7115bff6c2caa1bc4ac86898\n"
    },
    {
      "commit": "0983f59d736e9c87b92128605623a90674bde7fa",
      "tree": "d3dca44258cc98b2b81e9992bc428746eb737125",
      "parents": [
        "76f7a91f12be916ebe50b68df707b551b6a530e3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 08 16:36:19 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 10 16:26:35 2021 +0000"
      },
      "message": "Inline CodeInfo::DecodeCodeSize\n\nMicro-optimization. This is not expected to make any difference\n(but it also certainly should not cause any harm to performance).\n\nBug: 183547619\nChange-Id: If1d493822f1bb49f9cf332a88b373f1d01195ca6\n"
    }
  ],
  "next": "669756df2f4aea67d00e7b3598b2d91f61537141"
}
