)]}'
{
  "log": [
    {
      "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": "85b125f4ac9c687e3bd217f9c6eab999be104c17",
      "tree": "0a9f00d89a2b22665da7b3d71de6543d1f16659b",
      "parents": [
        "01b65526c1dce94abb8ed98d473ddcd2b8fcd692"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 30 15:45:52 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 04 22:41:32 2020 +0000"
      },
      "message": "Trace integer value for profilebootclasspath\n\nInstead of tracing this in the profile, trace it directly after fork.\nThis makes it easier to know what to look for in case the trace ends\nbefore the profile saver ran.\n\nBug: 171432467\nTest: manual\nChange-Id: Iee3dece8b756b027195c38bdd8c031960eca09c4\n"
    },
    {
      "commit": "61c71ef48e7fb0557af5702a9021bd2854f84e28",
      "tree": "e25fdadab83a68735c29c341b22433b1a58c5594",
      "parents": [
        "1485d4affe0eb881c488d7b95eb3a556a22034a4"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 22:37:36 2020 +0000"
      },
      "message": "[metrics] Dump ArtMetrics on SIGQUIT\n\nART now writes a current snapshot of its internal metrics in response to\na SIGQUIT.\n\nExample output:\n```\n*** ART internal metrics ***\n\nClassVerificationTotalTime: count \u003d 863833\nJitMethodCompileTime: range \u003d 0...1000000, buckets: 244,5,1,0,1,0,0,0,0,1,0,0,0,0,0\n\n*** Done dumping ART internal metrics ***\n```\n\nThis includes a new StreamBackend, which is used to write ART metrics to\nan output stream in a human readable format.\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Iaf8bcee5a4993e70ac4e36940591a734fe1a6697\n"
    },
    {
      "commit": "ae7168e19f886ed43ed200f9b0e769613df485f9",
      "tree": "0c7169d33b71d643957e1acdaffc0ff61d4526fb",
      "parents": [
        "5e8e5161e5f5a1e944f5bc6fd2ef893e0a33551b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Oct 09 15:13:29 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 15:42:21 2020 +0000"
      },
      "message": "Remove unused image space order argument\n\nBug: 160683548\nTest: Treehugger\nChange-Id: I249d2891b645fa103106ee946f014b9ce362cbda\n"
    },
    {
      "commit": "f9dbb97a1625b61a395406351e042921f9cfb455",
      "tree": "6a85f72081dfad110257e03fab1e768d196b1a86",
      "parents": [
        "0875b0ad9825077ca7a9043552272ac0732130f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 27 15:21:11 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 02 09:43:37 2020 +0000"
      },
      "message": "Adjust JIT thread priority post-fork.\n\nBug: 166406877\nTest: test.py\nChange-Id: I81c9a231213e62a1aeaa67cfe8c38419f5bddcd0\n"
    },
    {
      "commit": "f1e1dd135c086a15c0e683c5778add033f97e4d9",
      "tree": "3146a9f0c4dd769a741641f1da34dff7df649480",
      "parents": [
        "ca8343842f9094fd5eb86569d293250e783f582c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Fri Aug 21 15:38:12 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 28 17:00:06 2020 +0000"
      },
      "message": "Enable -Wconversion for thread.cc\n\nThis should help prevent bugs due to unexpected implicit integer\nconversions.\n\nSome collateral changes were needed as well to limit the number of casts\nthat had to be introduced.\n\nBug: 165843530\nTest: m test-art-host-gtests\nChange-Id: I091122827001ab335c7e140864f67cdf90fcf8b4\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": "b5a0e91e38dfd10bf6c532e071a8712cb7cca957",
      "tree": "8af1d8fa25900cdb807925a61880c06937eb618c",
      "parents": [
        "0740eeb24d47105cb7131a248450aedb9ef70bcd"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 23 10:54:47 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 27 17:23:02 2020 +0000"
      },
      "message": "Suppress explicit gc logging in libcore tests\n\nThese logs are so frequent it is difficult to read the output logs. On\na recent run I got ~86% of the lines in the output were the explicit\nGC logs. This bloated the log file to ~80 mb, making examining it with\na web-browser difficult. This change should drastically reduce the\nsize.\n\nTest: manual\nBug: 161420453\nChange-Id: I2cdc77814891d125f6a6bb69decd2c68b3fa0f5b\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": "90a18cf5b76bbf9a13dc520b8817de51b8efd7f8",
      "tree": "10da04f8d8c00f88bfe844691aa811d00c483ab9",
      "parents": [
        "c4b50b3bb8125aa12255587c55b356b424278110"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 25 15:12:59 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 02 08:45:31 2020 +0000"
      },
      "message": "Rewrite OatFileManager::OpenDexFilesFromOat.\n\n- Remove obsolete option -Xno-dex-file-fallback\n- Only load an oat file when class loader context matches.\n- Remove obsolete duplicate class check code.\n\nBug: 132357300\nBug: 156250899\nChange-Id: I78e645806e0de2f35ce2614285f1a7cbc705484c\n"
    },
    {
      "commit": "86c8752f64629325026945cd4eabd1dcea224acb",
      "tree": "9dc2be978f9e784a3ce16fa29d46941a94ac1c94",
      "parents": [
        "f97a859e85f703644d897f0e3e1bc54315557aaa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 11 16:55:55 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 08:26:46 2020 +0000"
      },
      "message": "Direct calls to @CriticalNative methods.\n\nEmit direct calls from compiled managed code to the native\ncode registered with the method, avoiding the JNI stub.\n\nGolem results:\nart-opt-cc                       x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +12.5% +62.5% +75.9% +41.7%\nNativeDowncallStaticCritical6 +55.6% +87.5% +72.1% +35.3%\nart-opt                          x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +28.6% +85.6% +76.4% +38.4%\nNativeDowncallStaticCritical6 +44.6% +44.6% +74.6% +32.2%\n\nTest: Covered by 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: testrunner.py --target --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use -t 178\nTest: aosp_cf_x86_phone-userdebug boots.\nTest: aosp_cf_x86_phone-userdebug/jitzygote boots.\nBug: 112189621\nChange-Id: I8b37da51e8fe0b7bc513bb81b127fe0416068866\n"
    },
    {
      "commit": "bce6877bca2a47737996eef94e04163b19baba44",
      "tree": "9a885347610fe0a184e63b48e00da2e15b8f9d25",
      "parents": [
        "62bcf3df8998a18490551a4e6a40e467663aa5f1"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed May 27 15:32:58 2020 +0200"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 27 14:59:50 2020 +0000"
      },
      "message": "Really fix indentation.\n\nBug: 147667830\nChange-Id: I073f91f58f35723af4ec50ab574b5a4dd9585074\n"
    },
    {
      "commit": "0caa3fd3a6e50cacca1129f98c09091e6a7fae29",
      "tree": "971e8c4171822c20a969ff7c40befa94353fe9ee",
      "parents": [
        "adf0f2e55c285f3fbe0a70c218a8f267029e736c"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed May 27 10:54:11 2020 +0200"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed May 27 08:55:38 2020 +0000"
      },
      "message": "Fix indentation.\n\nChange-Id: Ic12650469cdfb5920693dd1ed7e984989b46de60\n"
    },
    {
      "commit": "0278b4bfb6528c929120f99dbef67d36e55bc6de",
      "tree": "2b46d0f861e9e6abc242592070fa05f18d0b06eb",
      "parents": [
        "e3ad70f1ceb888630b994587a9a9d2c5654a48fb"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue May 26 12:09:14 2020 +0200"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue May 26 19:48:01 2020 +0000"
      },
      "message": "Preload perfetto_hprof library in Zygote.\n\nThis is to reduce the startup time for profileable or debuggable apps.\n\nTest: flash, run benchmarks\n\nBug: 147667830\nChange-Id: Iee5d60664cad5b6e445c2291d6de07f2bb555017\n"
    },
    {
      "commit": "0972d087577e7d7c7f0ece9a04f100f4dff3629b",
      "tree": "d9c07b22d21ada42828de6315bd13d06f289dbf5",
      "parents": [
        "3d189432e6ce22f6b16a2ba3ebb082e58b247041"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri May 15 14:07:31 2020 +0200"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon May 18 20:37:07 2020 +0000"
      },
      "message": "perfetto_hprof: add flag to enable.\n\nAdd flag whether to allow loading of the perfetto hprof plugin.\nEven with this option set, we will still only actually load the plugin\nif we are on a userdebug build or the app is debuggable or profileable.\n\nWe do not want to enable this by default because PerfettoHprof does not\nwork on host, and we do not want to enable it in tests.\n\nTest: flash flame-userdebug. get java heap dump.\n\nBug: 147667830\nChange-Id: If978556dbf44b27828cba47e1fb95084a12838b7\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": "b0c6cb59ed8f8999d035ea0cabe3c1cd226507f8",
      "tree": "abd03ec069784888c251d988d6233a6ce73201a2",
      "parents": [
        "2842ac186022e90323e4ed8ad4cb2c8b154d31b2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 20 15:12:42 2020 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 20 20:42:30 2020 +0000"
      },
      "message": "Fix logic to find dex2oat.\n\nOn device, we now have dex2oat64/dex2oat32 with no symlinks, so be\nexplicit on the bitness when trying to find the executable.\n\nBug: 153380900\nTest: run-gtests.sh, testrunner.py, run-libcore-tests, run-libjdwp-tests\nChange-Id: I796eedc84d75aaa2a525d3ed2cbcbe157e5220fb\n"
    },
    {
      "commit": "b04b30c90d7fd6d313335f1b9fc926d5a134bbe0",
      "tree": "1a960b0974998751282f82fdd8720d3105c3cd30",
      "parents": [
        "c390879443dea479fb5b317237ee455d76136be2"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Apr 06 11:00:45 2020 +0200"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Apr 15 14:08:47 2020 +0000"
      },
      "message": "Only allow extra_guardrails for domains that can connect to heapprofd.\n\nAlways load perfetto_hprof plugin for system server, as it does not have\na manifest. The android_mallopt call marking it as profileable comes too\nlate for plugin initialization, so we have to hardcode here.\n\nTest: flash user device\n      allow systemui to use central heapprofd\n      make system_server perfetto producer\n      profile systemui with extra guardrails -\u003e success\n      profile sys_srv without extra guardrails -\u003e success\n      profile sys_srv with extra guardrails -\u003e rejected\nBug: 151140716\nChange-Id: Icb8b70139eabca19838f0b122cc62af6b7c5a6ab\n"
    },
    {
      "commit": "c76232ef401a036a9828fd27f22163619d9c1944",
      "tree": "2abf2af17f530d0328ac5326834647d29c8fe6f1",
      "parents": [
        "80495fdb62d96d68c8648db3236f614d94ac1e6e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 18 11:23:33 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 09:45:42 2020 +0000"
      },
      "message": "Fix relation between debuggable / JIT zygote.\n\n- Move the logic to clear precompiled in ClassLinker.\n- Add a null check on entries in ZygoteMap\n- Avoid doing JIT zygote actions (precompile, remapping boot images)\nwhen debuggable.\n\nTest: android.jdwptunnel.cts.JdwpTunnelTest#testAttachDebuggerToProfileableApp\nChange-Id: I9b5e391bb35aa04bbeba01b9b563b33f96395d2e\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": "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": "280e6c323419ad08860514ff8c09eefb8fc8e969",
      "tree": "db1d3d73a8c00c5df9cb8809dc3ab53e5ed09af6",
      "parents": [
        "b28e3042b1dcab32c328b356a31f6ea8b50a9f9c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 03 13:52:07 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 10 18:46:53 2020 +0000"
      },
      "message": "Jit-zygote compiled code isn\u0027t debuggable\n\nWe check the debuggablity of compiled code by checking to see if it\nwas compiled by the JIT. This works since we throw all precompiled\ncode out when transitioning to debuggable. Unfortunately with\njit-zygote the non-debuggable zygote methods can be incorrectly seen\nas debuggable when encountered on the stack. This can lead to\nincorrect deoptimization and other issues. To fix this we explicitly\nexclude jit-zygote code from the check.\n\nBug: 144947842\nTest: ./test.py --host\nChange-Id: I4e953f64f8261b7a16d7c3199cec89998af0c1cf\n"
    },
    {
      "commit": "b28e3042b1dcab32c328b356a31f6ea8b50a9f9c",
      "tree": "4cfe4e2e6800db4ca843dd94a80e54fe97b8cfd7",
      "parents": [
        "b1fe5e18318c3af8d0cedc3f19cb6bc51817b859"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 06 13:02:46 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 10 18:46:53 2020 +0000"
      },
      "message": "Clear PreCompiled when we transition to debuggable after zygote fork\n\nWe were leaving the PreCompiled bits set on method objects. This meant\nthat in some circumstances non-debuggable compiled code could be\nreattached to methods after the switch to debuggable with the zygote\nfork.\n\nBug: 144947842\nTest: atest CtsJvmtiRunTest1982HostTestCases\nChange-Id: I1f642f6da441c4f023ec1cbd873c05914c73dd7e\n"
    },
    {
      "commit": "814b9286540d0db5685aedc04c507d95e729d96b",
      "tree": "02651d535b27e0f660d1db90b05b289665051804",
      "parents": [
        "9f8ead24a13e0471a333f0776a024e970662591c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 19 16:37:11 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 03 09:13:01 2020 +0000"
      },
      "message": "Manually add java.io.Buffer private fields to the Core Platform API\n\nThis change adds the private fields in java.nio.Buffer to the Core\nPlatform API programmatically.\n\nThese fields are private and there is no way to express them in the\nAPI defintion. Although unfortunate, we are already doing this for\nmethods and fixing the points of use for these fields is a sizeable\ntask.\n\nBug: 124338141\nBug: 144502743\nTest: Boots, no warnings from native Core Platform API methods\nChange-Id: Icd06cae3f2fe523c71b79430009e76b30caf4b94\n"
    },
    {
      "commit": "9f8ead24a13e0471a333f0776a024e970662591c",
      "tree": "853103508567b0db20d034ae8e20dd19975d0b95",
      "parents": [
        "662f12ee2f2b886aebcc22d321b2d752227e0b38"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 19 10:32:17 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 03 09:13:01 2020 +0000"
      },
      "message": "Remove support code for native Core Platform API checks\n\nNative Core Platform API checks rely on the stack unwinder. The\nunwinder instance increases the zygote rss by ~4MB. We need to keep the\nunwinder around to keep checks fast and not churn memory resources.\n\nBug: 124338141\nBug: 144502743\nBug: 149029127\nTest: m \u0026 boot\nChange-Id: Ia306ec6e48d7b2b330efd771348b563767973269\n"
    },
    {
      "commit": "41b605c5ad4b06ea127ac56c6e3a4c92e8913efd",
      "tree": "f7b28eb11051f3faada99c11dc594cccd34a5786",
      "parents": [
        "30b38f8d01cdb4c80092638f23c61d73e0d287f4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:52:22 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 14 12:01:58 2020 +0000"
      },
      "message": "Remove MIPS support from runtime/.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: If1fc8be94caa69f734438d7a1f4c715addfd8876\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": "4cbb51a0c057249a500ca7fe3947401978f165d2",
      "tree": "af626569243ce560c45fe5c653ca61fae0cd6a0b",
      "parents": [
        "5d24c3d43152b36181fbf9819bfbe5589572f16b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 11:25:54 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 07 18:21:11 2020 +0000"
      },
      "message": "Fix ART code around JIT zygote.\n\n- The right image location for it now ends with a profile\n- Add profile locations to image spaces, so the JIT knows what to\n  compile\n- Remove now deprecated ApexImage related code.\n\nBug:119800099\nTest: boots, methods from framework gets compiled by zygote\nChange-Id: Ie31b62d0a25f1b50e266c1537c43307d7b29e138\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": "abafbe759a354dd6c6d81d4aba3f0aec9aca3d5b",
      "tree": "abd0c540ee97708916450c07bc37d4cd5229a902",
      "parents": [
        "7ec3e60dd656509f4346fc94968f9de22cedcaaf"
      ],
      "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": "nativebridge: Add PreZygoteFork callback\n\nIt\u0027s required to clean-up the emulated enviroment (e.g. close file\ndescriptors) after emulated execution in doPreload() in app-zygote.\n\nTest: NativeBridge6PreZygoteFork_test\nTest: CtsSeccompHostTestCases\nandroid.seccomp.cts.SeccompHostJUnit4DeviceTest\ntestAppZygoteSyscalls\nboth for Q.sdk_gphone_x86_arm.armeabi-v7a\nBug: 146904103\n\nChange-Id: Id192a1647c2f405570bf196daf65b3f2a9faca42\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": "46d7b24ddb2160123afb3facad4b54242422a45f",
      "tree": "35544059d1902949f7def95f95b655a152fcb9ea",
      "parents": [
        "fe0ce64326bc0531616fb6b5388400cd9787370e"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Jan 14 17:44:37 2020 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Jan 15 09:19:00 2020 +0000"
      },
      "message": "Add atrace event for perfetto_hprof init.\n\nBug: 147577567\nBug: 147667830\n\nChange-Id: If6528e2544a19cd4af6f21630fabe84434c1c1ef\n"
    },
    {
      "commit": "6ac057f2ce45a5e1c7c51d3c99bad52f6950469c",
      "tree": "ea7c5e16bd739da6b0bbd9cd765b7483a36239ee",
      "parents": [
        "262871557cc40da5f26c7f2b7f3fed32ecf8d331"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Dec 04 17:04:16 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Jan 13 10:37:59 2020 +0000"
      },
      "message": "Use boot image extension in the JIT-zygote experiment.\n\nTest: temporarily enable JIT-zygote configuration, build, boot the\n  device and ensure that the JIT-zygote specific boot image\n  apex-framework.art is mapped in the zygote address space:\n\n  1. enable Jit zygote in the product device config (in my case\n    device/google/muskie/aosp_walleye.mk):\n\n    +# System server should not contain compiled code.\n    +PRODUCT_SYSTEM_SERVER_COMPILER_FILTER :\u003d verify\n    +\n    +# Use the apex image for preopting.\n    +DEXPREOPT_USE_APEX_IMAGE :\u003d true\n    +\n    +# Have the runtime pick up the apex image.\n    +PRODUCT_PROPERTY_OVERRIDES +\u003d \\\n    +    dalvik.vm.boot-image\u003d/apex/com.android.art/javalib/apex.art:/system/framework/apex-framework.art\n\n  2. lunch aosp_walleye-userdebug \\\n    \u0026\u0026 m \\\n    \u0026\u0026 adb reboot bootloader \\\n    \u0026\u0026 fastboot flashall -w\n\n  3. adb shell cat /proc/`adb shell ps | grep zygote64 | awk {\u0027print $2\u0027}`/maps | grep apex-framework.art\n  6fe44000-7025c000 rw-p 00000000 fc:02 1179718                            /data/dalvik-cache/arm64/apex@com.android.art@javalib@apex-framework.art\n  70571000-70696000 rw-p 0072d000 fc:02 1179718                            /data/dalvik-cache/arm64/apex@com.android.art@javalib@apex-framework.art\n  75a339f000-75a33ac000 r--p 00852000 fc:02 1179718                        /data/dalvik-cache/arm64/apex@com.android.art@javalib@apex-framework.art\n\nChange-Id: Ic35bc4d4d472013c2b28f48e030e5c101eba5670\n"
    },
    {
      "commit": "a3f8129f53394d315618e5c185e95fb8c9d2e28b",
      "tree": "4fde2a3eedadc2598c501e058a7b88e8feb47444",
      "parents": [
        "4d804b8eb891aeef0cd9a3e29c65cc31355b2a69"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 08 16:02:46 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 04:27:14 2020 +0000"
      },
      "message": "Make StartDebugger the last thing in InitNonZygoteOrPostFork again\n\nStartDebugger should be the last thing in InitNonZygoteOrPostFork\nsince it is allowed to either suspend until there is a debugger\nconnection or allow concurrent debugger actions to start taking place.\nDoing any initialization after it\u0027s called is therefor dangerous.\n\nTest: adb forward tcp:12345 jdwp:`adb shell pidof com.antonioleiva.bandhookkotlin`\n      jdb -attach localhost:12345\n\nChange-Id: I4d435a3d48fcbb01054d7b551d713de851077489\n"
    },
    {
      "commit": "65c18a21e7cb0d48327788df498f15ae195e9e3c",
      "tree": "ba49c1f07e7cd2bc6d9ffbafc184bcad85e9ce45",
      "parents": [
        "c4d13ae39ec6f4b6b76b152818516081beb6bb56"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 23:37:13 2020 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Jan 07 17:40:19 2020 +0000"
      },
      "message": "Revert^4 \"Add spin loop to mutex, overhaul monitor\"\n\nThis reverts commit ead89ef62768faa06fedd279b86bccbed1464673.\n\nPS1 is identical to Revert^2.\n\nThis fixes a shutdown issue caused by prematurely hanging when we\nblock while trying to acquire system mutexes during shutdown.\n\nOnly refuse to wake up after shutdown is well under way.\n\nBug: 140590186\nBug: 121302864\nTest: Build and boot AOSP.\nTest: art/test/testrunner/testrunner.py --host -b -t 1932-monitor-events-misc\nTest: art/test/testrunner/testrunner.py --host -b -t 004-ThreadStress\nTest: art/test/testrunner/testrunner.py --host -b -t 132-daemon-locks-shutdown\nTest: 132-daemon-locks-shutdown repeated with increased thread counts and multiple\nconcurrent tests.\n\nChange-Id: Ic19d32652a2a05c1ca843b3e9c6e29e6770262da\n"
    },
    {
      "commit": "ead89ef62768faa06fedd279b86bccbed1464673",
      "tree": "27e3bef919a0775f45c0dfc08b6a26d7688e8a98",
      "parents": [
        "8d94dddfd60ab8122b0abb1a0d90fb13d752a7b6"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 21:37:10 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 03 22:50:59 2020 +0000"
      },
      "message": "Revert^3 \"Add spin loop to mutex, overhaul monitor\"\"\n\nThis reverts commit 3d52abe40e619497b1b59cfce92c74b5a417add5.\n\nReason for revert: Causes asan build timeout; Apparently the runtime\ngoes away while we\u0027re holding a system mutex. We now sleep forever\nwithout releasing it.\n\nBug: 140590186\nBug: 121302864\nChange-Id: I9e4dcaf820815c751aa803473809955451988ebd\n"
    },
    {
      "commit": "3d52abe40e619497b1b59cfce92c74b5a417add5",
      "tree": "50c67eb9a980b1525f78e03d0941605bb9fa3887",
      "parents": [
        "eac38a141a95adc273059ba2f6ad26f073391ed3"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Nov 19 18:49:50 2019 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 19:15:21 2020 +0000"
      },
      "message": "Revert^2 \"Add spin loop to mutex, overhaul monitor\"\n\nThis reverts commit d56f7d1086b16f32c0771a41a4afb376b5fd3076.\n\nReason for revert: PS2 fixes the problems I identified.\n\nPS1 is straight revert^2 of, and thus identical to aosp/1111800.\n\nPS2 in addition:\n- Reduces the size of the test, when not modified to run as benchmark.\n- Disables the test in slow-running configurations, which timed out.\n- Stops using the mutex recursion count, and instead reintroduces\n  one at the monitor level. The plan is to eliminate the one in mutex\n  in a future CL.\n- Avoids modifying various monitor fields in suspended state.\n  MonitorInfo, deflation, etc., may look at the state of a suspended\n  thread and expect not to race. I don\u0027t think the original code had\n  this completely correct either, but PS1 made it worse.\n- Documents some aspects of the code that confused me at times.\n- Avoids dereferencing the monitor owner Thread* unless it holds the\n  thread list lock, and thus knows that the thread won\u0027t go away.\n- Stores a Thread* instead of a thread_id with the monitor owner method\n  and dex pc information used for debugging. This is required to avoid\n  extra thread list lock acquisitions, since we need to dereference the\n  owner to get the thread id.\n- Makes the thread list Contains method public, again in order to\n  support the above. (This ignores C/C++ restrictions on dangling\n  pointer use. We already rely on violating those elsewhere, and\n  the committees are trying to get their story straight about this.)\n- Causes the spin loop to give up immediately if the process is\n  shutting down. This gets us to an actual idle state sooner in that\n  case, and should hopefully mitigate the shutdown issues somewhat.\n  (We tried not spinnning in \"suspended\" state, but that reintroduced\n  some performance issues.)\n- Makes runtime shutdown code more defensive. Clear fields pointing to\n  deallocated objects. Always wait for quiescence AFTER all threads\n  are suspended.\n- Consistently checks for a runtime that\u0027s shutting down or missing\n  after waking up from a futex wait, thus avoiding touching deallocated\n  memory. I believe this was the cause of b/121302864, which PS1\n  managed to aggravate.\n- SleepForever() was a very light sleeper, waking up once a second.\n  Fix that, so the daemon threads we leak on runtime shutdown cost\n  us less.\n- Remove a data race from the \"was the runtime deleted\" logic.\n\nBug: 140590186\nBug: 121302864\nTest: Build and boot AOSP.\nTest: art/test/testrunner/testrunner.py --host -b -t 1932-monitor-events-misc\nTest: art/test/testrunner/testrunner.py --host -b -t 132-daemon-locks-shutdown\nTest: art/test/testrunner/testrunner.py --host -b -t 004-ThreadStress\n\nChange-Id: I6667c61beed2ba68c84cd4c0821fb8e21e188bbc\n"
    },
    {
      "commit": "145f3c4aa4dc40b0682cac95a93163a79fb54f52",
      "tree": "40435e85049c357d44f0b7853f5aaa5c2d683b2d",
      "parents": [
        "bd0ac86f6889e7540853df80b5b499a2151f2a97"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Wed Dec 18 04:21:38 2019 -0800"
      },
      "committer": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Wed Dec 18 04:26:13 2019 -0800"
      },
      "message": "[art] Yama LSM isn\u0027t mandatory\n\nSome machines building debug builds don\u0027t have YAMA enabled (and it\ndoesn\u0027t seem to be mandatory for running/testing ART debug builds)\n\nTest: ./test/testrunner/testrunner.py -b --host -t 001-HelloWorld\n\nChange-Id: I1aa258380ddbf8c4f59ea22a9d901169ba448ef8\n"
    },
    {
      "commit": "00391824f4ee89f9fbed178a1ee32bc29fa77b3b",
      "tree": "aea6bc5e49801c5b4816257ab16a97181ef0d911",
      "parents": [
        "001e5b33ba7065dde0b85450830b605733ae1685"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 10 10:17:23 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 18 06:50:39 2019 +0000"
      },
      "message": "Add an implementation of Nterp for x64.\n\nAnd enable it on x64 when runtime and ArtMethod requirements are met\n(see nterp.cc).\n\nTest: test.py\nBug: 112676029\nChange-Id: I772cd20a20fdc0ff99529df7495801d773091584\n"
    },
    {
      "commit": "abd8f052512fa2bb404f1eb0a42ffe0e5d802b7e",
      "tree": "28bec78b6866aae9713c9eb471680c7aa4fb746b",
      "parents": [
        "3bdb97798d9a00c498833e00b49927f62b9e7f90"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 06 10:49:17 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 10 22:51:35 2019 +0000"
      },
      "message": "Proactively dequicken on debuggable switch.\n\nPreviously we would generally not really consider dex2dex quickening\nwith debuggable processes. This could cause problems for structural\nredefinition since the -quick opcodes are incompatible with the types\nof changes structural redefinition allows. Furthermore this can cause\nsome unexpected behavior where (for example) check-casts might appear\nto pass even if debugger activity should cause it to fail.\n\nIn order to fix these issues we make the runtime more proactively\ndequicken dex-files when we start or switch to JAVA_DEBUGGABLE mode.\n\nTest: ./test.py --target --host\nTest: adb install -t ~/misc/Bandhook-Kotlin/app/build/outputs/apk/debug/app-debug.apk \u0026\u0026 adb shell monkey -p com.antonioleiva.bandhookkotlin -c android.intent.category.LAUNCHER 1\nBug: 134162467\nBug: 144168550\nChange-Id: I2673c91b72ae7048d2ff71a1cf68cf552d4e8004\n"
    },
    {
      "commit": "4ca2f4894ced84805c3c1b707cc1db790339a582",
      "tree": "08ba80b376bf0513589514913b1ba6a63667b0aa",
      "parents": [
        "dd09f7114ccdbe4cefd76c37f2db8b899a991923"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 25 16:07:22 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 09 17:53:44 2019 +0000"
      },
      "message": "Enable JNI ID auto swap on debuggable\n\nMake JNI-ids automatically switch to Indices on debuggable processes.\nThis allows one to make use of structural redefinition in these\nprocesses.\n\nTest: Manual\nTest: listextensions agent\nBug: 134162467\nChange-Id: I097c16f26c9a42ab523b4cb06cdb603f70bb38bb\n"
    },
    {
      "commit": "b7bf843b04046f2758998c019e947611d0208217",
      "tree": "0a6033402ebde2859267c865dc4e14cde9170835",
      "parents": [
        "726e2dd6db60968b36c1d03feab236edc8fa806b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 03 13:18:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 06 10:57:08 2019 +0000"
      },
      "message": "Use provided dex filenames in oat file.\n\nRemove OatFile::RemoveRelativeEncodedDexFileLocation() and\nuse the provided `dex_filenames\u0027 (see below) if not empty,\nwithout checking for prefix match or host/target build type.\n\nAlso add extra primary/multi-dex location checking when\nopening an oat file. Since some tests were already creating\noat files from multiple dex files, rewrite the interface to\nbetter support that option, replacing the old argument\n`abs_dex_location` with `dex_filenames` that can provide\npaths to multiple dex files.\n\nTest: m test-art-host\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I36a9abca72872c41e4c10fdacbeadf551ca740dc\n"
    },
    {
      "commit": "e3f775bace85f4fe02dfd4042091d2f7d6fcbc25",
      "tree": "41446ada658dc05abb073edc5c2c134e83802619",
      "parents": [
        "621738039bbca55a2513bddb6ea66d4934fa7089"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 14:41:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 05 13:34:57 2019 +0000"
      },
      "message": "Address comments from aog/1180224.\n\nMove handling of objects in interpreter cache to weak objects.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie7b2b2e285607a7c1460fd4f0b4ea690f9a16594\n"
    },
    {
      "commit": "bc19b7559e887310664a4c86ad3eb3b47749b087",
      "tree": "820961050c6904f89d9bfe67f8b936f2a5ec9d9c",
      "parents": [
        "0a19e212e56fc6fe2809b58072ddcf4acfdc568d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 02 18:54:13 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 20:35:34 2019 +0000"
      },
      "message": "Revert^2 \"Make opaque-jni-ids:swapable more efficient\"\n\nThis reverts commit 42c52f53b3c85b5e3c984bca8eaec2e03893dd2e.\nThis un-reverts commit 4e7dd70e3ee7a25089bed791df8865966cb4b837.\n\nWe were missing some null-checks that caused a null-pointer\ndereference to occur if one tried to get a jmethodID for an obsolete\nmethod when we start with index-ids.\n\nReason for revert: Fixes issue causing failure in art-jit config.\nTest: Manual\nTest: count-fields.py\nBug: 134162467\n\nChange-Id: Ie36c7a4edb70f96655b3b85e5f5eaa6bf47f5cc7\n"
    },
    {
      "commit": "42c52f53b3c85b5e3c984bca8eaec2e03893dd2e",
      "tree": "1589dd3831503767b445734c02bf5e9e4abaaa0e",
      "parents": [
        "f1b809ce611e943f926fff97cefe0930226ffcc2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 02 18:50:16 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 02 18:52:38 2019 +0000"
      },
      "message": "Revert \"Make opaque-jni-ids:swapable more efficient\"\n\nThis reverts commit 4e7dd70e3ee7a25089bed791df8865966cb4b837.\n\nReason for revert: Breaks art-jit column\n\nChange-Id: If1ea54c45f340a06b4601c1c8494b7dd7e8f7bf8\nTest: Manual\nTest: count-fields.py\nBug: 134162467\n"
    },
    {
      "commit": "4e7dd70e3ee7a25089bed791df8865966cb4b837",
      "tree": "3cd2e8afc92262f0cdf474bcdbddde1723976575",
      "parents": [
        "08d0984bfeaff1a1bc2db2d51ecf45f2867b3bc4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 25 13:47:01 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 16:57:13 2019 +0000"
      },
      "message": "Make opaque-jni-ids:swapable more efficient\n\n-Xopaque-jni-ids:swapable was rather memory inefficient, allocating an\nentire PointerSizedArray to mark a method/field as having a\nPointer-id. Since normally these will not be used once the JNI id type\nmoves to kPointer this is rather wasteful. By changing to instead have\na single marker object which is used instead of the full PointerArray\nwe can use significantly less memory in common use-cases.\n\nTest: Manual\nTest: count-fields.py\nBug: 134162467\nChange-Id: I224f0810373afef2335fad092eb758f91455f9e5\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": "682715ee1448959801640975005abb8b876b80b3",
      "tree": "db230f9af26acef7d5fd30317429432fa924a183",
      "parents": [
        "be08b201e20900d590c235eb7a933ace2212ccbc"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 11 18:45:29 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 13 01:35:34 2019 +0000"
      },
      "message": "Set system server package name to \"android\" when profiling\n\nSystem server does not set a value for it\u0027s runtime package name.\nConfigure it before we start the profile saver so that we can annotate the\nsamples with a proper name.\n\nTest: manual\nBug: 139884006\nChange-Id: Id09cf493b9e7227f85d0c7554aef248253f2a44d\n"
    },
    {
      "commit": "1c5949ee99d5eb01ea9abe706cf372d59f02e891",
      "tree": "a0ebfcfc2c651bd46e1bbb98e11f1f98b4a5cdab",
      "parents": [
        "7a20cbdd42fbab5ad562bf98b867c533b0a12164"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Mon Nov 04 19:36:00 2019 +0000"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Mon Nov 11 13:04:11 2019 +0000"
      },
      "message": "libicu_jni needs to be initialized before libopenjdk{d}\n\njava.lang.System, which implements System.loadLibrary, depends on ICU4CMetadata.\nThus, libicu_jni has to be loaded before libopenjdk, which initializes java.lang.System. Otherwise, the device fails to boot.\nSee b/143888405 for details.\n\nBug: 138994281\nBug: 143888405\nTest: device boots\nChange-Id: I3d6691be012601368820c3de717ee1268b6b7ca9\n"
    },
    {
      "commit": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\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": "ccc75191d44f696c39262d3c774b2500d06bebb7",
      "tree": "4e30f0d47d916e2da7aebe1213c028d543095c79",
      "parents": [
        "5fd05e5cfd06c9e682d8b3a097bf0b30e2a85ed4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 28 13:34:03 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 04 23:42:59 2019 +0000"
      },
      "message": "Avoid making oat files executable for system server profiling\n\nDone so that we will only use JIT + interpreter to get samples for\nservices.jar.\n\nBug: 139883463\nTest: showmap `pid system_server` and verify\n\nChange-Id: I6f13446948fd92a43a9312988fd6e00ee4a0ed41\n"
    },
    {
      "commit": "f05f04b429a63eb036f501866a863109f05b95b2",
      "tree": "e6abb50536cb04ed60cf134b2e9556366e5a2064",
      "parents": [
        "5859799ce6ad57ee862434603fc29cecfec1d775"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 11:50:41 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 14:52:45 2019 +0000"
      },
      "message": "Make ArtMethod methods const or requiring the mutator lock.\n\nHelps the jitzygote optimization on sharing the boot image methods\npost fork.\n\nThe CL shows that the code base already almost fully handles requiring\nthe mutator lock when mutating ArtMethod data.\n\nBug: 119800099\nTest: builds\nChange-Id: If4a938b66aac85304ec0a27c53bb9fa951191d8c\n"
    },
    {
      "commit": "ad390fab9e0a724790337674692b4ef15cb4ccb2",
      "tree": "1a59c68d31629550b591e85cac1a96829a6c2ce7",
      "parents": [
        "76a37458ee823202504dcff3dc95f19957a726a3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 16 20:03:00 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 18 23:07:46 2019 +0000"
      },
      "message": "Use GC exclusion for NotifyStartupCompleted\n\nPrevent deadlocks that can occur in very rare cases where checkpoints\nblock on a thread decoding weak globals, resulting in a deadlock.\n\nThis is done by moving the startup completed event on a separate\nthread and using GC exclusion.\n\nTest: test-art-host\nBug: 138852758\n\nChange-Id: I314c61aff5be0d5829f7ad5fac0659e99dec1d90\n"
    },
    {
      "commit": "65ae669694e4376d6015d8a54668d5d4bc826c27",
      "tree": "4a213390429b9b598add13fb85262343e654981d",
      "parents": [
        "27e5f3bc36407904e76ee35d54c8d5bbfdf7402b"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Fri Oct 11 14:17:21 2019 +0100"
      },
      "committer": {
        "name": "vichang",
        "email": "vichang@google.com",
        "time": "Tue Oct 15 06:43:05 2019 +0000"
      },
      "message": "Add jni libicu_jni library into ART APEX\n\n- The library may be moved into i18n APEX in the future\n\nBug: 138994281\nTest: device boots\nChange-Id: I9c629224bb318acde744d470e7483a80b2473aa4\n"
    },
    {
      "commit": "55eccdf61f46bd2a633f489f8d09cf78e1de1938",
      "tree": "e60d91c8fc48dfe70956ec9febd346b9dc9fcf77",
      "parents": [
        "49df715faf3700e874fbe246b339a8e426549216"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 07 13:51:13 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 18:59:55 2019 +0000"
      },
      "message": "Revert^4 \"Walk internal ArtField/ArtMethod pointers\"\n\nSeveral of the new tests make use of the invoke-custom opcode. This\nopcode is not supported by dexter/slicer causing the tests to fail.\n\nThis reverts commit c34eab45161c51bf63e548e44645cbcc59d01268.\n\nReason for revert: Added tests to redefine-stress known failures\nTest: ./test.py --host --redefine-stress\nBug: 134162467\n\nChange-Id: Ic1b375a0cb1e44d0252c17115af92c269fb8efc5\n"
    },
    {
      "commit": "c34eab45161c51bf63e548e44645cbcc59d01268",
      "tree": "1b2a0eb85865d2cf6b1627cb5d64869e72412505",
      "parents": [
        "623d4f1ba4f4218c5472e3d9e1e9bf707795878d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:15:53 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:16:18 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\"\n\nThis reverts commit ea2a3d949354c8b054983ba629c81bc5ff7163da.\n\nBug: 134162467\n\nReason for revert: Fails redefine stress\n\nChange-Id: If487c0bcacaf3a3f565ff475b6dad8321e3428b9\n"
    },
    {
      "commit": "ea2a3d949354c8b054983ba629c81bc5ff7163da",
      "tree": "dc94a9c92b254d3f94d96ad0dc27f195d5a7767c",
      "parents": [
        "7fca6ef7b9dbe5a54f2c93a3484035f48ebae27a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 20:34:46 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 14:21:21 2019 -0700"
      },
      "message": "Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit 712fa800b2b78e527d36c88dc369bf4b723587ea.\n\nWe incorrectly didn\u0027t check if a method was obsolete before giving its\nclass\u0027s MethodIds array. We then incorrectly used this array and the\n(placeholder) -1 index to try to find the previous method-id. Since -1\nis not a valid array index we got check failures. To fix this we\nsimply added a check that the method is not obsolete and if it is we\ngo to the slow-path.\n\nReason for revert: Fixed issue causing out-of-bounds array access\nTest: ./test.py --host --debuggable --ndebuggable\nBug: 134162467\n\nChange-Id: Iaffefeab6e889b4fb6554a11452d0af051001cb7\n"
    },
    {
      "commit": "712fa800b2b78e527d36c88dc369bf4b723587ea",
      "tree": "ccc4573a3c6bef136ef6da022350ebb5c17a1892",
      "parents": [
        "f70dfec27cae2625c199f1b8ecf1ef1f23580a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:11 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:38 2019 +0000"
      },
      "message": "Revert \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c.\n\nBug: 134162467\n\nReason for revert: Test fails on debuggable.\n\nChange-Id: I240d58fafcc7434749947330b64c67d65b9b7a1e\n"
    },
    {
      "commit": "c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c",
      "tree": "1380b353e0d3b5015c9d1ef29fd4c2534828f97b",
      "parents": [
        "8679fd5e938d7bed67d3ab67c55b7f4fb2cdd92a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 24 14:36:50 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 20:44:33 2019 +0000"
      },
      "message": "Walk internal ArtField/ArtMethod pointers\n\nDuring structural class redefinition we sometimes need to update some\nof the ArtMethod/ArtField pointers held by runtime frames. This adds\nsupport for doing this through a StackReflectiveHandleScope similar to\nthe StackHandleScope used for holding object references. This also\nupdates various places where reflective-handles to ArtMethods and\nArtFields are needed, for example the JniIdManager, field Read/Write\noperations and events, field resolution, and the old debugger.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I4ea73e85956a07735c6d7b125c5828a4233670bc\n"
    },
    {
      "commit": "4090657e44b16dcac5cb63c2151a2eee9472d968",
      "tree": "de386c9da5521f7e3b011df860fad9e43252721d",
      "parents": [
        "19cb8e2bcc1a26f23a9709daf96ad7ead96d05a7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 30 13:57:11 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 01 19:43:05 2019 +0000"
      },
      "message": "Deoptimize boot image when profiling boot class path\n\nUsed for getting JIT samples for boot image methods.\n\nTest: adb shell profman --dump-classes-and-methods --profile-file\u003d/data/misc/profiles/cur/0/android/primary.prof --apk\u003d/apex/com.android.art/javalib/core-oj.jar\nBug: 139883463\n\nChange-Id: Ib22b4539a24c7e57be8ac3e974e6681e754b06ff\n"
    },
    {
      "commit": "c18eba327c4e207ff7b38817f097ee2220b44b39",
      "tree": "1978e64abd3e9fd3df99179f4a2110a724a9565f",
      "parents": [
        "371390f775c90b8b3df11a9890585598a2a39da9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 24 14:36:27 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 27 17:08:33 2019 +0000"
      },
      "message": "Consolidate updating of reflective Field/Method references\n\nPreviously we used several different visitors to update Field \u0026\nMethod references for structural redefinition. We also did not visit\nor update JVMTI based references.\n\nThis consolidates all the visitors to a single\nRuntime::VisitReflectiveTargets function with a single\nReflectiveTargetVisitor type. This simplifies the code around\nstructural redefinition and ensures that the reflective value holders\nare in charge of the actual replacement.\n\nSupport was also added for walking internal openjdkjvmti references\nfor things like field-read/modification events.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: Ic5fc1db7db0a30f947a1a67259dc024e149ebd57\n"
    },
    {
      "commit": "e58624f221b967553d7b71f14d8677ceaa000553",
      "tree": "00d6caa5ca66562d9c8e448abc77c0c6018fca0c",
      "parents": [
        "48349ad38887f65da76df268f8e548d508d8c6a1"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 20 15:53:40 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 24 17:40:00 2019 +0000"
      },
      "message": "Various renames following the name change from \"Runtime APEX\" to \"ART APEX\".\n\nIn particular ANDROID_RUNTIME_ROOT is now ANDROID_ART_ROOT.\n\nTest: Build \u0026 boot\nTest: art/tools/run-gtests.sh in chroot\nTest: art/test/testrunner/testrunner.py --target --64 in chroot\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --host --64\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nBug: 135753770\nChange-Id: Ia74da964e54cf396d66e9e12ea56da4e9483662a\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": "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": "1092bf3003b4bc83f2cf613b769a72c13c6e3bca",
      "tree": "9d7738d96439362462aaa1aab65b318b8e17266d",
      "parents": [
        "5c93af3cc8894deefbc9cba69ea69526c45842aa"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 10 12:39:55 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 10 12:39:55 2019 -0700"
      },
      "message": "Avoid creating runtime thread pool for system server\n\nThe thread pool is not required and would never be deleted since\nthere is NotifyStartupCompleted is not called.\n\nBug: 140777418\nTest: TH\nChange-Id: Ic6a83812a1d389730423796ddc01ee49e13cd91b\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": "c88c1d0fbbc4bc230f08fd1e0fe7b652519c9236",
      "tree": "7295e7e39530096cfe42a24326c28e22f7d4efdc",
      "parents": [
        "4ec4d48940696de077f88f9f8e9abdb178772301"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 27 08:18:46 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 27 18:09:57 2019 +0000"
      },
      "message": "Fully remove DumpKernelStack.\n\nAs explained in the previous commit touching this code, these days only\nroot can get the kernel stack trace anyway.\n\nTest: treehugger\nChange-Id: I9924951afa1f8511720c479598c3bd74f5a55c66\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": "f3677471a58c2738a3d9dd05f07f01c18a5e61be",
      "tree": "21b4279c1077e051b84aad12da29240672f54913",
      "parents": [
        "f1468b53d0427a45011fe6446d189babe0acd6e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 26 16:31:53 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 29 22:22:53 2019 +0000"
      },
      "message": "Add ability to switch to index ids late.\n\nIn order to support some debugging features we need to have JNI code\nmostly running with jmethodIDs and jfieldIDs as opaque indexes\ndisconnected from any underlying art data-structure pointers. For\nperformance though we want to continue to use data-structure pointers\nas these IDs when debugging is not needed. To support both\npossibilities this adds support for changing from a \u0027swapablePointer\u0027\nto either \u0027pointer\u0027 or \u0027indicies\u0027 regime at runtime.\n\nThe SwapablePointer regime still uses pointers as the ids but creates\nthe data-structures needed to ensure that we can (1) detect that the\nmethods have pointer-type IDs and (2) we can change some\nWellKnownClass internal IDs from one to the other.\n\nCurrently one must select this mode explicitly using\n\u0027-Xopaque-jni-ids:swapable\u0027. Depending on when the final jni-id-type\nis selected a small amount of extra memory is used. Currently manual\ntesting of turning the default id-type to swapable and changing to\npointer immediately after zygote-fork shows a additional 40-90 kb of\nshared zygote-heap memory.\n\nTest: ./test.py --host\nTest: m libfieldcounts; \\\n      ./tools/jvmti-agents/field-counts/count-fields.py \u0027Ljava/lang/Class;.extData:Ldalvik/system/ClassExt;\u0027 \u0027Ldalvik/system/ClassExt;.jmethodIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.staticJfieldIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.instanceJfieldIDs:Ljava/lang/Object;\u0027 -p `adb shell pidof com.android.deskclock`;\n      Examine output\nBug: 134162467\n\nChange-Id: I1885b10056d5dcc65dad5ae4f858ddc12ba79403\n"
    },
    {
      "commit": "e0bbab9fe1b073fecae78ca5d269bd0b2a177b4f",
      "tree": "a6152ee32301ac78084be69fc73c8d54134da8b2",
      "parents": [
        "52c468a765f0427dfb5a6627e8087e7b8acc3b8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 12:28:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, replace querrying Runtime::Current() for the classlinker\nwith requiring the classlinker to use at construction time.\n\nTest: m test-art-host\nChange-Id: Id0a6a1f01c77bfe4cc9adfb490fc6ebc7bbf6392\n"
    },
    {
      "commit": "672c08092a7d95bb504bceb712812f72524d90da",
      "tree": "e539c269d8733b13e43c41f9784d0c6c8200a9d6",
      "parents": [
        "e91d787c2de859789ec6e467bd04ee28b22a8c4e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 13:03:13 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 29 12:33:14 2019 +0000"
      },
      "message": "Update Transaction for boot image extension.\n\nAnd clean up transaction-related code to keep test code\nout of the production binaries.\n\nTest: Add TransactionTest#Constraints to transaction_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: aosp_taimen-userdebug boots.\nChange-Id: Iefe5f1cfde95f564069249148f9e7d71564d7a10\n"
    },
    {
      "commit": "bf12191214c0d6215a98dfe846a51230d995dad9",
      "tree": "085c1059014ce66fdb7eceb6e8502d906f0eacbd",
      "parents": [
        "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 13:49:05 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:10:26 2019 +0000"
      },
      "message": "Implement ClassStatus::kVisiblyInitialized.\n\nPreviously all class initialization checks involved a memory\nbarrier to ensure appropriate memory visibility. We change\nthat by introducing the kVisiblyInitialized status which can\nbe checked without a memory barrier. Before we mark a class\nas visibly initialized, we run a checkpoint on all threads\nto ensure memory visibility. This is done in batches for up\nto 32 classes to reduce the overhead.\n\nAvoiding memory barriers in the compiled code reduces code\nsize and improves performance. This is also the first step\ntoward fixing a long-standing synchronization bug 18161648.\n\nPrebuilt sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19150696\n   arm64/boot*.oat: 22574336\n   oat/arm64/services.odex: 21929800\n - after:\n   arm/boot*.oat: 19134508 (-16KiB)\n   arm64/boot*.oat: 22553664 (-20KiB)\n   oat/arm64/services.odex: 21888760 (-40KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh -j4\nTest: testrunner.py --target --optimizing\nTest: Manually diff `m dump-oat-boot` output from before\n      with output after this CL without codegen changes,\n      with `sed` replacements for class status. Check that\n      only checksums and the oatdump runtime values of\n      DexCache.dexFile differ.\nBug: 18161648\nBug: 36692143\nChange-Id: Ida10439d347e680a0abf4674546923374ffaa957\n"
    },
    {
      "commit": "01ecfa1c31282e12b18df5b2f555898a0c3a2e35",
      "tree": "f3f71be061fb0b411ec9434fb23e0b2a8b787075",
      "parents": [
        "2be4306b7669a5aca3e936c531c5ec370ae98e92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jul 18 12:57:47 2019 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 26 08:41:54 2019 +0000"
      },
      "message": "Refactor Core Plaform API checking\n\nMove Core Platform API check logic to hidden_api_jni.{h,cc}.\n\nUse libunwindstack for walking stack as builtin isn\u0027t robust without\nframe pointers. This is moderately expensive so we currently walk a\nmaximum of 3 frames.\n\nChecks are now performed by placing ScopedCorePlatformApiCheck\ninstances at potential points of entry via JNI. Specifically, where\nJNI interfaces implement methods for getting field and method ids. The\ncheck is only performed on the outermost instance of the\nScopedCorePlatformApiCheck since only the outer caller is of interest.\n\nState for the checks is stored in the current Thread instance since\nthe JNI interface signatures are fixed and we need a way to be able to\ndetermine whether a ScopedCorePlatformApiCheck is the outermost\ninstance and whether the outmost instance was approved.\n\nTest: build eng build (has checkjni), boot, grep logcat nio/Buffer\nTest: build user build (regular jni), boot, grep logcat nio/Buffer\nBug: 130336799\nBug: 136276414\nChange-Id: If1261046dd57c007bc77b213daaa5f733151123e\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": "da40acad8760aacd4bc3b636fbdb5f8107d3e00f",
      "tree": "7663bb38d7535ca66c6775e6de17958ff797ff90",
      "parents": [
        "a83a88996c5a1850f9914ded138c671ef391bf91"
      ],
      "author": {
        "name": "Travis Tynes",
        "email": "travistynes@gmail.com",
        "time": "Mon Jul 22 19:24:35 2019 -0400"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 23 03:04:34 2019 +0000"
      },
      "message": "Typo fix.\n\nTest: art/test/testrunner/testrunner.py -b --host -j64 --optimizing\nChange-Id: I1a7d90ac6784151639f51a3e0e213e86c493389b\n"
    },
    {
      "commit": "d84794d235df588814533d96f6e459b72f3a19b1",
      "tree": "be63139f9d94678c6c1f01e2012545580b2d1078",
      "parents": [
        "16a08f6d70e64a1c88ea4a6da1b0cfe1bd4196f2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 18 13:40:03 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 15:12:19 2019 +0000"
      },
      "message": "ART: Add option to behave fatally on unmarked kThrow\n\nAdd a runtime option that makes the verifier abort when a runtime\nexception is signaled for an instruction that isn\u0027t marked as such.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Id953fa25fbcc12c1e6a7d74b30b28b81df57e427\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": "714fad657516f43f96ab45bd1e8853edd3662d6a",
      "tree": "910937741b7d5b30a830765436d0029c86648e5f",
      "parents": [
        "21c489870a2de5db4f4e9c97979676bf39c933a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 15:32:00 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 02 06:59:01 2019 +0000"
      },
      "message": "Delete tasks when deleting a thread pool.\n\nFixes memory leak.\n\nTest: test.py --jit\nChange-Id: If339015f1629b42c2ff17c80e97f1303843ef878\n"
    },
    {
      "commit": "79d6c800cd8aa1da335ea0523c391852780ac02a",
      "tree": "a77faf41d7b658709113c72d7eaaaa1ce2ded6b5",
      "parents": [
        "01fbfbebceb00b94cc54738ebf425b6c4a79211a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 15:50:11 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Revert^2 \"Support using opaque JNI ids\"\n\nWe weren\u0027t handing the fact that encoding jmethodIDs could cause OOM\nexceptions in some places in reflection.cc. This could lead to\nattempting to use a null jmethodID as if it were a real id. This issue\nis fixed by the parent CL.\n\nThis reverts commit b476a29a2c.\nThis reverts commit 3b2905366c.\nThis Unreverts commit d5d645ffec.\nThis Unreverts commit 21d5994583.\n\nReason for revert: Fixed issue causing 004 debuggable flakes\nTest: ./test.py --host --jit --debuggable\nBug: 134162467\n\nChange-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb\n"
    },
    {
      "commit": "01fbfbebceb00b94cc54738ebf425b6c4a79211a",
      "tree": "9061436a555042c12ea6d4fe4cd35df971e0ce37",
      "parents": [
        "88f3fd910cb0fbc1c2233fc65d2a30542cc62921"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 27 10:47:04 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 28 14:58:17 2019 +0000"
      },
      "message": "Avoid useless EncodeArtMethod followed by DecodeArtMethod\n\nIn a handful of places we would perform an EncodeArtMethod to call a\nreflection invoke function which would immediately Decode the method.\nThis could cause issues when using opaque-jni-ids:true since the\nEncode can cause an OOM exception.\n\nTo avoid this (and because Encode and Decode are perfect inverses) we\nchanged the Invoke* reflection functions to also accept ArtMethod*s\ndirectly and changed callers to use these functions when appropriate.\n\nTest: (with child CL) ./test.py --host --jit --debuggable\nBug: 134162467\nChange-Id: Id2f5b0f49a99405e238ce5b61a22ef9245e523a5\n"
    },
    {
      "commit": "b476a29a2cda22b86fc1d96e4cc65ce36fb878af",
      "tree": "039eaee2edf5495275088d1c467e522977c6bcd6",
      "parents": [
        "3b2905366c6ee1eaba2d6477078e505e377343ec"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 07:54:48 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:16:04 2019 +0000"
      },
      "message": "Revert \"Support using opaque JNI ids\"\n\nThis reverts commit 21d5994583c679cd5d8573b5d35dbd659bdca2c7.\n\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I9510a6ac208d392ff25ee196a1a519fecd151445\n"
    },
    {
      "commit": "3b2905366c6ee1eaba2d6477078e505e377343ec",
      "tree": "b8be2002932d4fb589c90769d4548310688f9d98",
      "parents": [
        "814a80f77ac542019cfa479bde12b9a25b06060c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:13:58 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 27 08:15:20 2019 +0000"
      },
      "message": "Revert \"Make sure to delete jni_id_manager_ on shutdown.\"\n\nThis reverts commit d5d645ffec60deedae9d1382db599e3331319cdc.\n\nBug: 136111027\nBug: 134162467\n\nReason for revert: Breaks debuggable\n\nChange-Id: I1fa774769b9c79a0ed4f3de5f800b6545c2e859d\n"
    },
    {
      "commit": "d5d645ffec60deedae9d1382db599e3331319cdc",
      "tree": "6f855c3059d6ea6024da8b8062e145a85f3987e1",
      "parents": [
        "2fef66b294417d447630f9d98de68227eef476d3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 26 15:21:43 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 26 22:25:25 2019 +0000"
      },
      "message": "Make sure to delete jni_id_manager_ on shutdown.\n\nWe were leaking the jni_id_manager_ on shutdown. Make the field a\nunique_ptr to fix this issue.\n\nTest: ./test.py --host\nBug: 136111027\nBug: 134162467\nChange-Id: I2a65753d136195a2e2ff47d9a8eb6c37ec3918f6\n"
    },
    {
      "commit": "21d5994583c679cd5d8573b5d35dbd659bdca2c7",
      "tree": "521906398a2f04048cc51b4f409b6a3ebc0c6ffa",
      "parents": [
        "5dfbe7ae9ed9a1a82446d32118190105a211a2d2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 19 12:58:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 20:22:39 2019 +0000"
      },
      "message": "Support using opaque JNI ids\n\nCurrently JNI ids (jmethodID \u0026  jfieldID) are created by simply\ncasting the corresponding ART structure pointer. This is great for\nsimplicity but means we are prevented from performing operations that\ncould change these pointer values. To support these use-cases add\nsupport for loading the runtime with a layer of indirection between\nthese ids and the internal art data types.\n\nCurrently the JNI id type can be toggled only by passing the new\n\u0027-Xopaque-jni-ids:{true,false}\u0027 flag during startup.\n\nThis changes the --debuggable test configuration to pass\n\u0027-Xopaque-jni-ids:true\u0027 in order to get test coverage of this feature\nusing the \u0027art-jit\u0027 configuration.\n\nTest: ./test.py --host --debuggable\nTest: ./test.py --host --debuggable --jit-on-first-use\nTest: ./test/testrunnner/run_build_test_target.py art-jit\nBug: 134162467\nChange-Id: Id8c8cb9a5b8ff18dc2f40892fae2d344a7214f44\n"
    },
    {
      "commit": "03625446dd614ce9262015caca89161b50e2812d",
      "tree": "7d095f411af6787258f24483825b7b929d6aa2ef",
      "parents": [
        "9b41e9514daed1f7f17edf0af20aeb5f33485b74"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 24 17:29:23 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 26 15:51:09 2019 +0000"
      },
      "message": "Add a stress test for notifyStartupCompleted\n\nCall notifyStartupCompleted to stress test the freeing logic for\nrace conditions. This is done while dex files and app images are\nbeing loaded from another thread.\n\nTest: test/run-test --host 1002\nBug: 135486422\n\nChange-Id: I138586d83db7bc2f8d75f223170f9bf4af5e71eb\n"
    },
    {
      "commit": "9c87c02437339e08cb99cf7572820001799cdfa0",
      "tree": "ed3102f554d31d0408a7c4adafc1f9815ad000ad",
      "parents": [
        "c0ce3d520ea11318ac2698ad081edd65841b42d6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 18 13:45:52 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 20 16:41:46 2019 +0000"
      },
      "message": "ART: Reset stats after fork\n\nReset stats counters after fork to remove zygote influence.\n\nTest: m\nChange-Id: Id0be1fe50d10b3caff57e3af7f162d295d772ba8\n"
    },
    {
      "commit": "024d69fb9936ca5a0031d35c9f248853cbc25d3f",
      "tree": "c1eeddf91ea15eda5d139d4592ac7f0df80e9be0",
      "parents": [
        "43ae4acf219fe25a56e2055ebcebc4d08020a25d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 13 10:52:32 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 17 09:30:53 2019 +0000"
      },
      "message": "Use cleared JNI weak sentinel from boot image.\n\nWe were already adding the sentinel to the boot image,\nso we may as well reuse the boot image copy.\n\nAlso move pre-allocated objects from class roots to the\nboot image live objects.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: I635dcdd146ca2c6b55d187e9a545a9990b0b35ca\n"
    },
    {
      "commit": "8764860dcd6e80512885e41717af9d45c574054a",
      "tree": "4bae7374e5b216fa95600d9ba7f8e251fe269d4c",
      "parents": [
        "3e2446bbe9326786a970c88bbfac80b8ed8e5cdd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 12 12:34:26 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 14 18:18:53 2019 +0000"
      },
      "message": "ART: Flag Runtime::Abort to the UnexpectedSignal handler\n\nDo not trigger unexpected signal handling for runtime aborts.\n\nBug: 135056249\nTest: m test-art-host\nTest: manual\nChange-Id: I062c862eb11bb6465c33215a98a74874be0bbf59\n"
    },
    {
      "commit": "3e2446bbe9326786a970c88bbfac80b8ed8e5cdd",
      "tree": "3495f831cb926030c57901152a939718ff12886e",
      "parents": [
        "1adb04fd1ab7a44b5bf0e0d8deb522b68849a2f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 12 10:00:57 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 14 17:58:19 2019 +0000"
      },
      "message": "ART: Correctly handle an abort from an unattached thread\n\nLibbase may be shared with other platform components. In that case,\nif the aborting thread is attached to the runtime, ART will print\nits usual dump to be helpful.\n\nIf the thread is unattached, this must not be done as it would\nviolate mutex invariants.\n\nBug: 135056249\nTest: m test-art-host-gtest-runtime_test\nChange-Id: I61c3df5fdbc8ddaf279f39dc653738016986dcd9\n"
    },
    {
      "commit": "4444f1b38aa9269365c4a5d506b6d92a3222841a",
      "tree": "4e3d413021983ae39e52cd5fa8f1c0732db62992",
      "parents": [
        "44b9b5876f64c6e868d9b13c4fa3a5f5cb773742"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 10 14:09:19 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 14 08:14:22 2019 +0000"
      },
      "message": "Add option to identify primary zygote.\n\nThis will be used to customize when to start pre-jitting in\njitzygote mode.\n\nTest: boots\nBug: 119800099\nChange-Id: I1b5c1c454455d336f22e3328deead4ced1742239\n"
    },
    {
      "commit": "380f0d8db56b5fcf6e7181184fdae9f303ad7ba5",
      "tree": "4ad13aff6c3742787f6f6487844305af065070e9",
      "parents": [
        "3fae12960c2d411dff450fce95c096af0e8d74de"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 10 11:01:43 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 11 17:44:40 2019 +0000"
      },
      "message": "ART: Conditionally install Dbg class callbacks\n\nTemporary allocations in the dispatch code are unnecessary when they\nend up in disabled code. Instead follow the example of the method\ninspection callback and only add the callback when the debugger is\nactually active.\n\nTest: m test-art-host\nTest: atest CtsJdwpTestCases\nChange-Id: I750f2df475400147b1d569f463228d436aa3ae5a\n"
    },
    {
      "commit": "54a6d4c123d968e272262892118e629f13d17000",
      "tree": "fed1a5e0a6f4bf467dbcd70918655dc12d8008c8",
      "parents": [
        "7d42cdd5052d3d7dec62df03c3512e9e12d4035d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 03 11:02:12 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 03 21:23:27 2019 +0000"
      },
      "message": "Fix missing return when trying to skip threads dump when mutator lock is exclusively held\n\nBug: 134037466\nBug: 134167395\nTest: m\nTest: m test-art-host\nChange-Id: I0b2021f03f7744b580cda62550ee16d39f1bf7e0\n"
    },
    {
      "commit": "ba26b51e2e74bf8c4f87e99dc60f1cbca033ecac",
      "tree": "a3fa191885db25da6f86cf8efa64ce9de03414e2",
      "parents": [
        "e8e2d00ec05ae561ebc7729cc7029a1dc1e02ee6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 31 13:07:26 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 03 17:20:21 2019 +0000"
      },
      "message": "ART: Skip all-threads dump on abort if locks are held\n\nThe thread-list locks are not recursive. Skip the dump on abort\nif the locks are already held. Thread state will still be captured\non-device by a tombstone.\n\nBug: 134037466\nBug: 134167395\nTest: m\nTest: m test-art-host-gtest-runtime_test\nChange-Id: I15ba38a018a39f1cc12577cdf8fb94876b96bbaa\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": "f41232eecb55fe864ed9520074b23682daf29aaa",
      "tree": "cbabb81b5f718a0ae6b68aebf8c749ca5f040851",
      "parents": [
        "077872d54347bccc93e44d8c26192457b19ce0c7"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 09 14:00:23 2019 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 13 14:20:35 2019 +0000"
      },
      "message": "Incorporate additional feedback to native JNI checks\n\nBug: 124338141\nTest: m art_libartbase_tests_memory_type_table_test \u0026\u0026 \\\n      out/host/linux-x86/nativetest/art_libartbase_tests/memory_type_table_test\nTest: m \u0026\u0026 flashall \u0026\u0026 boot\n\n(cherry picked from commit fbbda47e032d5cf0db33d2ce671bd37def1058fd)\n\nChange-Id: I26f0a06cf36c2591f4dc30fc6dc3ed443bd8e4a4\nMerged-In: I26f0a06cf36c2591f4dc30fc6dc3ed443bd8e4a4\n"
    }
  ],
  "next": "077872d54347bccc93e44d8c26192457b19ce0c7"
}
