)]}'
{
  "log": [
    {
      "commit": "e1d2dce0cda2d223ac9c4e48958b9d5810e3e987",
      "tree": "3b9a664710cad714ad2ee1f9fec60908408aa23f",
      "parents": [
        "9dfb1a9d642b9eb627895ef3364736fc839b4fe4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 21 10:06:31 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 08:12:33 2020 +0000"
      },
      "message": "Add support for compact dex files in nterp.\n\nTest: test.py\nBug: 112676029\nChange-Id: I604af166dab0647037bf675cabc6ce433053a83c\n"
    },
    {
      "commit": "4717175e40a19e79af904dfb7b7dd13f046debd7",
      "tree": "426f040eacf5a8305f8bb8d504bd509824d984c8",
      "parents": [
        "1faacf59b9f74e9d2de4e0331ef0cdfcf132225d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 31 15:03:20 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 07:29:59 2020 +0000"
      },
      "message": "Move code item to the data pointer and remove code_item_offset.\n\nThis saves 4 bytes on 32bit and 8 bytes on 64bit on ArtMethod.\n\nAlso update nterp to directly fetch the code item from the data pointer.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: Ic01f43c7ccf2cbce1ec517478e81362232d36371\n"
    },
    {
      "commit": "81daf3dd28e736697221fac968822a4b17dbc089",
      "tree": "d5f5fe5b05ada2bdd408e2dc0b87ebecffc1e72b",
      "parents": [
        "8feddbc07bd1e05ed7aa5cf5fc66f7b2c3c24c31"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 03 14:01:51 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Sep 03 14:01:51 2020 +0100"
      },
      "message": "Rename ArtMethod::IsPolymorphicSignature\n\nChange to ArtMethod::IsSignaturePolymorphic which is more widely used\nhere and elsewhere.\n\nTest: m\nChange-Id: Ifbb225b84c8202d55111a7fa81841dd543c091ea\n"
    },
    {
      "commit": "095dc4611b8001861f8d0e621f9df704a933754a",
      "tree": "edbbd5b116d8caaceb4ce4605343f3e0d59c11c1",
      "parents": [
        "ed29dcee8b5d7e62bb119d2366f3b95dd5f96163"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 17 16:40:28 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 24 09:06:03 2020 +0000"
      },
      "message": "Move the profiling info out of ArtMethod.\n\nInstead, keep a map in JitCodeCache.\n\nBug: 112676029\nTest: test.py\nChange-Id: I5ab769a9b7b3214af7832478d1b06c9e9adbf8b8\n"
    },
    {
      "commit": "ab7eccef71be2f88a99e71b240bdd98e34357b7c",
      "tree": "9579c320db71ca2a16c58f7134c084618afed5b8",
      "parents": [
        "1525960736d4d8fd6d18195097e45145d2177d2c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 29 13:30:24 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 30 13:48:49 2020 +0000"
      },
      "message": "Disable support for proxy method in nterp.\n\nThey do not fall into the regular baseline JIT path (ie they cannot have\nprofiling info), so just bail on them for now.\n\nTest: 044-proxy, wifi-tests\nBug: 112676029\nBug: 157658616\nBug: 160543640\nChange-Id: I292d85f5d6bfd0edaad1d26e53f85f3780254fd7\n"
    },
    {
      "commit": "5439f051a950f0281eeafb8e8064839f2aea6e38",
      "tree": "889efef779fa462357f77cb2166c600cb0d60679",
      "parents": [
        "483bf78ae61ab43a3d513cef0de0072e86d0b0b1"
      ],
      "author": {
        "name": "Ulya Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 10:03:46 2020 +0100"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Jul 29 13:58:15 2020 +0000"
      },
      "message": "Revert^3 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit e886d68b9c40c941d8966b9c90d0e265c75fb19e.\n\nReason for revert: simulator implemention is not ready yet.\n\nTest: lunch aosp_cf_x86_phone-userdebug \u0026\u0026 m\nTest: art/test.py --run-test --optimizing --host\nChange-Id: I03c8c09ea348205b0238d7a26caef3477cd6ae3b\n"
    },
    {
      "commit": "e886d68b9c40c941d8966b9c90d0e265c75fb19e",
      "tree": "ad78c4e375c95a96e200baa2786e748505ab928b",
      "parents": [
        "f12dd5861e0eaf1822c12137fd353b5e79761a6c"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 15:09:38 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Fri Jul 17 11:04:27 2020 +0000"
      },
      "message": "Revert^2 \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 3060bb919cd2f37c6a97e87c1581ac5294af72b3.\n\nReason for revert: relanding original change. The fix is setting\n`device_supported: false` for libart(d)-simulator module in the .bp\nfile (`m checkbuild` attempted to build it for arm32 and failed).\nOriginal commit message:\n\nVIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas caused the following increase of the APEX size (small, about 0.13%\nfor release APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nChange-Id: I461c80aa9c4ce0673eef1c0254d2c539f2b6a8d5\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n"
    },
    {
      "commit": "3060bb919cd2f37c6a97e87c1581ac5294af72b3",
      "tree": "6a2b517812ff83cd10cc3b055635d0746157b345",
      "parents": [
        "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 14:17:11 2020 +0000"
      },
      "message": "Revert \"VIXL simulator for ART (Stage1)\"\n\nThis reverts commit 48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96.\n\nReason for revert: broken build 6685551 on aosp-master on full-eng\nBug: 161440641\n\nChange-Id: I849fe53f56c4786f0f2a1605cbfd215559f11072\n"
    },
    {
      "commit": "48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96",
      "tree": "87ff5251f8f843e64e3f3632c423856ba14ceadf",
      "parents": [
        "cfea667ed9bfbdd21bf9812d1598603fc359d2e1"
      ],
      "author": {
        "name": "Xueliang Zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Mar 07 14:48:55 2019 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Thu Jul 16 13:31:48 2020 +0000"
      },
      "message": "VIXL simulator for ART (Stage1)\n\nQuick User Guide: test/README.simulator.md\n\nThis CL enables running ART run-tests in a simulator on host machine.\nSome benefits of using this simulator approach:\n- No need to use a target device at all.\n  Save developers from solving the device troubles: build, flash, usb,\n  adb, etc.\n- Speed up development/debug/test cycle.\n- Allows easy debugging/testing new instruction features without real\n  hardware.\n- Allows using a smaller AOSP Android manifest master-art.\n\nThe Stage1 CL provides support for running 30% of current run-tests.\nThe rest unsupported test cases are kept in knownfailures.json.\n\nFuture work will be supporting proper stack frame layout between\nsimulator and quick entrypoints, so that stack walk,\nQuickArgumentVisitor, deoptimization, etc can be supported.\n\nThis CL adds libart(d)-simulator-container library to the ART APEX. It\nhas cause the following increase of the APEX size (small, about 0.13% for\nrelease APEX, measured for target aosp_arm64-userdebug):\n Before:\n   88992 com.android.art.debug.apex\n   51612 com.android.art.release.apex\n  112352 com.android.art.testing.apex\n After:\n   89124 com.android.art.debug.apex\n   51680 com.android.art.release.apex\n  112468 com.android.art.testing.apex\n\nTest: art/test.py --run-test --optimizing --simulate-arm64\nTest: art/test.py --run-test --optimizing --host\nTest: m test-art-host-gtest\n\nChange-Id: I078812dde9aaf7128d9f262b2102251927596b7f\n"
    },
    {
      "commit": "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": "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": "65a01a7a751f0ec8c0cbb5650c25724e1df93826",
      "tree": "dbcb8fda4295ed6a99a53b5064193627fccb7a75",
      "parents": [
        "3d52abe40e619497b1b59cfce92c74b5a417add5"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Dec 30 14:07:03 2019 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jan 03 21:40:59 2020 +0000"
      },
      "message": "Simplify access_flags_ updates\n\nSimplify the code. Probably also results in trivial performance\nimprovements.\n\nUse memory_order_relaxed consistently. Updates used stronger ordering,\nbut readers didn\u0027t, which made little sense.\n\nTest: Build AOSP and boot.\nChange-Id: I87fe8537b497dd79b8e674b10263ae6b017c9236\n"
    },
    {
      "commit": "a00b54b74bee06c006b8bebfbef85e2801de293c",
      "tree": "6edb2a96c1f89ae913e6b5f190b117cb290239e8",
      "parents": [
        "e571a283b73fb4621c401811f523503b3266564b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:36:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 12:04:36 2019 +0000"
      },
      "message": "Helpers and refactorings to prepare for interpreter optimizations (x64)\n\n- Add data structure offsets that will be used in assembly code.\n- Be explicit about a stack overflow in a fault handler.\n- Move assembly helper code in asm_support so interpreter can use it.\n- Support putting literals in InterpreterCache.\n- Fix artHandleFillArrayDataFromCode for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21\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": "c2d0c9627b969ba988c8817d1b765b1cb61a61f3",
      "tree": "be3d4547d2a0a42d4085355383c509b0cb55f587",
      "parents": [
        "0c262edd22824f4465e0cb08879b7eea89d3fac0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 23 14:14:25 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 28 23:46:26 2019 +0000"
      },
      "message": "Perform reverify with shared mutator-lock.\n\nDespite comments that seemed to indicate otherwise the verifier is not\ncapable of running with a strong mutator-lock in all circumstances.\nSpecifically it relies on being able to allocate exceptions in a\nnumber of situations (for example when a field could not be found but\nthe class could). This could lead to problems when trying to\nreverify a class. To fix this we changed the reverify step to happen\noutside of the strong mutator-lock and instead temporarily mark the\nredefined methods with every verifier fail flag. The new verification\nwill then be performed and the flags reset (after suspending\neverything).\n\nThis also fixes a related issue where performing the verification\nwith an exclusive mutator lock changed how elements in the dex-cache\nwere populated, causing the dex-cache to break invariants about\nmethods always having their classes be present. This could cause\ncrashes in some circumstances (for example test 1990).\n\nTest: ./test.py --host\nTest: go/lem\nBug: 142876078\n\nThis partially reverts commit b1eebde9469914ad634a6dc3746ddfb222595609\nThis partially reverts commit db55a1121b2437765e732c8bbedf914f8a52f624\n\nChange-Id: I0f1e8c47118cc84c8f23c4068944069ac74f5ea3\n"
    },
    {
      "commit": "b1eebde9469914ad634a6dc3746ddfb222595609",
      "tree": "c34ad8df86b5c2f3b66e21ecd41352a02f3944d5",
      "parents": [
        "2a21cc6849df474afc63eff21913637c313efdf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 22 16:30:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 22 17:00:09 2019 +0000"
      },
      "message": "Revert^2 \"Class redefinition sometimes needs to update verification\"\n\nWe were incorrectly preventing dex2oat from suspending during\nverification. This caused a major regression in memory use and\ncompilation speed.\n\nThis reverts commit 2cf00ede148bd9d77c291d4c0cb23edd5a9c36b4.\n\nReason for revert: Fixed issue causing AOT slowdown.\nTest: go/lem\nTest: go/lem-allight-unrevert-verify-check\nTest: ./test.py --host\nBug: 142876078\n\nChange-Id: If699f71a06818856358859ed5e4e01e0ffc1c1a4\n"
    },
    {
      "commit": "2cf00ede148bd9d77c291d4c0cb23edd5a9c36b4",
      "tree": "c59d055e9f611d1e9b7bdd36ce3756cc090b86c7",
      "parents": [
        "776d0015730e1c00c86119a5db2fe606867ae3a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 22 08:10:44 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 22 08:34:02 2019 +0000"
      },
      "message": "Revert \"Class redefinition sometimes needs to update verification\"\n\nThis reverts commit db55a1121b2437765e732c8bbedf914f8a52f624.\n\nBug: 142876078\n\nReason for revert: up to 10x regressions on vdex-based compilation.\n\nChange-Id: Ib034c02617db2c8e4e15bc386631a612256f0ad4\n"
    },
    {
      "commit": "db55a1121b2437765e732c8bbedf914f8a52f624",
      "tree": "9b1be00c3684703e6a062052a634daa859068333",
      "parents": [
        "697fe5cc6ce0e9c72c3681152a99a5d5bab4253c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 17 10:32:47 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 18 15:51:34 2019 +0000"
      },
      "message": "Class redefinition sometimes needs to update verification\n\nIn cases where class redefinition moves a class from having no\nverification failures to having soft verification failures we need to\nupdate the methods with new verification class flags. For example if\na method is modified to have unbalanced monitors we need to make sure\nthat future invokes of that method count locks and use the\ninterpreter.\n\nPreviously we would simply keep the same verification state as the\noriginal implementation, causing us to try to compile in situations\nthe compiler cannot handle or leave monitors in inconsistent states.\n\nTest: ./test.py --host\nBug: 142876078\nChange-Id: I8adf59158639bdf237d691b20fad223f0a34db1f\n"
    },
    {
      "commit": "5115a4dffb95637efe1df92d6f6eb70a8724c9ae",
      "tree": "605f5ca51dde13b1ec93fb0348d52969367b126e",
      "parents": [
        "15ffafd026962a16ee1abdea630542dc46f67482"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 17 14:56:47 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 12:49:45 2019 +0000"
      },
      "message": "Clean up initialization checks for entrypoints.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 18161648\nChange-Id: Ia3c2fdb616a5bb289e5afeccd4e6fe3eaf7ed697\n"
    },
    {
      "commit": "1cef6b2a2542448a5f3ab954008c24bdb5fbbd8a",
      "tree": "ecec24cf32ea236245e9bf5f6f1b62b245588505",
      "parents": [
        "c34eab45161c51bf63e548e44645cbcc59d01268"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 03 15:26:15 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 08:45:09 2019 +0000"
      },
      "message": "Add and use a read-barrier free NeedInitializationCheck method.\n\nThe JIT may be working with ArtMethod that are in the process of\nbeing deleted.\n\nBug: 142001849\nTest: 674-hiddenapi\nChange-Id: I3632ba6f49bcf54a29bd92882eb343b92945ef28\n"
    },
    {
      "commit": "5a0b6726562948421fbbeb38d20ffd66ef688ff8",
      "tree": "9507db95b78ba55228fc24dc43f485a9755b9773",
      "parents": [
        "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 24 15:09:40 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 25 16:02:56 2019 +0000"
      },
      "message": "Boot image: only use the resolution stub when there is AOT code.\n\nThis avoids dirtying the page when the class becomes initialized.\n\nTest: test.py\nBug: 119800099\nChange-Id: I5cd7ae56b6637583179dbb766da251977b7ac961\n"
    },
    {
      "commit": "7f8678ec4d2abec1f540fb441be60604bec86b6e",
      "tree": "e36b4d32dfc47fcebadf0ee5c7e4d1e3d51412a6",
      "parents": [
        "84e5bb990d48263849bab132d80d753495bc7204"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 30 16:22:28 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 06 18:40:59 2019 +0000"
      },
      "message": "Revert^2 \"Prevent overflow for AOT hotness counters\"\n\nFixed bug where sbc usage was incorrect. sbc does -1 + carry.\n\nTest: test/run-test --always-clean --runtime-option -Xcheck:jni --64 674-hotness-compiled\nTest: test/run-test --always-clean --runtime-option -Xcheck:jni 674-hotness-compiled\nBug: 139883463\n\nThis reverts commit 7ab07777b08db86dda2891f3e7ae15df8f25a599.\n\nChange-Id: I6f8ac0320592a94314386b04cdb0c7e0e6da6994\n"
    },
    {
      "commit": "7ab07777b08db86dda2891f3e7ae15df8f25a599",
      "tree": "1b0b2fa585e49e4a7913c09d67794763197c6490",
      "parents": [
        "154445799432cb53d23cd011485132be07c39b5a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 30 08:26:59 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 30 08:57:20 2019 +0000"
      },
      "message": "Revert \"Prevent overflow for AOT hotness counters\"\n\nThis reverts commit 79e6eb8b79be6249358b7801bc511290dacf10d0.\n\nBug: 139883463\n\nReason for revert: 674-hotness-compiled fails on target.\n\nChange-Id: I02fce74d70a4ae69dd5b4ae3924aa11728d9e16f\n"
    },
    {
      "commit": "79e6eb8b79be6249358b7801bc511290dacf10d0",
      "tree": "1a04d214dd6223423abd442d8d9b0b61a3db2336",
      "parents": [
        "bae88c0759d48acf29b58d960ad2665e3462dfda"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 26 12:33:46 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 29 16:05:52 2019 +0000"
      },
      "message": "Prevent overflow for AOT hotness counters\n\nPrevious, the addition did not have a check for overflow and might wrap\naround since the counter is only 16 bits.\n\nModified the test to exercise this.\n\nThe slowdown from fixing the overflow is 2% average on golem arm32/64.\nOverall this brings the slowdown from the counter to ~15% from ~13%.\n\nThe benchmarks that regress the most are loopy ones that I would\nconsider non-representative. Code size increases by 0.6%.\n\nBug: 139883463\nTest: test/run-test --host --64 --prebuild 674-hotness-compiled\nTest: test/run-test --host --prebuild 674-hotness-compiled\nTest: test/run-test --64 --prebuild 674-hotness-compiled\nTest: test/run-test ---prebuild 674-hotness-compiled\n\nChange-Id: Icf0ab2aedbc40ab10c9d952ce0f9c7b5e5feaf15\n"
    },
    {
      "commit": "323844002e54243e295497e7f829e46a533da621",
      "tree": "e6219f651332ee140042e4e0d4c975919f4fe9bf",
      "parents": [
        "297a0533d2e3f1d49f0b73c5d1e3b09ce0418de2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 20:06:44 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 18 13:12:57 2019 +0000"
      },
      "message": "jitzygote: Handle case of methods having the resolution stub.\n\nWe need to cache the compiled code until the class is initialized.\n\nTest: test.py\nTest: jitzygote config boots\nBug: 119800099\nChange-Id: Ib7a1efc3e101d9dabfad963621a1fe4a142e9b29\n"
    },
    {
      "commit": "e32d24c75bf62e3cb9bff266ad4be859634320a9",
      "tree": "73a9c51958a77b3040b0ce04041424930b709873",
      "parents": [
        "d17eac6b037f67494e31671d1a1d9d233ba3f237"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 05 10:28:59 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 05 15:36:58 2019 +0000"
      },
      "message": "Store zygote compiled code in a shared map.\n\n- Store flags in the ArtMethod to know that it is compiled by the zygote\n- Query the map when entering a zygote compiled method from the\ninterpreter.\n\nBug: 119800099\nTest: boots\nChange-Id: Ib1a38266573e28d371034d02d6bb83f9b8b2e317\n"
    },
    {
      "commit": "abdb4592fa28d6e75f1160f01cde58ad7c3fef37",
      "tree": "e887df0046489008f318fce65909ab0535aa386c",
      "parents": [
        "639e73b5ad1d96a1e67743735a13f7a268b455aa"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu May 16 08:33:12 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 20 19:35:19 2019 +0000"
      },
      "message": "Use string length from DEX instead of recomputing\n\nThis gives around a 2% improvement in startup time overall. Here are results from a selection of\napps:\n\ncom.android.gallery3d/.app.GalleryActivity: 203.2ms → 197.7ms (change: -5.4ms, -2.7%)\ncom.android.messaging/.ui.conversationlist.ConversationListActivity:\n  202.1ms → 199.1ms (change: -3.0ms, -1.5%)\ncom.android.contacts/.activities.PeopleActivity: 277.3ms → 270.7ms (change: -6.6ms, -2.4%)\ncom.android.camera2/com.android.camera.CameraLauncher:\n  351.7ms → 344.1ms (change: -7.7ms, -2.2%)\ncom.android.dialer/.main.impl.MainActivity: 259.5ms → 254.2ms (change: -5.3ms, -2.0%)\ncom.android.settings/.Settings: 189.0ms → 186.5ms (change: -2.4ms, -1.3%)\ncom.android.email/.activity.Welcome: 222.8ms → 219.3ms (change: -3.6ms, -1.6%)\norg.mozilla.firefox/.App: 370.2ms → 358.3ms (change: -11.9ms, -3.2%)\n\nThis is the average of 100 runs on a Pixel 2 XL.\n\nBug: 132691958\nTest: device boots, start app many times\nChange-Id: I93b6eb5105e32788cfc8159c6c21b400a161f86c\n"
    },
    {
      "commit": "b79674cf70cabdcbe85de2e45b090f98990d020a",
      "tree": "3d4fc3bee4c55d97e6ec3338d23207f4f0f8abc9",
      "parents": [
        "fc06d35d8d6bea4ef463b147462a5bb68ab20848"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 14 16:16:46 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 16 00:43:06 2019 +0000"
      },
      "message": "ART: Forward-declare Signature in art_method.h (iwyu)\n\nTest: mmma art\nChange-Id: I16e2083db5b52c9373350a1072550d1e83355ab5\n"
    },
    {
      "commit": "2180d8e8d82874576017348a6d865ed629c77747",
      "tree": "3ae9e04f58b3606c3c30ce56f0f1c9e52f93476a",
      "parents": [
        "9ac09eeb8bbd48a343213a96f6e7e0328fe30447"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 11 14:22:53 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 13 08:52:11 2019 +0000"
      },
      "message": "Clean up ArtField/ArtMethod relocation for app image.\n\nRemove specialized code and use the same code as for\nboot image relocation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I5d7cad217165ea0a6afefdc58981e0a1f7bffdcc\n"
    },
    {
      "commit": "fe613a7f8dd25ffde533df248a1a89c91353e2be",
      "tree": "4e96f16e609a6ca36c5893260d2a4eccfeb69a3c",
      "parents": [
        "b0625e0bcb2897f43911d869eddcb3955755c75d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 01 15:54:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 02 17:36:28 2019 +0000"
      },
      "message": "ART: Small iwyu\n\nForward-declare code item accessors in ArtMethod.\n\nTest: mmma art\nChange-Id: Ib4b2f274130416ee07e873ec32cef98d10c95838\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "6e78158c7a0acad7fcb5c9e1b45ab7acda796671",
      "tree": "7bd9f4c8b4802f7fbbbfc4839309893dc39c410d",
      "parents": [
        "982a9ee7d826ad5a19927016bbc3cd8691ba07a3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 10:58:06 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:37:48 2019 +0000"
      },
      "message": "ART: Change ArtMethod::NumArgRegisters() signature.\n\nTake \"const char*\" instead of StringPiece. Avoid calling\nstrlen() in all callers, rely on explicit checking for\nthe end of the string.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I189841e4ae7dcc5950616d5e5a590987618146cb\n"
    },
    {
      "commit": "fe2886de2a9f06f286fe905ce8417981b9089c5c",
      "tree": "060025813c4ab6d3bfd98aaafa54a97be342a0c0",
      "parents": [
        "d7d3f6fa1870b9e9b8f58ab7854e5eeee071ba2e",
        "226805d9b81ba442251d0e2c4baedc36fcda6592"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "message": "Merge \"Deoptimize zygote compiled methods in DeoptimizeBootImage.\""
    },
    {
      "commit": "436896cd020eee6de97b619a670832b0607c3f16",
      "tree": "7cc5cbafcfbe6f590cb3e9d816112815a3f00668",
      "parents": [
        "7458a7afdfe3046d962ea13dd0f6b176283505b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 15:06:53 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Some IWYU for IterationRange\n\nRemove unnecessary include. Forward-declare in common headers.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I0a1403259ea3f1142548009deb6313dab0fed26f\n"
    },
    {
      "commit": "7458a7afdfe3046d962ea13dd0f6b176283505b2",
      "tree": "b4573042cc825952812de920f24c4af71322d509",
      "parents": [
        "ad1aa6340567c0660506069d760ff41483eb3821"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:11 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Refactor code_item_accessors\n\nRefactor to internal templated functions to not leak DexFile details\nprematurely.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I6f281703b750ec016e8cf18abfa55980a00506dd\n"
    },
    {
      "commit": "ad1aa6340567c0660506069d760ff41483eb3821",
      "tree": "dbceabc90859e9353a8683d8be02a702205be9c9",
      "parents": [
        "b8bca301eff0db87d37bc4ab898a4973d211019b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:30:54 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 09:19:10 2019 -0800"
      },
      "message": "ART: Move Signature to its own header\n\nReduce the dependencies on dex_file.h\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1450fe2c3f4a7f5b535ed38cc19cb8a053228541\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "e36e7f2226e4e08b7a7094f78cb80bbe0e729c2b",
      "tree": "0787ae19a232728121a60791f3a18094529120f1",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 14:21:23 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 27 17:31:01 2018 +0000"
      },
      "message": "Store ImtIndex in ArtMethod.\n\nThis avoids recalculation and reduces pressure on the thread local cache.\n\nThis halves the time we spend hashing from 2% to 1% (maps on device).\n\nTest: ./art/test.py -b --host --64\nChange-Id: I2407bd9c222de4ddc6eea938908a1ac6d7abc35b\n"
    },
    {
      "commit": "85865697ff9fabede3d64ff64cde72727c3fc4c1",
      "tree": "0c67639c4c286149fa3f06f5f412683e39014790",
      "parents": [
        "b321ac28f726a7ed41f277382d85702ffdfbe00f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 17:26:20 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Runtime flags only for fast/slow hiddenapi path\n\nWith more flags being supported in the dex file, stop copying all of\nthem into ArtField/ArtMethod access flags. Instead, store the\ninformation needed to figure out whether to enter the slow path and\nretrieve full access flags from dex or not.\n\nAt the moment, the only runtime flag is kAccPublicApi assigned to all\nclass members on the whitelist.\n\nThe CL also moves hardcoded API membership of intrinsics out of\nArtMethod and into hidden_api.h, and moves ArtMethod::SetIntrinsic\ninto the .cc file.\n\nTest: m test-art\nChange-Id: Ia1cc05060dbc22341768161dfd8697c6158e803a\n"
    },
    {
      "commit": "9581e6176c78f3f2a8f40ff9d5a6c4d4029253fb",
      "tree": "e12f130a067566c9360b04e14714e8743c9e21ae",
      "parents": [
        "30890f6af9bae6ece7267c72e3c82e3c61da4d9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 14:29:43 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 09:42:07 2018 +0000"
      },
      "message": "Cache whether we should use interpreter invoke fast-path.\n\nThere is many conditions to check on each invoke.  If they all pass,\ncache the result in the access flags of the called ArtMethod.\n\nThis speeds up arm64 golem interpreter benchmarks by 4%.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I86313dbdba84cbf8c707aae84e0ff05b6e034700\n"
    },
    {
      "commit": "47cd272d15f41109b3dacb21cfa509d18a03e011",
      "tree": "f2693adde283631362b3acc2c573d7280632621f",
      "parents": [
        "6e32b0059b4c3073c601018da3ca315ad568525a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 23 12:50:02 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 30 11:04:29 2018 +0000"
      },
      "message": "Remove HiddenApiAccessFlags, move content to hiddenapi::\n\nHiddenapi code in runtime/ has all code in the hiddenapi:: namespace\ninstead of using a class as a wrapper. Refactor HiddenApiAccessFlags\nfor consistency. Also turn ApiList into `enum class` for stricter\ntype checks.\n\nTest: m test-art\nChange-Id: Ifb3c443ea43860476abd4fd3d4934cd14e2cdcc1\n"
    },
    {
      "commit": "56de89aaf2a224de8c436291e3c23a1a61315437",
      "tree": "397fafa3662d1abde6fecff49f24a559c2b0ab32",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 01 15:32:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:38:59 2018 +0100"
      },
      "message": "Mark most *Offset helper functions as constexpr.\n\nMaking the values compile-time constants will help to\nclean up the cpp-define-generator.\n\nTest: test.py -b -g\nChange-Id: I612a19a54062784b501bfe4f41c6642d48e0dd21\n"
    },
    {
      "commit": "4df2d8041f5dcc7af8c3b3b60b0ea87a1e0d3b94",
      "tree": "0273072a2b65d6c0cf692a3e7f8eab9814d9d23d",
      "parents": [
        "233b572a940431a94a1790750afdceab2d6f4fde"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:42:44 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 28 09:12:06 2018 +0100"
      },
      "message": "Revert^2 \"Load boot image at a random address.\"\n\nThis reverts commit f3d077373536c54824e4449759dff2f18369eab3.\n\nFixed Heap constructor to reserve extra space for GSS.\n\nChange-Id: I6a65be35f4aa183304db5491da4a4810d8e3b266\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --relocate --no-relocate\nTest: art/test/testrunner/run_build_test_target.py -j48 art-gtest-gss-gc-tlab\nBug: 77856493\n"
    },
    {
      "commit": "f3d077373536c54824e4449759dff2f18369eab3",
      "tree": "e00d19a342ff429fc514bf70bf52ff005a00911c",
      "parents": [
        "5ad79d85d77a42456728897ac3e2e7d4530e618e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:24:17 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 27 16:24:17 2018 +0000"
      },
      "message": "Revert \"Load boot image at a random address.\"\n\nThis reverts commit 5ad79d85d77a42456728897ac3e2e7d4530e618e.\n\nReason for revert: Breaks GSS garbage collection config.\n\nBug: 77856493\nChange-Id: Ifa39966ac2470154f8ba093de4804689d545219b\n"
    },
    {
      "commit": "5ad79d85d77a42456728897ac3e2e7d4530e618e",
      "tree": "ff70d1f12904c718f2f3f721d3846f4305eae53d",
      "parents": [
        "5d7015cd64085068b1685d44339b4b705ef3f065"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 03 09:54:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 26 13:08:36 2018 +0100"
      },
      "message": "Load boot image at a random address.\n\nAnd perform in-place fixup of references and pointers. This\ndirties all the boot image memory loaded by zygote, so there\nshall be no \"shared clean\" boot image pages anymore, these\nshall change to \"shared dirty\". However, as we\u0027re using a\nprofile-based boot image, these pages are presumably used\noften enough and unlikely to be paged out anyway.\n\nThe in-place fixup takes around 60-120ms when starting the\nzygote on aosp_taimen-userdebug. However, an experiment with\nMAP_POPULATE pushes the raw fixup down to around 12-15ms.\nIf we used compressed images, this would be the actual time\nfor fixup as the data would be already present in memory.\nIf we keep using uncompressed images, we shall need to tune\nthe loading with MAP_POPULATE or MADV_WILLNEED.\n\nThe -Xrelocate/-Xno-relocate option is re-interpreted from\n\"use patchoat if needed\" to \"relocate the boot image in\nmemory if possible\". We do not allow relocation for the AOT\ncompilation to speed up dex2oat execution and help producing\ndeterministic output.\n\nThe patchoat tool shall be removed in a follow-up CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --relocate --no-relocate\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --relocate --no-relocate\nBug: 77856493\nChange-Id: I2db1fabefb5d4b85c798cd51e04c78cb232bff4a\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "c945e0d410ca8d4e9ba09272e8727a3192f1e449",
      "tree": "b010aeed33bb66bbaf9af355f21dfad2f9232dea",
      "parents": [
        "d93e374e273dd45f5d829399da1d4201bf46057e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 17:26:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:23:48 2018 +0100"
      },
      "message": "Remove ArtMethod\u0027s declaring class state checks.\n\nThis check was not very useful because the Class is already\nin a state to pass the check when we\u0027re constructing the\nArtMethod and it can never revert to an earlier state, so\nthe check is essentially a weak protection against GC bugs.\nBesides not being very useful, the check had the ability to\ninvalidate ObjPtr\u003c\u003e cookies (when called in non-runnable\nstate), making it difficult to fully ObjPtr\u003c\u003e-ify the code.\n\nAlso remove a lot of kReadBarrierOption template parameters\nwhich were needed specifically for this check. This removes\nunnecessary maintence burden as shown by past bugs dealing\nwith carefully adding those parameters where necessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 74373650\nBug: 31113334\nChange-Id: I87f2999fc4e7c27b5c2307139269b4b5f6649d16\n"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "18090d118bfb04620aeef719e2d7780c26298bf8",
      "tree": "040e5195f0278c9bc846d5543c0e36771ffc5b48",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:53:12 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 17:52:35 2018 +0100"
      },
      "message": "Refactor String resolution.\n\nUse the same pattern as type resolution and avoid some\nunnecessary read barriers in the fast path. Consolidate\nnaming between ArtField and ArtMethod.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Iea69129085f61f04a4add09edd0eadbb7ac9ecb2\n"
    },
    {
      "commit": "904e75a66edea51adc11f61ad8ccaab557402095",
      "tree": "f8f1c1acdaf7575b110c1e2941896517ebfd6f8c",
      "parents": [
        "adff274917f36ce3aad85cd876e76d615734f2be"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 15 13:45:08 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 16 10:11:07 2018 +0000"
      },
      "message": "Fix stripping of access flags during JVMTI redefine\n\nWhen JVMTI redefines a method/field, it replaces the guts of an\nArtMethod with the implementation in a provided dex file. This\nprocess includes overwriting the intrinsics ordinal (stored in\nArtMethod\u0027s access flags) so that the new implementation is picked up.\nThis overwrite, however, does not check if the ArtMethod is an\nintrinsic in the first place and will clear the bits regardless.\n\nThis caused an issue for hidden API as its access flags conflict\nwith those of intrinsics. All redefined framework classes would\ntherefore become completely visible to all callers.\n\nThis patch fixes the issue by adding a IsIntrisic() check around the\nfunction which clears the access flags.\n\nBug: 79698297\nTest: art/test.py -b --host -r -t 999-redefine-hiddenapi\nTest: art/test.py -b --host -r -t 950-redefine-intrinsic\nChange-Id: I7e607d874cc732ceb118d58e4cd40ff4353215f5\n"
    },
    {
      "commit": "166546c3579b7a9deb413f8e44ad94b8ed41335b",
      "tree": "766450bb9576909e925c5e7d5e1b81c25dd05839",
      "parents": [
        "2e6f69c704202d41f0ab5ab0aa65583a26184e51"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 23 13:50:38 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:23 2018 +0100"
      },
      "message": "Fix hidden API flags decoding for intrinsics\n\nHidden API decision logic would try to decode the access flags of\nintrinsics directly, bypassing the override in ArtMethod. This patch\nget hidden_api.h to use the same code path.\n\nThis also fixes CtsHiddenApiDiscoveryTestCases where the access flags\nof blacklisted APIs are tested. VarHandle intrinsics would not pass.\n\nBug: 64382372\nBug: 72430785\nBug: 78230396\nTest: cts-tradefed run cts --module CtsHiddenApiDiscoveryTestCases\nMerged-In: I080313dd91bbee2d7d98b00c02e224974b344c01\nChange-Id: I080313dd91bbee2d7d98b00c02e224974b344c01\n(cherry picked from commit 14c212a44ac9a3ad12025ebf30836129669fa949)\n"
    },
    {
      "commit": "2e6f69c704202d41f0ab5ab0aa65583a26184e51",
      "tree": "a9fc475db54eca326fa46eebf90a3f1399fa7d1c",
      "parents": [
        "1724520ec2788838413b20672f73afa5a00b0d4c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 19 12:41:04 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:32:14 2018 +0100"
      },
      "message": "Set hidden API flags of intrinsics\n\nIntrinsics overwrite the hidden API access flags of the respective Java\nmethod, which is why we need to hardcode their API list membership.\n\nVarHandle intrinsics are blacklisted because they could be used to\nbypass hidden API checks and given they are new in P, should not be\nused by anybody except tests (that do not enforce API checks).\n\nThe remaining intrinsics which happen to be @hide are put on light\ngreylist. We used to put them on whitelist implicitly, hence never\nsaw warnings about them. To be safe, we put them on light grey.\n\nNote that these are set even for the core image that currently does\nnot have hidden API flags. That is fine because (a) VarHandles can\nstill be tested, and (b) light greylist membership may print warnings\nbut will not change the semantics.\n\nBug: 64382372\nBug: 77733081\nTest: make\nMerged-In: Ia9a7765260acb533560676e7dfcd51065cfb247d\nChange-Id: Ia9a7765260acb533560676e7dfcd51065cfb247d\n(cherry picked from commit 49dded0c15dbf3d7c3920ae4744c93c2d6081202)\n"
    },
    {
      "commit": "b041a406daf5213ac1d5c9bcdc197d34cba85bf3",
      "tree": "f32c9f97143d2df79940e070f2862cc7a5f6e807",
      "parents": [
        "51038fc5f8be887ff86fe062e6a5af840e37726d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 13 15:16:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 19 09:25:09 2018 +0000"
      },
      "message": "Use vdex\u0027s quickening info when decoding a quickened instruction.\n\nbug: 74521989\n\nTest: test.py, 678-quickening\nChange-Id: I3a85cc6014afcf11889941dcd15b90d4296b8408\n"
    },
    {
      "commit": "be4c2bd892bd167a50b4dfa7133e70a809197698",
      "tree": "150898533382fb98c160e265a5f31f66ded754f0",
      "parents": [
        "bfce631960ae2ab381180beb55cf34ab3b445aaa"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu Feb 01 19:09:59 2018 +0300"
      },
      "committer": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Tue Mar 13 17:01:21 2018 +0300"
      },
      "message": "Fix dangling SingleImplementations left after class unloading\n\nTest: make test-art-host, manual using sample code\n\nbug: 73143991\n\nChange-Id: I4d56b39c69d4ed60266a8b90b9e9d18fba7b8227\n"
    },
    {
      "commit": "34088e16c93f482c251e55351022762760500b63",
      "tree": "5b26a3263e8f8ddecd5004783129784359cd4858",
      "parents": [
        "04bd682576416ef7c3bfb0ab6a74ec60beac724b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 08 10:56:09 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 08 14:01:54 2018 +0000"
      },
      "message": "Don\u0027t do a read barrier in JIT GC code.\n\nThe ArtMethod the JIT GC iterates over might be in the\nprocess of being unloaded.\n\nbug: 74369794\nTest: test.py --jit\nTest: test-art-host-run-test-debug-no-prebuild-jit-no-relocate-ntrace-cms-checkjni-picimage-npictest-ndebuggable-no-jvmti-cdex-fast-674-hiddenapi64\nChange-Id: Ibf8acb0df26f90c479420ef9d0c1b1bc1fcd3b0d\n"
    },
    {
      "commit": "58143d2c47734c46c1fa4855cb603c24f2d15454",
      "tree": "261bd69b379e5a39e39e3c15947960e53f389d98",
      "parents": [
        "a1b035b963d091ca6824f285c33de69c6e16ac77"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 20 08:44:20 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 05 15:21:52 2018 +0000"
      },
      "message": "ART: Fixes for constructor parameter annotations\n\nSynthesize empty parameter annotations for implicit parameters on\nconstructors. Reflective methods for recovering parameter annotations\nexpect them to be present though they may not be present in the DEX file.\n\nBug: b/68033708\nTest: art/test/run-test --host 715\n\nChange-Id: I0827c7e71ff7c7e044fc9dd6c5aac639a0e1a4c6\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "fa854e4834c383daafd240902ecb291ecfdad7b6",
      "tree": "ac3d740dc0c7c6e91b286f467c3b111b178822c5",
      "parents": [
        "bae3065e57e2e82aa29d6207312c5ba38cff7426"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 07 13:09:55 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Feb 07 14:27:57 2018 +0000"
      },
      "message": "Visit targets of proxy methods when visiting thread roots.\n\nThe target of a non-static proxy method (`this` object), stored in the\nproxy method\u0027s stack frame, needs to be visited as GC root. This is\nespecially important in the case of a moving GC, where the proxy\ninstance may be moved like any object.\n\nFix initially provided by Robert Vollmer.\n\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py --gcstress -t 1939-proxy-frames\nTest: art/test/testrunner/testrunner.py --gcstress -t 1914-get-local-instance\nBug: 70216372\nBug: 67679263\nChange-Id: Iea27a8eba51ccd9c9055efaf6b263892830170b5\n"
    },
    {
      "commit": "0e9d0908a9462f8cc8881ae9a54e4fa131f3c3ea",
      "tree": "b46d45d62cc38ac045b410f5258d7c8aff9810a2",
      "parents": [
        "212e375f3f1b69bba5a96f1a6a44e4d28e546f4c",
        "8d728324571b720a952b297787eed70c7a1d1acb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 01 11:54:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 01 11:54:30 2018 +0000"
      },
      "message": "Merge \"Add compiler option for counting hotness in compiled code.\""
    },
    {
      "commit": "da244c9249149655b303950ce3f432ce1d47a2e0",
      "tree": "fc92772c0465c1008869d39542f456076742aa90",
      "parents": [
        "2f8ad4bc3284358575aad06822cac1650512cb1b",
        "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 01 09:27:46 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 01 09:27:46 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\""
    },
    {
      "commit": "02e33ab15593a5944e711f78f8f5e1d81a94c856",
      "tree": "bb0c6354518f21af959deae8b839f4b45e4efeaa",
      "parents": [
        "f346af51a5d44ee0a3cd26e7e0e1b28ec1c5579f",
        "aa129ff1bffdd6cbfe159f9381ba0babf42dddbd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 31 17:02:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 31 17:02:31 2018 +0000"
      },
      "message": "Merge \"Do not DCHECK intrinsics with hidden API flags\""
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "aa129ff1bffdd6cbfe159f9381ba0babf42dddbd",
      "tree": "92264351aa2f08d0e8944884ae4b1c5536f4b08f",
      "parents": [
        "d2b5229453af661572f0c76ac08dfd3f52727d5b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 16:11:02 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 18:26:23 2018 +0000"
      },
      "message": "Do not DCHECK intrinsics with hidden API flags\n\nSwitching an ArtMethod into an intrinsic wipes its hidden API flags.\nThose with flags therefore need to be special cased. Disable the\nDCHECK for these for the moment.\n\nBug: 64382372\nTest: make\nChange-Id: I8ea3f53a1a86fd7a2f82b215ca068eeafec88c49\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\n"
    },
    {
      "commit": "8d728324571b720a952b297787eed70c7a1d1acb",
      "tree": "f24a774aa56c236f2f756b1b439e4c61830bec56",
      "parents": [
        "0530796b73d0a33a5df27e3a7765c0835994769a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 18 22:44:32 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 29 09:34:05 2018 +0000"
      },
      "message": "Add compiler option for counting hotness in compiled code.\n\nFor eventually easier profiling of boot classpath and\nsystem server.\n\nbug: 30934496\nTest: 674-hotness-compiled\n\nChange-Id: I0f63c644527b74f6ef2649f481c2a1c731bb9f21\n"
    },
    {
      "commit": "8c0961f9e061ee4b04c1c4ba8ad5cca13bcf884d",
      "tree": "f6e5a970a6bcc0935e150cb6c28a520bf31ba964",
      "parents": [
        "2b1a21ed3581f77f34d582507177ebce33565534"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 23 16:11:38 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 24 09:24:29 2018 -0800"
      },
      "message": "Move missed files to libdexfile\n\nReduce the dependencies on utf and utils in preparation for separate\ndirectory.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      make -j 50 dexdump2 dexlist\n\nChange-Id: Icdecf895dafec63ef903514eef79d459abc14925\n"
    },
    {
      "commit": "f6a8a557e0e3099a2c458a81a4b48623989330a5",
      "tree": "e82439e60546643d34b888fd79c04ae7b4d899c0",
      "parents": [
        "1372c9772d37f43147d3791c998173811f04594c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 15 18:10:50 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 18 14:47:33 2018 +0000"
      },
      "message": "Set runtime hidden API access flags\n\nThe hiddenapi tool encodes new access flags into boot class path\ndex files, but we do not want to use those at runtime. They are\ncumbersome to decode and interfere with other flags.\n\nThis patch introduces new runtime access flags kAccHiddenApiBits,\ntwo consecutive bits in the space occupied by intrinsic ordinals\nwhich are used to encode the four categories of APIs in\nHiddenApiAccessFlags::ApiList. ClassLinker converts one encoding\nto the other when a new method/field is loaded from DexFile.\n\nDexHiddenAccessFlags have been made an internal class of new\nHiddenApiAccessFlags class which contains all the code related\nto encoding/decoding these flags for both DexFile and runtime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ie055dc3440c44e8815030e652f08d9ee3dba69e5\n"
    },
    {
      "commit": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "8f1a586fd4ac9796e75b2b18638e39b33ad6e9a2",
      "tree": "f1970c938487dbd9e773619804612ac824b0721c",
      "parents": [
        "2ba3557b6d2ea65956f7a98e6f0fd921f35792a5",
        "170331f0e44a0e07fcfe0b5932517e0500f5cd1f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "message": "Merge changes I917df597,Ib2ca880e,Ib3733573,I3e3a4672\n\n* changes:\n  ART: Remove base/logging from heap-inl.h\n  ART: Factor out gAborting\n  ART: Move runtime-debug flags to own files\n  ART: Replace base/logging with android-base/logging\n"
    },
    {
      "commit": "28e012a4af2d710e5e5f824709ffd6432e4f549f",
      "tree": "576ebdbff9d5f9f098cd29d652215b8f67b6b042",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 07 11:22:59 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 15:27:27 2017 +0000"
      },
      "message": "Determine HLoadClass/String load kind early.\n\nThis helps save memory by avoiding the allocation of\nHEnvironment and related objects for AOT references to\nboot image strings and classes (kBootImage* load kinds)\nand also for JIT references (kJitTableAddress).\n\nCompiling aosp_taimen-userdebug boot image, the most memory\nhungry method BatteryStats.dumpLocked() needs\n  - before:\n    Used 55105384 bytes of arena memory...\n    ...\n    UseListNode    10009704\n    Environment      423248\n    EnvVRegs       20676560\n    ...\n  - after:\n    Used 50559176 bytes of arena memory...\n    ...\n    UseListNode     8568936\n    Environment      365680\n    EnvVRegs       17628704\n    ...\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 34053922\nChange-Id: I68e73a438e6ac8e8908e6fccf53bbeea8a64a077\n"
    },
    {
      "commit": "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43",
      "tree": "e070070248facaf4c23f0ceb4a713de29b681462",
      "parents": [
        "57943810cfc789da890d73621741729da5feaaf8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 13:37:10 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Move runtime-debug flags to own files\n\nTo reduce the need for base/logging.h and separate out concerns.\n\nTest: m\nChange-Id: Ib373357325c6e622f608ada341594c3bea2fce2e\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    },
    {
      "commit": "47d31853e16a95393d760e6be2ffeeb0193f94a1",
      "tree": "344b0fddbbcc9a64bed2ba20dbe73fb227c2bdf4",
      "parents": [
        "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "message": "Revert \"JIT JNI stubs.\"\n\nSeems to break 998-redefine-use-after-free in\nsome --no-image configuration.\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 3417eaefe4e714c489a6fb0cb89b4810d81bdf4d.\n\nChange-Id: I2dd157b931c17c791522ea2544c1982ed3519b86\n"
    },
    {
      "commit": "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d",
      "tree": "fe97f5191d25d26ef4250280f4c599b3a50f2059",
      "parents": [
        "7bdc6e73fd97eb75f30b77f183e4fe6c2c599a09"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 18:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 13:00:09 2017 +0000"
      },
      "message": "JIT JNI stubs.\n\nAllow the JIT compiler to compile JNI stubs and make sure\nthey can be collected once they are not in use anymore.\n\nTest: 667-jit-jni-stub\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --jit\nTest: testrunner.py --target --jit\nBug: 65574695\nChange-Id: Idf81f50bcfa68c0c403ad2b49058be62b21b7b1f\n"
    },
    {
      "commit": "169bf2bf2d962f23d37b4d6879d8e54d89b24f72",
      "tree": "67a6c1ee1d8ac79356ccc0ef8d3e1bd8249cb98a",
      "parents": [
        "eab2b429ee036134f85620cac84a18b8df71fded",
        "b8db20098ea13d51e697b7a27931ba5d300639f4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 15:56:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 14 15:56:40 2017 +0000"
      },
      "message": "Merge \"Put back kWithoutReadBarrier.\""
    },
    {
      "commit": "b8db20098ea13d51e697b7a27931ba5d300639f4",
      "tree": "a36895d38b20a56cd81056d723d3f4fb0ee83db7",
      "parents": [
        "73de384319d25bcc59ce365f5ec7952febb94b58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 14:02:23 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 14:02:23 2017 +0000"
      },
      "message": "Put back kWithoutReadBarrier.\n\nIt was mistakenly removed in:\nhttps://android-review.googlesource.com/#/c/platform/art/+/518395/\n\nBug: 65574695\nBug: 35644369\nTest: test.py\nChange-Id: Iafe8d3187fb9a609d7531a85127cd05bf1a1eaf3\n"
    },
    {
      "commit": "8eaa8e59c95aac26cc072cdbaaccd8f3976f113d",
      "tree": "613ebe58b921780913a417f09b0f2a0f686c89d8",
      "parents": [
        "5552e535951f2feb10bfd492b8abb54bd41a9f4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 13 17:47:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 09:48:17 2017 +0000"
      },
      "message": "Remove kIsVdexEnabled.\n\nIt is now always assumed there is one.\n\nTest: test.py\nChange-Id: I8f3f5c722fb8c4a0f9ad8ea685d1a956bd0ac9ae\n"
    },
    {
      "commit": "b3e7bcc737a5af57549e47370523912e31e434f7",
      "tree": "5547f785e167696747ae2e0bc2b3ea866e7b9c7f",
      "parents": [
        "a16fec549253638268dda3d83e6e34a500cbfc1c",
        "69147f165efaa9da152bb37da3a16dd5d8c6cf3c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 17:03:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 10 17:03:43 2017 +0000"
      },
      "message": "Merge \"Add code item accessor helper classes\""
    },
    {
      "commit": "b0a6aeee250945b1d156ebab94053380f2e5a3c5",
      "tree": "7ddb52bb20997b8f1c81be3df2250949a088e697",
      "parents": [
        "0db16e00e3927445585a588499731c58c1ae1bef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 27 10:34:04 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 08:30:36 2017 +0000"
      },
      "message": "Record @{Fast,Critical}Native in method\u0027s access flags.\n\nRepurpose the old kAccFastNative flag (which wasn\u0027t actually\nused for some time) and define a new kAccCriticalNative flag\nto record the native method\u0027s annotation-based kind. This\navoids repeated determination of the kind from GenericJNI.\nAnd making two transitions to runnable and back (using the\nScopedObjectAccess) from GenericJniMethodEnd() for normal\nnative methods just to determine that we need to transition\nto runnable was really weird.\n\nSince the IsFastNative() function now records the presence\nof the @FastNative annotation, synchronized @FastNative\nmethod calls now avoid thread state transitions.\n\nWhen initializing the Runtime without a boot image, the\nWellKnowClasses may not yet be initialized, so relax the\nDCheckNativeAnnotation() to take that into account.\n\nAlso revert\n    https://android-review.googlesource.com/509715\nas the annotation checks are now much faster.\n\nBug: 65574695\nBug: 35644369\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2fc5ba192b9ce710a0e9202977b4f9543e387efe\n"
    },
    {
      "commit": "69147f165efaa9da152bb37da3a16dd5d8c6cf3c",
      "tree": "25dbec549b8c06cf24729a577c76ef0b6d3d4c7f",
      "parents": [
        "2202d56061941b4fecbdb018d84bcefb05b6c683"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 20:02:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 19:06:10 2017 -0800"
      },
      "message": "Add code item accessor helper classes\n\nAdd classes to abstract accesses to code item data. These classes\nhandle both standard dex and compact dex.\n\nAdded:\n- CodeItemInstructionsAccessor to handle code item instructions.\n- CodeItemDataAccessor to handle code item data excluding debug info.\n\nMoved inline_method_analyzer to use the new classes to test the new\nAPIs.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I9926acb77b81fa64ed4a3b49b7bed1aab30a0f33\n"
    },
    {
      "commit": "0db16e00e3927445585a588499731c58c1ae1bef",
      "tree": "9d151a03534703642d20cd2265260ff13c7592a4",
      "parents": [
        "a3c21d9c0552a04dfa69817b991b8e902cd0d6d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 08 14:32:33 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 08 14:50:56 2017 +0000"
      },
      "message": "Use strcmp() for checking @{Fast,Critical}Native annotations.\n\nInstead of looking up the descriptor in boot class path\nloader (where @{Fast,Critical}Native are guaranteed to\nbe already resolved) and then checking if it\u0027s the\n@{Fast,Critical}Native annotation, just check the\ndescriptor with strcmp().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 65574695\nChange-Id: I765590d039981d169fb3c606b6166580a84303b6\n"
    },
    {
      "commit": "eb4d19bc3fde3a4736b61253bccfd4a49d8b3697",
      "tree": "74c5a6a0fea24bc5dd85e501862dda283a9001e3",
      "parents": [
        "fd443eb00b2456006f03252ba085c1f851e8adf5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Nov 06 15:49:23 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Nov 06 16:14:19 2017 +0000"
      },
      "message": "ART: Remove ArtMethod::IsAnnotatedWithPolymorphicSignature\n\nAvoids relying on PolymorphicSignature annotation in determining\nwhether a method is signature polymorphic.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: If064b92575bf4e4d7eba5dc5332f780e96054fe2\n"
    },
    {
      "commit": "43f0cdbe3281cd5c9a33d5472b1538e5617f6691",
      "tree": "afed702b60c483bd5fa63be7cb3ad866b83d24d1",
      "parents": [
        "26ef34c01ae5db2d3c964844b3717b8974a612c9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 10 14:47:32 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:22:45 2017 +0000"
      },
      "message": "ART: Intrinsify polymorphic signature methods\n\nAdds VarHandle accessor method to list of intrinsics.\n\nAdds code to interpreter to ensure intrinsics with polymorphic\nsignatures are initialized.\n\nRename most uses of InvokePolymorphic to InvokeMethodHandle (and\nsimilar changes) to be clear that the particular code path applies to\nMethodHandle instances rather than VarHandle.\n\nChange-Id: Ib74865124a1e986badc0a7c4bb3d782af07225d4\nBug: 65872996\nTest: art/test.py --host\n"
    },
    {
      "commit": "cfcc9cfb44bab79f7381bcc4bfd9bf2d4435f734",
      "tree": "6637daf0cde4f14afd02793ad268f22f9257bd4c",
      "parents": [
        "f67f115423c9ef5aa62a33c12670cd8f89457c9c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 29 15:07:27 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Oct 01 12:08:08 2017 +0100"
      },
      "message": "ART: Increase the number of potential instrinsics\n\nThe new limit is 256 intrinsics.\n\nAdds additional sanity checks.\n\nAvoids setting the kAccPreviouslyWarm bit for intrinics (defaults to\ntrue).\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I33ea67c9b6b8500b3ceb8a085358f075f6fcbb82\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "a49e053faa4a254df1f21e055cb73555de241cfc",
      "tree": "bed0e8f0934550d4329c0aed10f016c884c6750f",
      "parents": [
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Aug 25 08:05:29 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 11 15:31:00 2017 -0700"
      },
      "message": "Show ArtMethods in imgdiag\n\nSince ArtMethods were moved out of mirror:: classes imgdiag does not\nshow information about them.  Diff ArtMethods to facilitate finding\ndirty memory there.\n\nBug: 38173645\nTest: imgdiag --boot-image\u003d/system/framework/boot.art --image-diff-pid\u003d`pid system_server`\nChange-Id: Icd86a9ef14d5177a297026c22c81c080f5c85fc1\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "d1ee20fed62cd8db8fd496c4e5760dc554136020",
      "tree": "3252b0983fc23118846b68e0fc9b65b86af030eb",
      "parents": [
        "2ade881db8642f10007c1c46b5e7f073d463c2d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 09:21:16 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 10:38:57 2017 +0100"
      },
      "message": "Revert^4 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() failure while visiting references for non-CC\nmoving GC by avoiding the DCHECK(); reference equality may\ngive false negatives at that stage as we may compare the new\nreference against an old one for the same object.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\nTest: ART_DEFAULT_GC_TYPE\u003dSS ART_USE_READ_BARRIER\u003dfalse \\\n      testrunner.py --host --gcstress -t 048-reflect-v8\n\nThis reverts commit 76ccd09c3d98317dfbd179c6f5c231dcfc5d6996.\n\nChange-Id: I13cc339d5b31fceedf39ea9a77f27369ba72279f\n"
    },
    {
      "commit": "76ccd09c3d98317dfbd179c6f5c231dcfc5d6996",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "c42fab35f18539957debb8703195eeb76c9718f7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 15 19:11:54 2017 +0000"
      },
      "message": "Revert^3 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\"\n\nStill failling:\n\n+dalvikvm64 F 08-15 18:54:16 218912 218912 art_method-inl.h:395] Check failed: !GetDeclaringClass()-\u003eIsResolved() || interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit c42fab35f18539957debb8703195eeb76c9718f7.\n\nChange-Id: I91b51f8c1e7f6e0ae876b751d8e9cd3b8acb62f6\n"
    },
    {
      "commit": "c42fab35f18539957debb8703195eeb76c9718f7",
      "tree": "65bcf5256213282a315a34621b3fbc73786c1585",
      "parents": [
        "f0c66eb04db3c9fc513f50dfaad1385cf703820e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 14:11:49 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 15 15:18:07 2017 +0100"
      },
      "message": "Revert^2 \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nFix a DCHECK() to ignore unresolved proxy classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --jit\nTest: testrunner.py --host --gcstress\n\nThis reverts commit 7ef52f75dd6e981e1e8c7567f593c197e8a94dcc.\n\nChange-Id: Idccdb04958a8bdb1c58b529dfb92885993ac62ea\n"
    },
    {
      "commit": "7ef52f75dd6e981e1e8c7567f593c197e8a94dcc",
      "tree": "9685b783f628e290c6307d6ead024aac749a11ab",
      "parents": [
        "0888cf1821d6622fd623db31000be19b9365f81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 18:52:32 2017 +0000"
      },
      "message": "Revert \"ART: Use proxy ArtMethod\u0027s data_ to store the interface method.\"\n\nBroke a few tests with:\n+dalvikvm64 F 08-14 18:36:32 136697 136697 art_method-inl.h:392] Check failed: interface_method-\u003eGetDeclaringClass()-\u003eIsAssignableFrom(GetDeclaringClass()) \n\n\nThis reverts commit 0888cf1821d6622fd623db31000be19b9365f81c.\n\nChange-Id: Idc93b6686392f9dfeca3bc11bd22104948fd9fd3\n"
    }
  ],
  "next": "0888cf1821d6622fd623db31000be19b9365f81c"
}
