)]}'
{
  "log": [
    {
      "commit": "7dac864d7eae3d731eeacf55cfc7f71b4df6cee3",
      "tree": "9f27bb1c0b6f076c2dd1b721441200f9f7a78022",
      "parents": [
        "047081a1509762879a9eb51981982af65f419bac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 17:09:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 27 10:02:22 2019 +0000"
      },
      "message": "Clean up JNI dlsym lookup trampoline.\n\nMake sure the GenericJniTrampoline recognizes the trampoline\nin primary boot image oat file. Rename that trampoline, add\na test and flag some issues in the code.\n\nTest: New test 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host -t 178-app-image-native-method\nBug: 112189621\nChange-Id: I8f8cd11998af536fd3842dd4183a25f0367655a6\n"
    },
    {
      "commit": "962a110efb2c6a2b0161f919bfd5921e3dee7168",
      "tree": "712fa25cf0ef355a419a44dccd6fcc8dfba40e32",
      "parents": [
        "831f20f06f1f3eb2230c7a2266f72bebc6232587"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 01 16:20:33 2019 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 04 12:51:14 2019 +0000"
      },
      "message": "Restructure the contents of art/test/Android.bp.\n\nHighlight what pertains to ART gtests vs ART run-tests.\n\nTest: m\nChange-Id: Ie241dda8a2de567378a4dfd60deeee4cc67832df\n"
    },
    {
      "commit": "55eccdf61f46bd2a633f489f8d09cf78e1de1938",
      "tree": "e60d91c8fc48dfe70956ec9febd346b9dc9fcf77",
      "parents": [
        "49df715faf3700e874fbe246b339a8e426549216"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 07 13:51:13 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 18:59:55 2019 +0000"
      },
      "message": "Revert^4 \"Walk internal ArtField/ArtMethod pointers\"\n\nSeveral of the new tests make use of the invoke-custom opcode. This\nopcode is not supported by dexter/slicer causing the tests to fail.\n\nThis reverts commit c34eab45161c51bf63e548e44645cbcc59d01268.\n\nReason for revert: Added tests to redefine-stress known failures\nTest: ./test.py --host --redefine-stress\nBug: 134162467\n\nChange-Id: Ic1b375a0cb1e44d0252c17115af92c269fb8efc5\n"
    },
    {
      "commit": "c34eab45161c51bf63e548e44645cbcc59d01268",
      "tree": "1b2a0eb85865d2cf6b1627cb5d64869e72412505",
      "parents": [
        "623d4f1ba4f4218c5472e3d9e1e9bf707795878d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:15:53 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:16:18 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\"\n\nThis reverts commit ea2a3d949354c8b054983ba629c81bc5ff7163da.\n\nBug: 134162467\n\nReason for revert: Fails redefine stress\n\nChange-Id: If487c0bcacaf3a3f565ff475b6dad8321e3428b9\n"
    },
    {
      "commit": "ea2a3d949354c8b054983ba629c81bc5ff7163da",
      "tree": "dc94a9c92b254d3f94d96ad0dc27f195d5a7767c",
      "parents": [
        "7fca6ef7b9dbe5a54f2c93a3484035f48ebae27a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 20:34:46 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 14:21:21 2019 -0700"
      },
      "message": "Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit 712fa800b2b78e527d36c88dc369bf4b723587ea.\n\nWe incorrectly didn\u0027t check if a method was obsolete before giving its\nclass\u0027s MethodIds array. We then incorrectly used this array and the\n(placeholder) -1 index to try to find the previous method-id. Since -1\nis not a valid array index we got check failures. To fix this we\nsimply added a check that the method is not obsolete and if it is we\ngo to the slow-path.\n\nReason for revert: Fixed issue causing out-of-bounds array access\nTest: ./test.py --host --debuggable --ndebuggable\nBug: 134162467\n\nChange-Id: Iaffefeab6e889b4fb6554a11452d0af051001cb7\n"
    },
    {
      "commit": "712fa800b2b78e527d36c88dc369bf4b723587ea",
      "tree": "ccc4573a3c6bef136ef6da022350ebb5c17a1892",
      "parents": [
        "f70dfec27cae2625c199f1b8ecf1ef1f23580a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:11 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:38 2019 +0000"
      },
      "message": "Revert \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c.\n\nBug: 134162467\n\nReason for revert: Test fails on debuggable.\n\nChange-Id: I240d58fafcc7434749947330b64c67d65b9b7a1e\n"
    },
    {
      "commit": "c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c",
      "tree": "1380b353e0d3b5015c9d1ef29fd4c2534828f97b",
      "parents": [
        "8679fd5e938d7bed67d3ab67c55b7f4fb2cdd92a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 24 14:36:50 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 20:44:33 2019 +0000"
      },
      "message": "Walk internal ArtField/ArtMethod pointers\n\nDuring structural class redefinition we sometimes need to update some\nof the ArtMethod/ArtField pointers held by runtime frames. This adds\nsupport for doing this through a StackReflectiveHandleScope similar to\nthe StackHandleScope used for holding object references. This also\nupdates various places where reflective-handles to ArtMethods and\nArtFields are needed, for example the JniIdManager, field Read/Write\noperations and events, field resolution, and the old debugger.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I4ea73e85956a07735c6d7b125c5828a4233670bc\n"
    },
    {
      "commit": "b4abe0a193871684ec712fc00b49e9764978b7c9",
      "tree": "ad43199c8efa37e5f5cc4c6d86e72cfe0c9af899",
      "parents": [
        "f3e6c5eada7521d7c4ddc86307474f389f53081e"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri May 17 19:22:55 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 20 13:19:52 2019 +0000"
      },
      "message": "Limit visibility of ART libraries, binaries, and headers.\n\nThis simply records the visibilities necessary to keep things working - more\nwork is required to vet them.\n\nTest: m\nBug: 133140750\nChange-Id: I776d6b79c4c2b214556070c850ae5321d5f8b949\n"
    },
    {
      "commit": "4ac0e1571e015a01d75091c3daef065f9624ad77",
      "tree": "4d13edeab88bd6fd724388c48385b0c3cca4f3a8",
      "parents": [
        "5a2301d897294ff4ee6de71f459dc2566dc3fa1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:14:50 2019 +0000"
      },
      "message": "Revert \"Revert \"Basic structural redefinition support\"\"\n\nThis reverts commit 5a2301d897294ff4ee6de71f459dc2566dc3fa1a.\n\nBug: 134162467\n\nReason for revert: Relanding as unclear if issue is due to topic.\n\nChange-Id: Ib1d1cf2e9132e30c9649b760ae9ae2d8ceacf843\n"
    },
    {
      "commit": "5a2301d897294ff4ee6de71f459dc2566dc3fa1a",
      "tree": "2bd06ab3f463734994b3d251f6115514520dbb3f",
      "parents": [
        "4eb6eb40e88214fcc874d93e75660cb580cb4d58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:11:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 18 06:12:13 2019 +0000"
      },
      "message": "Revert \"Basic structural redefinition support\"\n\nThis reverts commit c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c.\n\nBug: 134162467\n\nReason for revert: Breaks on redefine-stress\n\nChange-Id: I4e38da23d65b5b34b26b5ab537a3583328e078a4\n"
    },
    {
      "commit": "c971eafeff43e4e26959a6e86b62ab0a8f1a6e1c",
      "tree": "f8647487e7465712fd73118ceb89e13167a12648",
      "parents": [
        "1ba7e8c10af4e270864a417044244d63db53ccf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 13 10:50:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 17 23:52:12 2019 +0000"
      },
      "message": "Basic structural redefinition support\n\nThis adds basic support for adding methods and fields to already\nloaded classes using redefinition. This \u0027structural class\nredefinition\u0027 is currently limited to classes without any virtual\nmethods or instance fields. One cannot currently structurally redefine\nmultiple classes at once nor will structural redefinition trigger the\nstandard redefinition events.\n\nAfter structural redefinition all references to the old class, and its\nfields and methods are atomically updated. Any memory associated with\nthe static fields of the old class is zeroed. Offsets for field access\nmight change.  If there are any active stack frames for methods from\nthe redefined class the original (obsolete method) code will continue\nto execute. The identity hash code of the redefined class will not\nchange. Any locks being held, waited or blocked on by the old class\nwill be transferred to the new class.\n\nTo use this feature the process must be debuggable and running with\n-Xopaque-jni-ids:true.\n\nFor device testing use a wrap.sh that adds the following flags:\n\n    \u0027-Xopaque-jni-ids:true -Xcompiler-option --debuggable -XjdwpProvider:adbconnection\u0027\n\nStructural redefinition only available using the\n\"com.android.art.UNSAFE.class.structurally_redefine_class_direct\"\nextension. This will not trigger the normal class-redefinition events.\nOnly one class may be redefined at a time.\n\nNB There are still some holes in this potentially allowing obsolete\nmethods/fields to be visible. Most notably during jni-id, MethodHandle\nand VarHandle creation as well as potentially other places in the\nruntime. These holes will be closed by later CLs. Until then the\nextension to access structural class redefinition will remain tagged\nas UNSAFE.\n\nTest: ./test.py --host --all-compiler\nBug: 134162467\n\nChange-Id: I825d3a4bdb9594c0147223ae69f433ce9bbfc307\n"
    },
    {
      "commit": "fa595885339140c3507f26d93cdc6b99081e23c5",
      "tree": "19d6240afee048aa37a778f09996c6ecad5266a6",
      "parents": [
        "918e9af6a7259e7178ec10257f568a60e832a962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 06 17:40:09 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 09 07:36:39 2019 +0000"
      },
      "message": "Fix setting/getting the native priority of a thread.\n\nBug: 138415922\nTest: 720-thread-priority\nChange-Id: I6e1f34fce3838b7904281be00f315e5b7ade0c78\n"
    },
    {
      "commit": "d4d6fb50b5e1552c114529854e29c3af5c4eb9c1",
      "tree": "6734ee945ffceab400b2f763134d5014d22a73d3",
      "parents": [
        "f0b1de829bfa96d7d52a57bf5fb2d84b7657e141"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 05 12:28:39 2019 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 05 12:42:44 2019 +0100"
      },
      "message": "Set relative path to ART tests back to `art/$ISA` instead of `test/$ISA`.\n\nThis is to address run-test failures. Some of the test logic still\nrelies on finding test libraries under `/data/nativetest{,64}/art/$ISA`.\n\nThis change is a partial revert of 61f071630083775fe64d177455a056daa7071eca.\n\nTest: Run ART run-tests on device\nTest: art/build/apex/runtests.sh\nBug: 129534335\nChange-Id: I1ce241ff994bfbd789affdcccf360d6f8c62ce61\n"
    },
    {
      "commit": "61f071630083775fe64d177455a056daa7071eca",
      "tree": "4d8e610f3939ca23f588bcdffe66aa859ae1a3c5",
      "parents": [
        "81448a21dd3f2c4608496e6dc7a1f093dcccf1e0"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 26 12:44:04 2019 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 02 10:36:58 2019 +0000"
      },
      "message": "Introduce a Testing Runtime APEX (test) module including ART gtests.\n\nDefine a new flavor of the Runtime APEX, having the same contents\nas the Debug Runtime APEX plus ART gtests that have dependencies\non Runtime APEX internal libraries.\n\nPreviously, when these ART gtests were built and installed in\nthe data partition, they would depend on \"legacy\" ART internal\nlibraries being installed in the system partition (not the ones\nfrom the Runtime APEX). As we plan to remove these ART libraries\nfrom the system partition, we needed a way to be able to build\nand install device ART gtests without triggering the installation\nof these legacy ART internal libraries.\n\nThis Testing Runtime APEX is meant to be used for ART testing only,\nand should never be included in any product.\n\nThis change adds build rules for the Testing Runtime APEX (and\ncorresponding unit tests), but does not replace the Debug Runtime APEX\nfor device testing yet (this will be implemented in a follow-up\nchange).\n\nAlso rename `art_apex_test` module type as `art_apex_test_host`.\n\nTest: m com.android.runtime.testing\nTest: art/build/apex/runtests.sh\nTest: art/build/apex/art_apex_test.py\nBug: 129534335\nChange-Id: I8d70bdcf7c6253dd5bc8786a702f130d444c3cb6\n"
    },
    {
      "commit": "c14ec8facf0ea51e7531fa0acbed3410468b0356",
      "tree": "a70bc3cffcaf763e4951c96918bc6f8b25a472b3",
      "parents": [
        "147a911636402f2658ce60bd3ad62eb197b00f74"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 18 16:08:41 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 01 17:50:27 2019 +0000"
      },
      "message": "Add resize arrays JVMTI extension\n\nAs a prototype for more general object replacement functionality add a\nnew JVMTI extension that allows one to change the size of arrays. This\nextension is \u0027com.android.art.heap.change_array_size\u0027. As far as any\nJVMTI agent, JNI or Java Language code can observer this extension\natomically replaces every reference (strong and weak, global and\nlocal, etc.) with a newly allocated array with the same contents but a\ndifferent length. Internally a whole new array will be created then\nthe old array will have its contents (including lock-word) copied and\nall references to the old array will be replaced with the new array.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I92a0beabb02e0c92c8c8f9639836014ff1266878\n"
    },
    {
      "commit": "422a9ebc5b9d780a3201243f02b58652b44d9896",
      "tree": "4fcd6abe72d70358d7bf6235266ab685b61678a1",
      "parents": [
        "9f18fbc433bba51a5b81249989a8726558135528"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 12:54:07 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 16:54:29 2019 +0000"
      },
      "message": "Do not hold lock when making class visibly initialized.\n\nDoing so can lead to deadlocks.\n\nBug: 138561860\nBug: 36692143\nTest: New test 177-visibly-initialized-deadlock\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nChange-Id: I6195a4a5a7d865f90c529da684697b9a3e23ff30\n"
    },
    {
      "commit": "f3677471a58c2738a3d9dd05f07f01c18a5e61be",
      "tree": "21b4279c1077e051b84aad12da29240672f54913",
      "parents": [
        "f1468b53d0427a45011fe6446d189babe0acd6e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 26 16:31:53 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 29 22:22:53 2019 +0000"
      },
      "message": "Add ability to switch to index ids late.\n\nIn order to support some debugging features we need to have JNI code\nmostly running with jmethodIDs and jfieldIDs as opaque indexes\ndisconnected from any underlying art data-structure pointers. For\nperformance though we want to continue to use data-structure pointers\nas these IDs when debugging is not needed. To support both\npossibilities this adds support for changing from a \u0027swapablePointer\u0027\nto either \u0027pointer\u0027 or \u0027indicies\u0027 regime at runtime.\n\nThe SwapablePointer regime still uses pointers as the ids but creates\nthe data-structures needed to ensure that we can (1) detect that the\nmethods have pointer-type IDs and (2) we can change some\nWellKnownClass internal IDs from one to the other.\n\nCurrently one must select this mode explicitly using\n\u0027-Xopaque-jni-ids:swapable\u0027. Depending on when the final jni-id-type\nis selected a small amount of extra memory is used. Currently manual\ntesting of turning the default id-type to swapable and changing to\npointer immediately after zygote-fork shows a additional 40-90 kb of\nshared zygote-heap memory.\n\nTest: ./test.py --host\nTest: m libfieldcounts; \\\n      ./tools/jvmti-agents/field-counts/count-fields.py \u0027Ljava/lang/Class;.extData:Ldalvik/system/ClassExt;\u0027 \u0027Ldalvik/system/ClassExt;.jmethodIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.staticJfieldIDs:Ljava/lang/Object;\u0027 \u0027Ldalvik/system/ClassExt;.instanceJfieldIDs:Ljava/lang/Object;\u0027 -p `adb shell pidof com.android.deskclock`;\n      Examine output\nBug: 134162467\n\nChange-Id: I1885b10056d5dcc65dad5ae4f858ddc12ba79403\n"
    },
    {
      "commit": "4345aacf582a5206976d5bed98ab4abd7b9a8c40",
      "tree": "594191df77d214fac994b63761ac25bba257bb40",
      "parents": [
        "6b689ceb63b4fffaf0e617f7d363c841dd29e458"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 17 15:51:54 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 17:07:13 2019 +0000"
      },
      "message": "Cleanup some usages of include_dirs\n\nThe include_dirs property causes problems when unbundling as they can\ndirectly reference directories inside the runtime module repositories\nwhich will break the unbundled build as those repositories will not be\npresent. While these usages do not cause problems as they are\nreferences within the runtime module repository they need removing so\nthat the build can enforce no usage of runtime module repository paths\nin the include_dirs property.\n\nThis change:\n* Replaces include_dirs with local_include_dirs where possible.\n* Uses libnativehelper provided header libs, this is possible as they\n  have been updated to build against the NDK.\n* Adds headers for disassembler, libdexfile\n* Makes libart_runtime_headers build against NDK.\n\nTest: m checkbuild\nBug: 134379140\nChange-Id: Iaf065caf4b6a2fcf252f6d5da8fff5be97a242ea\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "098e7a67588f39642567b91ecfab117dbaa84d31",
      "tree": "6bb9193916b4ee6e7998e7b707d2c326afbafd48",
      "parents": [
        "e48fd0b4780efadc6b3433fe7a56aa5be2a84325"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 21 16:57:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 22 03:23:26 2019 +0000"
      },
      "message": "Try to make test 1963 pass on fugu\n\nThe fugu test device we use seems to be old enough not to have a real\nmemfd_create syscall and something about the setup (probably the\nchroot) is preventing the tmpfile() fallback from working. To make the\nbot green have the test check to see if memfd_create should work and\nignore the test results if it\u0027s not.\n\nTest: ./test.py --host\nTest: Hope\nChange-Id: I21f566344047eebb7e1817eea56cc83fd0d77558\n"
    },
    {
      "commit": "639e73b5ad1d96a1e67743735a13f7a268b455aa",
      "tree": "d362fd58d8e1ab68a512f3f0f33b0fe1384e0a26",
      "parents": [
        "f03b151a9b86bc47f501ec7ea0b71d0598e90d52"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:44:36 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 20 16:13:34 2019 +0000"
      },
      "message": "Revert^2 \"Add AddToDexClassloader JVMTI extension functions\"\n\nThis reverts commit 799e536da9733ab638946f56e1ceb62d62cd3c81.\n\nIt seems that on some of our test devices the kernel does not have an\nimplementation for memfd_create. To work around this I added a basic\nwrapper that will simulate memfd_create using temp files. This should\nbe sufficient for testing. All actual devices are expected to support\nthe memfd_create syscall natively.\n\nReason for revert: Implemented fallback for memfd_create\nBug: 132699522\nBug: 132914283\nTest: ./test.py --host\n\nChange-Id: I63b36464df24193fff27624c1e2350d65545ad1d\n"
    },
    {
      "commit": "799e536da9733ab638946f56e1ceb62d62cd3c81",
      "tree": "66a8910e6e8ffd96a83b31513998dc9745209d5b",
      "parents": [
        "c5265d93c8340b3c419f7f2a7620b5279f274637"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:42:33 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 17 21:43:40 2019 +0000"
      },
      "message": "Revert \"Add AddToDexClassloader JVMTI extension functions\"\n\nThis reverts commit 92ed90ca3897ae7861b22aa12740065152839649.\n\nReason for revert: Test 1963 fails when run by chrome buildbots.\n\n\nChange-Id: Ia3a7dc64f0372da9feca9bca1a75038d3f9fb01e\nTest: None\nBug: 132699522\nBug: 132914283\n"
    },
    {
      "commit": "0dc93b1ba94460b0ae126dd4db335261165c74b7",
      "tree": "78b3afa099dce52a1eb39d6a9788d610b14a1f6b",
      "parents": [
        "9b81ac36e161fd993eab17b43b93a96e8c63b5cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 15 10:30:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 17 20:40:21 2019 +0000"
      },
      "message": "ART: Run bpfmt over ART\u0027s blueprint files\n\nTest: mmma art\nChange-Id: Ic85df4770c12ec02836c877b243d4aec234aaada\n"
    },
    {
      "commit": "92ed90ca3897ae7861b22aa12740065152839649",
      "tree": "fdc54a52ba79635a228b58fe2ad90c58442965b8",
      "parents": [
        "82cc9601d657965d9bff7cc0a63a603df0e1eae5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 14 14:33:38 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 17 02:35:59 2019 +0000"
      },
      "message": "Add AddToDexClassloader JVMTI extension functions\n\nIt is useful for some agents to be able to add new classes into an\nalready existing classloader. This could be used to, for example,\nhandle new lambdas added during \u0027edit-and-continue\u0027 debugging. This\nextension should eliminate the need for agents to reach into\nclass-loader internals.\n\nThese functions are:\n\n\u0027com.android.art.classloader.add_to_dex_class_loader\u0027 which has a\nsignature of jvmtiError(jvmtiEnv* env, jobject classloader, const\nchar* segment) and will add the given \u0027segment\u0027 file to the\ndalvik.system.BaseDexClassLoader \u0027loader\u0027.\n\n\u0027com.android.art.classloader.add_to_dex_class_loader_in_memory\u0027 which\nhas a signature of jvmtiError(jvmtiEnv* env, jobject classloader,\nconst unsigned char* dex, jint dex_size) and will add the dexfile\nbuffer \u0027dex\u0027 to the given dalvik.system.BaseDexClassLoader.\n\nClassLoaders that do not extend dalvik.system.BaseDexClassLoader are\nnot supported.\n\nTest: ./test.py --host\nBug: 132699522\nBug: 132914283\n\nChange-Id: I3740af4b3b06b9fa64be8ad94238256b7a43536a\n"
    },
    {
      "commit": "23ca8fbcb23fb1eb95d192995a35f4fed53bffbd",
      "tree": "106272f910aad65faec278234555efeba27464b0",
      "parents": [
        "d4f8afb4d8bc7bb5cbaf217c2f0734b880b62689"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 10 11:27:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 14 16:39:25 2019 +0000"
      },
      "message": "Centralize all the jvmti common test classes\n\nWe share many common JVMTI test classes between our various JVMTI\ntests. We have always shared them by simply copying the .java files to\nany tests that need them. This leads to very large code-reviews and\nrequires manual work if we ever need to update any of the helper\nfiles.\n\nTo ensure everything stays in sync this moves all classes to a single\ntest/ti-common directory that tests then contain symlinks into.\n\nTest: ./test.py --host\nChange-Id: I82238a63d281429196ed0e640e4a9ec3234d954c\n"
    },
    {
      "commit": "4060786d8fa8c0c63c751a837decce4f95a33112",
      "tree": "7ce0fcebc6399c5c672569dcf7aa3dc67d503978",
      "parents": [
        "3ff45bf767f4f1baf858e2220e36acffa97b0383"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:16:24 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 09:07:24 2019 +0000"
      },
      "message": "Revert^2 \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit b2a8964f4218c2c52dacf599ebf5cf69f8753bf0.\n\nIt turns out that transitioning from instrumentation trampolines and\ninterpreter trampolines interacts in a racy way with single thread\ndeoptimization. This caused tests that perform this transition\nrepeatedly to be flaky when run with the --trace. Since it is expected\nto be rare that one traces at the same time they are performing JVMTI\nfunctions (since JVMTI is a superset of trace behaviors) we solved\nthis by simply not allowing the transition.\n\nReason for revert: Prevented unsafe transition between entry-exit\n                   trampolines and interpreter only.\nBug: 131865028\nBug: 132283660\nTest: ./test.py --host --trace --ntrace\nTest: echo \"#!/bin/bash\" \u003e run-one-test.sh\n      echo \"./art/test/run-test --dev --jit --trace --64 1956-pop-frame-jit-calling 2\u003e\u00261\" \u003e\u003e run-one-test.sh\n      chmod u+x run-one-test.sh\n      ./art/tools/parallel_run.py -j20 ./run-one-test.sh\n\nChange-Id: Id496b272f353a5a5e000574c107a97d67405d54b\n"
    },
    {
      "commit": "b2a8964f4218c2c52dacf599ebf5cf69f8753bf0",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "c8c7e0659a76a951f3ab110ed9b7f37777448d36"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "message": "Revert \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit c8c7e0659a76a951f3ab110ed9b7f37777448d36.\n\nTest: none.\nReason for revert: Causes art-tracing to flake/fail pop-frame tests.\nBug: 131865028\n\nChange-Id: I16bda461da94405f372b6b0be54ac4b4efb08fda\n"
    },
    {
      "commit": "c8c7e0659a76a951f3ab110ed9b7f37777448d36",
      "tree": "8a77fac99879f781d3c4eeaa8c79b3d9eb7bbc13",
      "parents": [
        "765b2a04576f4e985a88165456f5ee55cdfe56b8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 02 17:35:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 03 19:56:27 2019 +0000"
      },
      "message": "Correctly handle thread deopt with thread-specific JVMTI events\n\nWe were incorrectly treating some JVMTI events as still requiring\nglobal deopt even though that requirment had been lifted. This meant\nthat if one sets thread-specific event notification requests on\nmultiple threads only some of them will actually be deoptimized. This\ncould cause events to be missed if the relevant methods/threads had\nbeen jitted.\n\nTest: ./test.py --host --jit-on-first-use\nTest: ./test.py\nBug: 131865028\n\nChange-Id: Ib196faa635e61262eea7ccc576dc0d700b3e7eff\n"
    },
    {
      "commit": "68fa4ca3138a4950a33c74283488681fb602e85c",
      "tree": "eb280ba8af29b292b79b0dd24a9061c6b75c30ff",
      "parents": [
        "c5e3a52473772a6aba3a8407b0151f6046c5e21b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 30 16:51:13 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 30 20:40:13 2019 +0000"
      },
      "message": "Add debug version of libnativebridgetest.so\n\nWe need both versions and load the correct one.\n\nTest: test.py -r --ndebug -t 115\nTest: test.py -r --debug -t 115\nChange-Id: I189d4d92a7eea63d6ebd4040d12926bc0c3f1154\n"
    },
    {
      "commit": "7711c35fa603b86d520991c4e97ca297add81881",
      "tree": "ce476e232ecf0176c5c9bed81f1528a1c6801fab",
      "parents": [
        "39239870737e3669ff1f85475458e5f57ed79194"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 10 17:50:12 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 30 08:11:20 2019 +0000"
      },
      "message": "Fix debug/release dependencies on libartbase\n\nWe load both the debug and release build when running tests.\nThe different builds have different layout of some classes,\nwhich can currently result in random native heap corruptions.\n\nFix the build dependencies to avoid the double loading,\nand add runtime check to avoid it in the future again.\n\nTest: test.py -b --host --64\nTest: test.py -r --target -t 001-HelloWorld\nChange-Id: Ie62f91dc06209c91e25ba5f11c9d61243ac7579d\n"
    },
    {
      "commit": "b4e65074f148214a61f94c12fed54f4d113c35d6",
      "tree": "782e11fd5fd84afbd57abe94365cbbeb1e5c2fcf",
      "parents": [
        "240cb2aa3c660f070e1fb1d630e01c13ba57c194"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 25 15:10:32 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 26 22:40:02 2019 +0000"
      },
      "message": "Refactor test 1953, 1954, 1955, \u0026 1956 somewhat\n\nThese tests all use a common set of suspension triggering event code.\nThis will be useful in other tests later. To make it easier to use in\nthe future this code is separated into common ti-agent files.\n\nTest: ./test.py --host -j80\nChange-Id: I75f3fe8862c99bd32c5eabe0992fef911d7d9c56\n"
    },
    {
      "commit": "e7a33545a69fcfb3d4466e2ee2cba2a200ef990b",
      "tree": "00a3e61450c185e4730fbfbc60e74a7202babd33",
      "parents": [
        "66834468e9106e264a74766c17a0c047a3448921"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 10 14:22:49 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 10 23:29:43 2019 +0000"
      },
      "message": "Handle methods being present in multiple threads correctly\n\nWe were incorrectly removing obsolete methods from the jit too early.\nThis could cause stack walking to fail on other threads that also have\nthe same method present. This changes so we will not notify the jit of\nobsoleted methods until we have walked all threads.\n\nTest: ./test.py --host\nBug: 73333076\nChange-Id: I30b1293eaf2dac7d4af858f77e5819af2d96b429\n"
    },
    {
      "commit": "331a5e101313838189933399b2017305493f9f58",
      "tree": "5a8f391ff9e36db8965f01603e15834c800b5fc5",
      "parents": [
        "4080b8febed8b82957274882a96b2a7d8625c32e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 22:46:16 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 02 16:31:01 2019 +0000"
      },
      "message": "Revert^2 Verify InMemoryDexClassLoader classes in a background thread\n\nWhen dex bytecode is loaded using InMemoryDexClassLoader, automatically\nspawn a background thread which performs bytecode verification on every\nclass.\n\nThis reverts commit b4bb63aa4be80722643611fc931976b3544f14b5. This CL\nfixes a previous issue where runtime threads are not allowed to load\nclasses in debuggable mode.\n\nBug: 72131483\nChange-Id: Icdeb5be2b33ef55675e3a23886e71ce3b4b02f43\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692\n"
    },
    {
      "commit": "b4bb63aa4be80722643611fc931976b3544f14b5",
      "tree": "7982bd7e79474b24f8f258efec3ac64328b34d7e",
      "parents": [
        "71d614f12ad6da2f15e835e22fe577b2d1d86bb0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 19:38:10 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 19:38:48 2019 +0000"
      },
      "message": "Revert \"Verify InMemoryDexClassLoader classes in a background thread\"\n\nThis reverts commit d592dbe1e2b09079382713220b2ff59f02db1859.\n\nReason for revert: art buildbots crashing\n\nChange-Id: Ida6bb79cb498e708df5c535edc16e4fe9875442c\n"
    },
    {
      "commit": "d592dbe1e2b09079382713220b2ff59f02db1859",
      "tree": "0782c75d713200b1e99dee9f97b4898612b3fee3",
      "parents": [
        "0a20607d671bf001043ccb0cf156db16b4fc6bed"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Mar 01 22:25:31 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 01 15:54:39 2019 +0000"
      },
      "message": "Verify InMemoryDexClassLoader classes in a background thread\n\nWhen dex bytecode is loaded using InMemoryDexClassLoader, automatically\nspawn a background thread which performs bytecode verification on every\nclass.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692\nChange-Id: Iad54f510de02cd073e68d775d34b7dd5bdef304e\n"
    },
    {
      "commit": "c7c5d5311501eebf791b0bca6d1e56c58b062a9c",
      "tree": "a4e7290a18db72be475c8a3c4f7a4bfae759e739",
      "parents": [
        "57975683aaa9a6b93fe7d1bf6c4f3428dcf99ab5"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Wed Feb 27 15:03:37 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 13 20:37:03 2019 +0000"
      },
      "message": "Add a filegroup and a resource jar referenced from cts/hostsidetests/jvmti\n\nBug: 122332514\nTest: treehugger\nChange-Id: I2603d43c52fc32c4ce8ffccbcc1990eecac449d1\nMerged-In: I2603d43c52fc32c4ce8ffccbcc1990eecac449d1\n"
    },
    {
      "commit": "175ce3dea89a40e68a685d7f873e8b9f082c45a6",
      "tree": "f4ba53dc33aca3ae71fd006b282a55dc926e53c9",
      "parents": [
        "cc292c611af7cdea6a2d9196fc347468b9233f71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 06 16:54:24 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 08 01:22:42 2019 +0000"
      },
      "message": "Add callback for notifying that startup is completed\n\nAdd a callback that can be called to denote that application startup\nis completed. This may affect how the profile is collected and how\nstartup related caches are managed.\n\nBug: 123377072\nBug: 120671223\nTest: test-art-host\nChange-Id: If7eb8909cc5e99082a2243b5029380244b46174d\n"
    },
    {
      "commit": "7e057ec0e023910f6bc42bc552a8463343cf346f",
      "tree": "ba7da2f763c899e4759a4c080ec7ee9cd4a005e1",
      "parents": [
        "5708376183c4e2d4456a191955c5060e404a9f0a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 04 13:11:22 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 05 16:46:57 2019 +0000"
      },
      "message": "ART: Use slicer\u0027s no-rtti library\n\nCorrectly use the library that does not require rtti.\n\nTest: mmma art/test\nTest: m test-art-host\nChange-Id: Id1199644df372c4549c645185ae065908cbef093\n"
    },
    {
      "commit": "b756f70170bdd3b89714bcfbfd5bf8b71f352124",
      "tree": "a4a8ba7ca047e970c1a37cd350df85e549877062",
      "parents": [
        "72c403b9b5027e7849a5145a0af0166f5d3d42c2"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Jan 28 22:40:47 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Feb 12 19:35:44 2019 +0900"
      },
      "message": "Rename libnativebridge-dummy-headers to libnativebridge-headers\n\nBug: 123403798\nTest: m\nChange-Id: Ia178d3cb91183ddcefafd04cb0ab31e1033710ca\n"
    },
    {
      "commit": "00fbe4fc833f680e78f692bd7fc4d41ef35f437c",
      "tree": "267cfd885e884602a4b62eb6cbe727042751cbad",
      "parents": [
        "e28c18beef88a19d3050a5c718da291343c45698"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 02 16:52:38 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 10 15:34:56 2019 -0800"
      },
      "message": "Add region padding for app images\n\nFor app images, partition the image such that no object spans cross\nregion boundaries.\n\nBug: 116059983\nBug: 116874661\nTest: test-art-host\n\nChange-Id: Iedffe9fac4b9b59f81de7dd607030ad3a8bcb602\n"
    },
    {
      "commit": "fc81d802243c7fd24b5aa63841217727594dacab",
      "tree": "7cb975ef4f99aa8a548c21c2101f34e22c8a5777",
      "parents": [
        "e352152209d7fdab4eae46cb9ad4c61c82e04598"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 07 13:39:05 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 07 15:43:20 2018 -0800"
      },
      "message": "Adjust instrumentation CHECK to be correct WRT obsolete methods\n\nSome instrumentation sanity-check code didn\u0027t take into account\nobsolete methods and so could sometimes spuriously fail if the right\nsequence of redefines and deoptimizations occur.\n\nThis can occur if one tries debugging a test using inline-mockito, for\nexample.\n\nTest: atest -wbit RecentsAnimationTest and attach debugger with\n      breakpoint in test\nTest: ./test.py --host\n\nBug: 120630577\n\nChange-Id: Iaeb79aebb084990b397e59f56a186e0feaffd654\n"
    },
    {
      "commit": "12dd9aee74a588bf31f151cebba930849b4baceb",
      "tree": "9d04404a17b4f3e5e9e2b1150fc575a74ecd37c2",
      "parents": [
        "5725e7c4aab576384649de60557dc1f52eb21b9f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 06 13:32:06 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 06 14:31:16 2018 +0000"
      },
      "message": "Use unified libvixl(d) instead of per-supported-arch libvixl(d)-arm(64).\n\nUsing a unified libvixl(s) saves space by sharing code that was common\nto libvixl(d)-arm and libvixl(d)-arm64 and also addresses multiple\ndefinitions issues that would cause ODR violations.\n\nTest: 32-bit-only device boot test\nTest: 32/64-bit device boot test\nChange-Id: I1d67c43897e08bc0f5743eb038fe574ce2fb54f3\n"
    },
    {
      "commit": "65ed42a3d3a7bf1a42e759ed53c16b179f54813a",
      "tree": "77930ed648604f50fe6a46059f4cc659b443ddb7",
      "parents": [
        "8a94003e66f337fe84870ff68d3f6f234555cf06"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 30 12:33:04 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 30 12:33:04 2018 +0000"
      },
      "message": "Revert \"Link compression libs statically into libartbase and use those everywhere.\"\n\nThis reverts commit 8a94003e66f337fe84870ff68d3f6f234555cf06.\n\nReason for revert: Breaks asan and dex2oats.\n\nChange-Id: Idea760bbd2b25078ecd1ee5a39da94f6b74432a7\nbug: 118374951\n"
    },
    {
      "commit": "8a94003e66f337fe84870ff68d3f6f234555cf06",
      "tree": "0271729b2571c969238786d21a45ce05120b96e0",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Oct 24 15:02:55 2018 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Mon Oct 29 21:20:43 2018 +0000"
      },
      "message": "Link compression libs statically into libartbase and use those everywhere.\n\nAll targets using these compression libs already use libartbase. This grows\nlibartbase VM size by 314K on 64 bit, but only these targets pack on the\nextra the bloat of liblz4 (84K) and liblzma (174K): dexanalyze, dexdump2,\ndexlayout(d), dexlist. libbacktrace and libunwindstack gain liblz4 only.\n\nOn the other hand this gets rid of static instances in several shared libs.\n\nTest: mmma art\nTest: art/test.py --host --64 --optimizing\nTest: env ART_TEST_NO_SYNC\u003dtrue make -j4 test-art-target-gtest\nTest: art/test/testrunner/testrunner.py -j4 --target --64 --optimizing\nBug: 118374951\nChange-Id: Ida103546d2d16ef892d09e9ca3a0ae5e3b42a541\n"
    },
    {
      "commit": "ae45cbb288ddcaab3fd518cd00b9e6c1604ec4e1",
      "tree": "34e961fd7fc6a2342920712b0041442b2128f19a",
      "parents": [
        "7b97f75673301b8d59eb4388dc3f2f1adde05c30"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 18 15:49:56 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 19 09:11:20 2018 -0700"
      },
      "message": "Add a get_last_error_message JVMTI extension.\n\nThis adds a com.android.art.misc.get_last_error_message and\ncom.android.art.misc.clear_last_error_message extension functions.\nThese allow one to get some error messages that were previously only\nexposed through logcat. Not all error messages are exposed. Only\nexposes error messages associated with the exact jvmtiEnv used. Errors\nmust be cleared manually. Not all error conditions will update the\nsaved error-message.\n\nBug: 117234143\nTest: ./test.py --host\nChange-Id: I75b6de9029791035f56c0c63d8958edea500715d\n"
    },
    {
      "commit": "0aa7a5a6a7bc350b79351f52e26c97747e927acf",
      "tree": "a583889668d9703d16d37586d56421bd27c62661",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 10 15:58:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:41:54 2018 -0700"
      },
      "message": "Revert^4 \"JVMTI PopFrame support\"\n\nThis reverts commit 202b617acf477e8e8e11915f467120a0bd518e74.\nThis unreverts commit 202b617acf.\nThis unreverts commit 88a2a9d7a1.\n\nThere were several bugs with the implementation of pop-frame related\nto interactions between the jit, exception handling, class-loading,\nand deoptimization.\n\n- We were instrumenting the target thread stack in cases where it was\n  unnecessary which caused the exception handler to incorrectly\n  determine that a method was not deoptimizable. This caused the\n  pop-frame to be ignored.\n\n- We were incorrectly sending ExceptionCatch events if an exception\n  suppressed by pop-frame would have been caught in the current frame.\n\n- We were allowing pop-frame to be used on threads suspended in the\n  ClassLoad or ClassPrepare events despite having surprising semantics\n  in that situation (see b/117615146).\n\nNeeded to modify test 1953 slightly for inclusion in CTS. I needed to\nmake the CTS entrypoint not run the class-load tests (since the cts\nconfiguration means the classes are loaded by the verifier and not the\ninterpreter). I updated the expected.txt and check script to reflect\nthis.\n\nReason for revert: Fixed issue causing Exception events to sometimes\n                   eat PopFrame and other issues.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\n\nChange-Id: I655c4fe769938cf41d7589f931d6710cf2001506\n"
    },
    {
      "commit": "202b617acf477e8e8e11915f467120a0bd518e74",
      "tree": "4d1124b540984f970acaf494f4fd85cc347fbd57",
      "parents": [
        "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"JVMTI PopFrame support\"\"\n\nThis reverts commit 1c7b1fcf0ff29d83d13d38d0451a54474ccf5964.\n\nBug: 73255278\nBug: 111357976\nbug: 117533193\n\nReason for revert: Test failures\n\nChange-Id: I9da863fd95264007c4efeb85539e704e83499dcf\n"
    },
    {
      "commit": "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964",
      "tree": "b978817acd252f10bd4648d3582ac9459fc9a0f4",
      "parents": [
        "59b950f53152c169464ba8c63d44102eeba1e594"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:42:12 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 08 13:18:35 2018 -0700"
      },
      "message": "Revert^2 \"JVMTI PopFrame support\"\n\nThis reverts commit f67d0cbf2743b29aa6e1be7ae2f71762b8762785.\n\nRedefine-stress causes classes to be loaded at slightly different\nplaces due to the deep verification needed to redefine a class. This\nwould cause the parts of tests 1953 and 1954 to fail due to classes\nloading at unexpected times. We changed the test to skip these\ntest-cases when they cannot be correctly executed.\n\nReason for revert: Fixed issue causing tests to fail under\n                   redefine-stress\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test/testrunner/testrunner.py --host --redefine-stress\nBug: 73255278\nBug: 111357976\nChange-Id: I46fb4aed878bcc9398f2b73ad5040d7c97aec3ef\n"
    },
    {
      "commit": "068a9bec8d637ce907f6c2829b772a99cae60611",
      "tree": "f099925c0269895935c9eea9a0caca8e8f801dce",
      "parents": [
        "bc550bbbf2fcd82b5b888683a4e3708a26d0efe6",
        "f67d0cbf2743b29aa6e1be7ae2f71762b8762785"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:41:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 23:41:16 2018 +0000"
      },
      "message": "Merge \"Revert \"JVMTI PopFrame support\"\""
    },
    {
      "commit": "f67d0cbf2743b29aa6e1be7ae2f71762b8762785",
      "tree": "b0b1b8a1908541791bfeb18c1117482d559ded38",
      "parents": [
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:39:54 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:40:30 2018 +0000"
      },
      "message": "Revert \"JVMTI PopFrame support\"\n\nThis reverts commit 88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a.\n\nReason for revert: Fails class-load/prepare tests with jit-at-first-use.\nBug: 73255278\nBug: 111357976\nTest: None\nChange-Id: Id8dea6dcf124d56e3a8dfa19e6ed39cc70370c34\n"
    },
    {
      "commit": "dd0f77c4006544a58a82cb90088ee3d8dedb86e1",
      "tree": "9203806e4016928577872e5c1401b876a5d519d7",
      "parents": [
        "c6adcbdb278aa2e235c39e69e7b5421ad560d9f4",
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 17:58:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 05 17:58:45 2018 +0000"
      },
      "message": "Merge \"JVMTI PopFrame support\""
    },
    {
      "commit": "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a",
      "tree": "a19af813a97be817a76072534139a77b16f3ad87",
      "parents": [
        "fc7d33fc052d993eaa205337e6a805022d2cd822"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 14 14:44:29 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 11:04:49 2018 -0700"
      },
      "message": "JVMTI PopFrame support\n\nImplement support for the JVMTI can_pop_frames capability. This works\nby marking shadow-frames with a bit that forces it to be popped or an\ninstruction to be retried. When a PopFrame is requested the plugin\nwill deoptimize the targeted thread and force the interpreter to deal\nwith the frame pop. If the can_pop_frames capability is enabled the\nruntime will be forced to handle all exceptions through the\ninterpreter. This is required to support PopFrame during some\nexception events.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nBug: 73255278\nBug: 111357976\nChange-Id: I62d6b1f4ff387c794ba45093c3d6773aaf642067\n"
    },
    {
      "commit": "a497a39fe8830fe7b1c1c23b413753fe4e12923b",
      "tree": "c1f02f404feefb94fa105a563f0e6c1146ab22b8",
      "parents": [
        "d6266f3292eab5b043262c6366ed6b8131e152c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 26 10:52:50 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 02 08:54:11 2018 +0100"
      },
      "message": "Remove patchoat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nBug: 77856493\nChange-Id: I6686ce9d23e02aa8b8ef4081b302dbd860d07718\n"
    },
    {
      "commit": "819824bbafc5bfea0d3896e1d3e1d4ed2188d09e",
      "tree": "975df03373d8b36d90ae90371423d180f8380863",
      "parents": [
        "b7ac4a077a99d3f2a41bef0a5c6cc74343458dcf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Sep 22 11:39:38 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Sep 22 11:39:38 2018 +0000"
      },
      "message": "Revert \"Test for jit deadlock\"\n\nThis reverts commit b7ac4a077a99d3f2a41bef0a5c6cc74343458dcf.\n\nBug: 112074977\nBug: 70838465\n\nReason for revert: Test segfaults here:\nhttps://build.chromium.org/p/client.art/builders/bullhead-armv7-gcstress-ndebug/builds/1719/steps/test%20optimizing/logs/stdio\n\nChange-Id: I9e105b630b1509689d27a154cc356fbe11018fce\n"
    },
    {
      "commit": "b7ac4a077a99d3f2a41bef0a5c6cc74343458dcf",
      "tree": "2f715b3defc49a180e0374bbe1f61c37b3eda2d0",
      "parents": [
        "f035463650ada4a2bc07a38ca23dd96758e3db92"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 28 15:53:22 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 20 10:17:11 2018 -0700"
      },
      "message": "Test for jit deadlock\n\nThis should deadlock if one can get the JIT to load a class. The code\nin the test seems to usually cause this to happen.\n\nTest: ./test/testrunner/testrunner.py --host -t 1952\nBug: 112074977\nBug: 70838465\nChange-Id: I6d31a98e300879bee361036a46effcf7db312368\n"
    },
    {
      "commit": "ec5ed06b59a3b85e7f98ffc50e0539e5a77d1ba1",
      "tree": "c09b7debef2c19d2ea79488d9d3357b49020da26",
      "parents": [
        "9c568f10f68cdbeb285e41cb4538c06f5e90c1b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 16:20:02 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 14:00:25 2018 -0700"
      },
      "message": "ART: Refactor static include list\n\nCreate default objects. This allows chaining the sets, and also\ncan separate between host and target.\n\nTest: mmma art\nChange-Id: I68a80068d442b20c6430e9e576df7f74375e7e49\n"
    },
    {
      "commit": "e85595e8edf1dade430f53e6149cffd41d74f629",
      "tree": "df6d474f41b38d1deddceb63bb6c6a5a84611cf5",
      "parents": [
        "134380d7c70d95962ed818458185e608ad17ff08"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 17 15:54:34 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 17 15:54:34 2018 -0700"
      },
      "message": "Add explicit native method test to 988\n\nRealized this test doesn\u0027t include any explicit check that native\nmethods are traced correctly and this will be useful to have for\nfuture work.\n\nTest: ./test.py --host -j50\nChange-Id: I208458b6fe7d69e4d78e6757aa5ef2b437665edb\n"
    },
    {
      "commit": "c98f83e301451cb7a62aab21a7dfcddc8eb17c42",
      "tree": "18d0477a315cf35352e4c44b3a66ce5d185a5fc4",
      "parents": [
        "f5dcd31d89282b6c9324fdc960e6e7e2281c16f1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 26 08:28:36 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 26 11:33:25 2018 -0700"
      },
      "message": "Add raw_monitor_enter_no_suspend extension\n\nIn some circumstances it is useful to be able to lock a jvmti-monitor\nwithout having to worry about the suspension state of the current\nthread. This adds an extension\ncom.android.art.concurrent.raw_monitor_enter_no_suspend that allows\none to do that. This function will gain the monitor lock and return\neven if the current thread is suspended. The normal RawMonitorLock\nwill not return unless the thread is not in a suspended state.\n\nTest: ./test.py --host\nBug: 76205593\n\nChange-Id: I9d9fcd586d1d2555f4adc8ac85597daa3dfcb0c4\n"
    },
    {
      "commit": "ce75049c31e7064b00104ca7f65fe12faeabc391",
      "tree": "6f7bb5977a99db0d89c74238576956f0aa1d4dad",
      "parents": [
        "0495fb053094181de232e3fa390806a9110ba208"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Fri Jul 13 17:07:25 2018 +0300"
      },
      "message": "Revert \"Revert \"Handle a special case of lock aliasing during lock verification\"\"\n\nThis reverts commit 753a055b5398fcf00d2633565452679c8fb93e9d.\n\nReason for revert: Fixed failing tests\n\nTest: m test-art-host\n\nChange-Id: I4a8be656288199108c05c9d302393e1efa41a7a4\n"
    },
    {
      "commit": "225ed1dd42d008bdb189da92e185906d08b2ff2f",
      "tree": "c3fb25ce505581e5c6cc2bb78dbbdba826db9cfd",
      "parents": [
        "e83d3416e09e6454af38c250a4fda81537d8da9f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 12 10:33:02 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 12 10:33:02 2018 -0700"
      },
      "message": "Everyone -- even \"NDK\" users -- gets C++14 by default now.\n\nBug: http://b/32019064\nTest: builds\nChange-Id: I87b169661620c4fd788eea7670060f5e3020e453\n"
    },
    {
      "commit": "fbee398d00ab994eb1d7609d7f4e1d0c698d4aa6",
      "tree": "c07e1071e6d30efa77bc9c72f4cade6813c3a691",
      "parents": [
        "e46752658eaf41c0cc818c51a3e1cd95876bac93"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 24 10:28:46 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 24 11:47:04 2018 -0700"
      },
      "message": "Remove hard-coded Object class from test 980\n\nWe redefined Object to a hard-coded dex-file in test 980. This led to\nproblems whenever anything tried to change the Object class. This\nchange makes us use slicer to modify the Object class instead.\n\nTest: ./test.py --host\nChange-Id: Ic888281f57f5796ec4a284ce79fa322669266899\n"
    },
    {
      "commit": "1f010164bea4714e9f653c52e8948c5d5305040b",
      "tree": "e69b2c3f4d2645d4097655f8914325945fe5dbbd",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 15 08:59:32 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 16 13:01:34 2018 -0700"
      },
      "message": "Move ArtDexFileLoader to libdexfile\n\nAdds a dependency from libdexfile on libartbase, but allows the use of\nMemMap loaders, etc.\n\nBug: 78652467\nTest: make -j 40 checkbuild\nChange-Id: I15cf33893ca9192050762f8350a3cc1e39f88dc5\n"
    },
    {
      "commit": "8865914de5d83bb4d8165d26c01202bc2c500763",
      "tree": "0f7a700a251fdb950926b059cdf041744a052ab6",
      "parents": [
        "04d81ff75ae339c082b1ecbea38ba34f873059cb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 15 10:53:06 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue May 15 11:27:23 2018 -0700"
      },
      "message": "Make static libtistress version\n\nIt turned out to be difficult to actually run the libtistress on\nactual apps due to the fact it linked shared to a lot of libraries.\nThis adds libtistresss and libtistressds targets which build static\nversions of libtistress both without and with debug checks.\n\nThis also adds a simple Agent_OnAttach entrypoint for the agent. No\nspecial processing is performed. The agent is setup as though it were\nrunning OnLoad.\n\nTest: m -j50 libtistressds\n      adb push $OUT/data/nativetest64/art/arm64/libtistressds.so /data/local/tmp\n      adb shell setenforce 0\n      adb shell am start-activity \\\n        --attach-agent /data/local/tmp/libtistressds.so\u003djvmti-stress,trace \\\n        com.antonioleiva.bandhookkotlin/.ui.screens.main.MainActivity\n\nChange-Id: I75d3a81011864c62cde785fd7351c59dbd269237\n"
    },
    {
      "commit": "adc9086aac1f9442f5ec80cec5734909f0b0f262",
      "tree": "b55804542510f8592c1c5b9e522a16d35567b2f1",
      "parents": [
        "54c42cea2b73e664c36fc4efaa28a33aea39b97c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 13:03:06 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 13:05:40 2018 -0700"
      },
      "message": "Revert \"Revert \"Do not load app image for class collisions\"\"\n\nFixed bug in oat file assistant to allow the special shared library\nmarker.\n\nBug: 77342775\nBug: 79200502\nBug: 79575750\nTest: test-art-host\n\nThis reverts commit 2c7e13b120926d3c3c18d649cd9849ea31b81477.\n\nChange-Id: I647f55a07e4aef8bef56fb1ad7ff23056174b135\n"
    },
    {
      "commit": "2c7e13b120926d3c3c18d649cd9849ea31b81477",
      "tree": "74766773ba254c40b44b53012156061ff2527c88",
      "parents": [
        "b12c46f8382ca939f55abc0c20fb48fb17b2c1be"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 19:40:17 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 19:43:32 2018 +0000"
      },
      "message": "Revert \"Do not load app image for class collisions\"\n\nThis reverts commit d8860b42e47d48fcc47db9d0daf5a1b9432180a1.\n\nBug: 77342775\nBug: 79200502\nBug: 79575750\n\nReason for revert: Some regressions in boot time.\nTest: test-art-host\n\nChange-Id: Id5e5844b5156d048a54011708378c7cdb0650f68\n"
    },
    {
      "commit": "d8860b42e47d48fcc47db9d0daf5a1b9432180a1",
      "tree": "c5522fa9c6d1e9e63cb497da7dc84b72b6b11531",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 02 14:58:12 2018 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 10 16:17:30 2018 -0700"
      },
      "message": "Do not load app image for class collisions\n\nEven for special shared libraries that are compiled with\n\u0027--class-loader-context\u003d\u0026\u0027, we must reject the app image\nif there are duplicate classes.\n\nIn the case where \"\u0026\" is not specified, avoid the collision check.\nThis is safe since the class loader context check was actually run.\n\nTest: 172-app-image-twice\nBug: 77342775\nBug: 79200502\n\nChange-Id: Idc2d59166680948d4d34d0f224491f77ecad2974\n"
    },
    {
      "commit": "d5f8de8bc61160bb2cecdcc0f5aa54d151b6176a",
      "tree": "efecd6d3dffd3a1d768b87a111d9e60335d9108c",
      "parents": [
        "9417b6b81393253a56b1b9bb4c7d8a2a2966707e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 27 14:12:03 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 01 16:23:42 2018 -0700"
      },
      "message": "Add CommonArtTest\n\nAdd a test framework that does not start up a Runtime object.\n\nBug: 78651010\nTest: make -j 40 test-art-host\nChange-Id: I6c8af384af5fe1289c6cf137635e94934ac3795d\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "f889c70e79643373320f5742cc719d6c467531b9",
      "tree": "ada543c87521fbfd98bbbe0004ca9e89c36a9489",
      "parents": [
        "740a50992ea1a200068eb4486a172a151c9b329c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 23 15:25:45 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 19 10:30:50 2018 -0700"
      },
      "message": "Always allow agent attach on userdebug builds with kArtTiVersion\n\nWe added support for the jvmti-alike ArtTi for use by debuggers on\nuserdebug/eng builds of android. Extend this support to allow any\nagent to be loaded on any process of a userdebug device. These agents\nwill need to make use of kArtTiVersion (0x70010200) envs.\n\nTest: build\nTest: ./test.py --host -j50\nTest: ensure AS profiler continues to work with userdebug devices\nBug: 78195998\nChange-Id: I984d1ea937eb49afb376a48bea3d67085192020e\n"
    },
    {
      "commit": "9e7859cb2449d6150b97c7d8ff9646a5405737f8",
      "tree": "9de6fe78c6229d487a0756b11c7a772ec7ce6eb1",
      "parents": [
        "d1ede32d56d2b6c95f94a8c67d8b9f309940d9de"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 05 13:49:43 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 10 23:12:07 2018 +0000"
      },
      "message": "Prevent deadlock calling transformation functions in ClassLoad callback.\n\nIf an agent called RetransformClasses or RedefineClasses from the\nClassLoad event callback and the class that caused the event is\nincluded the thread would deadlock. This happened because the\nverification code would try to wait for the class to be linked but\nsince the current thread is responsible for doing that this will never\nhappen. To prevent this from happening we make those functions simply\nreturn JVMTI_ERROR_INTERNAL if they are called on the same thread the\nclass is being loaded on.\n\nIn order to test this we needed to modify the test helper code to keep\ntrack of the current jvmtiEventCallbacks state.\n\nBug: 77652488\nTest: ./test.py --host -j50\n\nChange-Id: I0a196b999a08ec3bf9cdf98357e223f89fdcd666\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": "1613cd18a3c47bc863f76ee27768d4c88e62286b",
      "tree": "4eaabfa51a49e38038f12ebc5ac5258a40bfb951",
      "parents": [
        "1c128fa54eee5405be816402ac7fb0b299e9106d",
        "e34fe44a04a28d5688e0ae5effee9922c26c5916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 22 06:13:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 22 06:13:24 2018 +0000"
      },
      "message": "Merge \"Ensure redefinition does not break breakpoint deoptimization\""
    },
    {
      "commit": "e34fe44a04a28d5688e0ae5effee9922c26c5916",
      "tree": "289970e1ed4e6d8d6cc7d88558b7012316327222",
      "parents": [
        "535d381b8b14faa8711a003ce3de3f70ac7ac08e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 17:35:55 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 22 02:08:22 2018 +0000"
      },
      "message": "Ensure redefinition does not break breakpoint deoptimization\n\nWe had a bug where redefining a method with breakpoints made it\nimpossible to deoptimize the (newly redefined) method. This meant that\nbreakpoints added after the redefinition might not work. We fixed this\nby removing the breakpoints earlier in the redefinition process,\nwhen we were still capable of removing the deoptimization.\n\nBug: 73742185\nTest: ./test.py --host -j50\nChange-Id: I86973fbdce370a3ae7bc78b5fc71470d99046044\n"
    },
    {
      "commit": "fee188b96a0b882f6acdd70f01db1726cc54b2e1",
      "tree": "ba7c5b2daafada250d1ac063ffcee429b9758375",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21",
        "cb5125d8a3a50e738e29163cf0debcb61219f70b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 21 23:15:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 21 23:15:43 2018 +0000"
      },
      "message": "Merge \"ART: Compile libctstiagent with the NDK\""
    },
    {
      "commit": "f13343eb8b2738e2812fd7bd9d5592f529e93c21",
      "tree": "a5fcc3a5e22b917cc18dde99a0411bcd5d9f1aec",
      "parents": [
        "ea81a71bdad720ba494461d4e8f6d21e6a0ac4f4",
        "c758875461cca47d1b342c3c56a218a704b04365"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 21:01:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 21 21:01:44 2018 +0000"
      },
      "message": "Merge \"Add get_class_loader_class_descriptors JVMTI extension method\""
    },
    {
      "commit": "c758875461cca47d1b342c3c56a218a704b04365",
      "tree": "59827b439d9b0008a80bf9cb3193b94633c3bb91",
      "parents": [
        "535d381b8b14faa8711a003ce3de3f70ac7ac08e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 20 11:15:54 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 21 08:39:53 2018 -0800"
      },
      "message": "Add get_class_loader_class_descriptors JVMTI extension method\n\nThis adds a new JVMTI extension:\ncom.android.art.class.get_class_loader_class_descriptors. This will\nenumerate all of the classes known to be loadable with a given\nclass-loader as the defining class loader. The function gets this by\nlooking at all dex-files associated with the given class-loader.\n\nBug: 73504235\nTest: ./test.py --host -j50\nChange-Id: Ie54223cd40109056396ba609f92b6c02d81dd4ab\n"
    },
    {
      "commit": "cb5125d8a3a50e738e29163cf0debcb61219f70b",
      "tree": "bb5a82c0238a975948614818cec25538fe8233df",
      "parents": [
        "9462a56f881bce9b4890e178e4558ffa9957b294"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 20 09:36:54 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 20 09:36:54 2018 -0800"
      },
      "message": "ART: Compile libctstiagent with the NDK\n\nTo properly make it available to CTS, compile libctstiagent with the NDK.\n\nBug: 73206894\nTest: mmma art\nChange-Id: I1bda81ece3665ed16acd95e2400c23fbc56fe9e9\n"
    },
    {
      "commit": "9462a56f881bce9b4890e178e4558ffa9957b294",
      "tree": "40c84aa4fbd0c037afa999fbef783ac9e0dccd83",
      "parents": [
        "38321bb87c3630afaef76f312e90df5bca6a0554"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 20 09:35:21 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 20 09:35:21 2018 -0800"
      },
      "message": "ART: Fix up libartagent deps\n\nCorrectly depend on libdexfile vs libdexfiled.\n\nBug: 22322814\nTest: mmma art\nChange-Id: I645525a9e86e74c01195fc196ad712d86bb5c8c6\n"
    },
    {
      "commit": "11088ad5d79fe9ac7875b625fcea01ddf42db3bf",
      "tree": "fac57f2119c3fc6a97b5a7a7779946bc0062a406",
      "parents": [
        "87df7addc6194ec5f2e0e1b85c59d96bafd94efd",
        "ad0777d89df7eb21d7d2001f9743882d10de3f5c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 20 13:50:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 20 13:50:18 2018 +0000"
      },
      "message": "Merge \"Visit proxy methods reference arguments when visiting Quick frames roots.\""
    },
    {
      "commit": "0694a5527862fc76056458622759976fa41d4da6",
      "tree": "0c6ac24a3ffed9060c9ef7149734606510c4742d",
      "parents": [
        "d937c49b19a6005cf94e23d464415be47e995d9b",
        "59484b9fbbfd79cf485fbcdddffe35c706c5f70d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 17:58:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 16 17:58:39 2018 +0000"
      },
      "message": "Merge \"ART: Refactor run-test 983 dex verification\""
    },
    {
      "commit": "59484b9fbbfd79cf485fbcdddffe35c706c5f70d",
      "tree": "fea1d7098390938be408eaf77f1ec0e8acd9b8c8",
      "parents": [
        "7fe39afe80098d147e34149dac1d6304e858fe44"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 14 14:00:46 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 15 22:45:22 2018 -0800"
      },
      "message": "ART: Refactor run-test 983 dex verification\n\nSplit the source for use in run-tests (using libdexfile) and\nCTS (using slicer). In preparation for compilation with the\nNDK.\n\nTest: m test-art-host\nTest: m cts\nChange-Id: Ie514445d90c77391ec685b53726f1f9dd50f1991\n"
    },
    {
      "commit": "3e55ea3118c97f0ffecc24939a193a9d40dc315d",
      "tree": "cbb4230d449d0837e6a62e32b24fb3a93ad4d2ea",
      "parents": [
        "7fe39afe80098d147e34149dac1d6304e858fe44",
        "fcbe15ce26930c0c4bb33998fc2abbe4f8770dbe"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 01:28:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 16 01:28:31 2018 +0000"
      },
      "message": "Merge \"Build debug library libdexfiled\""
    },
    {
      "commit": "fcbe15ce26930c0c4bb33998fc2abbe4f8770dbe",
      "tree": "6513a2eaf1251e93578916b5171dc42984de7da3",
      "parents": [
        "b40fa7c33075292beeb6840ac679ffd08fd1f719"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 09:41:13 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 15:15:13 2018 -0800"
      },
      "message": "Build debug library libdexfiled\n\nAdd a debug version of libdexfile for use when CHECKs, etc., are\nenabled.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: I263138611bcdde9dbc8f619bcb2a0a6d3a09fbf6\n"
    },
    {
      "commit": "ad0777d89df7eb21d7d2001f9743882d10de3f5c",
      "tree": "15bf8fbfd1a3534972195d4ada9d92f1d0c98903",
      "parents": [
        "db8d9091bbab41060584ab80882b60df20337da7"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Feb 12 20:00:18 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 15 18:51:24 2018 +0000"
      },
      "message": "Visit proxy methods reference arguments when visiting Quick frames roots.\n\nThe arguments of a proxy method, stored in the proxy method\u0027s stack\nframe, need to be visited as GC roots. This is especially important\nin the case of a moving GC, where these reference arguments may be\nmoved like any object. Previously, we would only visit the target\n(`this` argument) of proxy methods when visiting Quick frames roots.\n\nTest: art/test/testrunner/testrunner.py --gcstress -t 999-proxy-method-arguments\nTest: m test-art-host\nTest: m test-art-target\nBug: 73149739\nBug: 70216372\nBug: 67679263\nChange-Id: Ieacc966ab1038935600f2193c14e6ca01e88602e\n"
    },
    {
      "commit": "8fd08569ac9c93c17742569965bf72f713998145",
      "tree": "7e999ee63e12454d044e7b7fc616849b092c7806",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 13 10:09:03 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 15 10:12:09 2018 -0800"
      },
      "message": "Refactor test 983 to prepare for inclusion in CTS\n\nIn order for test 983 to be included in CTS we needed to make changes\nto remove its custom Agent_OnLoad and ensure that all printing is done\nthrough System.out.\n\nTest: ./test.py --host -j50\nBug: 73252141\nChange-Id: If18e58305a1a4dd7d915fabfbacbe95c8212e801\n"
    },
    {
      "commit": "db8d9091bbab41060584ab80882b60df20337da7",
      "tree": "3585c3670a82f2c810298a0dcab578ec7a07584e",
      "parents": [
        "7c16fea9ba2cf27c67613811b0953c13ff748d1d",
        "d0ed0d9cfc6b84ed3035c6f040572e0547c38ef8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 13 16:58:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 13 16:58:18 2018 +0000"
      },
      "message": "Merge \"ART: Refactor libctstiagent build\""
    },
    {
      "commit": "d0ed0d9cfc6b84ed3035c6f040572e0547c38ef8",
      "tree": "449b817be70ac536f3d8fbb152f2c47494230828",
      "parents": [
        "9ffad492d84c845f8fca622a75b61891c9d8eb97"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 12 15:03:36 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 12 18:27:35 2018 -0800"
      },
      "message": "ART: Refactor libctstiagent build\n\nRefactor the build to include platform dependencies statically\nand wholesale, so the file does not depend on libraries on\ndevice.\n\nBug: 73206894\nTest: m test-art-host\nChange-Id: Iae5b3eaa3d192540ce858ca8e8aedcfe4d7266d5\n"
    },
    {
      "commit": "0e84118e875038ee5e90571489abcde86da3db81",
      "tree": "dbfa7f12c0747f7bcd36aa3393912bae85461a11",
      "parents": [
        "722d6719954fe8cedb41cc300e463c3ac973f2c4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 12 17:42:50 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 12 10:01:59 2018 -0800"
      },
      "message": "Revert^6 \"Prevent UAF issues caused by static destructors\"\n\nThis reverts commit 4798222e3b3c22435d0a8d915d272fe67c80bd01.\n\nReason for revert: Fixed issue in underlying change.\n\nBug: 69591477\nTest: ./test.py --host -j50\nChange-Id: I31f0ba00ade607f388e248f287801ff878c7296f\n"
    },
    {
      "commit": "4798222e3b3c22435d0a8d915d272fe67c80bd01",
      "tree": "94392ba66bcfa8efac830f00d91ef687af5e956a",
      "parents": [
        "ed0180ce356a2ecb395422c84c392728289d93ba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 12 12:54:15 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 12 12:55:58 2018 +0000"
      },
      "message": "Revert \"Revert^4 \"Prevent UAF issues caused by static destructors\"\"\n\nrun-test changes cause issues.\n\nBug: 69591477\n\nThis reverts commit e9dc52492979364748e0c39682c0b2e9728ee50c.\n\nChange-Id: I1ee05747cdc9292c6e1ce9f3ed8fc31a3d3fd6b8\n"
    },
    {
      "commit": "e9dc52492979364748e0c39682c0b2e9728ee50c",
      "tree": "9dcc109e565626bfc4d3eac0bf8ea97af060fa87",
      "parents": [
        "1fbd5309858e5f70b5adaa1d70b9e438eaf18d33"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 09 14:08:08 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 09 23:37:45 2018 +0000"
      },
      "message": "Revert^4 \"Prevent UAF issues caused by static destructors\"\n\nThe test 1944 was not very robust and could spuriously fail for\nseveral reasons. Most notably it did not actually check that the exit\nvalue was what we expected and it could cause linker warning messages\nto be printed. The first we solved by checking for the exit value\ndirectly. The second cannot be simply solved so we simply filter these\nmessages out.\n\nThis reverts commit 70f4415d0485f67922323557f2657b009f20696d.\n\nReason for revert: Made test more robust.\n\nTest: ./test.py --host -j50\nBug: 69591477\nChange-Id: I8580973e16d63583e0cb80825892b4604c2591b6\n"
    },
    {
      "commit": "70f4415d0485f67922323557f2657b009f20696d",
      "tree": "ef3fa215aef9a1d5a98cae8e5bb3e55e9477d75e",
      "parents": [
        "6280f87f24c420676bff3fcd3a9698246df366b9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 08 09:28:21 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 08 09:28:21 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Prevent UAF issues caused by static destructors\"\"\"\n\nThis reverts commit 6280f87f24c420676bff3fcd3a9698246df366b9.\n\nReason for revert: test failures\n\nhttps://build.chromium.org/p/client.art/builders/angler-armv8-ndebug/builds/2415/steps/test%20optimizing/logs/stdio\n\nChange-Id: I857562ae54340956fe83f68ee995b49e1d8416e3\n"
    },
    {
      "commit": "6280f87f24c420676bff3fcd3a9698246df366b9",
      "tree": "d5eeef1adb6300d60c9e319f768323baafe1d257",
      "parents": [
        "661078b3346c20aa6ad8bf0d3b73722bd04cdc1b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 07 13:58:29 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 07 14:05:50 2018 -0800"
      },
      "message": "Revert \"Revert \"Prevent UAF issues caused by static destructors\"\"\n\nWe were not initializing the frame_pop_enabled field of EventHandler\nso it was undefined. If it happened to be true then the FramePop\nhandlers will never be installed and the FramePop events will never be\ntriggered.\n\nThis reverts commit 6a94cec7343bf006234b62525398c83bb55858eb.\n\nReason for revert: fixed issue with frame pop\n\nTest: ./test/testrunner/testrunner.py -a --host -t 923\nBug: 69591477\n\nChange-Id: Id47f91a76b6e7c9326e94d7cbdf8c5472bffb58a\n"
    },
    {
      "commit": "6a94cec7343bf006234b62525398c83bb55858eb",
      "tree": "f5da5a1cd1588edd45bca8da5ab434b76d0943bf",
      "parents": [
        "480dc3c0085095c401555d19328aac1a0ec46122"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 07 09:42:26 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 07 09:43:28 2018 +0000"
      },
      "message": "Revert \"Prevent UAF issues caused by static destructors\"\n\nThis reverts commit 123aeb716563d0783c73f309c3afef6dfd8f8b9e.\n\nBug: 69591477\n\nChange-Id: I368802d0c0c64143568d63a6fb02f969702c881e\n"
    },
    {
      "commit": "123aeb716563d0783c73f309c3afef6dfd8f8b9e",
      "tree": "3501e34c54fab3e20bcfd8c937b8d1af6ed762a4",
      "parents": [
        "edbe4cca764412f7aed425e903f4a07e0b4e993e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 06 15:30:13 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 06 15:39:28 2018 -0800"
      },
      "message": "Prevent UAF issues caused by static destructors\n\nAgents calling exit(3) would cause static destructors to run on\nseveral openjdkjvmti data-structures. This caused problems as other\nthreads could still be running and might hit UAF issues, causing\nerrors. We fix this by making sure that no important jvmti\ndata-structures are statically allocated. Since these data-structures\nmust be live for the whole program runtime this is not a big issue.\n\nBug: 69591477\nTest: ./test.py --host -j50\nTest: while ./test/run-test --host 1944; do; done\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost --test \\\n          org.apache.harmony.jpda.tests.jdwp.VirtualMachine.ExitTest.testExit001\nChange-Id: I25b01fc129d46c5f15bce1b9ec7952d29088a5a2\n"
    },
    {
      "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": "cec262e99d2be886fa0b39de87cf937b69878ed3",
      "tree": "9cdd156b576249d968bbd0283da27575e64a0b79",
      "parents": [
        "85f890b792d1547182d195db3f43240180ab880b",
        "56776014d181b7ee386a2ba5d85cf66d8bb4dd22"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 30 19:19:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 30 19:19:41 2018 +0000"
      },
      "message": "Merge \"ART: Call ThreadGroup.add for attached threads\""
    },
    {
      "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": "56776014d181b7ee386a2ba5d85cf66d8bb4dd22",
      "tree": "21b9f0411f565d9e49bce916e720b70a79145750",
      "parents": [
        "47ec7ad0f819c171e41d323aff71f5ac425b1ccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 17:40:55 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 30 09:26:22 2018 -0800"
      },
      "message": "ART: Call ThreadGroup.add for attached threads\n\nWhen attaching threads to the runtime, call ThreadGroup.add to\nlet the thread\u0027s group know that the thread is now started. This\nfixes incorrect internal accounting.\n\nTest: art/test/testrunner/testrunner.py -b --host -t 169\nTest: m test-art-host\nChange-Id: I60362b6b53acf06b97779ea9b3b0bc6264f1dc2d\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": "11b67b201adb173d5f6f1b7a3fd337fda91e200f",
      "tree": "90870c2ec271002ab36cb57484c185076e424f3a",
      "parents": [
        "8714435022757567aa078601f54244b8339bbed1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 18 16:41:40 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 14:21:50 2018 +0000"
      },
      "message": "Set up a test for hidden API enforcement\n\nSubmitting the test first for easier review. The expected outcome\nis that all currently class members are discoverable and accessible.\nFuture CLs will implement the enforcement and change the expected\noutcome.\n\nThe test itself has two JARs - parent declares classes and child\ntries to access them using reflection, JNI and static linking.\nThe test driver (\"Main\" class) loads these JARs as follows:\n(a) both with class loaders\n(b) parent in boot class path, child with class loader\n(c) both in boot class path\n\nIn (a), there should be no enforcement as the JAR does not have\nhidden API access flags (would not load otherwise). In situation(b),\nchild should only be allowed to access parent\u0027s public, non-hidden\nmembers. And in (c), parent contains hidden API access flags but\nchild is exempt from access checks.\n\nBug: 64382372\nTest: art/test.py -b -r -t 674-hiddenapi\nChange-Id: I19f5f7c30c0c7913703209817d36006b161c6778\n"
    }
  ],
  "next": "f4ed7e8b19b24444a7cdd600a8c211aafd3bc0d3"
}
