)]}'
{
  "log": [
    {
      "commit": "8f21748bf127012947ed48c40948df3f2d9c85ef",
      "tree": "70d287634fd0b3a2d43ad8de7738c9703eb0a2a6",
      "parents": [
        "ce5c830aede3313ceb22f7b2ca6c30e5b8432972"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 17:16:36 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 09:44:43 2021 +0000"
      },
      "message": "Mark move constructors/assignements as `noexcept`.\n\nAnd unmark `HashSet` copy constructor and copy assignment.\n\nTest: m\nChange-Id: Ia419f3036b2880815be446395e81c7e543388bd9\n"
    },
    {
      "commit": "d61b021fffc641906d1c531a233b62a8f66c184a",
      "tree": "2e81f49ce6986fbc069286d28b48f41b19dce0c6",
      "parents": [
        "9e050ab1a061d9660eb0c1daa01a823ad75b0f05"
      ],
      "author": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Thu Jul 08 10:20:26 2021 +0800"
      },
      "committer": {
        "name": "Jiakai Zhang",
        "email": "jiakaiz@google.com",
        "time": "Wed Jul 14 23:37:32 2021 +0000"
      },
      "message": "Trigger on-device AOT compilation for system_server on mainline update.\n\nBefore this change, AOT compilation for system_server are triggered only\non ART mainline update, and only the system_server components in /system are compiled.\n\nAfter this change, AOT compilation for system_server are triggered on\nany mainline update that touches $BOOTCLASSPATH or\n$SYSTEMSERVERCLASSPATH, and the system_server components in mainline\nmodules are also compiled.\n\nTest: manual - 1. Modify a mainline module (such as com.android.wifi).\n    2. Install the modified module on a device and reboot the device.\n    3. See if system_server components are recompiled (while boot\n    classpath components are not).\nTest: atest odsign_e2e_tests\nTest: art/tools/run-gtests.sh -j8 apex/com.android.art/bin/art/x86_64/art_libartbase_tests\nTest: atest art_odrefresh_tests\nBug: 189467174\nChange-Id: Icaba5471e9f62fd035f0a24d662ecfaf2e064cab\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "e431d134fb54cc7231ad3ab200e46a3dc06c66f2",
      "tree": "e88c92e42ad5a2a66b4ccda2e58c145055f6b731",
      "parents": [
        "b6e679292e526f48a2a7c389b37f920419243c27"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 06 08:16:34 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 08 07:32:31 2021 +0000"
      },
      "message": "Add a \"vdex\" reason for compilation reason.\n\nWhen the oat file is out of date, we run directly from the vdex.\n\nTest: test.py\nBug: 192408935\nChange-Id: I7474532d7f12a32d2c26a5a0fb8b73671793d3f3\n"
    },
    {
      "commit": "b6e679292e526f48a2a7c389b37f920419243c27",
      "tree": "90e1a4cf98ea510571fe45c38493b81e77f7d056",
      "parents": [
        "7209da0a46dd96ae5b9d73124ef09b4b0fe9ac25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 06 15:53:07 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 07 16:10:07 2021 +0000"
      },
      "message": "Move Transaction logs to arena allocator.\n\nAnd change some containers to reduce memory usage.\n\nAlso update `SafeMap` with some C++17 functions, namely all\n`erase()` and `extract()` overloads and `insert()` overloads\ntaking a \"node\". The `extract()` and `insert()` overloads\nare convenient to avoid allocation/dealocation when updating\nthe key of an entry.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I791d00598ac288b1f31c92daa63b5b3dcf6b41fa\n"
    },
    {
      "commit": "f040914a122be86e280efe5e31af1168f2b7c72e",
      "tree": "8ea3fa76be8f215d36977477015ed7f9f3a2f65c",
      "parents": [
        "b4bd92f27fb143135870d07b459ea52637afcfa5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Mar 22 15:45:03 2021 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 06 10:52:35 2021 +0000"
      },
      "message": "Uncouple ART gtests from the ART APEX.\n\nIntroduce standalone versions of ART gtests on target, not bundled\nwith the ART APEX.\n\nSo far ART gtests have always been built as debug artifacts (and\nlinked against ART debug libraries). Make some adjustments in some of\nthese tests so that they can also work as non-debug artifacts and be\nused with the Release ART APEX (which contains only non-debug\nartifacts).\n\nNewly added tests:\n* `art_standalone_cmdline_tests`\n* `art_standalone_compiler_tests`\n* `art_standalone_dex2oat_tests`\n* `art_standalone_dexdump_tests`\n* `art_standalone_dexlist_tests`\n* `art_standalone_dexoptanalyzer_tests`\n  * Note: Requires root access to the device.\n* `art_standalone_libartbase_tests`\n* `art_standalone_libartpalette_tests`\n* `art_standalone_libartservice_tests`\n* `art_standalone_libarttools_tests`\n* `art_standalone_libdexfile_support_tests`\n* `art_standalone_libdexfile_tests`\n* `art_standalone_libprofile_tests`\n* `art_standalone_oatdump_tests`\n* `art_standalone_odrefresh_tests`\n* `art_standalone_profman_tests`\n  * Note: Requires root access to the device.\n  * Note: Some tests (2 out of 37) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_runtime_compiler_tests`\n* `art_standalone_runtime_tests`\n  * Note: Some tests (16 out of 686) are failing and have been\n    temporarily disabled.\n  * Note: Some tests (4 out of 686) are failing in multi-ABI\n    contexts and have been temporarily disabled.\n* `art_standalone_sigchain_tests`\n\nTests not added:\n* `art_standalone_dexanalyze_tests`\n  * Reason: ART binary `dexanalyze` is not part of the Release ART APEX.\n* `art_standalone_dexdiag_tests`\n  * Reason: ART binary `dexdiag` is not part of the Release ART APEX.\n* `art_standalone_dexlayout_tests`\n  * Reason: ART binary `dexlayout` is not part of the Release ART APEX.\n* `art_standalone_imgdiag_tests`\n  * Reason: ART binary `imgdiag` is not part of the Release ART APEX.\n\nTest: atest -a art_standalone_cmdline_tests\nTest: atest -a art_standalone_compiler_tests\nTest: atest -a art_standalone_dex2oat_tests\nTest: atest -a art_standalone_dexdump_tests\nTest: atest -a art_standalone_dexlist_tests\nTest: atest -a art_standalone_dexoptanalyzer_tests\nTest: atest -a art_standalone_libartbase_tests\nTest: atest -a art_standalone_libartpalette_tests\nTest: atest -a art_standalone_libartservice_tests\nTest: atest -a art_standalone_libarttools_tests\nTest: atest -a art_standalone_libdexfile_support_tests\nTest: atest -a art_standalone_libdexfile_tests\nTest: atest -a art_standalone_libprofile_tests\nTest: atest -a art_standalone_oatdump_tests\nTest: atest -a art_standalone_odrefresh_tests\nTest: atest -a art_standalone_profman_tests\nTest: atest -a art_standalone_runtime_compiler_tests\nTest: atest -a art_standalone_runtime_tests\nTest: atest -a art_standalone_sigchain_tests\nTest: atest -a art_standalone_\\*_tests\nTest: m art_chroot \u0026\u0026 atest ArtGtestsTargetChroot\nBug: 162834439\nBug: 162734417\nChange-Id: I8beda9159d48c4ca495698357dc3bd95e3ff84d5\n"
    },
    {
      "commit": "971068dcaf5955634679dbfaf7b562ed52aff772",
      "tree": "3e76f60e7136f53ca0d19a23914721515e8b2725",
      "parents": [
        "3d12876bd9782831ad5c907f1f9dc94d10867f3d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 30 21:17:53 2021 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 02 10:19:42 2021 +0000"
      },
      "message": "runtime: add -Xdeny-art-apex-data-files\n\nThis option prevents the runtime from loading AOT artifacts installed\nin /data/misc/apexdata/com.android.art.\n\nBug: 192049377\nTest: manually adding option and running odsign_e2e_tests\nTest: adding option and looking at proc/maps for system_server and zygote\n\nChange-Id: I56c7ce55b64de72faf39a06238089fe4b6b84b88\n"
    },
    {
      "commit": "3d12876bd9782831ad5c907f1f9dc94d10867f3d",
      "tree": "cd2f65f171ff5ff83bd447513abf171696359262",
      "parents": [
        "1792c6ff1c9838dfbe948be124dc1a8501fc6636"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jul 01 09:01:51 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 02 01:40:06 2021 +0000"
      },
      "message": "Add special control flags for system server reporting\n\nSystem server is important enough to have its own config.\n\nTest: gtest\nBug: 170149255\nChange-Id: I33741751717ef3474f3a89e8fda8ad19b9e952ed\n"
    },
    {
      "commit": "9b996ce378e58f4699145721a1708732d5399a95",
      "tree": "be1392dd6a0c029c92f1de195b74961d83da112e",
      "parents": [
        "c2753e6beec483b5b14161b6bbc8e0a86aef9397"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 29 16:05:38 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 01 01:52:04 2021 +0000"
      },
      "message": "Replace JIT total time histogram with total time counter\n\nWe don\u0027t report histograms, so let\u0027s get the total time as a\nproxy to measure JIT activity.\n\nTest: gtest\nBug: 170149255\nChange-Id: I76911f5e7f93f00dc9f133e7f89a1045b31dedc7\n"
    },
    {
      "commit": "c2753e6beec483b5b14161b6bbc8e0a86aef9397",
      "tree": "070107ce0d907ab246d4a33f4d3aac7e679006c7",
      "parents": [
        "546243375d7e129aa02ca7ea9663ed7c40b4880e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 25 15:34:09 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 01 01:52:04 2021 +0000"
      },
      "message": "Fix compiler filter / reason reporting and add the ISA to the metrics\n\nThe compiler filter / reason reporting was not accurate for a variety\nof reasons. (e.g. reporting was only done at startup, it was relying\non imprecise APIs and had errors in the logic).\n\nIn order to keep track of the precise optimization status, this CL\nintroduces the concept of AppInfo, which encapsulates the data about\nthe application / system server code paths, their optimization status\nand possible other metadata (e.g. profiles).\n\nTo populate it, we rely on 2 distinct events:\n1) The framework calling VMRuntime#registerAppInfo to inform the\nruntime about the applications code paths and their types (e.g. primary,\nsplit, secondary).\n2) Class loading, when we can determine the actual optimization status\nlike filters, reasons, and whether or not we can load the odex files.\n\nThese events may happen in any order so we could deal with a partial\nstate at some point in time, but in the majority of cases they always\nhappen at Class Loading, followed by RegisterAppInfo.\n\nThis CL also deletes the OatFileManager#getPrimaryOatFile which was\na misleading API as it didn\u0027t work in most cases. It also adds more\ntests to the metrics/reporting infra for previous missing or\nunimplemented cases.\n\nTest: gtest\nBug: 170149255\nChange-Id: If0a7a25d06ff6fb89fe4861139b7dee61c05814d\n"
    },
    {
      "commit": "7ffab8106445905d30fdef6291ebd18765c961f0",
      "tree": "fba5871a470b97ffc3767ae286b4b3e4105cf200",
      "parents": [
        "a4d28dd66683c1bc27ad936d30aee71e73b084db"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 30 11:13:19 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 30 15:35:30 2021 +0000"
      },
      "message": "Adjust data dir set up in `CommonArtTestImpl::SetUpAndroidRootEnvVars`.\n\nDon\u0027t set up the `ANDROID_DATA` dir as a subdirectory of\n`/data/dalvik-cache` in\n`art::CommonArtTestImpl::SetUpAndroidRootEnvVars` (used in some ART\ngtests), as it is not accessible on `user` builds; instead, use a\nsubdirectory of `/data/local/tmp`, which does not require any special\npermission.\n\n(cherry picked from commit c09606a3b1c7658dadbd7977d1368bf51c735fa7)\n\nTest: m art_chroot \u0026\u0026 atest ArtGtestsTargetChroot\nTest: Run ART gtests as described in `test/README.chroot.md`\nBug: 162834439\nChange-Id: I19c7015b0140610a6fd2150a7f7a057465312b0c\nMerged-In: I19c7015b0140610a6fd2150a7f7a057465312b0c\n"
    },
    {
      "commit": "44dc8a300adb63b1bf465de555b7f8cce0481bb3",
      "tree": "095bc4801079f46f36a474db3e05dded5f7971f8",
      "parents": [
        "c9df5ce4cca760b27e9650363eaba5b92d87324c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 21 15:23:49 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 30 13:04:57 2021 +0000"
      },
      "message": "verifier: do not infer an instruction will throw.\n\nTurning a regular instruction into a throwing one has currently\nundesirable consequences:\n1) It leads to inconsistencies between the AOT verification and the\n   runtime verification.\n2) It treats the following code dead and does not analyze it. We treat\n   this as an non-compilable method as it\u0027s a lot simpler for the\n   compiler to consider all code verified.\n3) It prevents verification optimizations like doing one-pass\n   analysis over the code.\n\nTo be AOT / runtime consistent and follow RI behavior, stop considering\nsuch instructions as throwing.\n\nWe make this API version dependent for app compatibility reasons.\n\nTest: test.py\nBug: 28313047\nChange-Id: I9c847043d1f431f642731a70f651c93ef22fdf86\n"
    },
    {
      "commit": "f368641c5bd373749194259409dc467df7a77edb",
      "tree": "bb2dd4f603da3de8381c4a7b148344ff4d476350",
      "parents": [
        "45848daf541599548145c265ece14aad0e973639"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Jun 25 21:30:30 2021 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 29 15:41:56 2021 +0000"
      },
      "message": "[metrics] Add total-gc-time and adjust other metrics\n\nThis change introduces the following:\n1) Added total-gc-collection-time in ms as a counter so that, at anytime,\nwe can know how much time is spent in GC.\n2) Added MetricsAverage to report average of the given data point.\n3) Changed mutator-paue-time to average, which makes more sense. Also it\nis renamed to world-stop-time.\n4) Added averages of gc-throughputs.\n5) Removed gc-meta-data-size metric as we don\u0027t capture it normally due\nto the high cost of capturing this data.\n\nTest: Observe pitot data\nBug: 191404436\nChange-Id: I9da7f8c588ac4b42414beedb1b4004e0ac4b5fc2\n"
    },
    {
      "commit": "55ffe7fa9ead8b501a756bb53f2571e3e7602f5e",
      "tree": "c4f63e30679b3e11d65268e52bf7548416f26792",
      "parents": [
        "8bf1da992a15a79ae76bcf53e9a2909912fbe96a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 14 15:18:54 2021 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 28 11:40:15 2021 +0000"
      },
      "message": "Rename some ART gtest related Soong modules.\n\nART gtests currently link with the debug (\"d\") versions of ART\nlibraries. The gtests themselves and their libraries are compiled as\ndebug artifacts. For the sake of consistency, perform the following\nrenaming of ART gtest related Soong modules:\n\n* `libart-compiler-gtest` -\u003e `libartd-compiler-gtest`\n* `libart-dex2oat-gtest`  -\u003e `libartd-dex2oat-gtest`\n* `libart-gtest-defaults` -\u003e `libartd-gtest-defaults`\n* `libart-gtest`          -\u003e `libartd-gtest`\n* `libart-runtime-gtest`  -\u003e `libartd-runtime-gtest`\n* `libartbase-art-gtest`  -\u003e `libartbased-art-gtest`\n\nAs we plan to introduce non-debug (\"non-d\"), standalone versions of\nART gtests in the context of uncoupling ART (target) gtests from the\nART APEX (b/162834439), this renaming will help us, as we\u0027ll be able\nto use the old names of a \"d\" module for the corresponding \"non-d\"\nversion.\n\nTest: mmma art\nTest: Run ART gtests on host and target\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dfalse art/build/apex/runtests.sh\nTest: env OVERRIDE_TARGET_FLATTEN_APEX\u003dtrue  art/build/apex/runtests.sh\nBug: b/162834439\nChange-Id: I4ca27a7f445a760398f41a9e60a7008d77294505\n"
    },
    {
      "commit": "1282f3805b1b6f50761f3e136d569e85dbda7090",
      "tree": "eaf74fab46eb96d51e327676e734a139afbe5fef",
      "parents": [
        "7f0473851d9a8d5644fde8c483390a985c238433"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 21 20:22:12 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 23 19:22:50 2021 +0000"
      },
      "message": "Add sampling support in the metrics reporter\n\nThe sample rate percentage can be configured via 2 runtime\nflags (MetricsReportingMods and MetricsReportingNumMods).\n\nA runtime session will report metrics if and only if its\nsession id % MetricsReportingNumMods \u003c MetricsReportingMods.\n\nA value of 0 on the mods will effectively disable reporting,\nwhile configuring MetricsReportingMods to be equal to the\nMetricsReportingNumMods will enable reporting in all cases.\n\nTest: gtest\nBug: 170149255\nChange-Id: Ie1353e4fc0ff695fc627696145d95e9ccd3c6a94\n"
    },
    {
      "commit": "7f0473851d9a8d5644fde8c483390a985c238433",
      "tree": "c2aa685e339d731ffcd5b29ccef16c1d2611adb9",
      "parents": [
        "6c30777a278d24e1a4c3226405416a85e6523d3f"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Jun 17 16:28:46 2021 -0700"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Jun 23 17:18:33 2021 +0000"
      },
      "message": "[metrics] Add GC-work throughput metrics\n\nTrack work done (bytes processed) per second by the GC.\n\nSome other minor changes:\n1) Adjusted ConcurrentCopying class member\u0027s order to make access to\nthem more cache-access friendly. Counters accessed by GC-thread should\nnot be in the same cacheline as the one containing counters meant for\nmutators, if either of the two modify those counters.\n2) Increased max to 10\u0027000 for throughput histograms in case\nthe throughput is \u003e GB/s\n\nBug: 191404436\nTest: manual\nChange-Id: Iefaf1106690b6bae670a3a917f61194b3fcacfe0\n"
    },
    {
      "commit": "ec11cf1e4a7400af1befae3a5194206f16a58047",
      "tree": "613b1e67a1b8b28209a8e893374eb93d50d1a3b0",
      "parents": [
        "9b8d8198236b73489a28f46a1b62220da471c4b2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 17 15:41:08 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 23 02:28:17 2021 +0000"
      },
      "message": "Add period reporting to the metrics infra\n\nThe metric reporting can now be condifured to report at\ndifferent periods, according to a predefined spec.\n\nThe period spec is given as a string (e.g. \"S,1,2,4,8,*\")\nand can specify:\n  - startup reporting\n  - fixed period reporting\n  - continuous reporting\n\nFor example \"S,1,2,4,*\" means that we will report at\nstartup, then after 1 seconds, then after 2 and 4,\nand finally, that we will continue to report every other 4s.\n\nThe specs for system server and the apps are given by different\nflags, so that we can have different reporting configurations\nfor each.\n\nAlso, this CL adds much more robust testing to the metrics\nreporter, something that was missing before.\n\nTest: gtest\nBug: 170149255\n\nChange-Id: Ifbe32b3877d2e1cdf43d30b67672f6ebfb42dadf\n"
    },
    {
      "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": "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": "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": "b390ba9fad86d8fe431c037708fe9bd8a3d44960",
      "tree": "43c15ea60c1f26003dbf5a4342a58e4988a55d6d",
      "parents": [
        "f75b8e9947763ab59ee655054f878e44844518e2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 07 09:05:08 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jun 07 17:17:50 2021 +0000"
      },
      "message": "Fix flags_tests for older platforms\n\nOlder platforms might not be able to properly set the properties\nwe need for test (e.g. due to length limitations), so update the\ntests to skip the checks that rely on property setting.\n\nTest: gtest\nBug: 188655918\nChange-Id: Ibdaf80b45c0a3a6529bfd2714c17df2dc83478b2\n"
    },
    {
      "commit": "14a5151ea476d722b48aa58069451a48580998df",
      "tree": "3b1d22bde1b7064e2f7a5ed2823477665af2730e",
      "parents": [
        "691c3c56c513d03d54dd46977d6985b8677072d4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 04 12:57:16 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 04 20:01:11 2021 +0000"
      },
      "message": "Fix flags_test flakiness\n\nThe tests could run in parallel and step on eachothers logic by\nsetting/resetting global properties.\n\nRevamp the logic to generate unique property names using scratch\nfiles to prevent collisions.\n\nTest: gtest\nBug: 190150217\nBug: 181748174\nChange-Id: If870478e13dcfa2487da57b223b322847e702ea2\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": "a6b3b297bdd70ad3e915a48b02a7c7cf5f204e05",
      "tree": "a721f273d8776a349dafc2ee496a76d401765074",
      "parents": [
        "9c7b1e7073f3c309e8b0023974aa9136b22f4b2e"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed May 19 16:22:46 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 02 19:07:01 2021 +0000"
      },
      "message": "Add flag for clamping hidden api list\n\nAllow clamping the hidden api list to a max value; if an API is\nrestricted for a newer SDK, transform it into a regular unsupported API.\nThis change is laying out the groundwork to ensure that older platforms\ndo not receive dex code updated that has unknown hidden api flags - e.g.\nif the hidden api encode step uses \u0027--max-hiddenapi-level\u003dmax-target-q\u0027,\nthen the resulting dex code will not exhibit undefined behavior with respect to\nhidden api access when running on R devices, and any newer \u0027max-target-r\u0027 APIs\nwill be marked as \u0027unsupported\u0027.\n\nTest: mma test-art-host-gtest-art_hiddenapi_tests\nBug: 172453495\nChange-Id: I710c440c8429081096d8a417f164c0e01c97ecd9\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": "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": "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": "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": "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": "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": "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": "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": "56f4c8143d1656fcf5acb092ac4aaa5f20a04d93",
      "tree": "22b1791f1e01af46703f456832450c7c5e9770fe",
      "parents": [
        "8731e70a0f197594ecee91953169ee3f902c48f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 01 14:06:23 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 12 12:04:40 2021 +0000"
      },
      "message": "Handle hiddenapi lists which are yet unknown.\n\nMake such APIs behave like @UnsupportedAppUsage.\n\nTest: 822-hiddenapi-future\nBug: 172325244\nChange-Id: Ic69e4d81fb64e0affb9c7c5e376bb19ab9e2d91f\n"
    },
    {
      "commit": "722992f7b63b5e2962aaba6119402c7b93deb2f4",
      "tree": "900fbca1994a87376ad6602c4c4a4ebe5559f060",
      "parents": [
        "000508177b82640628b20bbbf5dacb3dfb77cc80"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Apr 06 23:12:17 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 07 20:09:20 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Report CompilationReason and CompilerFilter\"\n\nSince we do not know the real primary OAT file when the runtime starts\nup, we have to wait until NotifyStartupCompleted to be sure we have\nthe right one. To accomodate this, we delay starting the metrics\nsession until the first report and then send updated session\ninformation in NotifyStartupCompleted.\n\nNote that we could delay the whole metrics reporting initialization to\nNotifyStartupCompleted, but this doesn\u0027t get called in all\ncircumstances, which would mean metrics reporting is disabled in cases\nwhere we want it.\n\nThis reverts commit 8b07c653a7e45886ee92d8a12aa439e98e84befa.\n\nReason for revert: Fixing crash\n\nThe bug was get GetPrimaryOatFile could return null in some cases, but\nwe were not handling this correctly.\n\nBug: 178239096\nTest: manual\nChange-Id: I468837ee8f026edd82c47bd216ddb5b2d9c2ece3\n"
    },
    {
      "commit": "000508177b82640628b20bbbf5dacb3dfb77cc80",
      "tree": "7b2a428bd984ade5839252a51ddd05de53056378",
      "parents": [
        "3e54dfa45dcf4d9b844dad992328c34ed9822481"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 07 12:59:22 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 07 13:05:39 2021 +0000"
      },
      "message": "Support stateful hash and predicate in HashSet\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ibd9cf361af3f4bc701f44df401fd805f34da7f8c\n"
    },
    {
      "commit": "8b07c653a7e45886ee92d8a12aa439e98e84befa",
      "tree": "d204054a2b7b07769384db6f3c68ff53f7dccb3b",
      "parents": [
        "50419f2d4ce9bef92115342692a405f30600e114"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 05 19:31:30 2021 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 05 20:57:07 2021 +0000"
      },
      "message": "Revert \"[metrics] Report CompilationReason and CompilerFilter\"\n\nThis reverts commit f9bf4efcab3d05b6d547e492075de377400d2d88.\n\nReason for revert: b/184402526\n\nChange-Id: Id297ef1db997d185bcd6f910cc6c84a62e6eaa0d\n"
    },
    {
      "commit": "f9bf4efcab3d05b6d547e492075de377400d2d88",
      "tree": "5c4c8f6214c20d8e2d19bc5ca27a37b772ffe274",
      "parents": [
        "f442a84ca02002cd52aebdc724d84de9e8f2dd36"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Mar 18 13:52:41 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 01 19:23:52 2021 +0000"
      },
      "message": "[metrics] Report CompilationReason and CompilerFilter\n\nSince we do not know the real primary OAT file when the runtime starts\nup, we have to wait until NotifyStartupCompleted to be sure we have\nthe right one. To accomodate this, we delay starting the metrics\nsession until the first report and then send updated session\ninformation in NotifyStartupCompleted.\n\nNote that we could delay the whole metrics reporting initialization to\nNotifyStartupCompleted, but this doesn\u0027t get called in all\ncircumstances, which would mean metrics reporting is disabled in cases\nwhere we want it.\n\nBug: 178239096\nTest: manual\nChange-Id: Ide59be88bc934526e0c172fb745dc2f5cd797749\n"
    },
    {
      "commit": "b2a1416f6d7031d8f255398407a3e8a2bb6d6447",
      "tree": "7dd7e79e47787b0f7c600f7db1a282321519c623",
      "parents": [
        "30126397f7d9219f5556b2f852e3fea1069d5ae0"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Mar 30 16:54:13 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 31 20:17:51 2021 +0000"
      },
      "message": "[metrics] Add JitMethodCompileCount\n\nThis tracks how many methods have been compiled by the JIT.\n\nBug: 170149255\nTest: manual\nChange-Id: Id7943818318dae26afdac7f9903cd32b7e2c4e89\n"
    },
    {
      "commit": "4312f74ccf65a5abbab53c017b3f2b030c89f65a",
      "tree": "79c5dc90ae1854c9c4dddc1dcd192349520760a7",
      "parents": [
        "84ebf3ca3a71cbde2607d30581c8bed7a24277ab"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 23 00:30:57 2021 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Mar 23 14:28:26 2021 +0000"
      },
      "message": "Export libdexfile and dependencies for host.\n\nThey are needed e.g. by libunwindstack_unit_test on host.\n\nTest: art/build/build-art-module.sh\nTest: lunch aosp_x86_64 \u0026\u0026 atest --host libunwindstack_unit_test\n  with and without SOONG_CONFIG_art_module_source_build\u003dfalse in a tree\n  with fresh prebuilts created by art/build/build-art-module.sh\nBug: 172480615\nChange-Id: Ifb5fc74af5037999b97159830ba05c0063f1987a\n"
    },
    {
      "commit": "1043aa2489538fe7089ba3cc8fac0567672b14d6",
      "tree": "e0549ed72d2a2542fef5e8390b929bf2ed71b5c2",
      "parents": [
        "3965fe825ff939a550e6eed53e66314213a0485c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Mar 09 15:41:11 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 22 19:59:48 2021 +0000"
      },
      "message": "[metrics] Add MetricsAccumulator\n\nMetricsAccumulator metrics are a generalization of counters that allow\na custom function to be supplied that specifies how to combine\nincoming values. This allows for the definition of things like minimum\nand maximum metrics.\n\nTest: libartbase_gtests\nBug: 170149255\nChange-Id: Ibc928a5d0e5cad3036e5829be9a535bc4a685ae1\n"
    },
    {
      "commit": "d91328fe62fbfe428859ec1c1fb1cd88160cc8ab",
      "tree": "963ef0355266c85e3039da6b3e81bac8a4586b65",
      "parents": [
        "71a6e8984ea24f531e40fb5ce07cdbe6568eaa7f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 17 16:21:51 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 21:24:22 2021 +0000"
      },
      "message": "[metrics] Reset metrics at zygote fork\n\nThis is needed to prevent metrics in the zygote from being counted\ntowards child processes. This is especially important as the zygote\ncan be a very long running process.\n\nTest: libartbase_gtests\nBug: 170149255\nChange-Id: I5c34d44c55381dd976b83e81517145f7e23d061f\n"
    },
    {
      "commit": "e7ff7ef6e5dc2bbb52f3f5c96f14535e5fc1dca0",
      "tree": "36006d79d8f572639ad727c3de5794d658187a12",
      "parents": [
        "a4c87959ccac3500182f4ab91f7e5f37489a791f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 17 16:42:24 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 20:33:49 2021 +0000"
      },
      "message": "[metrics] Add ClassVerificationCount\n\nTrack how many classes we verify at runtime.\n\nTest: gtests\nBug: 170149255\nChange-Id: I72f0a4933820f54acdeef70478129d2320e91afd\n"
    },
    {
      "commit": "a4c87959ccac3500182f4ab91f7e5f37489a791f",
      "tree": "58d459165bb61164c2d984b27097725ce2a3cded",
      "parents": [
        "3407fb2590756bd571020e175e607c8b8c988ede"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Mar 05 17:58:17 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 20:33:49 2021 +0000"
      },
      "message": "[metrics] Improve metrics definition API\n\nThis CL combines the ART_COUNTERS and ART_HISTOGRAMS lists into a\nsingle ART_METRICS list. Additionally, this will make it possible to\nadd additional metrics types with less boilerplate.\n\nBug: 170149255\nTest: gtests\nChange-Id: I09e161de1ae574dfcc9ab95e8827b071f0a53892\n"
    },
    {
      "commit": "ec388c026a5709dea339ad43f8bca10b2d991d6e",
      "tree": "49cf87249facd3c8dabb33ab10f8273a75fe2a50",
      "parents": [
        "e017bb072ac577eee5413bd7e5e136f4eaf75908"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 03 22:09:06 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 19 07:09:56 2021 +0000"
      },
      "message": "Add min_sdk_version for ART module.\n\nBug: 180399951\nTest: m\nChange-Id: I5e2a1ddc3063be26c602bf4db8e6b77f2d54b656\n"
    },
    {
      "commit": "d3d1a1a11626bd5198edb9242831c7b120652fbb",
      "tree": "ff8a97051ef08c463ae49d0d04faa24aa26713fa",
      "parents": [
        "9cf17115d93649311da4fd2ac0cd1f8e97e06490"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 14:11:11 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 18 20:37:45 2021 +0000"
      },
      "message": "Remove DexToDexCompiler\n\nSince quickening is deprecated, it is no longer used.\n\nThis CL only removes compile-time dead code.\n\nBug: 170086509\nTest: test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I46c02fb7a9304f8361cecfafb9507c906a93592f\n"
    },
    {
      "commit": "a64c1ad1ad20b99c4bb3a27acdd30dc9b3aa004b",
      "tree": "3872764b79c105075a49d615334bebae34cf6e9d",
      "parents": [
        "f84ec8662b695f6679023f368bc7203d3804a43e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 14:27:05 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 15 11:00:50 2021 +0000"
      },
      "message": "Rewrite hot method info retrieval.\n\nRemove the `ProfileCompilationInfo::GetHotMethodInfo()` API\nand provide another API to tie profile indexes to dex files\nfor inline caches that avoids unnecessary heap allocations.\n\nAnd look up only dex caches for the referenced dex files\nwhen getting AOT inline caches in HInliner.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimzing\nTest: boots.\nBug: 181943478\nChange-Id: I124ac4870b0f483c1f0422c841c4ff69fc95b7e0\n"
    },
    {
      "commit": "a718d6450feae9ee6b5de96407c8e44afbf173e7",
      "tree": "133f55536e360b999021fbba9332f85709fc7fae",
      "parents": [
        "5e435b2c209d87030f607c4cdfba913dec3eb3e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 10 15:36:40 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 11 09:48:35 2021 +0000"
      },
      "message": "Preallocate a HashMap buffer in LSE.\n\nAdd more HashSet\u003c\u003e constuctors with the allocator argument.\nInherit HashSet\u003c\u003e constructors in HashMap\u003c\u003e.\n\nUse a pre-allocated buffer with size 16 to avoid allocating\na large one (kMinBuckets \u003d 1000) on first use. With the\ndefault max load factor 0.7, this pre-allocated buffer is\nsufficient for all methods with up to 11 stores.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: I7862b98ec9ec3ddb34693fd956fea75138d35e02\n"
    },
    {
      "commit": "bc1748f825aed2a59a9bfbb087ab6e29e875d2d1",
      "tree": "d9599a24114f37850a895cd90fa9ec46d3dd56f3",
      "parents": [
        "157fc969066aa41842c029350e5af780c517fcf6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 22 10:51:32 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 09 14:26:34 2021 +0000"
      },
      "message": "Refactor statistics printing in oatdump.\n\nSimplify the code so that it is easier to add/remove sections.\n(motivated by the non-trivial removal of DexCache arrays)\n\nTest: m dump-oat\nTest: m test-art-host-gtest-art_oatdump_tests\nChange-Id: I2fe4a3062125d8aa053c1a38eb24a624f95291b0\n"
    },
    {
      "commit": "81b1d78b3422e72ecbe0092f99dbf7b9ecccc5ec",
      "tree": "fbfcb9216cc4331df029e5c5c3120679fec20cbb",
      "parents": [
        "765a167cb152931dede6aad1fa398700d4702113"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Mar 07 21:33:28 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 08 12:32:59 2021 +0000"
      },
      "message": "Slightly refactor stack map stats printing.\n\nTake advantage of the \"operator\" overload and move\nthe pretty print method so it can be better reused.\n\nTest: m dump-oat\nChange-Id: I46b169e044f2c4481bb2bc277601d61f873c9950\n"
    },
    {
      "commit": "62b75587021d432d1522316822e7cafe0beada43",
      "tree": "999e4e9c5210718bafb0c55b1b984a50ef1eb660",
      "parents": [
        "7fc6aacab1bfbe64ea54390fa61ce0b3c9b446e4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 03 15:14:58 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 05 22:54:51 2021 +0000"
      },
      "message": "[metrics] Enable periodic reporting for system server\n\nThis enables reporting from system server once an hour.\n\nThe reason is that system server is long-running, so startup metrics,\nwhich are all that are enabled by default otherwise, are not as\nmeaningful. Note that the reporting period can still be overridden by\na command line argument.\n\nTesting instructions:\n\n    adb shell setprop dalvik.vm.extra-opts -Xwrite-metrics-to-log\n    adb logcat -e \"ART internal metrics\"\n\n    Observe periodic system server reports.\n\nBug: 170149255\nTest: manual (see above)\nTest: ./test.py --run-test --host -t 911\nChange-Id: I71775e454c6fd07c4312e3df9ae8082fa497ea93\n"
    },
    {
      "commit": "7fc6aacab1bfbe64ea54390fa61ce0b3c9b446e4",
      "tree": "0398fcdb7dd5a62cfbc204b65442280ccfdc11ce",
      "parents": [
        "65a9fb4a6fcf5e34d52c9416715761ee16ea53a7"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Mar 04 15:56:47 2021 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Mar 05 18:46:09 2021 +0000"
      },
      "message": "Add GC-related metrics to the telemetry infrastructure\n\nFollowing metrics are added in this CL:\n1) Young GC count\n2) Full heap GC count\n3) Young GC throughput histogram\n4) Full heap GC throughput histogram\n5) Total bytes allocated\n6) Total GC meta data\n\nThe last one in itself is not useful. But when divided by GC count gives\nan average of memory overhead of running a GC algorithm.\n\nTest: art/test/testrunner/testrunner.py\nBug: 170149255\nChange-Id: I5a93d1ceb9dc0764b8c6cebae038b98218c0656a\n"
    },
    {
      "commit": "59c21036b2e36f2ec0ac35aebe0c6e97539efef8",
      "tree": "cf79499394e87a968dc9a5fca9112de87cf66535",
      "parents": [
        "6a5a5b68647926ce9359607c216e010c4c0b40a1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 02 13:05:03 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 05 13:58:30 2021 +0000"
      },
      "message": "Support /system/system_ext/framework jars with hiddenapi.\n\nWhen devices ship without a /system_ext partition, we create\n/system/system_ext and add a symlink from /system_ext. However, the path\nART gets is the full resolved path, so we need to account for it.\n\nAlso rename LocationIsOnModule to LocationIsOn, as the method has\nnothing to do with modules (anymore?).\n\nCleanup hidden_api_test.cc\n\nBug: 180943021\nTest: hidden_api_test\nChange-Id: Ib3bf65da73248a80f76b8a8a5ed5e004c8716851\n"
    },
    {
      "commit": "39d529f45bad3ecf2bd6b376a049fde6cb0c21b4",
      "tree": "79cc268c360fb4f054bf242c8f4d35d7a90f30ee",
      "parents": [
        "4e7b3c78854d9639758e2519ae29f86a6799857b"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Feb 17 12:48:53 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 04 16:39:03 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add StatsdBackend\"\n\nAdds a new backend that allows reporting ART\u0027s metrics to statsd, where\nthey can then be uploaded to Westworld.\n\nManual Testing Instructions:\n\nRun the following commands.\n\n    m statsd_testdrive\n    adb shell setprop dalvik.vm.extra-opts              \\\n                      -Xwrite-metrics-to-statsd\\\\\\      \\\n                      -Xwrite-metrics-to-log\\\\\\         \\\n                      -Xmetrics-reporting-period\u003d10\n    adb shell stop \u0026\u0026 adb shell start\n    statsd_testdrive 332\n\nAfter about a minute, you should see several atoms logged from ART.\n\nThis reverts commit dbad1ef673140c66cdbcbbf40424674ae8e2b4c8.\nReason for revert: Added statsd apex to prebuilts\n\nBug: 178236337\nTest: Manual, see above\nTest: see instructions on https://r.android.com/1591932\nChange-Id: I2071983c04c51efe88df6a56c59fc418fe6e9424\n"
    },
    {
      "commit": "9150de6901996679c0ea6b34e74c8ddcc718d309",
      "tree": "496386b00b2a1b0b3bfbc36b09cf8083e3922f9b",
      "parents": [
        "8da26145fba859a5aba047f6280568565ffb8bfc"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 26 03:22:24 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 02 07:18:14 2021 +0000"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to art\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  adbconnection/Android.bp\n  benchmark/Android.bp\n  build/Android.bp\n  build/Android.cpplint.mk\n  build/Android.gtest.mk\n  build/apex/Android.bp\n  build/boot/Android.bp\n  build/sdk/Android.bp\n  cmdline/Android.bp\n  compiler/Android.bp\n  dalvikvm/Android.bp\n  dex2oat/Android.bp\n  dexdump/Android.bp\n  dexlayout/Android.bp\n  dexlist/Android.bp\n  dexoptanalyzer/Android.bp\n  disassembler/Android.bp\n  dt_fd_forward/export/Android.bp\n  imgdiag/Android.bp\n  libartbase/Android.bp\n  libartpalette/Android.bp\n  libartservice/Android.bp\n  libartservice/tests/Android.bp\n  libarttools/Android.bp\n  libdexfile/Android.bp\n  libelffile/Android.bp\n  libnativebridge/Android.bp\n  libnativebridge/tests/Android.bp\n  libnativeloader/Android.bp\n  libnativeloader/test/Android.bp\n  libnativeloader/test/Android.mk\n  libprofile/Android.bp\n  oatdump/Android.bp\n  odrefresh/Android.bp\n  perfetto_hprof/Android.bp\n  profman/Android.bp\n  runtime/Android.bp\n  simulator/Android.bp\n  test/001-HelloWorld/Android.bp\n  test/001-Main/Android.bp\n  test/002-sleep/Android.bp\n  test/004-InterfaceTest/Android.bp\n  test/004-SignalTest/Android.bp\n  test/004-UnsafeTest/Android.bp\n  test/004-checker-UnsafeTest18/Android.bp\n  test/006-args/Android.bp\n  test/007-count10/Android.bp\n  test/009-instanceof/Android.bp\n  test/010-instance/Android.bp\n  test/011-array-copy/Android.bp\n  test/012-math/Android.bp\n  test/013-math2/Android.bp\n  test/014-math3/Android.bp\n  test/015-switch/Android.bp\n  test/016-intern/Android.bp\n  test/017-float/Android.bp\n  test/018-stack-overflow/Android.bp\n  test/019-wrong-array-type/Android.bp\n  test/020-string/Android.bp\n  test/021-string2/Android.bp\n  test/022-interface/Android.bp\n  test/025-access-controller/Android.bp\n  test/026-access/Android.bp\n  test/027-arithmetic/Android.bp\n  test/028-array-write/Android.bp\n  test/029-assert/Android.bp\n  test/030-bad-finalizer/Android.bp\n  test/033-class-init-deadlock/Android.bp\n  test/034-call-null/Android.bp\n  test/035-enum/Android.bp\n  test/036-finalizer/Android.bp\n  test/037-inherit/Android.bp\n  test/038-inner-null/Android.bp\n  test/039-join-main/Android.bp\n  test/040-miranda/Android.bp\n  test/041-narrowing/Android.bp\n  test/043-privates/Android.bp\n  test/044-proxy/Android.bp\n  test/045-reflect-array/Android.bp\n  test/046-reflect/Android.bp\n  test/047-returns/Android.bp\n  test/048-reflect-v8/Android.bp\n  test/049-show-object/Android.bp\n  test/050-sync-test/Android.bp\n  test/051-thread/Android.bp\n  test/052-verifier-fun/Android.bp\n  test/053-wait-some/Android.bp\n  test/054-uncaught/Android.bp\n  test/055-enum-performance/Android.bp\n  test/058-enum-order/Android.bp\n  test/059-finalizer-throw/Android.bp\n  test/061-out-of-memory/Android.bp\n  test/062-character-encodings/Android.bp\n  test/063-process-manager/Android.bp\n  test/067-preemptive-unpark/Android.bp\n  test/070-nio-buffer/Android.bp\n  test/072-precise-gc/Android.bp\n  test/072-reachability-fence/Android.bp\n  test/074-gc-thrash/Android.bp\n  test/076-boolean-put/Android.bp\n  test/078-polymorphic-virtual/Android.bp\n  test/079-phantom/Android.bp\n  test/080-oom-fragmentation/Android.bp\n  test/080-oom-throw-with-finalizer/Android.bp\n  test/080-oom-throw/Android.bp\n  test/081-hot-exceptions/Android.bp\n  test/082-inline-execute/Android.bp\n  test/083-compiler-regressions/Android.bp\n  test/084-class-init/Android.bp\n  test/086-null-super/Android.bp\n  test/087-gc-after-link/Android.bp\n  test/090-loop-formation/Android.bp\n  test/092-locale/Android.bp\n  test/093-serialization/Android.bp\n  test/094-pattern/Android.bp\n  test/095-switch-MAX_INT/Android.bp\n  test/096-array-copy-concurrent-gc/Android.bp\n  test/098-ddmc/Android.bp\n  test/099-vmdebug/Android.bp\n  test/100-reflect2/Android.bp\n  test/1004-checker-volatile-ref-load/Android.bp\n  test/101-fibonacci/Android.bp\n  test/102-concurrent-gc/Android.bp\n  test/103-string-append/Android.bp\n  test/104-growth-limit/Android.bp\n  test/105-invoke/Android.bp\n  test/106-exceptions2/Android.bp\n  test/107-int-math2/Android.bp\n  test/108-check-cast/Android.bp\n  test/109-suspend-check/Android.bp\n  test/110-field-access/Android.bp\n  test/112-double-math/Android.bp\n  test/114-ParallelGC/Android.bp\n  test/115-native-bridge/Android.bp\n  test/116-nodex2oat/Android.bp\n  test/120-hashcode/Android.bp\n  test/121-simple-suspend-check/Android.bp\n  test/122-npe/Android.bp\n  test/123-compiler-regressions-mt/Android.bp\n  test/123-inline-execute2/Android.bp\n  test/125-gc-and-classloading/Android.bp\n  test/128-reg-spill-on-implicit-nullcheck/Android.bp\n  test/129-ThreadGetId/Android.bp\n  test/132-daemon-locks-shutdown/Android.bp\n  test/133-static-invoke-super/Android.bp\n  test/1336-short-finalizer-timeout/Android.bp\n  test/1337-gc-coverage/Android.bp\n  test/1339-dead-reference-safe/Android.bp\n  test/136-daemon-jni-shutdown/Android.bp\n  test/139-register-natives/Android.bp\n  test/140-dce-regression/Android.bp\n  test/140-field-packing/Android.bp\n  test/143-string-value/Android.bp\n  test/144-static-field-sigquit/Android.bp\n  test/148-multithread-gc-annotations/Android.bp\n  test/149-suspend-all-stress/Android.bp\n  test/150-loadlibrary/Android.bp\n  test/151-OpenFileLimit/Android.bp\n  test/152-dead-large-object/Android.bp\n  test/153-reference-stress/Android.bp\n  test/154-gc-loop/Android.bp\n  test/156-register-dex-file-multi-loader/Android.bp\n  test/158-app-image-class-table/Android.bp\n  test/159-app-image-fields/Android.bp\n  test/163-app-image-methods/Android.bp\n  test/165-lock-owner-proxy/Android.bp\n  test/168-vmstack-annotated/Android.bp\n  test/169-threadgroup-jni/Android.bp\n  test/170-interface-init/Android.bp\n  test/172-app-image-twice/Android.bp\n  test/174-escaping-instance-of-bad-class/Android.bp\n  test/175-alloc-big-bignums/Android.bp\n  test/176-app-image-string/Android.bp\n  test/177-visibly-initialized-deadlock/Android.bp\n  test/178-app-image-native-method/Android.bp\n  test/179-nonvirtual-jni/Android.bp\n  test/1900-track-alloc/Android.bp\n  test/1901-get-bytecodes/Android.bp\n  test/1902-suspend/Android.bp\n  test/1903-suspend-self/Android.bp\n  test/1904-double-suspend/Android.bp\n  test/1905-suspend-native/Android.bp\n  test/1906-suspend-list-me-first/Android.bp\n  test/1907-suspend-list-self-twice/Android.bp\n  test/1908-suspend-native-resume-self/Android.bp\n  test/1909-per-agent-tls/Android.bp\n  test/1910-transform-with-default/Android.bp\n  test/1911-get-local-var-table/Android.bp\n  test/1912-get-set-local-primitive/Android.bp\n  test/1913-get-set-local-objects/Android.bp\n  test/1914-get-local-instance/Android.bp\n  test/1915-get-set-local-current-thread/Android.bp\n  test/1916-get-set-current-frame/Android.bp\n  test/1917-get-stack-frame/Android.bp\n  test/1919-vminit-thread-start-timing/Android.bp\n  test/1920-suspend-native-monitor/Android.bp\n  test/1921-suspend-native-recursive-monitor/Android.bp\n  test/1922-owned-monitors-info/Android.bp\n  test/1923-frame-pop/Android.bp\n  test/1924-frame-pop-toggle/Android.bp\n  test/1925-self-frame-pop/Android.bp\n  test/1926-missed-frame-pop/Android.bp\n  test/1927-exception-event/Android.bp\n  test/1928-exception-event-exception/Android.bp\n  test/1930-monitor-info/Android.bp\n  test/1931-monitor-events/Android.bp\n  test/1932-monitor-events-misc/Android.bp\n  test/1933-monitor-current-contended/Android.bp\n  test/1934-jvmti-signal-thread/Android.bp\n  test/1935-get-set-current-frame-jit/Android.bp\n  test/1936-thread-end-events/Android.bp\n  test/1937-transform-soft-fail/Android.bp\n  test/1938-transform-abstract-single-impl/Android.bp\n  test/1939-proxy-frames/Android.bp\n  test/1941-dispose-stress/Android.bp\n  test/1942-suspend-raw-monitor-exit/Android.bp\n  test/1943-suspend-raw-monitor-wait/Android.bp\n  test/1945-proxy-method-arguments/Android.bp\n  test/1947-breakpoint-redefine-deopt/Android.bp\n  test/1949-short-dex-file/Android.bp\n  test/1951-monitor-enter-no-suspend/Android.bp\n  test/1953-pop-frame/Android.bp\n  test/1954-pop-frame-jit/Android.bp\n  test/1955-pop-frame-jit-called/Android.bp\n  test/1956-pop-frame-jit-calling/Android.bp\n  test/1957-error-ext/Android.bp\n  test/1958-transform-try-jit/Android.bp\n  test/1959-redefine-object-instrument/Android.bp\n  test/1960-checker-bounds-codegen/Android.bp\n  test/1960-obsolete-jit-multithread-native/Android.bp\n  test/1961-checker-loop-vectorizer/Android.bp\n  test/1961-obsolete-jit-multithread/Android.bp\n  test/1962-multi-thread-events/Android.bp\n  test/1963-add-to-dex-classloader-in-memory/Android.bp\n  test/1967-get-set-local-bad-slot/Android.bp\n  test/1968-force-early-return/Android.bp\n  test/1969-force-early-return-void/Android.bp\n  test/1970-force-early-return-long/Android.bp\n  test/1971-multi-force-early-return/Android.bp\n  test/1972-jni-id-swap-indices/Android.bp\n  test/1973-jni-id-swap-pointer/Android.bp\n  test/1974-resize-array/Android.bp\n  test/1975-hello-structural-transformation/Android.bp\n  test/1976-hello-structural-static-methods/Android.bp\n  test/1977-hello-structural-obsolescence/Android.bp\n  test/1978-regular-obsolete-then-structural-obsolescence/Android.bp\n  test/1979-threaded-structural-transformation/Android.bp\n  test/1980-obsolete-object-cleared/Android.bp\n  test/1982-no-virtuals-structural-redefinition/Android.bp\n  test/1984-structural-redefine-field-trace/Android.bp\n  test/1985-structural-redefine-stack-scope/Android.bp\n  test/1986-structural-redefine-multi-thread-stack-scope/Android.bp\n  test/1987-structural-redefine-recursive-stack-scope/Android.bp\n  test/1988-multi-structural-redefine/Android.bp\n  test/1989-transform-bad-monitor/Android.bp\n  test/1990-structural-bad-verify/Android.bp\n  test/1991-hello-structural-retransform/Android.bp\n  test/1992-retransform-no-such-field/Android.bp\n  test/1993-fallback-non-structural/Android.bp\n  test/1994-final-virtual-structural/Android.bp\n  test/1995-final-virtual-structural-multithread/Android.bp\n  test/1996-final-override-virtual-structural/Android.bp\n  test/1997-structural-shadow-method/Android.bp\n  test/1998-structural-shadow-field/Android.bp\n  test/1999-virtual-structural/Android.bp\n  test/2003-double-virtual-structural/Android.bp\n  test/2004-double-virtual-structural-abstract/Android.bp\n  test/2005-pause-all-redefine-multithreaded/Android.bp\n  test/2008-redefine-then-old-reflect-field/Android.bp\n  test/201-built-in-except-detail-messages/Android.bp\n  test/2011-stack-walk-concurrent-instrument/Android.bp\n  test/2019-constantcalculationsinking/Android.bp\n  test/202-thread-oome/Android.bp\n  test/2020-InvokeVirtual-Inlining/Android.bp\n  test/2021-InvokeStatic-Inlining/Android.bp\n  test/2022-Invariantloops/Android.bp\n  test/2023-InvariantLoops_typecast/Android.bp\n  test/2024-InvariantNegativeLoop/Android.bp\n  test/2025-ChangedArrayValue/Android.bp\n  test/2026-DifferentMemoryLSCouples/Android.bp\n  test/2027-TwiceTheSameMemoryCouple/Android.bp\n  test/2028-MultiBackward/Android.bp\n  test/2029-contended-monitors/Android.bp\n  test/203-multi-checkpoint/Android.bp\n  test/2030-long-running-child/Android.bp\n  test/2031-zygote-compiled-frame-deopt/Android.bp\n  test/2033-shutdown-mechanics/Android.bp\n  test/2036-jni-filechannel/Android.bp\n  test/2037-thread-name-inherit/Android.bp\n  test/2231-checker-heap-poisoning/Android.bp\n  test/2232-write-metrics-to-log/Android.bp\n  test/300-package-override/Android.bp\n  test/301-abstract-protected/Android.bp\n  test/302-float-conversion/Android.bp\n  test/304-method-tracing/Android.bp\n  test/305-other-fault-handler/Android.bp\n  test/401-optimizing-compiler/Android.bp\n  test/402-optimizing-control-flow/Android.bp\n  test/403-optimizing-long/Android.bp\n  test/404-optimizing-allocator/Android.bp\n  test/405-optimizing-long-allocator/Android.bp\n  test/406-fields/Android.bp\n  test/407-arrays/Android.bp\n  test/408-move-bug/Android.bp\n  test/409-materialized-condition/Android.bp\n  test/410-floats/Android.bp\n  test/411-checker-hdiv-hrem-const/Android.bp\n  test/411-checker-hdiv-hrem-pow2/Android.bp\n  test/411-checker-instruct-simplifier-hrem/Android.bp\n  test/411-optimizing-arith/Android.bp\n  test/413-regalloc-regression/Android.bp\n  test/414-static-fields/Android.bp\n  test/418-const-string/Android.bp\n  test/419-long-parameter/Android.bp\n  test/420-const-class/Android.bp\n  test/421-exceptions/Android.bp\n  test/421-large-frame/Android.bp\n  test/422-instanceof/Android.bp\n  test/422-type-conversion/Android.bp\n  test/423-invoke-interface/Android.bp\n  test/424-checkcast/Android.bp\n  test/426-monitor/Android.bp\n  test/427-bitwise/Android.bp\n  test/427-bounds/Android.bp\n  test/429-ssa-builder/Android.bp\n  test/430-live-register-slow-path/Android.bp\n  test/433-gvn/Android.bp\n  test/434-shifter-operand/Android.bp\n  test/435-try-finally-without-catch/Android.bp\n  test/436-rem-float/Android.bp\n  test/436-shift-constant/Android.bp\n  test/437-inline/Android.bp\n  test/438-volatile/Android.bp\n  test/439-npe/Android.bp\n  test/439-swap-double/Android.bp\n  test/440-stmp/Android.bp\n  test/441-checker-inliner/Android.bp\n  test/443-not-bool-inline/Android.bp\n  test/444-checker-nce/Android.bp\n  test/445-checker-licm/Android.bp\n  test/446-checker-inliner2/Android.bp\n  test/447-checker-inliner3/Android.bp\n  test/449-checker-bce-rem/Android.bp\n  test/449-checker-bce/Android.bp\n  test/450-checker-types/Android.bp\n  test/451-regression-add-float/Android.bp\n  test/451-spill-splot/Android.bp\n  test/454-get-vreg/Android.bp\n  test/455-checker-gvn/Android.bp\n  test/456-baseline-array-set/Android.bp\n  test/458-long-to-fpu/Android.bp\n  test/461-get-reference-vreg/Android.bp\n  test/464-checker-inline-sharpen-calls/Android.bp\n  test/465-checker-clinit-gvn/Android.bp\n  test/466-get-live-vreg/Android.bp\n  test/469-condition-materialization/Android.bp\n  test/470-huge-method/Android.bp\n  test/471-deopt-environment/Android.bp\n  test/472-type-propagation/Android.bp\n  test/473-checker-inliner-constants/Android.bp\n  test/473-remove-dead-block/Android.bp\n  test/474-checker-boolean-input/Android.bp\n  test/474-fp-sub-neg/Android.bp\n  test/475-simplify-mul-zero/Android.bp\n  test/476-checker-ctor-fence-redun-elim/Android.bp\n  test/476-checker-ctor-memory-barrier/Android.bp\n  test/476-clinit-inline-static-invoke/Android.bp\n  test/477-checker-bound-type/Android.bp\n  test/477-long-2-float-convers-precision/Android.bp\n  test/478-checker-clinit-check-pruning/Android.bp\n  test/478-checker-inline-noreturn/Android.bp\n  test/478-checker-inliner-nested-loop/Android.bp\n  test/479-regression-implicit-null-check/Android.bp\n  test/480-checker-dead-blocks/Android.bp\n  test/481-regression-phi-cond/Android.bp\n  test/482-checker-loop-back-edge-use/Android.bp\n  test/483-dce-block/Android.bp\n  test/485-checker-dce-switch/Android.bp\n  test/486-checker-must-do-null-check/Android.bp\n  test/487-checker-inline-calls/Android.bp\n  test/488-checker-inline-recursive-calls/Android.bp\n  test/489-current-method-regression/Android.bp\n  test/490-checker-inline/Android.bp\n  test/491-current-method/Android.bp\n  test/492-checker-inline-invoke-interface/Android.bp\n  test/493-checker-inline-invoke-interface/Android.bp\n  test/494-checker-instanceof-tests/Android.bp\n  test/495-checker-checkcast-tests/Android.bp\n  test/496-checker-inlining-class-loader/Android.bp\n  test/497-inlining-and-class-loader/Android.bp\n  test/499-bce-phi-array-length/Android.bp\n  test/500-instanceof/Android.bp\n  test/505-simplifier-type-propagation/Android.bp\n  test/507-boolean-test/Android.bp\n  test/507-referrer/Android.bp\n  test/508-checker-disassembly/Android.bp\n  test/508-referrer-method/Android.bp\n  test/513-array-deopt/Android.bp\n  test/514-shifts/Android.bp\n  test/519-bound-load-class/Android.bp\n  test/521-checker-array-set-null/Android.bp\n  test/521-regression-integer-field-set/Android.bp\n  test/524-boolean-simplifier-regression/Android.bp\n  test/525-checker-arrays-fields1/Android.bp\n  test/525-checker-arrays-fields2/Android.bp\n  test/526-checker-caller-callee-regs/Android.bp\n  test/526-long-regalloc/Android.bp\n  test/527-checker-array-access-simd/Android.bp\n  test/527-checker-array-access-split/Android.bp\n  test/528-long-hint/Android.bp\n  test/529-long-split/Android.bp\n  test/530-checker-loops1/Android.bp\n  test/530-checker-loops2/Android.bp\n  test/530-checker-loops3/Android.bp\n  test/530-checker-loops4/Android.bp\n  test/530-checker-loops5/Android.bp\n  test/530-checker-lse-ctor-fences/Android.bp\n  test/530-checker-lse-simd/Android.bp\n  test/530-checker-lse/Android.bp\n  test/530-checker-lse2/Android.bp\n  test/530-instanceof-checkcast/Android.bp\n  test/530-regression-lse/Android.bp\n  test/532-checker-nonnull-arrayset/Android.bp\n  test/534-checker-bce-deoptimization/Android.bp\n  test/535-deopt-and-inlining/Android.bp\n  test/536-checker-intrinsic-optimization/Android.bp\n  test/537-checker-arraycopy/Android.bp\n  test/537-checker-jump-over-jump/Android.bp\n  test/538-checker-embed-constants/Android.bp\n  test/540-checker-rtp-bug/Android.bp\n  test/542-bitfield-rotates/Android.bp\n  test/542-inline-trycatch/Android.bp\n  test/542-unresolved-access-check/Android.bp\n  test/545-tracing-and-jit/Android.bp\n  test/548-checker-inlining-and-dce/Android.bp\n  test/549-checker-types-merge/Android.bp\n  test/550-checker-multiply-accumulate/Android.bp\n  test/550-new-instance-clinit/Android.bp\n  test/551-checker-clinit/Android.bp\n  test/551-checker-shifter-operand/Android.bp\n  test/551-implicit-null-checks/Android.bp\n  test/552-checker-sharpening/Android.bp\n  test/552-checker-x86-avx2-bit-manipulation/Android.bp\n  test/554-checker-rtp-checkcast/Android.bp\n  test/555-UnsafeGetLong-regression/Android.bp\n  test/557-checker-instruct-simplifier-ror/Android.bp\n  test/558-switch/Android.bp\n  test/559-bce-ssa/Android.bp\n  test/559-checker-rtp-ifnotnull/Android.bp\n  test/560-packed-switch/Android.bp\n  test/561-divrem/Android.bp\n  test/561-shared-slowpaths/Android.bp\n  test/562-bce-preheader/Android.bp\n  test/562-checker-no-intermediate/Android.bp\n  test/563-checker-invoke-super/Android.bp\n  test/564-checker-bitcount/Android.bp\n  test/564-checker-inline-loop/Android.bp\n  test/564-checker-negbitwise/Android.bp\n  test/565-checker-condition-liveness/Android.bp\n  test/566-checker-codegen-select/Android.bp\n  test/566-polymorphic-inlining/Android.bp\n  test/567-checker-builder-intrinsics/Android.bp\n  test/568-checker-onebit/Android.bp\n  test/570-checker-select/Android.bp\n  test/572-checker-array-get-regression/Android.bp\n  test/573-checker-checkcast-regression/Android.bp\n  test/576-polymorphic-inlining/Android.bp\n  test/577-checker-fp2int/Android.bp\n  test/578-bce-visit/Android.bp\n  test/578-polymorphic-inlining/Android.bp\n  test/579-inline-infinite/Android.bp\n  test/580-checker-round/Android.bp\n  test/580-crc32/Android.bp\n  test/581-rtp/Android.bp\n  test/582-checker-bce-length/Android.bp\n  test/583-checker-zero/Android.bp\n  test/584-checker-div-bool/Android.bp\n  test/589-super-imt/Android.bp\n  test/590-checker-arr-set-null-regression/Android.bp\n  test/591-checker-regression-dead-loop/Android.bp\n  test/593-checker-long-2-float-regression/Android.bp\n  test/594-checker-array-alias/Android.bp\n  test/594-load-string-regression/Android.bp\n  test/595-profile-saving/Android.bp\n  test/597-deopt-busy-loop/Android.bp\n  test/597-deopt-invoke-stub/Android.bp\n  test/597-deopt-new-string/Android.bp\n  test/602-deoptimizeable/Android.bp\n  test/603-checker-instanceof/Android.bp\n  test/604-hot-static-interface/Android.bp\n  test/605-new-string-from-bytes/Android.bp\n  test/607-daemon-stress/Android.bp\n  test/609-checker-inline-interface/Android.bp\n  test/609-checker-x86-bounds-check/Android.bp\n  test/610-arraycopy/Android.bp\n  test/611-checker-simplify-if/Android.bp\n  test/614-checker-dump-constant-location/Android.bp\n  test/615-checker-arm64-store-zero/Android.bp\n  test/616-cha-abstract/Android.bp\n  test/616-cha-interface/Android.bp\n  test/616-cha-miranda/Android.bp\n  test/616-cha-native/Android.bp\n  test/616-cha-regression-proxy-method/Android.bp\n  test/616-cha/Android.bp\n  test/617-clinit-oome/Android.bp\n  test/618-checker-induction/Android.bp\n  test/619-checker-current-method/Android.bp\n  test/620-checker-bce-intrinsics/Android.bp\n  test/622-checker-bce-regressions/Android.bp\n  test/623-checker-loop-regressions/Android.bp\n  test/625-checker-licm-regressions/Android.bp\n  test/626-set-resolved-string/Android.bp\n  test/627-checker-unroll/Android.bp\n  test/628-vdex/Android.bp\n  test/629-vdex-speed/Android.bp\n  test/631-checker-get-class/Android.bp\n  test/632-checker-char-at-bounds/Android.bp\n  test/635-checker-arm64-volatile-load-cc/Android.bp\n  test/636-arm64-veneer-pool/Android.bp\n  test/637-checker-throw-inline/Android.bp\n  test/638-checker-inline-cache-intrinsic/Android.bp\n  test/639-checker-code-sinking/Android.bp\n  test/640-checker-boolean-simd/Android.bp\n  test/640-checker-integer-valueof/Android.bp\n  test/640-checker-simd/Android.bp\n  test/641-checker-arraycopy/Android.bp\n  test/641-iterations/Android.bp\n  test/642-fp-callees/Android.bp\n  test/643-checker-bogus-ic/Android.bp\n  test/645-checker-abs-simd/Android.bp\n  test/646-checker-arraycopy-large-cst-pos/Android.bp\n  test/646-checker-long-const-to-int/Android.bp\n  test/646-checker-simd-hadd/Android.bp\n  test/647-jni-get-field-id/Android.bp\n  test/650-checker-inline-access-thunks/Android.bp\n  test/652-deopt-intrinsic/Android.bp\n  test/654-checker-periodic/Android.bp\n  test/655-checker-simd-arm-opt/Android.bp\n  test/655-jit-clinit/Android.bp\n  test/656-checker-simd-opt/Android.bp\n  test/656-loop-deopt/Android.bp\n  test/657-branches/Android.bp\n  test/658-fp-read-barrier/Android.bp\n  test/660-checker-sad/Android.bp\n  test/660-checker-simd-sad/Android.bp\n  test/660-clinit/Android.bp\n  test/661-checker-simd-reduc/Android.bp\n  test/661-oat-writer-layout/Android.bp\n  test/662-regression-alias/Android.bp\n  test/664-aget-verifier/Android.bp\n  test/665-checker-simd-zero/Android.bp\n  test/666-dex-cache-itf/Android.bp\n  test/667-checker-simd-alignment/Android.bp\n  test/667-jit-jni-stub/Android.bp\n  test/667-out-of-bounds/Android.bp\n  test/669-checker-break/Android.bp\n  test/671-npe-field-opts/Android.bp\n  test/672-checker-throw-method/Android.bp\n  test/673-checker-throw-vmethod/Android.bp\n  test/674-HelloWorld-Dm/Android.bp\n  test/674-hotness-compiled/Android.bp\n  test/676-proxy-jit-at-first-use/Android.bp\n  test/677-fsi2/Android.bp\n  test/679-locks/Android.bp\n  test/680-checker-deopt-dex-pc-0/Android.bp\n  test/680-sink-regression/Android.bp\n  test/684-checker-simd-dotprod/Android.bp\n  test/684-select-condition/Android.bp\n  test/685-deoptimizeable/Android.bp\n  test/687-deopt/Android.bp\n  test/689-multi-catch/Android.bp\n  test/689-zygote-jit-deopt/Android.bp\n  test/693-vdex-inmem-loader-evict/Android.bp\n  test/694-clinit-jit/Android.bp\n  test/695-simplify-throws/Android.bp\n  test/696-loop/Android.bp\n  test/697-checker-string-append/Android.bp\n  test/698-selects/Android.bp\n  test/700-LoadArgRegs/Android.bp\n  test/703-floating-point-div/Android.bp\n  test/704-multiply-accumulate/Android.bp\n  test/705-register-conflict/Android.bp\n  test/707-checker-invalid-profile/Android.bp\n  test/708-jit-cache-churn/Android.bp\n  test/711-checker-type-conversion/Android.bp\n  test/717-integer-value-of/Android.bp\n  test/718-zipfile-finalizer/Android.bp\n  test/720-thread-priority/Android.bp\n  test/721-osr/Android.bp\n  test/726-array-store/Android.bp\n  test/728-imt-conflict-zygote/Android.bp\n  test/805-TooDeepClassInstanceOf/Android.bp\n  test/806-TooWideClassInstanceOf/Android.bp\n  test/812-recursive-default/Android.bp\n  test/813-fp-args/Android.bp\n  test/814-large-field-offsets/Android.bp\n  test/815-invokeinterface-default/Android.bp\n  test/818-clinit-nterp/Android.bp\n  test/900-hello-plugin/Android.bp\n  test/901-hello-ti-agent/Android.bp\n  test/902-hello-transformation/Android.bp\n  test/903-hello-tagging/Android.bp\n  test/904-object-allocation/Android.bp\n  test/905-object-free/Android.bp\n  test/906-iterate-heap/Android.bp\n  test/907-get-loaded-classes/Android.bp\n  test/908-gc-start-finish/Android.bp\n  test/910-methods/Android.bp\n  test/911-get-stack-trace/Android.bp\n  test/913-heaps/Android.bp\n  test/914-hello-obsolescence/Android.bp\n  test/915-obsolete-2/Android.bp\n  test/916-obsolete-jit/Android.bp\n  test/917-fields-transformation/Android.bp\n  test/918-fields/Android.bp\n  test/919-obsolete-fields/Android.bp\n  test/920-objects/Android.bp\n  test/921-hello-failure/Android.bp\n  test/922-properties/Android.bp\n  test/923-monitors/Android.bp\n  test/924-threads/Android.bp\n  test/925-threadgroups/Android.bp\n  test/926-multi-obsolescence/Android.bp\n  test/927-timers/Android.bp\n  test/928-jni-table/Android.bp\n  test/930-hello-retransform/Android.bp\n  test/931-agent-thread/Android.bp\n  test/932-transform-saves/Android.bp\n  test/933-misc-events/Android.bp\n  test/937-hello-retransform-package/Android.bp\n  test/939-hello-transformation-bcp/Android.bp\n  test/940-recursive-obsolete/Android.bp\n  test/941-recursive-obsolete-jit/Android.bp\n  test/942-private-recursive/Android.bp\n  test/943-private-recursive-jit/Android.bp\n  test/944-transform-classloaders/Android.bp\n  test/945-obsolete-native/Android.bp\n  test/946-obsolete-throw/Android.bp\n  test/947-reflect-method/Android.bp\n  test/949-in-memory-transform/Android.bp\n  test/950-redefine-intrinsic/Android.bp\n  test/951-threaded-obsolete/Android.bp\n  test/963-default-range-smali/Android.bp\n  test/982-ok-no-retransform/Android.bp\n  test/983-source-transform-verify/Android.bp\n  test/984-obsolete-invoke/Android.bp\n  test/985-re-obsolete/Android.bp\n  test/986-native-method-bind/Android.bp\n  test/987-agent-bind/Android.bp\n  test/988-method-trace/Android.bp\n  test/989-method-trace-throw/Android.bp\n  test/990-field-trace/Android.bp\n  test/991-field-trace-2/Android.bp\n  test/992-source-data/Android.bp\n  test/993-breakpoints/Android.bp\n  test/994-breakpoint-line/Android.bp\n  test/995-breakpoints-throw/Android.bp\n  test/996-breakpoint-obsolete/Android.bp\n  test/997-single-step/Android.bp\n  test/Android.bp\n  tools/Android.bp\n  tools/ahat/Android.bp\n  tools/ahat/Android.mk\n  tools/art_verifier/Android.bp\n  tools/cpp-define-generator/Android.bp\n  tools/dexanalyze/Android.bp\n  tools/dexfuzz/Android.bp\n  tools/dmtracedump/Android.bp\n  tools/hiddenapi/Android.bp\n  tools/jfuzz/Android.bp\n  tools/jvmti-agents/breakpoint-logger/Android.bp\n  tools/jvmti-agents/chain-agents/Android.bp\n  tools/jvmti-agents/dump-jvmti-state/Android.bp\n  tools/jvmti-agents/enable-vlog/Android.bp\n  tools/jvmti-agents/field-counts/Android.bp\n  tools/jvmti-agents/field-null-percent/Android.bp\n  tools/jvmti-agents/jit-load/Android.bp\n  tools/jvmti-agents/list-extensions/Android.bp\n  tools/jvmti-agents/simple-force-redefine/Android.bp\n  tools/jvmti-agents/simple-profile/Android.bp\n  tools/jvmti-agents/ti-alloc-sample/Android.bp\n  tools/jvmti-agents/ti-fast/Android.bp\n  tools/jvmti-agents/titrace/Android.bp\n  tools/jvmti-agents/wrapagentproperties/Android.bp\n  tools/signal_dumper/Android.bp\n  tools/tracefast-plugin/Android.bp\n  tools/veridex/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  sigchainlib/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-GPL-2.0\nto:\n  Android.bp\n  Android.mk\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  dt_fd_forward/Android.bp\n  openjdkjvmti/Android.bp\n\nAdded SPDX-license-identifier-GPL-2.0\n    SPDX-license-identifier-GPL-with-classpath-exception\nto:\n  openjdkjvm/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: If775045c12955fa6d72d40ccf2a09beef93d1699\nMerged-in: If775045c12955fa6d72d40ccf2a09beef93d1699\n"
    },
    {
      "commit": "4c3ade67c470543562a0029e39b576954a807321",
      "tree": "21f56e9c9dae7868ee5d68c18457fd0ea3a271fe",
      "parents": [
        "3a8d7c2de4392ff4c40858803447efe14c3c9fa8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 14:07:10 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 25 08:44:32 2021 +0000"
      },
      "message": "odrefresh: regenerate artifacts after ART APEX update\n\nReplaces compile_bcp.sh to check and compile boot class path\nextensions and system server jars.\n\nEnable ART to load those artifacts when present in the ART APEX data\ndirectory.\n\nBug: 160683548\nTest: art_libartbase_tests\nTest: adb root \u0026\u0026 adb odrefresh {--force-check,--force-compile}\nTest: adb install com.android.art \u0026\u0026 adb reboot \u0026\u0026 adb root \u0026\u0026 \\\n      adb shell odrefresh {--check,--compile} \u0026\u0026 adb reboot \u0026\u0026 \\\n      adb shell cat /proc/\u003czygote\u003e/maps | grep apexdata\nChange-Id: I81bf520d38f9dc0109c91f192bc6e728099049fd\n"
    },
    {
      "commit": "e99a85840462fddafd4253a7c16ca83bb6cca3ed",
      "tree": "ae278cd171cb8fc94a5dde4199c415af2d3e5f53",
      "parents": [
        "135e948025ac2fbc262ad6da34052a8b981c9aee"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Feb 23 19:07:39 2021 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Feb 24 22:16:25 2021 +0000"
      },
      "message": "[metrics] Add GC related counters/histograms\n\nAlso added a base metrics class.\n\nTest: art/test/testrunner/testrunner.py --host\nBug: 177591729\nBug: 177591724\nBug: 177591575\nChange-Id: I8319b134c9afdb674427ea96b2e57e09bb078bb2\n"
    },
    {
      "commit": "df69bd7575cf2537f5563141fd7cb945712686ca",
      "tree": "6584dbdb18a508890f769a9a77f8d328cade66c6",
      "parents": [
        "aa704f17d0d0a026b496853811fefda5d0783028"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 23 11:36:21 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 24 00:40:14 2021 +0000"
      },
      "message": "Remove Flags\n\nThese were reading system properties which caused security warnings in\nsome cases. Removing to allow us to do a more comprehensive design.\n\nThis reverts commit 0a6e9e56f7f3ac7750b38eaba83639ad47a2692f.\nThis reverts commit 3dba023d4fb47882fa215715c196cfa3be30c098.\n\nTest: test.py --host\nChange-Id: I04e8b7a934540b250e6fc56f5aa6ce7f18131d4d\n"
    },
    {
      "commit": "b7cb691fb8da124e8a6276a5a7fee47dd0aaa338",
      "tree": "ab145cf22542511fbbe72d522aca623f663a9db7",
      "parents": [
        "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Feb 19 12:04:58 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 14:44:35 2021 +0000"
      },
      "message": "Do not read persist.device_config properties in flags\n\nThis was causing permission warnings in dexoptanalyzer. Let\u0027s disable\nthis for now until we can be sure to do it right.\n\nTest: presubmit\nChange-Id: I42828857b7db06d6cde47b57c5834ffb02f2f9a6\n"
    },
    {
      "commit": "74584e6b65b6d5949afa9de664b05f453d42872b",
      "tree": "7d4ff8395607f4d64b393e91b5db7d6c1ee45adb",
      "parents": [
        "27b8cb7bb6ba85ca0a903f02c7d38b9f24636af7"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 18 14:39:17 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 22 22:28:15 2021 +0000"
      },
      "message": "[metrics] Add ClassLoadingTotalTime counter\n\nThis keeps track of how much time we spend in the class loading\nprocess.\n\nTesting instructions:\n\n   adb shell setprop dalvik.vm.metrics.write-to-log true\n   adb shell stop \u0026\u0026 adb shell start\n   adb logcat -e \"ART internal metrics\"\n\nObserver ClassLoadingTotalTime in internal metrics report. Example:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 34555\n        session_id: 2710488913234081424\n        uid: 10065\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassLoadingTotalTime: count \u003d 120959\n        ClassVerificationTotalTime: count \u003d 216121\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 4482,10,2,3\n    *** Done dumping ART internal metrics ***\n\nBug: 177591870\nTest: Manual, see above\nChange-Id: I24f0c94ab6af5e6cd9b0dc32122f2905c36cf3b7\n"
    },
    {
      "commit": "0a6e9e56f7f3ac7750b38eaba83639ad47a2692f",
      "tree": "627d537bfaf9a219b855902716bcb3c8609823a7",
      "parents": [
        "8dcdd4735bff02673e5a3ec1238b8aff1d217957"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Feb 12 15:46:06 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 18 18:58:25 2021 +0000"
      },
      "message": "[metrics] Move existing command line arguments to flags\n\nThis will allow us to tune metrics reporting behavior as needed\nthrough server-side configurations rather than having to wait for the\nnext ART release.\n\nThis CL also includes the flag to enable statsd reporting, even though\nthat feature is not yet implemented.\n\nBug: 175050458\nTest: manual\nChange-Id: Id69828684f2cf9d32471703494439d0722f18dce\n"
    },
    {
      "commit": "dbad1ef673140c66cdbcbbf40424674ae8e2b4c8",
      "tree": "d1f1d2521aae7d28f0def5abaed2746e353d2162",
      "parents": [
        "3dba023d4fb47882fa215715c196cfa3be30c098"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Feb 17 13:46:00 2021 +0000"
      },
      "committer": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Feb 17 16:45:59 2021 +0000"
      },
      "message": "Revert \"[metrics] Add StatsdBackend\"\n\nThis reverts commit 3d2b93e6acb4e7ac6fc808f17813975f250dbf89.\n\nReason for revert: Breaks ART tests in chroot environment, as the\n  libstatssocket library is not found. The error message is:\n\n  CANNOT LINK EXECUTABLE\n  \"/apex/com.android.art/bin/art/x86/art_libdexfile_tests\":\n  library \"libstatssocket.so\" not found: needed by\n  /apex/com.android.art/lib/libartd.so in namespace com_android_art\n\n  How to reproduce in AOSP (e.g. on cuttlefish):\n\n  $ lunch aosp_cf_x86_64_phone-userdebug \u0026\u0026 m \u0026\u0026 launch_cvd\n\n  In another terminal, run art gtests on the device:\n\n  $ unset ART_TEST_ANDROID_ROOT\n  $ unset CUSTOM_TARGET_LINKER\n  $ unset ART_TEST_ANDROID_RUNTIME_ROOT\n  $ unset ART_TEST_ANDROID_TZDATA_ROOT\n  $\n  $ export ART_TEST_CHROOT\u003d/data/local/art-test-chroot\n  $ export OVERRIDE_TARGET_FLATTEN_APEX\u003dtrue\n  $ export ANDROID_SERIAL\u003d\"0.0.0.0:6520\"\n  $\n  $ . ./build/envsetup.sh\n  $ lunch aosp_cf_x86_64_phone-userdebug\n  $\n  $ art/tools/buildbot-build.sh --target -j72\n  $ art/tools/buildbot-cleanup-device.sh\n  $ art/tools/buildbot-setup-device.sh\n  $ art/tools/buildbot-sync.sh\n  $\n  $ export ISA\u003dx86_64\n  $ art/tools/run-gtests.sh -j8\n\nBug: 178236337\nTest: art gtests in chroot env on aosp_cf_x86_64_phone-userdebug\nChange-Id: Icbd38792f4d8828c40a53f037cefeebd777172bf\n"
    },
    {
      "commit": "3dba023d4fb47882fa215715c196cfa3be30c098",
      "tree": "da22f82b7cde87f37100f715a0e05f332b377f73",
      "parents": [
        "381d35c1b01401e193544f679bfaf4f5c197f7cd"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Sat Jan 30 02:03:29 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 17 15:05:02 2021 +0000"
      },
      "message": "Add a server-configurable flags API\n\nAdds a new set of flags that can be set by the command line, server\nconfiguration, or system properties. These flags can be used to enable\nor disable certain features or otherwise change their behavior. The\nflexible configuration options facilitate both development and also\nexperimentation.\n\nAs an example of their use, this CL also moves the\n-Xwrite-metrics-to-log command line option to the flags system\ninstead. Future work will migrate the rest of the metrics settings.\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nBug: 175050458\nChange-Id: I1ef37e7d355204a3172b7aa5c0baa4cbd8c7076b\n"
    },
    {
      "commit": "d6e00a754bb5a7f041a4506b0602293fd9cce0e0",
      "tree": "605c24f4b0d1d72f3c3dd633d3ad1c8bad6e2f4e",
      "parents": [
        "3d2b93e6acb4e7ac6fc808f17813975f250dbf89"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 10 13:52:40 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 17 11:41:42 2021 +0000"
      },
      "message": "libartbase: add utilities for on-device signing files\n\nBug: 160683548\nTest: art_file_utils_test.cc\nChange-Id: I17967eebda0a565c033b095fb1deb6ceeaa3760d\n"
    },
    {
      "commit": "3d2b93e6acb4e7ac6fc808f17813975f250dbf89",
      "tree": "c44605b61d2e863ad9d0cb76b59b84a0a8f71266",
      "parents": [
        "d2efecc12ca362cf7d2ee86455b1646f96aecb2c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 15:02:13 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 16 21:16:42 2021 +0000"
      },
      "message": "[metrics] Add StatsdBackend\n\nAdds a new backend that allows reporting ART\u0027s metrics to statsd, where\nthey can then be uploaded to Westworld.\n\nManual Testing Instructions:\n\nRun the following commands.\n\n    m statsd_testdrive\n    adb shell setprop dalvik.vm.extra-opts              \\\n                      -Xwrite-metrics-to-statsd\\\\\\      \\\n                      -Xwrite-metrics-to-log\\\\\\         \\\n                      -Xmetrics-reporting-period\u003d10\n    adb shell stop \u0026\u0026 adb shell start\n    statsd_testdrive 332\n\nAfter about a minute, you should see several atoms logged from ART.\n\nBug: 178236337\nTest: Manual, see above\nChange-Id: Ia1c0bbadb0a9790ab44453ad60ca217c0fdb4e1a\n"
    },
    {
      "commit": "271662c2de6df0a5c85d47177dbe257c973cb3ae",
      "tree": "d020a662fbb4a84fb1954bbd537800b5a2f5b7cc",
      "parents": [
        "f6eb16b1bc9edcdffb004cedd78c2b26be84e559"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Feb 10 06:44:08 2021 -0800"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Feb 10 18:33:13 2021 +0000"
      },
      "message": "[metrics] Avoid string copy\n\nWe pass by const reference instead of copy.\n\nTest: TreeHugger\nChange-Id: Icf9ed05d001d5ed07f6160a06d5295501bfeeb05\n"
    },
    {
      "commit": "60117aeeffda3d01a5314984694ae3d6d4588fc1",
      "tree": "12f5062c456de8b50418a8fb74c801c8ccc5b690",
      "parents": [
        "c7ac91b21d1a15c14e29d69ff02b48c485962b0d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 08 17:46:15 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 10 01:39:40 2021 +0000"
      },
      "message": "Improve string splitting\n\nString splitting is something that we often have to do but our support\ncode for doing so is not the best. Add support for using\nstd::string_view in many circumstances and add support for making an\niterator of splits without allocation.\n\nTest: ./test.py --host\nChange-Id: I1b56b7e10926a064b64011326b508dd4af707df9\n"
    },
    {
      "commit": "c7ac91b21d1a15c14e29d69ff02b48c485962b0d",
      "tree": "f8bcc4df536c29773742cbb54b32b959ebd601c3",
      "parents": [
        "5c48df9895530fb26666c6d79d155ef3886d7a83"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Feb 04 21:44:01 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 09 16:31:17 2021 +0000"
      },
      "message": "[metrics] Report some ART metadata\n\nAdds reporting for some metadata associated with ART metrics,\nincluding timestamp relative to ART startup, the session id, and the\nprocess\u0027s user id. It additionally outputs placeholders for the\ncompilation reason and compiler filter, but these need some additional\nplumbing from the Runtime and OatFileManager to fill in, so those will\ncome in a followup CL.\n\nThis CL also includes a fair amount of refactoring around metrics\nreporting and handling the session data.\n\nExample output:\n\n    *** ART internal metrics ***\n      Metadata:\n        timestamp_since_start_ms: 768\n        session_id: 5026277321588503825\n        uid: 123456\n        compilation_reason: Unknown\n        compiler_filter: (unspecified)\n      Metrics:\n        ClassVerificationTotalTime: count \u003d 4167\n        JitMethodCompileTime: range \u003d 0...1000000, buckets: 7,0,0,0,0,0\n    *** Done dumping ART internal metrics ***\n\nTest: ./test/run-test --host --jit 2232-write-metrics-to-log\nChange-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc\n"
    },
    {
      "commit": "7302a74df6f956fe7e20b2c62441666835f1a1f5",
      "tree": "b2806c310cdc5a50c76daed5866908e7f18af50b",
      "parents": [
        "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 05 09:31:14 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sun Feb 07 22:10:57 2021 +0000"
      },
      "message": "Re-init Locks and MemMap for each gtest\n\nCommonRuntimeTest gtests will clear the MemMap statics when it deletes\nthe runtime. This can cause other tests to fail if you run the gtests\nwith the `--no_isolate` flag. By reinitializing these systems in\nCommonArtTestImpl::Setup in addition to the original call in\ngtest_main.cc this issue is avoided.\n\nTest: $ANDROID_HOST_OUT/nativetest64/art_compiler_tests/art_compiler_tests --no_isolate\n\nChange-Id: Ifb258e3ca6bf63ca0f821ed598143b3cc41d3e8b\n"
    },
    {
      "commit": "c5323fe55f82d91d53ac4ccfd82dde7baa55a4af",
      "tree": "c81fb19ae8c7a12ffb70ea6caa62bcc6c637a742",
      "parents": [
        "b6dda5a1fa90b08d3ebf83a5d1f882e5355bc68b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 04 21:20:30 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sat Feb 06 15:59:32 2021 +0000"
      },
      "message": "libartpalette: Use fixed width typedef rather than enum for status\n\nAs the NDK guidelines note, the size of an enum is a compiler choice\nso an enum of unqualifed width cannot be considered stable ABI.\n\nBug: 122824298\nTest: TH\nChange-Id: I63d42fdb5a989aab15ec995529781b1b8c3ddb7a\n"
    },
    {
      "commit": "55ab7e84c4682c492b6fa18375b87ffc5d0b23bb",
      "tree": "5fcc2567a1a4e6ae73dead2f70c69bc03b0a64bb",
      "parents": [
        "ac27ac01490f53f9e2413dc9b66fbb2880904c96"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Apr 27 21:02:28 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Feb 05 11:34:38 2021 +0000"
      },
      "message": "ARM64: Support SVE VL other than 128-bit.\n\nArm SVE register size is not fixed and can be a\nmultiple of 128 bits. To support that the patch\nremoves explicit assumptions on the SIMD register\nsize to be 128 bit from the vectorizer and code\ngenerators and enables configurable SVE vector\nlength autovectorization, e.g. extends SIMD register\nsave/restore routines.\n\nTest: art SIMD tests on VIXL simulator.\nTest: art tests on FVP (steps in test/README.arm_fvp.md)\n      with FVP arg:\n      -C SVE.ScalableVectorExtension.veclen\u003d[2,4]\n      (SVE vector [128,256] bits wide)\n\nChange-Id: Icb46e7eb17f21d3bd38b16dd50f735c29b316427\n"
    },
    {
      "commit": "de275aaeb7bf32eeed7a091c70015517ead6e514",
      "tree": "beca367d7d047644320305cf070adcf4d811eb45",
      "parents": [
        "480d98182efa33179f1773c791dc8f4bed62ef2b"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Feb 01 22:59:11 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Feb 02 00:55:04 2021 +0000"
      },
      "message": "Revert \"[metrics] Add histogram statistics for reporting\"\n\nThis reverts commit 3a1ca400758302f44a95ae8255ca7c012d651d73.\n\nReason for revert: asan failures\n\nTest: m com.android.art\nChange-Id: I26e3575add133c790ec6f2d51aac3a013216b0e0\n"
    },
    {
      "commit": "480d98182efa33179f1773c791dc8f4bed62ef2b",
      "tree": "e352691c80cd341dcfb55ef31d3f2044362c9416",
      "parents": [
        "10592e30a959d4ebe90f5ba4b6237ec0cacddc6c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 27 23:41:45 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 01 19:09:57 2021 +0000"
      },
      "message": "[metrics] Move core metrics code to libartbase\n\nWe would like to be able to use ART\u0027s metrics system in places where\nwe do not have access to the runtime. This CL splits the metrics code\ninto the core implementation of the counters and histograms and the\nbackground reporting thread. The reporting thread was the only part\nthat had dependencies on the runtime, so this remains in the runtime.\n\nThe bulk of the metrics code moves to libartbase so that it can be\nused in more contexts.\n\nBug: 178099697\nTest: m test-art-host-gtest\nChange-Id: I26a4fe326371686d5857ad49ba98569f5c55f84a\n"
    },
    {
      "commit": "a7c66e7e5845b26711b261773179abf0f8b34ced",
      "tree": "a621a91059f9a7d2cefc92710fac2cd28350d133",
      "parents": [
        "af2aabc47d97556bf0fde258e6ddb472eebe0855"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 27 11:41:58 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 21:23:25 2021 +0000"
      },
      "message": "Avoid potential null dereference\n\nIn a log statement we were dereferencing a pointer that could\npotentially be null. Add support for safely dereferencing a pointer\nfor ostreams.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ibe04811883575902a9b2fe8a064f18de2b2cea7b\n"
    },
    {
      "commit": "ef01e763eb700b513e4042ef7a1fbd22ecb10fc4",
      "tree": "e25f0ae7bb2c36a83159ca4b649296b381caea56",
      "parents": [
        "7968cae11af60796b27398a95c32ff0cc31457a4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 22 10:40:16 2021 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 22 12:30:44 2021 +0000"
      },
      "message": "Guard clock_gettime\n\nclock_gettime is available on mac os starting from 10.12. On older\nversions, let\u0027s use time(2).\n\nBug: 178124881\nTest: watch a forrest run on mac\nChange-Id: I60699cc013f090fe131642bf90afcfd3c6e9bdc6\n"
    },
    {
      "commit": "0b986f73e018fe55af1d71d2f8deaa61bd6840a2",
      "tree": "ac0626c2b722d7bdec205eda84fbf807621d35fa",
      "parents": [
        "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 20 22:24:06 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Jan 21 18:16:38 2021 +0000"
      },
      "message": "Revert^4 \"[metrics] Add background reporting thread\"\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nThis reverts commit 1060838894e34785139b5e3583fbc9edad7fa7f9.\n\nReason for revert: Remove problematic test\n\nTest: test/run-test --host 2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nBug: 170149255\nChange-Id: I3d72043bbb1e652728253585aae5486598658d2b\n"
    },
    {
      "commit": "1060838894e34785139b5e3583fbc9edad7fa7f9",
      "tree": "267cc17ce650219d520e847fa011ebada320b8b8",
      "parents": [
        "f1d06474baa2f7c00761db39099b89ddab71bbe4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 15 09:20:23 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 15 09:20:58 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"[metrics] Add background reporting thread\"\"\n\nThis reverts commit 4c176b9de6c430422395017910633bcb001b2e84.\n\nReason for revert: Test fails on target.\n\nChange-Id: Idfef53679cf602c7c10a9cc0ffb16fda583ed78f\n"
    },
    {
      "commit": "4c176b9de6c430422395017910633bcb001b2e84",
      "tree": "7e2977cbda130db7f4f83e8eba9449f49e0e4397",
      "parents": [
        "5bb354fa440ae7c9ebe6994ceb45e6795c5d3363"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 15 18:23:28 2020 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Jan 14 21:40:56 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add background reporting thread\"\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nThis reverts commit 73366109eec37b75f77f24e6e52832047508b34f.\n\nThe reason this was previously reverted was due to failures where\nJVMTI reported an unexpected thread at startup. This change fixes the\nissue by adding the metrics background reporting thread to the list of\nallowed threads in ti_thread.cc.\n\nTest: test/run-test --host 2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nChange-Id: I5eea4a4551de9cf4672a461c09521ef871063a91\n"
    },
    {
      "commit": "5bb354fa440ae7c9ebe6994ceb45e6795c5d3363",
      "tree": "166f2719d86826c33b8b2e541c4bda8ee9caa93f",
      "parents": [
        "ec389671c661ea1cb73490a2896d6519f299dea2"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 13 20:38:34 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 14 21:39:16 2021 +0000"
      },
      "message": "Revert^4 \"[metrics] Add file output support\"\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nThis reverts commit f8567b535dcc4618f0ee76e5b8716d296681197b.\n\nReason for revert: Splitting out problematic test.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360\nBug: 170149255\nChange-Id: I09be3bfe10293fe71ded1a5b155dcd2fd226f8b3\n"
    },
    {
      "commit": "365f94f828ebd8aa5f55e3a3882f847960ed6bb5",
      "tree": "b9f8bac488e85093e203f8c079a13dd44a7c033d",
      "parents": [
        "923141b0faf9a0ea3b61bf0a507d95578b2b95e6"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 13 16:27:57 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 14 10:58:35 2021 +0000"
      },
      "message": "Minor updates to fd_file.h\n\n* Add a static IsOpenFd() method for checking if fd is open.\n* File::IsOpened() now checks when underlying FD is open (not just valid)\n* Centralize a definition for kInvalidFd in art projects.\n\nTest: art_libartbase_tests\nChange-Id: Ic5db8b6c80e184308c6ad8979ed31585120eb89f\n"
    },
    {
      "commit": "f8567b535dcc4618f0ee76e5b8716d296681197b",
      "tree": "59581c9c3d168f3a1b8e0dd7f4a2e384a8434999",
      "parents": [
        "0ddba9a4239477a2319fbf4317ca8782308c2c35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 09:50:24 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 09:51:02 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"[metrics] Add file output support\"\"\n\nThis reverts commit 8ef84f233a55972eb3a3d84c11c1617531af8e92.\n\nBug: 175025360\nBug: 170149255\n\nReason for revert: test failing on target\n\nChange-Id: I8d82462f6fb853ece4a4b295de17ab13b1f1b6f1\n"
    },
    {
      "commit": "8ef84f233a55972eb3a3d84c11c1617531af8e92",
      "tree": "cb7113879d10fcafd3b3c2d969e75fba7c60dc35",
      "parents": [
        "46d6fc0e16d65468aa259fadf27ddfeef72987b7"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Jan 12 00:04:57 2021 +0000"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Jan 12 17:16:13 2021 +0000"
      },
      "message": "Revert^2 \"[metrics] Add file output support\"\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nThis reverts commit ce2e0957f065002293ef152da28b6fa941c6baa3.\n\nReason for revert: Fixed test failures by adding Android.bp file.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360\nBug: 170149255\nChange-Id: I6768f5b4920896fc0f8e5866c878af999f73012d\n"
    },
    {
      "commit": "782fb716122d37dc4c4d7482afb21f6e68be04b4",
      "tree": "fdbf479b04c73f692051dc8abf6efda3114a87e4",
      "parents": [
        "5bcdd17a43fda7ac27968b13f6969133fae40b37"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 12:47:31 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:05:34 2021 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker.\n\nExtend the HashSet\u003c\u003e and HashMap\u003c\u003e API with constructors\nthat allow using a stack-allocated initial buffer to avoid\nthe allocation overhead for small containers.\n\nFix HashMap\u003c\u003e implementation for std::pair\u003c\u003e being used\nas the Key. Make Signature copy-assignable so that we can\nuse it as (part of) a Value in HashMap\u003c\u003e.\n\nMove the definition of ClassLinker::MethodTranslation from\nclass_linker.h to class_linker.cc. Add a default constructor\nused for creating empty entries in HashMap\u003c\u003e.\n\nUse HashMap\u003c\u003e and HashSet\u003c\u003e in ClassLinker instead of\nstd::unordered_map\u003c\u003e and std::unordered_set\u003c\u003e as it is much\nfaster thanks to avoiding individual nodes that need malloc\nand free and for small containers we also avoid allocations\nthanks to the extended HashSet\u003c\u003e and HashMap\u003c\u003e API.\n\nAlso avoid unnecessary std::vector\u003c\u003e for FillIfTable() and\nreplace linear search with HashSet\u003c\u003e lookup (note that the\n`ContainsElement()` helper has an overload for std::set\u003c\u003e\nbut not for any other associative container).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I48722fb3bb7780bf12fb71c7449494e097e4a368\n"
    },
    {
      "commit": "26de89604fdb6f7db3effcf775860f9f0dcd00f0",
      "tree": "2830f9340b2af2c7d5f3919a46a014f20ad04368",
      "parents": [
        "cea158fa671917938562c69c143ac5a8b2a29fc7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 14:36:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 23 15:46:20 2020 +0000"
      },
      "message": "Use HashMap\u003c\u003e and HashSet\u003c\u003e in dex2oat.\n\nUse HashMap\u003c\u003e instead of std::unordered_map\u003c\u003e in ImageWriter\nas it is much faster thanks to avoiding individual nodes\nthat need malloc/free. However, for larger value types, such\nas `NativeObjectRelocation`, this can increase memory usage.\n\nAvoid storing individual ArtField relocations to reduce the\nmemory usage and re-hashing time. Rename `pointer_arrays_`\nto `method_pointer_arrays_` and change it to HashSet\u003c\u003e,\nremoving the unnecessary storage for `Bin`, as it has not\nbeen used for fields since\n    https://android-review.googlesource.com/162796 .\n\nAvoid double-lookups for insertion CHECK()s by using the\nresult of HashSet\u003c\u003e::insert(). Remove obsolete comments from\nthe HashSet\u003c\u003e::insert() API that have been wrong since\n    https://android-review.googlesource.com/1169846 .\n\nSimilary, use HashSet\u003c\u003e instead of std::unordered_set\u003c\u003e in\nCompilerDriver.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 175869411\nChange-Id: I538c3ac2ce8d7cad69bb14709702ac7ee0af810d\n"
    },
    {
      "commit": "ce2e0957f065002293ef152da28b6fa941c6baa3",
      "tree": "d8c28f4e46c4140b073331ea69b8b14e87590f15",
      "parents": [
        "fff1d8f9f3881d223f3d068f974da14f3d80de88"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 11:24:36 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 13:29:17 2020 +0000"
      },
      "message": "Revert \"[metrics] Add file output support\"\n\nThis reverts commit 51a9283984b05511bd98f9bcbd1f2f18900239cc.\n\nReason for revert: The new test is broken on device.\n\nBug: 175025360\nBug: 170149255\nChange-Id: I94d33f9e3d2203a0323fd5dc34f5a6f3e6147367\n"
    },
    {
      "commit": "51a9283984b05511bd98f9bcbd1f2f18900239cc",
      "tree": "09b25eb574b2c93f4e940bfab423b58acdf340bd",
      "parents": [
        "20cadbf2a204a029b595cd44f9298f6570b5c812"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Dec 07 15:07:00 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 21 18:09:31 2020 +0000"
      },
      "message": "[metrics] Add file output support\n\nAdds a new command line option, -Xwrite-metrics-to-file\u003d_, which\nspecifies a file for writing metrics to. This can be used in conjunction\nwith -Xwrite-metrics-to-log, which will cause the output to go to both\nlogcat and the file.\n\nWriting metrics to a file can be helpful for testing or benchmarking\nenvironments.\n\nAccess to the file is protected using advisory locking, so it is safe to\nhave multiple processes write metrics to the same file.\n\nTest: test/run-test --host test/2234-write-metrics-to-file\nBug: 175025360, 170149255\nChange-Id: I83a4f959cbb96847dc71188035c050a73b915064\n"
    },
    {
      "commit": "73366109eec37b75f77f24e6e52832047508b34f",
      "tree": "b4467d6220aa9aa06bbbca2440d3cefa57ecd5a7",
      "parents": [
        "cf097a7dba6eb0f9c788e7284efd46640b100e1f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sun Dec 13 01:28:33 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 13 14:33:59 2020 +0000"
      },
      "message": "Revert \"[metrics] Add background reporting thread\"\n\nThis reverts commit 77f7eb9d05b6d05531556882d99ed63688c6e3b0.\n\nReason for revert: We\u0027re seeing consistent 2233-metrics-background-thread failures on target.\n\nChange-Id: Ie394dbe90289b1472ac4c8876d01ece347541852\n"
    },
    {
      "commit": "77f7eb9d05b6d05531556882d99ed63688c6e3b0",
      "tree": "76754e225ffd358eda851b51d7ca541843d6040b",
      "parents": [
        "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 14:54:23 2020 -0800"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Dec 10 12:34:45 2020 -0800"
      },
      "message": "[metrics] Add background reporting thread\n\nThis adds a background thread that reports metrics every N seconds,\nwhere N is specified by the -Xmetrics-reporting-period command line\noption. Periodic reporting is disabled by default.\n\nTest: test/run-test --host test/2233-metrics-background-thread\nTest: adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.extra-opts \\\n          -Xmetrics-reporting-period\u003d30\\\\\\ -Xwrite-metrics-to-log \u0026\u0026 \\\n      adb shell start \u0026\u0026 \\\n      adb logcat  # observe metrics in log\nChange-Id: I4d6ae7701dd2fe36bc761ef6170ddd6860a3c0e6\n"
    },
    {
      "commit": "e4f2215df60f0408d37ec796ececaa32b860d37a",
      "tree": "44aa9093d846a27a1681e60ebcc5d07f7b1a41c3",
      "parents": [
        "86d6cd53385eae365f16f45e1a5947cc6595eb63"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 15:23:33 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 22:14:15 2020 +0000"
      },
      "message": "[metrics] Move metrics code to runtime\n\nThe background reporting thread is going to need tighter ties to the\nRuntime object, so it makes sense to bring the rest of the metrics code\nunder runtime. Since these are mostly runtime metrics, this is a more\nlogical place for them anyway.\n\nTest: m test-art-host-gtest-art_runtime_tests\nBug: 170149255\nChange-Id: Ib425041c41a5283237af8dd9978582e605a89a31\n"
    },
    {
      "commit": "210a78d9ec4349601ac57381046229f4da1197f4",
      "tree": "dba581ba26ba7f6add0c3c1a2968d4f5d5dc8336",
      "parents": [
        "59d4b53e70bc1e0589ce05428c945b4585e28d0f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 16:58:05 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 20:12:45 2020 +0000"
      },
      "message": "Ensure ClearLoopInformation doesn\u0027t require particular ordering\n\nThe ClearLoopInformation call used to use the RPO list to find\nblocks which potentially had loop-information. This meant that if one\nwas also clearing the dominance information (which is quite common)\none needed to be sure to call ClearLoopInformation before calling\nClearDominanceInformation or else loop information will not be fully\ncleared. This could cause quite perplexing errors if dominance\ninformation is recomputed later (also quite common). This error is in\nfact present in several tests (none of which use loops which is how it\ngot missed).\n\nFix this issue by just looping over all blocks. Also add a new\nGetActiveBlocks function which does the filtering of null blocks\nautomatically. In many cases (such as these) we use RPO purely because\nit doesn\u0027t require filtering. This should be able to replace these\nuses.\n\nTest: ./test.py --host\nChange-Id: I60c7defc409111471064e9bf02b7ae3a0eb10584\n"
    },
    {
      "commit": "59d4b53e70bc1e0589ce05428c945b4585e28d0f",
      "tree": "f7ca666fa879e98e89956053911c5d206b09787d",
      "parents": [
        "de60ef3f91af06a3b8ef24f4bab5c547dc65e10d"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Oct 21 17:49:39 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Dec 01 09:19:19 2020 -0800"
      },
      "message": "[metrics] Add -Xwrite-metrics-to-log option\n\nThis CL adds a -Xwrite-metrics-to-log command line option, which causes\nART to write metrics to logcat at shutdown. At the moment, this is\nmostly useful for tests, but this change also lays some of the\nfoundation for more flexible metrics reporting.\n\nTest: test/run-test --host 2232-write-metrics-to-log\nBug: 170149255\nChange-Id: Ie4db70b9be83b2dc82e62798aa9977120a6e4ac5\n"
    },
    {
      "commit": "21000ae6fe36b525b5b3561b1b35836eb1325dfe",
      "tree": "1c99d2c98a21431fac6a75659769b79b324b53c1",
      "parents": [
        "ac3fcff3ad61fe468517163f47ec2239dff4e17f"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Nov 16 10:47:08 2020 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Mon Nov 23 09:45:45 2020 +0000"
      },
      "message": "Add \"lo-prio\" tag.\n\nThe tag is being introduced in hiddenapi-flags.csv  so support\nit here too.\n\nTest: Treehugger\nChange-Id: I121e573b2b6a65a164194c83777c4971a5c58673\n"
    },
    {
      "commit": "86fe9b85c5243debe5f695c1625bae03bf738452",
      "tree": "5de78b8292a0225b617e1825817cbd12b46b6fa3",
      "parents": [
        "cc9df4fa1e666b90c5dd8eac94773763f8421f1e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 16 16:54:01 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 20:26:53 2020 +0000"
      },
      "message": "Revert^4 \"Partial LSE analysis \u0026 store removal\"\n\nWe incorrectly handled merging unknowns in some situations.\nSpecifically in cases where we are unable to materialize loop-phis we\ncould end up with PureUnknowns which could end up hiding stores that\nneed to be kept.\n\nIn an unrelated issue we were incorrectly considering some values as\nescapes when live at the point of an invoke. Since\nSearchPhiPlaceholdersForKeptStores used a more precise notion of\nescapes we could end up removing stores without being able to replace\nthe values.\n\nThis reverts commit 2316b3a0779f3721a78681f5c70ed6624ecaebef.\nThis unreverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Fixed issue causing incorrect store elimination\nTest: ./test.py --host\nTest: Boot cuttlefish\n      atest FrameworksServicesTests:com.android.server.job.BackgroundRestrictionsTest#testPowerWhiteList\n\nChange-Id: I2ebae9ccfaf5169d551c5019b547589d0fce1dc9\n"
    },
    {
      "commit": "2316b3a0779f3721a78681f5c70ed6624ecaebef",
      "tree": "8aa4682729b839a97b2578e6cbe05ee5d35be923",
      "parents": [
        "aeb7f9f8fe718219cfb04e0da5df62683250477d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Nov 14 01:28:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 02:54:26 2020 +0000"
      },
      "message": "Revert^3 \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis unreverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis rereverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Git-blame seems to point to the CL as cause of\nb/173120044. Revert during investigation.\n\nChange-Id: I46f557ce79c15f07f4e77aacded1926b192754c3\n"
    },
    {
      "commit": "b6837f0350ff66c13582b0e94178dd5ca283ff0a",
      "tree": "f79fff81352545efe967850e3d17e32255dcfecd",
      "parents": [
        "32c2eb81320f24b5bab24754204b8be95faa08b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 12 17:05:28 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 10:07:21 2020 +0000"
      },
      "message": "Revert^2 \"Partial LSE analysis \u0026 store removal\"\n\nA ScopedArenaAllocator in a single test was accidentally loaded using\noperator new which is not supported. This caused a memory leak.\n\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: Fixed memory leak in\nLoadStoreAnalysisTest.PartialEscape test case\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 m test-art-host-gtest-dependencies\n      Run art_compiler_tests\n\nChange-Id: I34fa2079df946ae54b8c91fa771a44d56438a719\n"
    },
    {
      "commit": "fe270426c8a2a69a8f669339e83b86fbf40e25a1",
      "tree": "c048fdec8e37cefb7238218a087709c01d5d3923",
      "parents": [
        "e17530a19a717879c8dd8e70073de6aaf4ee455f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 14:12:52 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 16:33:50 2020 +0000"
      },
      "message": "Revert \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: memory leak detected in the test.\n\nChange-Id: I81cc2f61494e96964d8be40389eddcd7c66c9266\n"
    },
    {
      "commit": "bb6cda60e4418c0ab557ea4090e046bed8206763",
      "tree": "f6b94510108cb653a80e0ea14d50ad6616c9f44a",
      "parents": [
        "670ff8854cf075617e0abee77b2259903757d86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 09 13:24:56 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 12 02:08:44 2020 +0000"
      },
      "message": "Partial LSE analysis \u0026 store removal\n\nThis is the first piece of partial LSE for art. This CL adds analysis\ntools needed to implement partial LSE. More immediately, it improves\nLSE so that it will remove stores that are provably non-observable\nbased on the location they occur. For example:\n\n```\nFoo o \u003d new Foo();\nif (xyz) {\n  check(foo);\n  foo.x++;\n} else {\n  foo.x \u003d 12;\n}\nreturn foo.x;\n```\n\nThe store of 12 can be removed because the only escape in this method\nis unreachable and was not executed by the point we reach the store.\n\nThe main purpose of this CL is to add the analysis tools needed to\nimplement partial Load-Store elimination. Namely it includes tracking\nof which blocks are escaping and the groups of blocks that we cannot\nremove allocations from.\n\nThe actual impact of this change is incredibly minor, being triggered\nonly once in a AOSP code. go/lem shows only minor effects to\ncompile-time and no effect on the compiled code. See\ngo/lem-allight-partial-lse-2 for numbers. Compile time shows an\naverage of 1.4% regression (max regression is 7% with 0.2 noise).\n\nThis CL adds a new \u0027reachability\u0027 concept to the HGraph. If this has\nbeen calculated it allows one to quickly query whether there is any\nexecution path containing two blocks in a given order. This is used to\ndefine a notion of sections of graph from which the escape of some\nallocation is inevitable.\n\nTest: art_compiler_tests\nTest: treehugger\nBug: 67037140\nChange-Id: I0edc8d6b73f7dd329cb1ea7923080a0abe913ea6\n"
    },
    {
      "commit": "f579b063b848d04e42aa64774949bf0deb5aab0f",
      "tree": "7a3ac429f990d7592336c0e73f13bbd65a433b16",
      "parents": [
        "61c71ef48e7fb0557af5702a9021bd2854f84e28"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Sat Oct 24 22:54:39 2020 +0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 27 00:29:57 2020 +0000"
      },
      "message": "Unified sampling PGO for art\n\nUse a combined sampling PGO profile for ART libraries.\n\nTest: build\nBug: 79161490\nChange-Id: I2eeb1ac07971e37ee23848ebfb718b4651b9ac75\n"
    },
    {
      "commit": "61c71ef48e7fb0557af5702a9021bd2854f84e28",
      "tree": "e25fdadab83a68735c29c341b22433b1a58c5594",
      "parents": [
        "1485d4affe0eb881c488d7b95eb3a556a22034a4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 22:37:36 2020 +0000"
      },
      "message": "[metrics] Dump ArtMetrics on SIGQUIT\n\nART now writes a current snapshot of its internal metrics in response to\na SIGQUIT.\n\nExample output:\n```\n*** ART internal metrics ***\n\nClassVerificationTotalTime: count \u003d 863833\nJitMethodCompileTime: range \u003d 0...1000000, buckets: 244,5,1,0,1,0,0,0,0,1,0,0,0,0,0\n\n*** Done dumping ART internal metrics ***\n```\n\nThis includes a new StreamBackend, which is used to write ART metrics to\nan output stream in a human readable format.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Iaf8bcee5a4993e70ac4e36940591a734fe1a6697\n"
    }
  ],
  "next": "31376818547504490f450aff52d50839f7a0b539"
}
