)]}'
{
  "log": [
    {
      "commit": "1792c6ff1c9838dfbe948be124dc1a8501fc6636",
      "tree": "f8df705069592bc5037f6f580fcafe0df07f6d91",
      "parents": [
        "4f388e3f26925f84d0a623a5a0e3c909fd09bd98"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jun 24 17:35:50 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 01 20:17:33 2021 +0000"
      },
      "message": "Add -XX:ForceJavaZygoteForkLoop flag\n\nSetting this to true effectively disables the zygote native fork\nloop, either for testing/measurement purposes, or as a fallback.\n\nBug: 192020504\nTest: Check logcat with and without the flag.\nChange-Id: I83c401d21ae2797442011d9ac6f23c78990920bd\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": "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": "beb9f2012587035a5c30d0eca8af458b2ad659b7",
      "tree": "ebc2509c9d3250d47e6e54c2c67f2f4bce74c80b",
      "parents": [
        "f31b75b2b80154112835c25bb0a21196453ac71a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 02 14:42:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 08 20:58:43 2021 +0000"
      },
      "message": "Consider the size of the reference profile when assessing IsFirstSave\n\nThis makes the detection logic for the first profile save much more\nprecise. It prevents the case where we would return true if\nthe data was already moved from the current profile to the reference\nprofile.\n\nAt the same time, rework part of the logic for early save. The checks\nneeded to be moved earlier to encompass the startup class resolution.\n\nTest: run-test \u0026 manual\nadb shell stop;\nadb shell setprop dalvik.vm.ps-min-save-period-ms 300;\nadb shell setprop dalvik.vm.extra-opts -verbose:profiler;\nadb shell start;\nadb shell cmd package compile com.android.systemui -r bg-dexopt\nrestart \u0026 check\n\nBug: 185979271\nChange-Id: Icfec30c6f49c8e03b03ff4bcbc2b869393fdcbfe\n"
    },
    {
      "commit": "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": "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": "d196f661fae8473dedfd4b544c6873144202bc78",
      "tree": "86cfc190bd2a5e57a86e10f3ae5606643bb25c84",
      "parents": [
        "46bf0f2c4423bc6e7c59b228d5c4a17e4a4e6200"
      ],
      "author": {
        "name": "Nikita Iashchenko",
        "email": "nikitai@google.com",
        "time": "Tue Apr 27 18:31:03 2021 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Wed May 26 00:26:18 2021 +0000"
      },
      "message": "Rename setters to conform Android API guidelines\n\nBug: 184654804\nTest: m droid\nChange-Id: I6ae5dd363bdb32cea6acd9dab7afbd4579fb0c4c\n"
    },
    {
      "commit": "abe7c69edb5ff8f9a4b8019d475caa2f35085aa7",
      "tree": "d8d86bf8c2264897eb9f7cf35be7c523f611688e",
      "parents": [
        "571a6bea24452e9b288106f379c7510c380a7f61"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed May 12 17:16:50 2021 -0700"
      },
      "committer": {
        "name": "Christian Wailes",
        "email": "chriswailes@google.com",
        "time": "Tue May 25 17:47:38 2021 +0000"
      },
      "message": "Remove stack protector from some interpreter functions\n\nThis CL removes stack protection from several functions in the\ninterpreter to allow us to re-set the stack protector cookie when new\nprocesses fork from any of the zygotes.\n\nTest: boot\nTest: atest KeyboardVisibilityControlTest\nBug: 168258494\nChange-Id: Ie0c81f97fedfcdde7afc1b6b4befa65524724194\n"
    },
    {
      "commit": "9d27fbc8ced914f4726187920a7794b07eca3e71",
      "tree": "0fd6eb99d0766ac78513d650d629f217273ab294",
      "parents": [
        "e3124d26d725a2b042b4409abfb30a39bb76794d"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri May 21 09:23:38 2021 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue May 25 16:34:18 2021 +0000"
      },
      "message": "Improve suspension timeout diagnostic and fix race\n\nFix a data race on state_and_flags. Since the access was volatile\nand there are system calls in the loop, this is extremely unlikey\nto have casused the bug here, but ...\n\nSo, assuming this is still broken, produce more informative\noutput once we time out.\n\nRemove unused argument from SuspendThreadByPeer(). It made the\nlogic more complicated and made it harder to reason about\ncorrectness.\n\nRemove dead code after LOG(FATAL, ...)\n\nBug: 181778559\nTest: TreeHugger, temporarily paste log message into hotter path.\nChange-Id: I6f3455925b3a3f4726a870150aeb54ea60a38d67\n"
    },
    {
      "commit": "3ddf4d4916fdb7bc3157aa375fb1d670f4cf80bb",
      "tree": "45d67decea87e2f47339250a1bc6c253855d977a",
      "parents": [
        "06fb7fa55cca3210f38c92ac7cc7ad525ff30c83"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 11 10:19:28 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 20 21:45:57 2021 +0000"
      },
      "message": "Update registerAppInfo signatures to accomodate more data.\n\nTest: m\nBug: 182793486\nBug: 185979271\nChange-Id: Ib92327e39bad5914d48ae8a37dd4b5092c5e1407\n"
    },
    {
      "commit": "b1db5a110d312c5a51a52f7f6bc870f9205b6ff8",
      "tree": "9ab0ca4cc92dda3b9ebcbaf32583463e0f25ea86",
      "parents": [
        "f7f97d2c3e847e68f87490e110e192dd587572bb"
      ],
      "author": {
        "name": "Sekyeong Heo",
        "email": "sekyeong.heo@samsung.com",
        "time": "Tue Dec 22 19:38:28 2020 +0900"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 13 08:39:27 2021 +0000"
      },
      "message": "[art] Add GetObjectsAllocated and TotalTimeWaitingForGc APIs\n\nIt\u0027s difficult to analyze sluggish issue due to excessive GC.\nSo, I would like to add APIs for GC status check.\n\nGetObjectsAllocated : return count of allocated objects.\n how to use : Debug.getRuntimeStat(\"art.gc.objects-allocated)\nTotalTimeWaitingForGc : return total waiting time for GC.\n how to use : Debug.getRuntimeStat(\"art.gc.total-time-waiting-for-gc\")\n\nThis must be submitted with the libcore code.\n\nTest: check value using Debug.getRuntimeStat()\n\nChange-Id: I2e865957ddb7e8cb5ac955e65a18d2aaffe4c672\n"
    },
    {
      "commit": "5c4d0df0ee900a174b6c582cc1e918596f19db36",
      "tree": "954464e0858156fafea09791528f21c99d062404",
      "parents": [
        "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 16:16:39 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 30 21:12:17 2021 +0000"
      },
      "message": "Revert^2 \"Solidify GC triggering and reporting\"\n\nPS1 is identical to aosp/1626960 and a straight revert of aosp/1689119 .\n\nChanges in PS2:\n\nAdds aosp/1690271 (abandoned)\n\nDon\u0027t wait for nonexistent GC\n\nMake sure that when we request a concurrent GC, it will eventually\nincrement the GC count. Test the GC count correctly.\n\nDon\u0027t sleep quite as many times to reduce damage in case we still got\nsomething wrong.\n\nBug: 186592536\nBug: 181351667\n\nTest: Build and boot AOSP with kStopForNativeFactor set to 1.0.\n\nChange-Id: I0c53ec9ad91691e59427a008af3b21834ee84978\n"
    },
    {
      "commit": "0bc9beff1d9a15c864c06de386b5b004afb3bb69",
      "tree": "ef5d94b688ab1434e445c7fa095b41b5823cde25",
      "parents": [
        "891ec2cb03c8d9ca4ec355b749e0eb69a1f5307d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Apr 28 15:52:33 2021 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Apr 29 18:36:55 2021 +0000"
      },
      "message": "Allow apps to be profileable by trusted system services.\n\nBug: 170284829\nChange-Id: Ie5dc3669bc8e7ce545484b1ec55e29fe137cf7e4\n"
    },
    {
      "commit": "afff75850413713ca3bff3eb78193a3a8ecbd277",
      "tree": "bbf7b4864b7f424a492f5e36331fad60e8088211",
      "parents": [
        "c86345c61fa4d74471a04a682284ce29354c329b"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Apr 28 23:11:30 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 14:21:02 2021 +0000"
      },
      "message": "Revert \"Solidify GC triggering and reporting\"\n\nThis reverts commit 6d5a49c9b0f26a21316577683f282cf3bef492e3.\n\nReason for revert: Probably causes occasional severe jank. b/186592536.\n\nChange-Id: I76d816b1e4c71569e195366088047d5a2a0aa8c1\n"
    },
    {
      "commit": "6d5a49c9b0f26a21316577683f282cf3bef492e3",
      "tree": "ec8da125e2cc663c1ecc94e5ebda33a212f6f72b",
      "parents": [
        "0cdbf97c3d654b8e985361e44952ef03d3fa4714"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Mar 08 09:21:16 2021 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 23 21:37:25 2021 +0000"
      },
      "message": "Solidify GC triggering and reporting\n\nEnsure that multiple roughly simultaneous collection requests are\nunlikely to result in multiple GCs. Previously multiple direct calls\nto CollectGarbageInternal would essentially be queued, with each\nwaiting for the previous one to complete. This might happen if we\u0027re\nessentially out of memory, with multiple threads running.\n\nWhenever easily possible, capture the GC number before checking\nwhether we should GC, so that we can corrrectly check for a GC\ntriggered since we performed the test.\n\nReset GC cause when appropriate so HeapTrim doesn\u0027t always show\nup as the cause.\n\nUpdate old_native_bytes_allocated before FinishGC(), closing the\nwindow during which we could decide to start a second native-triggered\nGC without having seen the effect of the first.\n\nNo longer support ConcurrentGC() calls from VMRuntime, since they\nweren\u0027t safe anyway.\n\nNo longer mark the GC following a WaitForGCToComplete triggered by\nnative allocation as blocking. That wait just waits for the previous\nGC and does not trigger a new one. We already marked the previous\none as blocking.\n\nHave CheckGCForNative sleep briefly if the GC it\u0027s waiting for\nhasn\u0027t started yet. Previously it waited for a running GC to finish,\nbut the requested one may not yet have started by then.\n\nDrive-by fix for TotalBytesAllocated() metric.\n\nTest: Build and boot AOSP. Manually check GC log messages.\nBug: 181351667\nChange-Id: Ifd1e4afdffca7de25844d49299d552fce44b6760\n"
    },
    {
      "commit": "525fa42b13863305bc7cad34bba1c9ab5567894e",
      "tree": "0315618e0f82b8ac3d272328f6beca1bdef10398",
      "parents": [
        "0744d72e304fddd5453d05f8e06fa85c0467e86d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 07:50:35 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 19 13:35:47 2021 +0000"
      },
      "message": "Revert \"Revert \"Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\"\"\n\nThis reverts commit 656fdcd7f2aa9920ecd464dbb59d284e17969baa.\n\nBug: 176960283\n\nReason for revert: Racy code fixed in https://android-review.googlesource.com/c/platform/art/+/1678727\n\nChange-Id: I7561aa8fad060bd076006dd4b1fbffc076834635\n"
    },
    {
      "commit": "656fdcd7f2aa9920ecd464dbb59d284e17969baa",
      "tree": "d4be59ae4c11c12a7bc7d6343f9add9bed0b6e33",
      "parents": [
        "efbc659ba4566f6fbad3d13bea170fb522955b8a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 17 16:47:01 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 17 19:19:50 2021 +0000"
      },
      "message": "Revert \"Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\"\n\nThis reverts commit c8fe6517faf91b45683cddff3c15e08e489e12e9.\n\nReason for revert: Breaks 1002-notify-startup (flaky)\n\nTest: \"art/test.py -r --host -t 1002\" in a loop\nBug: 176960283\nChange-Id: I4f5467efa5a1e09452b28b86b183791e4105b19e\n"
    },
    {
      "commit": "c8fe6517faf91b45683cddff3c15e08e489e12e9",
      "tree": "10bf664496e680bbae0d22ff7da32dbbb923613f",
      "parents": [
        "0c39de679bc4b647cfeb1c5c94c86d879848aa55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 01 14:22:40 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 15 12:30:01 2021 +0000"
      },
      "message": "Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.\n\nThis reduces some code duplication between\nOatFileManager::OpenDexFilesFromOat and GetDexoptNeeded.\n\nIt also gives the chance for OatFileAssistant and GetDexoptNeeded to\nfind the real best oat file.\n\nTest: test.py\nBug: 176960283\nChange-Id: Id366aef7a9e91833d8edaea965abda4cfdcd8455\n"
    },
    {
      "commit": "9bc364bdda8955f35e8cc4c42312ec411403a995",
      "tree": "8f0dd9a6874e883292571ff5a37e0be089190ca3",
      "parents": [
        "dbcf4a2a597309f33914fb60dc09e1056032794a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 29 10:41:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 31 12:50:36 2021 +0000"
      },
      "message": "Support background verification of secondary dex files.\n\nRe-use the infrastructure for background verification of in-memory dex\nfiles to also trigger for secondary dex files.\n\nTest: 692-vdex-secondary-loader\nBug: 160294863\nChange-Id: I754d519b6a903c51e439ccab100d2d8f22f45df3\n"
    },
    {
      "commit": "09108b274c15b55d8577ae3590005e990694c5b7",
      "tree": "89a299c40c80daff591ef2b48c96c390054ef044",
      "parents": [
        "c5cd58914325c7fcfd89b1a5bf4daa475c2d83ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 18 22:02:23 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 29 07:47:43 2021 +0000"
      },
      "message": "Also look for boot classpath files in DexFile_getDexFileOutputPaths.\n\nTest: adb shell dumpsys pinner\nBug: 144773394\nChange-Id: I03c86115cda6d40cc8666740772da4bb74972f8f\n"
    },
    {
      "commit": "b6c0e7302c5ce9773aad134d685488f736dc5183",
      "tree": "42aa3be53c5f91c16af4a0fcc2d6a6b0e0108507",
      "parents": [
        "5591b714e8e0001c1707aa86d23f1fd81a79abfd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 13 15:08:22 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 12 12:05:43 2021 +0000"
      },
      "message": "Remove some methods from DdmVmInternal.\n\nTest: m\nChange-Id: I4fa9c6f9db951333697201fa819bbaec145f03ab\n"
    },
    {
      "commit": "55a45f3edfe4b17424de3c6c29c55fff1a2c10fc",
      "tree": "ae0083333c25c51e7365706d88e9da8eb0858dba",
      "parents": [
        "de1449e2ed9003897c743145261240c8e38f04d2"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Feb 25 10:45:14 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Feb 28 03:46:38 2021 +0000"
      },
      "message": "Fix indentation in Field.get()\n\nBug: 174433134\nTest: art/test/testrunner/testrunner.py --host\nChange-Id: Ic3b865e1a2819214349493323d91bf6aae29d54f\n"
    },
    {
      "commit": "3a8d7c2de4392ff4c40858803447efe14c3c9fa8",
      "tree": "a6a13854431cc59646f3b94e5e3df420a83e6547",
      "parents": [
        "ae7c8da2dcb775b58ee9285cb7c3433a8be66ebe"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Feb 24 11:29:26 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 25 02:19:19 2021 +0000"
      },
      "message": "Return null for PhantomReference.referent in Field_get()\n\nTo be consistent with the behavior of PhantomReference\u0027s get(), we\nshould always return null. Otherwise it\u0027s possible that an object\nthat\u0027s only reachable via a PhantomReference becomes strongly reachable,\nviolating the defining property of PhantomReferences.\n\nBug: 174433134\nTest: art/test/testrunner/testrunner.py --host\nChange-Id: Ic0c5ba1826c69cd7e8c0d2b35dc3fc6ac5b93c0e\n"
    },
    {
      "commit": "ae7c8da2dcb775b58ee9285cb7c3433a8be66ebe",
      "tree": "a71213fc1e46a4cc2714e3cbcf382e623fa908fc",
      "parents": [
        "e99a85840462fddafd4253a7c16ca83bb6cca3ed"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Feb 12 20:17:20 2021 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Feb 25 00:02:17 2021 +0000"
      },
      "message": "Add nativeZygoteJitEnabled\n\n... to allow the zygote to check whether it needs to keep the jit thread\naround.\n\nBug: 159631815\nBug: 174211442\nTest: Boot AOSP\nChange-Id: I4d32aee36993cf063d2464d839f2cabda1ee8ff5\n"
    },
    {
      "commit": "09efc1604936c234b65a5d278f5ea63da29b17cd",
      "tree": "e0b34882e0af2f7fe364645b8b3c2a8c802bc6d5",
      "parents": [
        "d83edf3d155c49a578851da4f0407affa03b2325"
      ],
      "author": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Mon Feb 22 17:24:57 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 02:48:40 2021 +0000"
      },
      "message": "Revert \"Remove obsolete TestApiEnforcementPolicy.\"\n\nThis reverts commit d8b153b7c2026f45db97a7fd5804957becc5cfdf.\n\nReason for revert: cts tests on -user builds is broken\n\nChange-Id: I7528fb6d1606f08d2398bc4cbb27519424cf1b51\n"
    },
    {
      "commit": "8dcdd4735bff02673e5a3ec1238b8aff1d217957",
      "tree": "1107ea6e73bc6fce6d23eec0b07b1325cf7b5233",
      "parents": [
        "5de5efef38f52f248d1e1c88fdcf3d211aabe712"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Wed Feb 17 19:30:02 2021 -0800"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Thu Feb 18 17:51:18 2021 +0000"
      },
      "message": "Handle Reference-type object in Field_get()\n\nBy fetching referent from Reference-type object directly (without\ngetReferent()) we run the risk of invoking the read-barrier (and hence\npushing an unmarked object to the mark-stack) when the GC doesn\u0027t expect\nthat to happen.\n\nBug: 174433134\nTest: art/test/testrunner/testrunner.py --host\nChange-Id: I5ff7598f9f945518db28b86a5f6ed25c39b73d05\n"
    },
    {
      "commit": "d4ff5bb50e252b004cfa1b4bc330b017208552a5",
      "tree": "5084a931388adcdb89a08e5726ca5b13eeb94e47",
      "parents": [
        "271662c2de6df0a5c85d47177dbe257c973cb3ae"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 03 17:09:40 2021 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 11 02:07:57 2021 +0000"
      },
      "message": "Remove dalvik-pruning APIs\n\nThese are no longer used anywhere.\n\nTest: m\nBug: 172114559\nChange-Id: Id7206173a370f07a9a7494a6cea85552f0f57cd3\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": "d8b153b7c2026f45db97a7fd5804957becc5cfdf",
      "tree": "014e91484c13e2c44cfa1380f388c758b7c23c0c",
      "parents": [
        "b1cf83748ce8165fe7e41ce6a57eb5529946a971"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Fri Jan 22 17:27:07 2021 +0000"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Tue Feb 02 20:25:47 2021 +0000"
      },
      "message": "Remove obsolete TestApiEnforcementPolicy.\n\nAccess to TestApis is now gated by @ChangeId ALLOW_TEST_API_ACCESS.\n\nBug: 147113465\nTest: presubmit\nChange-Id: I4c5e336069bce3bccfcde0bcd84b6c1f539635e9\n"
    },
    {
      "commit": "755b533082bb84a282f4a76ac3f6364a7c61e6cd",
      "tree": "9ee7565e256fb322d260adbf60eec06b6462aede",
      "parents": [
        "aa027b80a4fb57c97cabf1fc8ae72de6b1490a64"
      ],
      "author": {
        "name": "Rock.Yeh",
        "email": "rock.yeh@mediatek.com",
        "time": "Thu Jan 07 10:54:12 2021 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 07 13:44:17 2021 +0000"
      },
      "message": "Add newStringFromUtf8Bytes native implementation.\n\nPorting a part of StringFactory.newStringFromBytes from libcore to\nnative\nfor UTF-8 character set. It can improve the UX score of Antutu v8 a\nlittle\nbit.\n\nOnly watch UX score. We test 10 times and average the total score.\nBechmark results\n  - before(Java implementation):\n    10 times avg,: 13133.9\n  - after (Native implementation):\n    10 times avg.: 13324.2\n  Diff.: +1.4%\n\nBug: 176514597\nTest: ./test.py --host\nChange-Id: I6b601c09663b21fdacde7f14b0db1ac4f0a94c0f\n"
    },
    {
      "commit": "fff1d8f9f3881d223f3d068f974da14f3d80de88",
      "tree": "6aed4bd680f0fac601660af750895f8fac3d7e3d",
      "parents": [
        "51a9283984b05511bd98f9bcbd1f2f18900239cc"
      ],
      "author": {
        "name": "liulvping",
        "email": "liulvping@xiaomi.com",
        "time": "Mon Dec 21 09:43:37 2020 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 22 13:27:22 2020 +0000"
      },
      "message": "Fix incorrect image pointer size for unstarted runtime\n\nIn unstarted runtime, we should use image pointer\nsize from current runtime, not kRuntimePointerSize\nfor invoke method. Because in host dex2oat, the\nkRuntimePointerSize is always k64, and then invoke\nmethod could get a null ArtMethod object in compiling\nboot image for arch 32, such cause a native crash issue.\n\nBug: 176012754\nTest: m test-art-host-gtest-unstarted_runtime_test\n\nSigned-off-by: liulvping \u003cliulvping@xiaomi.com\u003e\nChange-Id: I8ff4cf013cbe94114c38edfdf30ff509a047a761\n"
    },
    {
      "commit": "5ff2393e1fb6e61fc74f20c66f80f4b8656987d1",
      "tree": "e94b8cfc92379678b4f2e6446aa6d28a6408222f",
      "parents": [
        "99459f3bdd8d569ec7054920cbc32e6915d1e125"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Dec 11 18:26:14 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 14 19:00:35 2020 +0000"
      },
      "message": "Remove stripped-apk related logic from CLC\n\nStripped-apks are no longer supported by the runtime and\nthe current logic prevents bug fixes and code evolution.\n\nBug: 111442216\nTest: test-art-host\nChange-Id: I30d5825e4f6453981ca9165bebafe67557c28b93\n"
    },
    {
      "commit": "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97",
      "tree": "80db436fe3cc84f052edd0bf4ace6435cc8d625d",
      "parents": [
        "955f40f336c201a93832081d2070d66a15521fa4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 16:59:18 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 16:30:07 2020 +0000"
      },
      "message": "Disable VMRuntime_preloadDexCaches\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nTest: device boots\nChange-Id: I32bff875f3784e8bc0c7350be9b02c59216d234b\n"
    },
    {
      "commit": "037d282cd1fc201601ac52dcfe0f1a4d97ca3790",
      "tree": "da6a1d61357cd09c4131501031de691491bcdb2a",
      "parents": [
        "6e71c66b35f6a96908e3d371316cba15dcb75d1f"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Thu Nov 19 00:20:04 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Nov 23 19:02:00 2020 +0000"
      },
      "message": "Add compat framework logging to ART\n\nLog first call for every change id in ART to logcat.\n\nTest: manual\nBug: 153061480\n\nChange-Id: I37ff5b88572478ae6c24b0b7dec2020da03b2172\n"
    },
    {
      "commit": "a5c1a82dc072fe29ff4d71a1abc88d713752323f",
      "tree": "dbdb5ccd0c9d23f5b609381bca1fbceb901f7889",
      "parents": [
        "dc75b3f0d2f7363ad7a7f9356bc931486e17e4f5"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Nov 10 14:58:06 2020 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Nov 18 14:55:25 2020 +0000"
      },
      "message": "Implement Reference.refersTo()\n\nAvoid Reference.get(), so that we\n\na) Don\u0027t block for the GC when weak ref access is disabled.\nb) Don\u0027t preserve a referent just because we compared to it.\n\nStrengthen ConcurrentCopying::Copy memory ordering guarantees to make\nthis possible. In the process, weaken the existing fence to a\nconstructor fence, which should sometimes be slightly cheaper than\na release fence, which will be implemented as a full fence on ARM.\n\nWhile looking at forwarding reference memory ordering, removed a\nlong identified unnecessary seq_cst memory access in\nIsNullOrMarkedHeapReference.\n\nTest: boot AOSP, atest ReferenceTest in libcore\nBug: 172573708\nChange-Id: Ie716df684be94006353a54226f85ea93a7254b6c\n"
    },
    {
      "commit": "036b0708c12a33469db4a5adde9ded152b5eb700",
      "tree": "59fd4ce1126da0bec264431c1056f93eceb07c38",
      "parents": [
        "8b2f7e67096c5a12f950f5ffe8f5ed4704299c57"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 10:36:06 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 28 09:43:42 2020 +0000"
      },
      "message": "Rename String.concat() implementation function.\n\nRename String::AllocFromStrings() to String::DoConcat() and\nrename arguments to h_this and h_arg.\n\nThis addresses a comment from\n    https://android-review.googlesource.com/1473728 .\n\nTest: testrunner.py --host --optimizing -t 021-string2\nBug: 169674485\nChange-Id: I830541b64b51c0170aa5455cbad7cc86f4349f13\n"
    },
    {
      "commit": "645083c294177f1906a040c380d691060b858167",
      "tree": "fb989eceeb559dde62be6a561af84abbdf3db892",
      "parents": [
        "31376818547504490f450aff52d50839f7a0b539"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 26 11:44:29 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 26 14:33:32 2020 +0000"
      },
      "message": "Revert^2 \"Improve libcore_util_CharsetUtils performance.\"\n\nThis reverts commit 31f5dd40886a696c7925feb53c4aa7cc9adf07c3.\n\nReason for revert: The original CL was erroneously reverted\ntogether with the CL that was actually broken.\n\nChange-Id: Ifed4868b3a90d56b943b15887bb257d8872a475d\nTest: run-libcore-tests.sh --mode\u003dhost\nBug: 170281727\n"
    },
    {
      "commit": "31f5dd40886a696c7925feb53c4aa7cc9adf07c3",
      "tree": "94d2d6faafa4b080971926b75ef082d8f4bf8e26",
      "parents": [
        "e3a6485fb0e94f434a3f72eb694a105578c1260f"
      ],
      "author": {
        "name": "chapin",
        "email": "chapin@google.com",
        "time": "Fri Oct 23 19:20:31 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 23 21:54:58 2020 +0000"
      },
      "message": "Revert \"Improve libcore_util_CharsetUtils performance.\"\n\nRevert submission 1449216\n\nReason for revert: Bug: 171537201\nReverted Changes:\nI03d2420b2:Improve libcore_util_CharsetUtils performance.\nI3dc453ce9:Improve mirror::String implementation.\n\nChange-Id: I1df18b4421f3b37b84a5e54c908662538fc13f79\n"
    },
    {
      "commit": "b3dfff75d903688e5046745120d16af790ef7be4",
      "tree": "f4ba12950f2537dc58d24af1c846a60265d65850",
      "parents": [
        "0bba8aa289da53f1cbd7c96a2ee60b3ca3a84d8b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 08:51:40 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 16:04:07 2020 +0000"
      },
      "message": "Improve libcore_util_CharsetUtils performance.\n\nUse ScopedFastNativeObjectAccess for @FastNative methods.\nAvoid expensive JNI calls by using mirror::ByteArray.\nFor compressed strings, just copy the ASCII data.\nFor uncompressed strings, pre-calculate the UTF-8 length\nto avoid unnecessary reallocations. Also access 16-bit\ncharacters directly instead of using String::CharAt() to\navoid unnecessary string compression checks that clang++\nis unable to optimize away.\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\n(medians from 3 runs)        before   after\ntimeGetBytesAscii EMPTY      1599.86   519.36\ntimeGetBytesAscii L_16       1849.31   535.59\ntimeGetBytesAscii L_64       2582.72   646.07\ntimeGetBytesAscii L_256      5566.70  1132.11\ntimeGetBytesAscii L_512      9585.88  1649.34\ntimeGetBytesAscii A_16       1840.06   540.05\ntimeGetBytesAscii A_64       2550.41   614.85\ntimeGetBytesAscii A_256      5382.15   919.59\ntimeGetBytesAscii A_512      9181.93  1226.82\ntimeGetBytesIso88591 EMPTY   1589.57   515.62\ntimeGetBytesIso88591 L_16    1835.09   535.58\ntimeGetBytesIso88591 L_64    2588.90   650.84\ntimeGetBytesIso88591 L_256   5585.69  1118.37\ntimeGetBytesIso88591 L_512   9635.12  1625.92\ntimeGetBytesIso88591 A_16    1827.21   529.83\ntimeGetBytesIso88591 A_64    2548.83   603.32\ntimeGetBytesIso88591 A_256   5356.75   916.76\ntimeGetBytesIso88591 A_512   9172.74  1224.04\ntimeGetBytesUtf8 EMPTY       1599.00   510.61\ntimeGetBytesUtf8 L_16        1876.05   632.55\ntimeGetBytesUtf8 L_64        2781.85  1054.06\ntimeGetBytesUtf8 L_256      12136.15  3708.94\ntimeGetBytesUtf8 L_512      21357.30  7811.28\ntimeGetBytesUtf8 A_16        1888.64   531.15\ntimeGetBytesUtf8 A_64        2785.70   598.75\ntimeGetBytesUtf8 A_256       6300.25   906.34\ntimeGetBytesUtf8 A_512      11074.56  1231.62\n\nTest: run-libcore-tests.sh --mode\u003dhost\nBug: 170281727\nChange-Id: I03d2420b2e1eefc1fa5232deddba593aebd51941\n"
    },
    {
      "commit": "fd061070700817add2c15149e4098bab4eb8ccdd",
      "tree": "af2e90ad8cf7850be8a690a4c9b6b1292e0231ba",
      "parents": [
        "2e299f4d0eb8e2fd432c98b83f3f3c6ddd09c0f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 01 13:51:56 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 09 10:23:21 2020 +0000"
      },
      "message": "Remove unused code from dalvik.system.VMDebug.\n\nTest: m\nBug: 165361458\nChange-Id: Ic2cc2515a0af79d4541c16c0b3057980ada2a869\n"
    },
    {
      "commit": "5cdd368de2b21bb4d5b9e621fce7b8b0e4ac5eec",
      "tree": "01657e9e2aaef292bc82ffc906b1dc167c893259",
      "parents": [
        "2d98dc23d6e9b74ef004d4358d6c3d53503b12a7"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Sat Sep 26 07:12:40 2020 +0000"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Fri Oct 02 12:23:51 2020 +0000"
      },
      "message": "Revert \"Add getNativeTid function\"\n\nRevert submission 1202786-setpriority\n\nReason for revert: will cause lock contention\nReverted Changes:\nI46093c953:Use ThreadPrioritySetter to set thread priority\nIc13c13803:Add getNativeTid function\nIb486b7229:Implement the ThreadPrioritySetter interface\n\nBug: 139521784\nTest: build pass\nChange-Id: Ie13eee23321cf78cd8e0c4e06b5215936710d8d7\n"
    },
    {
      "commit": "7f8a7f29f07886d1008dfc26d43617e79965447c",
      "tree": "629658a364e29f26d8d8ccd312e61cd41c320b8e",
      "parents": [
        "cb4fab133d14b491c57f46a4a08b66eaf8b675f6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:44:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 01 11:20:13 2020 +0000"
      },
      "message": "Remove unused CorePlatformAPI methods.\n\nBug: 165370038\nTest: m\nChange-Id: I944cc5354016bef8820455c092e6cfaa033fa1f0\n"
    },
    {
      "commit": "8a8e1c5b4ccda0619c7bc946bc4790ea44ff8286",
      "tree": "363145d76a2d31aa2424c4bddab8016951945ca0",
      "parents": [
        "39e99da15c2410646686465945881e404c84f7c3"
      ],
      "author": {
        "name": "zhang chuang",
        "email": "zhangchuang3@xiaomi.com",
        "time": "Wed Jul 15 11:06:42 2020 +0800"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 05 10:46:29 2020 +0000"
      },
      "message": "Increase region space statistics about allocSize of Heap\n\nART currently uses a concurrent copying garbage collector, and the\ncorresponding allocation space uses a region space.\nSo when obtaining the heap state, we need to also fetch the statistics\nof the region space.\n\nBug: 161244406\nTest: Call VMDebug_getHeapSpaceStats interface\n\nSigned-off-by: zhang chuang \u003czhangchuang3@xiaomi.com\u003e\nChange-Id: I07c00a23eeadde6cd1c3e3fb3388d43be74c99d4\n"
    },
    {
      "commit": "7992467de2dd3ea6eec1cd5cf8825d025fecd247",
      "tree": "5205f878a120e1f8233f5d88f0a93e328f67c96e",
      "parents": [
        "e3e187f29fa4025e30c5a43decb2b6f6c584d59c"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Thu Jul 30 14:23:00 2020 +0100"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Aug 03 14:10:52 2020 +0000"
      },
      "message": "Rename meta-reflection changeid\n\nUse a more inclusive terminology to describe the meta-reflection\npreventing changeid.\n\nTest: art/test/testrunner/testrunner.py --target -t674-hiddenapi\nBug: 162318095\nChange-Id: I4fde31aa41a9cf506c509b223b9f28d9da11cf8a\n"
    },
    {
      "commit": "5439f051a950f0281eeafb8e8064839f2aea6e38",
      "tree": "889efef779fa462357f77cb2166c600cb0d60679",
      "parents": [
        "483bf78ae61ab43a3d513cef0de0072e86d0b0b1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 10:03:46 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 13:58:15 2020 +0000"
      },
      "message": "Revert^3 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit e886d68b9c40c941d8966b9c90d0e265c75fb19e.\n\nReason for revert: simulator implemention is not ready yet.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nTest: art/test.py --run-test --optimizing --host\nChange-Id: I03c8c09ea348205b0238d7a26caef3477cd6ae3b\n"
    },
    {
      "commit": "e886d68b9c40c941d8966b9c90d0e265c75fb19e",
      "tree": "ad78c4e375c95a96e200baa2786e748505ab928b",
      "parents": [
        "f12dd5861e0eaf1822c12137fd353b5e79761a6c"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 15:09:38 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 17 11:04:27 2020 +0000"
      },
      "message": "Revert^2 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 3060bb919cd2f37c6a97e87c1581ac5294af72b3.\n\nReason for revert: relanding original change. The fix is setting\n`device_supported: false` for libart(d)-simulator module in the .bp\nfile (`m checkbuild` attempted to build it for arm32 and failed).\nOriginal commit message:\n\nVIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas caused the following increase of the APEX size (small, about 0.13%\nfor release APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nChange-Id: I461c80aa9c4ce0673eef1c0254d2c539f2b6a8d5\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n"
    },
    {
      "commit": "3060bb919cd2f37c6a97e87c1581ac5294af72b3",
      "tree": "6a2b517812ff83cd10cc3b055635d0746157b345",
      "parents": [
        "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "message": "Revert \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96.\n\nReason for revert: broken build 6685551 on aosp-master on full-eng\nBug: 161440641\n\nChange-Id: I849fe53f56c4786f0f2a1605cbfd215559f11072\n"
    },
    {
      "commit": "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96",
      "tree": "87ff5251f8f843e64e3f3632c423856ba14ceadf",
      "parents": [
        "cfea667ed9bfbdd21bf9812d1598603fc359d2e1"
      ],
      "author": {
        "name": "Xueliang Zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Mar 07 14:48:55 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 13:31:48 2020 +0000"
      },
      "message": "VIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas cause the following increase of the APEX size (small, about 0.13% for\nrelease APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n\nChange-Id: I078812dde9aaf7128d9f262b2102251927596b7f\n"
    },
    {
      "commit": "bbdc301928b4525487cba325804bfc5be1ac6756",
      "tree": "28b12e0e8c59364962ef9a87fe98c4464367ea2b",
      "parents": [
        "5472d6f75d3e68e37e801d5c75e756ac866914a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 02 17:34:22 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 07 08:32:49 2020 +0000"
      },
      "message": "Remove old code that isn\u0027t relevant anymore.\n\nIn order to reduce the CorePlatformAPI surface.\n\nTest: m\nBug: 154796679\nChange-Id: I08cc05917d39a022a25ebcc875a4e8f5bb22b54e\n"
    },
    {
      "commit": "8d799686ff11ef800a8489272f4e0b36b6ab21b3",
      "tree": "d9d094024bb6e116cce801ab62cae80cac274806",
      "parents": [
        "90a18cf5b76bbf9a13dc520b8817de51b8efd7f8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 30 13:18:26 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 02 10:44:42 2020 +0000"
      },
      "message": "Remove unused / unimplemented CorePlatformAPI methods.\n\nTest: m\nBug: 154796679\nChange-Id: I32fa0dc30bf536b41f241fe4795ad232766c9020\n"
    },
    {
      "commit": "fa915c920f07a794f06a9bee47513dc5f303d019",
      "tree": "7e951be09476008a51ca19463a253f5cd26b9de1",
      "parents": [
        "6df189d5a7b68420f17bb28988b29a699f025170"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:40:23 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 15:41:25 2020 +0000"
      },
      "message": "Only put resolved classes inside the dex cache.\n\nUsers of the dex cache (like the verifier) rely on entries to be\nresolved.\n\nBug: 155852343\nTest: No crash doing \"while adb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 5; do :; done\"\nChange-Id: Ie2a97f75c6cd49a7cf1a2c6529cd8900d7acba3b\n"
    },
    {
      "commit": "0a6063a07edf210979de199aecead92647b8752c",
      "tree": "03e427837b0c248700ac0ea7f42e91fa9a9cf53b",
      "parents": [
        "ecb984ddbd830e6eb3f339b9bd4c7c90eac2438b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 14 16:39:14 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 15 14:10:47 2020 +0000"
      },
      "message": "Clean up Field::CreateFromArtField().\n\nRemove code dealing with the DexCache. This was obsolete\nsince switching to hash-based DexCache arrays. This makes\nthe last remaining template parameter unused, so remove it\nand move the implementation to the .cc file.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optmizing\nTest: aost_taimen-userdebug boots.\nChange-Id: Ib2077028f45792e4357d9c57280ece70a22e47a2\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "d34b73b4ac478462acc03c4cd42ae7568c832eb8",
      "tree": "27f1c4599178ba57451c29d0156c232768711b6d",
      "parents": [
        "4a48775376a4c0b180a7d32ad2cdf00bd0dca140"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 10:07:59 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 13:34:31 2020 +0000"
      },
      "message": "Clean up internal stack trace construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ia91d3274398b0ca0f5b0040dcf323921d915b657\n"
    },
    {
      "commit": "b6f4c79b06bb97651a7be1ac828d18ed18356603",
      "tree": "ef0bbb1281f6d4785e60f26cb420646c83eb6f6d",
      "parents": [
        "3971661c74a9b4635d9744f72f3b053c820067c9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 04 15:37:29 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 08:05:24 2020 +0000"
      },
      "message": "Clean up Constructor/Method/Field construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ib5cd60c003d2ad3e6a246ff86d6b9288428c60ee\n"
    },
    {
      "commit": "edccd3cc6d0b60bcf87295774b0728fd8755c329",
      "tree": "b0f4ca89c39f12f495beca2deb0110df5f7a66d5",
      "parents": [
        "444dc1c77068e56b8fbb9789d74d34101f29bffc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 13 14:54:27 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 16 08:20:30 2020 +0000"
      },
      "message": "Retire VMRuntime.doNotInitializeInAot()\n\nThis was used to delay initialization of UnixChannelFactory.\n\nBug: 109735195\nBug: 144502743\nTest: art/test.py --host --prebuild --64 -r -t 071-dexfile-map-clean\nTest: atest PreloadCheck\nChange-Id: I51102f1241c1a9bf344c8cfeed9f88c625610763\n"
    },
    {
      "commit": "2e17cf4854138d3a3021fdddc7851215b0eba28b",
      "tree": "da227e647f9a54d90caf88610f3b4e24c8dad76b",
      "parents": [
        "eb070f085df78fc39ad2c06f0638edcf0537e6a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 12 21:19:46 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 13 12:03:13 2020 +0000"
      },
      "message": "Revert \"ART: Conditionally remove loaded-oat-count check\"\n\nBug: 128688902\nBug: 150032912\nTest: boots\n\nThis reverts commit e912955b98cdc224f2f13455f592b63e96bf5634.\n\n(cherry-picked from commit 3734c2822fe2dc8eaaedbc311f9828ce443b02e6)\n\nMerged-In: I209489f69e4f2b02e7fa93090539575098a28025\nChange-Id: I209489f69e4f2b02e7fa93090539575098a28025\n"
    },
    {
      "commit": "eb070f085df78fc39ad2c06f0638edcf0537e6a3",
      "tree": "8d464c44bf9509d8da2a77b02ab5a84e9a7301bf",
      "parents": [
        "539d1d422776c50fea3b1e725ab2b063c533f911"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 14:00:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 13 10:59:36 2020 +0000"
      },
      "message": "Reland \"art: Add FileDescriptor fields to native Core Platform API\"\n\nThis reverts commit Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486.\n\nOriginal commit message:\n\nAdds descriptor and ownerId to whitelisted native Core Platform API.\n\nChange in reland:\n\nAdds a method to VMRuntime to disable the initialization of a class\nduring AOT compilation.\n\nBug: 144502743\nBug: 150680645\n\nTest: art/test/run-test --host 001-HelloWorld\nTest: art/tools/run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nTest: atest PreloadCheck\nChange-Id: I9facfe3d3fa27cf50a345d24be1e7d7e0d26c848\n"
    },
    {
      "commit": "e5c48f75476bc7bac843c862dfeeaeed2b95d94f",
      "tree": "81457b683b6d55148eea0b023ddb264daad9f502",
      "parents": [
        "085f3805cdfde5fdb130e31a2cf83071598ef082"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 11:28:43 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 11 15:01:33 2020 +0000"
      },
      "message": "Revert \"ART: Forbid the zygote to load code outside of system\"\n\nThis reverts commit 9ef308da0ea8d1df2edf65d4957599fafcc56aeb.\n\nBug: 150032912\nBug: 129454856\nTest: boots\nChange-Id: I522b1e0e2b9116239ca206aa5c65347976eac7ab\n"
    },
    {
      "commit": "0a5cad39cd1dbbfd6f335c5ff6f307a903bc5bf7",
      "tree": "940aa8d886fed28e76d0af813d75fe4df49b8cdc",
      "parents": [
        "8aa6a82003ce7ece4511996341021e7084d40b3a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 14 20:29:26 2020 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 15 01:18:01 2020 +0000"
      },
      "message": "Revert \"Revert \"Make class loader context fail for unknown class loaders\"\"\n\nThis reverts commit e9818ddd70565d52cc1cc93d6991d7e7ec2bc275.\n\nMake class loader context fail for unknown class loaders\n\nUpdate OatFileAssistant to fail the class loader check when getting an\nunknown (null) class loader. The code is only use in GetDexoptNeeded paths\nand does not affect the runtime behaviour.\n\nThis will enable dexoptanalyzer to provide the right answer for dex files\nwhose class loader changes often.\n\nTest: test-art-host\nBug: 147208643\n\nChange-Id: I2f8229fc25c018436c17439bdc9ac0899af25758\n"
    },
    {
      "commit": "e9818ddd70565d52cc1cc93d6991d7e7ec2bc275",
      "tree": "c2deb578605ebfa0511532b8d7ca908fa4c71092",
      "parents": [
        "1d852c36ad84e6f32132b215af079546300bfc28"
      ],
      "author": {
        "name": "Stefania Halac",
        "email": "shalac@google.com",
        "time": "Fri Feb 14 17:58:26 2020 +0000"
      },
      "committer": {
        "name": "Stefania Halac",
        "email": "shalac@google.com",
        "time": "Fri Feb 14 19:36:44 2020 +0000"
      },
      "message": "Revert \"Make class loader context fail for unknown class loaders\"\n\nThis reverts commit 2d3de3a40015af07f7645a298f77b398af0c6c2c.\n\nReason for revert: 8s regression in boot time b/149517940\n\nChange-Id: I81365d1bd63c691d715b8f970dac9da64ab419ff\n"
    },
    {
      "commit": "2d3de3a40015af07f7645a298f77b398af0c6c2c",
      "tree": "360b130e574af9a5e837ebd9d2585de29db34f65",
      "parents": [
        "c55032774cfec4b5222b362a81a3b8b69e133710"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 11 16:49:47 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 12 19:22:17 2020 +0000"
      },
      "message": "Make class loader context fail for unknown class loaders\n\nUpdate OatFileAssistant to fail the class loader check when getting an\nunknown (null) class loader. The code is only use in GetDexoptNeeded paths\nand does not affect the runtime behaviour.\n\nThis will enable dexoptanalyzer to provide the right answer for dex files\nwhose class loader changes often.\n\nTest: test-art-host\nBug: 147208643\nChange-Id: I869109e669e68afe094e7703ed574575b98d7cc6\n"
    },
    {
      "commit": "c9fa770b6eedcf0cfe05b2449423f5494eecfce0",
      "tree": "684657b011f8980da10cbdc89ca6288d933a2734",
      "parents": [
        "a7d98b9560166eddaeb78d0f19402ee80ec9df06"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Fri Jan 31 13:35:12 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 08 02:41:12 2020 +0000"
      },
      "message": "Introduce VMRuntime.isValidClassLoaderContext\n\nIn the PackageManager server we need to validate class loader contexts\nthat we receive from an untrusted process. In order to keep class loader\ncontext parsing logic centralized within the runtime let\u0027s create an API\nwhich returns whether or not the runtime can parse the encoded class\nloader context.\n\nTest: Build system image, open app using secondary dex\nTest: atest atest com.android.server.pm.dex.DexManagerTests\nTest: m test-art-host-gtest-class_loader_context_test\nChange-Id: Ied676e3239f70a8ab9d066df79f377b7036b28b7\n"
    },
    {
      "commit": "b682ea4d1f9f88ef41589007f385398033d61b65",
      "tree": "b843077f05e2fe37ce5f566dfc823552f289f562",
      "parents": [
        "77aa6807053a830fe5c951c7cb700813d7e2e27b"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Mon Dec 23 06:59:06 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 08 00:01:36 2020 +0000"
      },
      "message": "Introduce BaseDexClassLoader.computeClassLoaderContextsNative\n\nThis will be used to compute the contexts that should be sent over to\nthe dex load reporter. See associated changes in libcore \u0026\nframeworks/base.\n\nMotivation: At the moment of committing there are two classloader\ncontext encoders- one in ART and one in the package manager. The\nduplicate logic is susceptible to divergences. For example at the moment\nif a package uses shared libraries and has secondary dex files then the\ncontext encoded for secondary dex files will be incorrect[1]. In order to\neliminate this bug and future possible bugs lets centralize where all\nclassloader context computation is done.\n\n[1]: The context will be incorrect because it doesn\u0027t take into account\nthe shared libraries that are loaded at runtime.\n\nTest: m test-art-host-gtest-class_loader_context_test\nTest: m test-art-host-gtest\nTest: ./test/testrunner/testrunner.py --host -b\nTest: Introduced a set of tests for the new API(s)\nTest: See tests in associated libcore \u0026 framework/base commits\n\nBug: 148494302\nChange-Id: Id39293a2e1d3d05194f2864f4febb3e652bce075\n"
    },
    {
      "commit": "f9dfd77182296cd9161784bc0b9babf4f22a90c7",
      "tree": "8abbce5a0fc5cf7b46979cb6d47a19a6106d0297",
      "parents": [
        "c70b84e7680663c3a41a119570ecd5f708ce4d76"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 30 13:56:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 16:40:25 2020 +0000"
      },
      "message": "Update VMRuntime.isBootClassPathOnDisk()...\n\n... for the new boot image location specification.\nIn particular, use only the first component and, if there is\nno path, use path from the first boot class path component.\n\nTest: aosp_taimen-userdebug boots\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:/system/framework/boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nBug: 119868597\nChange-Id: Ifae2a005b7c6b8625d744eca2df763e3f6f5d0fb\n"
    },
    {
      "commit": "fc58809f7b932d86234130be15487017dc37b0cf",
      "tree": "d003dedec73d77473aff6b2039860bc76a69d898",
      "parents": [
        "d00f129f1b7148f01efe6e9283a72d6ec8f0edd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 23 15:39:08 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 29 23:31:10 2020 +0000"
      },
      "message": "Remove old JDWP implementation from ART\n\nThe old \u0027internal\u0027 JDWP implementation hasn\u0027t been used for a few\nreleases and it\u0027s a lot of code that\u0027s barely being tested and is at\nrisk of bit-rot. To simplify the runtime and remove potentially buggy\ncode this removes it.\n\nWe also needed to rewrite the DdmThreadNotification code since it\nrelied on the suspension functionality from the old debugger and was\ngenerally unsafe.\n\nTest: ./test.py --host\nTest: atest --test-mapping cts/tests/jdwp/TEST_MAPPING\nTest: atest --test-mapping cts/hostsidetests/jdwptunnel/TEST_MAPPING\nTest: Manual ddms\n\nBug: 119034743\n\nChange-Id: I775f310a009141296b730e4a6c2503506a329481\n"
    },
    {
      "commit": "f365affd27933d1d0771d0d5064101db18c19cc2",
      "tree": "b94a643c08f62a4355d3e7de143aa5e4f7b2d2e2",
      "parents": [
        "d71f1dc15e264f9d2122c427a4d99d49b525bfd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 27 13:43:01 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 28 18:39:37 2020 +0000"
      },
      "message": "Remove isDebuggerActive native implementation.\n\nThis function is identical to VMDebug#isDebuggerConnected and always\nhas been in ART (on dalvik there was a distinction between the two).\nSimply implement this function in java to reduce the number of places\nthe debugger needs to overwrite native functions.\n\nTest: build\n\nBug: 148401311\nChange-Id: I56448e5c437900cb072aa39ee784a25efad260b0\n"
    },
    {
      "commit": "87f3630befee523a9b384b95fc23bfaadcc404d6",
      "tree": "8d7a9f980cc8bdca0a03b5d02f9b130cb59b1115",
      "parents": [
        "75408ad56bf5b240dc3c4a4db23a423c18a63920"
      ],
      "author": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Fri Dec 13 15:49:37 2019 -0800"
      },
      "committer": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Tue Jan 21 23:09:34 2020 +0000"
      },
      "message": "runtime: Initialize native bridge in app-zygote\n\nAn app-zygote may be running PreLoad hooks, which may require native-bridged\nexecution if non-native jni code is involved (testAppZygoteSyscalls needs that).\n\nTest: CtsExternalServiceTestCases\nandroid.externalservice.cts.ExternalServiceTest\ntestBindExternalServiceWithZygote\nTest: CtsSeccompHostTestCases\nandroid.seccomp.cts.SeccompHostJUnit4DeviceTest\ntestAppZygoteSyscalls\nboth for Q.sdk_gphone_x86_arm.armeabi-v7a\nBug: 143143718\nBug: 146904103\n\nChange-Id: I53f33183cc3d0bd992344441111a84f4c04533fa\n"
    },
    {
      "commit": "a9ff45b9f6d46cf6e48685a1c5d3cd64e05149a6",
      "tree": "9af811618b7d73319eaeedfa67532bc9d7bce543",
      "parents": [
        "6a67bea2203783db7569cd99cc86e2b63f5e28a7"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Tue Jan 14 15:59:02 2020 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Mon Jan 20 16:26:26 2020 +0000"
      },
      "message": "Remove TODO from ART\n\nDoing this directly from frameworks to bionic without ART.\nBug: 145743810\nTest: none\n\nChange-Id: I79634c403038fcbe4c2e842980cc4821a6fae027\n"
    },
    {
      "commit": "6442eaf8b21c85d60648f7a7498a6aeb299af861",
      "tree": "9a0fc7a9484e22e341b765b97adb9c517f78ddca",
      "parents": [
        "e30457c0b52caba839b21a03af56200df7a975e2"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Fri Jan 17 15:59:09 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API. This is a fix for an\nasan test failure (691-hiddenapi-proxy) introduced in https://r.android.com/1208005.\nInstead of always walking past j.l.r during the stackwalk, this CL adds an\nexception for j.l.r.Proxy.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nTest: art/test/testrunner/run_build_test_target.py -j110 art-asan\nChange-Id: I98dd46d7070dd2dd4318398d2a5d2ae4ece94015\n"
    },
    {
      "commit": "e30457c0b52caba839b21a03af56200df7a975e2",
      "tree": "5f7dcb277f6c62c7dafa9f99346e4f4b80b9b466",
      "parents": [
        "a72256b2b9cb32ead8bdf06c7d6546eb01ef4229"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Wed Jan 08 16:02:00 2020 +0800"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Fri Jan 17 13:32:51 2020 +0000"
      },
      "message": "Add getNativeTid function\n\nAdd a function to get native thread id for java Thread.\n\nBug: 139521784\nTest: CtsLibcoreTestCases, device boot to home, thread priority set\n      as expected.\nChange-Id: Ic13c1380374044754f007136666dc0928ce1f143\n"
    },
    {
      "commit": "9406c43b2de9b94b6d70f82474840eccd7699dc7",
      "tree": "5bc44e726bf2a8d0a6e37279056c3f226154afc6",
      "parents": [
        "08d064fb6d02006730710a683e84a4cc54229c67"
      ],
      "author": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 15:40:09 2020 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jan 14 21:37:43 2020 +0000"
      },
      "message": "Revert \"Harden hidden api checks.\"\n\nRevert submission 1203343-hidden-api-check-hardening\n\nReason for revert: art-asan target failure\nReverted Changes:\nI5af9f79f5: Add change id for hidden api check hardening\nIfc8d39ba2: Harden hidden api checks.\n\nChange-Id: Ifb824ff00cb78f03cd388c56dd7411f5c51bb531\n"
    },
    {
      "commit": "3bf51634271a5cb25eadc3ffc092233663253a41",
      "tree": "e96e45d7ace51f97468ecdac21f754c59eee4ce1",
      "parents": [
        "135b5c8fe69b27c5059a9f042c394a9d438c9788"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Wed Jan 08 16:55:56 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Tue Jan 14 14:04:46 2020 +0000"
      },
      "message": "Harden hidden api checks.\n\nAlso walk past j.l.r in stackwalk for Hidden API.\n\nBug: 142365358\nTest: art/test/testrunner/testrunner.py --target --64 -t674-hiddenapi\nChange-Id: Ifc8d39ba23808216bbb8dd21e3262d330f2c87f1\n"
    },
    {
      "commit": "fab7208934673a026ecca1799a0ec5a892b38210",
      "tree": "fc27d288c53bb359d0f02791177e3ef3951694f2",
      "parents": [
        "270db1ce48377e3d9ca0c3dcec834ac807ca885b"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Fri Dec 06 13:37:36 2019 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Thu Dec 12 12:15:16 2019 +0000"
      },
      "message": "Pipe disabled compat changes to runtime through zygote.\n\nTest: device boots\nTest: Logging results of isChangeEnabled are matching state and respect adb overrides.\nBug: 145743810\nChange-Id: I03da331d3d36876fb646c2962e200aeecb5af84b\nMerged-In: I03da331d3d36876fb646c2962e200aeecb5af84b\n"
    },
    {
      "commit": "20b7a9b8aeaf76fc8f3248f211489fd00af73170",
      "tree": "33a09412c220b5bfc9935a84fabd92a39aa4c35f",
      "parents": [
        "c6ca1170904c9f5bbdf0ee5b12d6d4cb093739fc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 26 10:47:43 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 18:34:20 2019 +0000"
      },
      "message": "Fix Missing ReflectiveHandleScope in Class_newInstance\n\nThe Class_newInstance method (the native implementation of the\nj.l.Class.newInstance function) incorrectly held an ArtMethod* for the\nconstructor over a suspend point. This could lead to an obsolete\nmethod being called or (worst case) CHECK failures due to not\nfinishing the initialization of the class if it\u0027s made obsolete.\n\nTest: ./test/run-test --host 2001\nBug: 145197371\nBug: 134162467\nChange-Id: I7813977bfdd17165da810a1705197654eef024a1\n"
    },
    {
      "commit": "0aa02069a224384f0c6a8d78c3465290b61bdf67",
      "tree": "b1cc859ce0449e0943e756544d2a7a581cf870ca",
      "parents": [
        "88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 16:24:09 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 17:26:31 2019 +0000"
      },
      "message": "Add resetJitCounters\n\nUsed to avoid Jit counters from class preloading being recorded in the\nboot profiles.\n\nBug: 139883463\nBug: 142564450\nTest: test/run-test 2230-profile-save-hotness\nChange-Id: I69c548ea336e9fb33e74988668e5d3c93b8a6705\n"
    },
    {
      "commit": "882d41435982c518506f544ab79a9fa0a90cc78f",
      "tree": "5b5902f9ba26b45c2ced2367f168d82f33ad7b7c",
      "parents": [
        "da3653f1424236c4778cf3806861d04f2ba9b07e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 13:27:10 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 25 21:33:30 2019 +0000"
      },
      "message": "Use nativePostForkSystemServer for system server profiling\n\nNeed to use nativePostForkSystemServer instead of nativePostForkChild\nsince nativePostForkChild is called after the class loader is created.\n\n(cherry-picked from commit 0712f2969c0f19fa2cc41f99751d39ee1852ebbc)\nBug: 139883463\nBug: 144383344\nTest: showmap `pid system_server` and verify\nTest: atest BootImageProfileTest\n\nMerged-In: I7c4f61b08d286ef6056931231f6b835749092720\nChange-Id: I7c4f61b08d286ef6056931231f6b835749092720\n"
    },
    {
      "commit": "acdb9a350fede0776e1f4d6d04dc3246249345e3",
      "tree": "571b9d7e6b9606b1258314f781eb1341399def81",
      "parents": [
        "4c6d765dae35f7a3e7cafdbe346821622e65d6d4"
      ],
      "author": {
        "name": "Artur Satayev",
        "email": "satayev@google.com",
        "time": "Mon Oct 28 18:09:53 2019 +0000"
      },
      "committer": {
        "name": "satayev",
        "email": "satayev@google.com",
        "time": "Wed Nov 06 13:16:51 2019 +0000"
      },
      "message": "Plumb @TestApi enforcement policy to runtime.\n\nBy default access to test APIs would be allowed for instrumented processes only.\n\nBug: 133832325\nTest: manual\nChange-Id: Iaa68447c88304b062025c96e8b863a0758b78add\n"
    },
    {
      "commit": "de05550bf33d3441655cfddd66e788791f2412e7",
      "tree": "6815d4af1a0a825df90318f753dc3afa71704ece",
      "parents": [
        "988c3911671598d7c840c65bf1cdfafa1e05c582"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 13:41:35 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 01 13:05:17 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in reflection.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 36692143\nChange-Id: I53342f5bb6285c9ca95445791dd10e04c6d8f962\n"
    },
    {
      "commit": "07710c52222fa412051cb9c3920894fe50b7d41c",
      "tree": "0c3a94e2a2c59db85b6f85fb6f4b017e71363537",
      "parents": [
        "fb11957a861bc2230773e74e969b45a92d4f587b"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Sep 16 15:53:38 2019 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Sep 19 16:43:22 2019 +0000"
      },
      "message": "Reland \"Java Heap Profiler for Perfetto.\" again\n\nThis reverts commit 284b1b01cf47335fa578e995150adcd0c6f02059.\n\nReason for revert: Added some nullptr checks with logging.\n                   Fixed behaviour when ReInitializing plugin.\n\nTest: dump heap for system_server\n\nTest: art/tools/run-gtests.sh -j4\n[ RUN      ] InstructionSetFeaturesTest.FeaturesFromAssembly\nart/runtime/arch/instruction_set_features_test.cc:161: Failure\nValue of: assembly_features-\u003eHasAtLeast(instruction_set_features.get())\n  Actual: false\nExpected: true\nAssembly features: ISA: Arm Feature string: div,-atomic_ldrd_strd,armv8a\nFeatures from build: ISA: Arm Feature string: div,atomic_ldrd_strd,armv8a\n[  FAILED  ] InstructionSetFeaturesTest.FeaturesFromAssembly (0 ms)\nKnown issue, see http://b/139425971\n\nTest: art/test/testrunner/testrunner.py --target --64\n4095/4260 (96%) tests passed.\n\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nOutcomes: 13781. Passed: 13542, Failed: 0, Skipped: 140, Warnings: 99. Took 29m37s.\n\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nOutcomes: 401. All successful. Took 7m15s.\n\nBug: 136210868\n\nChange-Id: I7b8564c93926788acb0340de254836dff0ebd9f8\n"
    },
    {
      "commit": "4ac0e1571e015a01d75091c3daef065f9624ad77",
      "tree": "4d13edeab88bd6fd724388c48385b0c3cca4f3a8",
      "parents": [
        "5a2301d897294ff4ee6de71f459dc2566dc3fa1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "message": "Revert \"Revert \"Basic structural redefinition support\"\"\n\nThis reverts commit 5a2301d897294ff4ee6de71f459dc2566dc3fa1a.\n\nBug: 134162467\n\nReason for revert: Relanding as unclear if issue is due to topic.\n\nChange-Id: Ib1d1cf2e9132e30c9649b760ae9ae2d8ceacf843\n"
    },
    {
      "commit": "5a2301d897294ff4ee6de71f459dc2566dc3fa1a",
      "tree": "2bd06ab3f463734994b3d251f6115514520dbb3f",
      "parents": [
        "4eb6eb40e88214fcc874d93e75660cb580cb4d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:11:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:12:13 2019 +0000"
      },
      "message": "Revert \"Basic structural redefinition support\"\n\nThis reverts commit c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c.\n\nBug: 134162467\n\nReason for revert: Breaks on redefine-stress\n\nChange-Id: I4e38da23d65b5b34b26b5ab537a3583328e078a4\n"
    },
    {
      "commit": "c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c",
      "tree": "f8647487e7465712fd73118ceb89e13167a12648",
      "parents": [
        "1ba7e8c10af4e270864a417044244d63db53ccf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 13 10:50:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 17 23:52:12 2019 +0000"
      },
      "message": "Basic structural redefinition support\n\nThis adds basic support for adding methods and fields to already\nloaded classes using redefinition. This \u0027structural class\nredefinition\u0027 is currently limited to classes without any virtual\nmethods or instance fields. One cannot currently structurally redefine\nmultiple classes at once nor will structural redefinition trigger the\nstandard redefinition events.\n\nAfter structural redefinition all references to the old class, and its\nfields and methods are atomically updated. Any memory associated with\nthe static fields of the old class is zeroed. Offsets for field access\nmight change.  If there are any active stack frames for methods from\nthe redefined class the original (obsolete method) code will continue\nto execute. The identity hash code of the redefined class will not\nchange. Any locks being held, waited or blocked on by the old class\nwill be transferred to the new class.\n\nTo use this feature the process must be debuggable and running with\n-Xopaque-jni-ids:true.\n\nFor device testing use a wrap.sh that adds the following flags:\n\n    \u0027-Xopaque-jni-ids:true -Xcompiler-option --debuggable -XjdwpProvider:adbconnection\u0027\n\nStructural redefinition only available using the\n\"com.android.art.UNSAFE.class.structurally_redefine_class_direct\"\nextension. This will not trigger the normal class-redefinition events.\nOnly one class may be redefined at a time.\n\nNB There are still some holes in this potentially allowing obsolete\nmethods/fields to be visible. Most notably during jni-id, MethodHandle\nand VarHandle creation as well as potentially other places in the\nruntime. These holes will be closed by later CLs. Until then the\nextension to access structural class redefinition will remain tagged\nas UNSAFE.\n\nTest: ./test.py --host --all-compiler\nBug: 134162467\n\nChange-Id: I825d3a4bdb9594c0147223ae69f433ce9bbfc307\n"
    },
    {
      "commit": "284b1b01cf47335fa578e995150adcd0c6f02059",
      "tree": "a165ba397ce26aa19fcd1b49081d36808a33b9d1",
      "parents": [
        "4fa78a0356cd8a9501e427afc5c1bb95eea70ba3"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Sat Sep 14 00:18:42 2019 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Sat Sep 14 00:27:18 2019 +0000"
      },
      "message": "Revert \"Reland \"Java Heap Profiler for Perfetto.\"\"\n\nThis reverts commit 5a446bd6c72d25ed2435fb2279bd8617ad003d2e.\n\nReason for revert: Multiple gtests failing\n\nChange-Id: I07abd641d49518a48aed7e401c1927aa7c027937\n"
    },
    {
      "commit": "5a446bd6c72d25ed2435fb2279bd8617ad003d2e",
      "tree": "cad94b86c888b89a96596430ae652a64e4decf35",
      "parents": [
        "f923b09ee869da8a7fec8fc4ed860b6f3eaa7337"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Sep 10 11:30:26 2019 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Sep 12 08:53:36 2019 +0000"
      },
      "message": "Reland \"Java Heap Profiler for Perfetto.\"\n\nThis reverts commit 8f70b9672c13a5ca19cf2c54ace3cb2f342f743a.\n\nReason for revert: Roll forward with fix. Add hprof_listener to threads\n                   allowed to start early.\n\nBug: 136210868\nTest: * art/tools/run-gtests.sh -j4\n        arm/instruction_set_features_test already failing at base\n        art/arm64/image_space_test  already failing at base\n        art/arm/image_space_test  already failing at base\n      * art/test/testrunner/testrunner.py --target --64\n      * art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\n      * art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\n      * Start profile, killall -38, see dumped data.\n\nChange-Id: I90c3f8158d95d735fe2a67e25813543849dd0c4f\n"
    },
    {
      "commit": "8f70b9672c13a5ca19cf2c54ace3cb2f342f743a",
      "tree": "6f7c3bfddf1a8beaa6f4e406cfe59929fce60ed2",
      "parents": [
        "7f8678ec4d2abec1f540fb441be60604bec86b6e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 06 22:25:34 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 07 02:00:29 2019 +0000"
      },
      "message": "Revert \"Java Heap Profiler for Perfetto.\"\n\nThis reverts commit adf49d4bb3870b73e79982f75bacd917d3ec3bb2.\n\nReason for revert: Breaks tests.\n\nBug: 136210868\nChange-Id: If79f47e3151f1d1cb359b79b388b8aac9ee09074\n"
    },
    {
      "commit": "adf49d4bb3870b73e79982f75bacd917d3ec3bb2",
      "tree": "d318b68d4840140f9c1e78f324becb5db0c142fa",
      "parents": [
        "7ed5e6002fc493984b3a4887a867ef751a139b4d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Jul 09 17:57:16 2019 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Sep 06 10:05:17 2019 +0000"
      },
      "message": "Java Heap Profiler for Perfetto.\n\nThis adds a new ART plugin that waits for a signal (number 38), when\nreceived forks the process (so that the app stays responsive to the\nuser), then connects to Perfetto and writes out a proto describing the\ngraph of currently live ART objects.\n\nThis has several advantages over `am dumpheap`:\n* Because it forks, it has less impact on the user.\n* It only writes out the ownership graph, rather than also dumping the\n  contents of the heap.\n* As this is streamed into Perfetto, it can be correlated to other data\n  sources in the same trace file.\n\nTest: Flash; start data source; send signal 38; get heap dump\nBug: 136210868\n\nChange-Id: I1f75bc532fd0a6b8d5f7f474ac7154180677dedd\n"
    },
    {
      "commit": "a67daeba97fb1a469cb5764a7ced0d03fc206a38",
      "tree": "bc2c4f4bea8da9c2d7adb0bc3975edc775d4e2b7",
      "parents": [
        "d5a9587acd8fbc3aceddc51d436ebbec5633326c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 12 10:41:25 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 13 10:47:56 2019 +0000"
      },
      "message": "Fix race between post fork initialization and JIT.\n\nOnly start JIT threads after all zygote fork logic has been setup.\nFor robustness, also set the runtime state as the first thing post fork.\n\nTest: m\nChange-Id: Icf5db341275002599d0e89add4d9f6b2f799004d\n"
    },
    {
      "commit": "bfcea3dca82437ac6a0b824d6d2375629f7a0eaf",
      "tree": "e87d948f78c81f40217c5cd308097c788d39311c",
      "parents": [
        "6461124331de7707f3b109cec38337d851be997e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Aug 05 15:44:00 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 08 11:58:04 2019 +0000"
      },
      "message": "Jit-zygote: Postpone pre-compilation until boot is completed.\n\nCompile only needed (hot) methods during boot.\n\nThis saves about 1.5s from jit-zygote boot time.\n\nTest: device boots\nBug: 119800099\nChange-Id: If98540e42634bf1e9701231e5174d724e897ce67\n"
    },
    {
      "commit": "38a062eb7390f07ee0a318517f71d9b56491a5f7",
      "tree": "67204f1fbc785b888f9d5718e31cf22de6b2d727",
      "parents": [
        "e80ecf31e0d58a90d6b2a1d65ec090c03abc86dc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 13:59:27 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 05 19:27:58 2019 +0000"
      },
      "message": "Weaken 2 DCHECK()s in reflection.\n\nReflection can be used on classes that are being initialized\nrather than just classes that are already initialized as we\nwere previously asserting.\n\nTest: Additional tests in 100-reflect2.\nChange-Id: I072c28533e9248856b49fddb4bc46109448ee8a9\n"
    },
    {
      "commit": "7ee607e39cfbfc59616dbf4c063cd1169dc4350f",
      "tree": "7529abbedcb31c8a8093a58c2c25fb0831691de1",
      "parents": [
        "dd20d0006ff51a3aaaee8e8cb33cbbbd859b41f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:22:04 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 23 12:37:53 2019 -0700"
      },
      "message": "ART: Fix Runtime::GetStat\n\nReturn uint64_t, as data is actually stored as such. Remove ns\nto us conversion. Fix sensitive callers.\n\nTest: m test-art-host\nChange-Id: I506c90dbb179ffe010bb9cd6cc795edc280a9bc8\n"
    },
    {
      "commit": "5bef022af212e060a3e744e688ae2116849d4485",
      "tree": "be91c1f6cc7bcf8fbfe0b72c85c9f4bf0863adec",
      "parents": [
        "2d06e029b1c84916154b5960d2acd1c84706dc04"
      ],
      "author": {
        "name": "randy.jeong",
        "email": "randy.jeong@samsung.com",
        "time": "Mon May 27 10:29:09 2019 +0900"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 16 09:55:20 2019 +0000"
      },
      "message": "[RUNTIME] Ignore signal registration for debugging\n\nIt\u0027s difficult to identify native crash/error of 3rd party app.\nBecause they can control their app with own signal handling.\nTherefore I would like to support the way to ignore signal\nregistration in 3rd party app with the specific property.\n\nTo enable this, do just setprop \"debug.ignoreappsignalhandler 1\".\n\nTest: test app to hook signal, then setprop debug.ignoreappsignalhandler 1\n\nChange-Id: I56e2f1255a71abae339396379deb8cb5c31c25c5\nMerged-In: I56e2f1255a71abae339396379deb8cb5c31c25c5\nSigned-off-by: randy.jeong \u003crandy.jeong@samsung.com\u003e\n"
    },
    {
      "commit": "3068d582eff4552ff260d7966fcbdc93e17d0207",
      "tree": "bc894a414070a06ea2a231fb98607b57b8c3b0cb",
      "parents": [
        "991cd5cc16267b74e390f640eb441102062babb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 28 16:39:29 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 31 14:15:59 2019 +0000"
      },
      "message": "Clean up creating handles from `this`.\n\nMake these member functions static and take an additional\nparameter `Handle\u003c.\u003e h_this`. Callers mostly already have\na Handle\u003c\u003e to pass, so we avoid an extra StackHandleScope.\nThis pattern was already used for some functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nChange-Id: I4f4478b0526bcb2f3c23305d3b3cc4a65fff9ff5\n"
    },
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "9ac09eeb8bbd48a343213a96f6e7e0328fe30447",
      "tree": "6351289596083d20ca236715d451b0d47ceb5fdc",
      "parents": [
        "eab0248f8785f25241011a953940ea5a4c5e7467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 08 23:38:27 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 10 22:46:00 2019 +0000"
      },
      "message": "jitzygote: compile system server methods at boot.\n\nTest: m \u0026\u0026 boots\nBug: 119800099\nChange-Id: Ia02a68bc3f152fe9a733577e66f327264518fe6b\n"
    },
    {
      "commit": "0d54cfb1a696bfe9795bdee3653c130747b97fcc",
      "tree": "c0212ffcbb33e92629267d5d78537e3519da6730",
      "parents": [
        "fe613a7f8dd25ffde533df248a1a89c91353e2be"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 03 09:13:52 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 03 11:28:50 2019 +0000"
      },
      "message": "jitzygote: Special case system server to keep the JIT queue at fork.\n\nTemporary measure until we have a system server specific profile.\n\nTest: m\nBug: 119800099\nChange-Id: I58da2d96ec355e26f872b67b021c3b3dba26e2b4\n"
    },
    {
      "commit": "b74f307cda4b1b186dcbdf6c84f1ee02a50ad3cb",
      "tree": "080b8c9b4317e2b5f4c942d0c7be6dbb18200dfa",
      "parents": [
        "1db789ea17f87415a38d72066ca0baf3f5252474"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 01 15:19:00 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 15:59:33 2019 +0000"
      },
      "message": "ART: IWYU for HiddenApi domain\n\nMake the domain a known char storage and forward-declare in DexFile\nto significantly reduce the list of transitive includes. Fix up\nmissing includes.\n\nTest: mmma art\nChange-Id: I9d43113e982fc0b509fd9a8168c6788e9431500a\n"
    },
    {
      "commit": "501c3b073e2252f8f5ccb0f9a7aab9bcf8ad297c",
      "tree": "d09085d3dcab7eab57e2c826f8073a7ee4bd8449",
      "parents": [
        "ed42f62df5bb46168334dadecb5d143c38f7a88b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 17 21:54:27 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 18 16:08:27 2019 +0000"
      },
      "message": "Revert^2 \"Fix correctness for fast path class loading\"\n\nThis reverts commit 2e2f9e8c6989dec22e4199a773a1e03954f82365.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130746382\n\nTest: m test-art-host\nTest: atest vm-tests-tf\n\nChange-Id: I2b6e6be530bb8b6c6222b11b7d93fb1f574d2ea4\n"
    },
    {
      "commit": "2e2f9e8c6989dec22e4199a773a1e03954f82365",
      "tree": "ba9745bcf08b758d71b458929ca9bf35f9aa7a69",
      "parents": [
        "d399f579cf2a8462ef6f1fbea360fe62be174377"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:35:08 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 17 12:36:07 2019 -0700"
      },
      "message": "Revert \"Fix correctness for fast path class loading\"\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nBug: 130680590\n\nTest: TH\nThis reverts commit ef04ac6c05fa344428008ffa1eac7316c64a3467.\n\nChange-Id: I2ee8a20419da251eed2620b7feb390053c0cdcb9\n"
    },
    {
      "commit": "ef04ac6c05fa344428008ffa1eac7316c64a3467",
      "tree": "761ffc6c22a32f16dc3a42392f83c91ef23ef03d",
      "parents": [
        "1eb5d8770a533b86269e503a842f6b45591e87cf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 11 13:37:10 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 16 20:13:01 2019 +0000"
      },
      "message": "Fix correctness for fast path class loading\n\nFor the fast path, we currently remove all exceptions and only return\nClassNotFoundExceptions. This CL preserves exceptions that might occur\nsuch as linkage errors.\n\nThe follow up is to add an additional fast path for faster class not\nfound exception generation.\n\nBug: 130310316\nBug: 130293184\nBug: 130209120\nTest: test-art-host\n\n(cherry picked from commit ca19f9a8547999cb13de06458364d64ab143cb09)\n\nMerged-In: Iae55aaaae2be5b1330e8e54bee36e862cf9e12e0\nChange-Id: I0fff3a748c07b5f3e05f4de24d56678a8b046844\n"
    }
  ],
  "next": "c2f43576c379db5ec366f357800cf7442b8ab849"
}
