)]}'
{
  "log": [
    {
      "commit": "6aaa49dd4a3467e8d05aee4a1de9753e896ee96b",
      "tree": "593e79da914087e991ad0a6d0421962806485e04",
      "parents": [
        "72e27b0b29fd1bdea6747f62c5bd865d26a0bdcd"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 15:53:04 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 28 16:40:36 2020 +0000"
      },
      "message": "Inclusive language fixes\n\nBased on:\n  https://source.android.com/setup/contribute/respectful-code\n\n#inclusivefixit\n\nBug: 161336379\nBug: 161896447\nTest: art/test.py --host --64\nChange-Id: I02c96aa477c4be6af8384222f1f111cc7ae1eeac\n"
    },
    {
      "commit": "2d53643ca0e05e7c67894aa75eba899acbb9f287",
      "tree": "39299475c04303312f527bc00355bd9fd7a3fad8",
      "parents": [
        "cefebc86af30522bf79d2a89a2bcf96f7f970ecb"
      ],
      "author": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Wed Jul 22 14:33:00 2020 -0700"
      },
      "committer": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Fri Jul 24 00:41:56 2020 +0000"
      },
      "message": "Update language to comply with Android’s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for\nreference\n\nBug: 161896447\nBug: 161850439\nBug: 161336379\nTest: m -j checkbuild cts docs tests\nChange-Id: I32d869c274a5d9a3dac63221e25874fe685d38c4\n"
    },
    {
      "commit": "fc58809f7b932d86234130be15487017dc37b0cf",
      "tree": "d003dedec73d77473aff6b2039860bc76a69d898",
      "parents": [
        "d00f129f1b7148f01efe6e9283a72d6ec8f0edd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 23 15:39:08 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 29 23:31:10 2020 +0000"
      },
      "message": "Remove old JDWP implementation from ART\n\nThe old \u0027internal\u0027 JDWP implementation hasn\u0027t been used for a few\nreleases and it\u0027s a lot of code that\u0027s barely being tested and is at\nrisk of bit-rot. To simplify the runtime and remove potentially buggy\ncode this removes it.\n\nWe also needed to rewrite the DdmThreadNotification code since it\nrelied on the suspension functionality from the old debugger and was\ngenerally unsafe.\n\nTest: ./test.py --host\nTest: atest --test-mapping cts/tests/jdwp/TEST_MAPPING\nTest: atest --test-mapping cts/hostsidetests/jdwptunnel/TEST_MAPPING\nTest: Manual ddms\n\nBug: 119034743\n\nChange-Id: I775f310a009141296b730e4a6c2503506a329481\n"
    },
    {
      "commit": "c4cc618ad864c1f943daaef26914463d92d46ca0",
      "tree": "c711601c3fa8c22086aa00ee812b3526b52fc77a",
      "parents": [
        "d7651b107688bdbee908ea927e054c5796150a67"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 18 16:59:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 18 20:00:47 2019 +0000"
      },
      "message": "Handle nterp in IsForcedInterpreterNeededForUpcallImpl.\n\nNterp is an interpreter but can have exit stubs.\n\nTest: 1916-get-set-current-frame\nBug: 112676029\nChange-Id: Ia6f175e0badc572c2f4a03cff99f70bf6649a535\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": "380f0d8db56b5fcf6e7181184fdae9f303ad7ba5",
      "tree": "4ad13aff6c3742787f6f6487844305af065070e9",
      "parents": [
        "3fae12960c2d411dff450fce95c096af0e8d74de"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 10 11:01:43 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 11 17:44:40 2019 +0000"
      },
      "message": "ART: Conditionally install Dbg class callbacks\n\nTemporary allocations in the dispatch code are unnecessary when they\nend up in disabled code. Instead follow the example of the method\ninspection callback and only add the callback when the debugger is\nactually active.\n\nTest: m test-art-host\nTest: atest CtsJdwpTestCases\nChange-Id: I750f2df475400147b1d569f463228d436aa3ae5a\n"
    },
    {
      "commit": "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": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "439d12691964780784a67f178384c0175780f665",
      "tree": "35e251f5b41e54fc684d9f922bf5b72a648bd9c2",
      "parents": [
        "19711d479cd4bc4c2d02edf37526cd4e2a6235f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:45:07 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "Add StackVisitor::SetVRegReference().\n\nAvoid converting ObjPtr\u003c\u003es to uint32_t and back.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nBug: 31113334\nChange-Id: I4e5c1577930de58772b35179aa4281ae4bbca300\n"
    },
    {
      "commit": "8311489bcaa94a4527d8e010df6a78d457273b53",
      "tree": "d73fe83d0433605116648dab8e08339e4ffc83ab",
      "parents": [
        "d76e1238fddfd6eed608d97929c333e921e4826f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 11 13:05:50 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify debugger/jdwp.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nBug: 31113334\nChange-Id: I76889e7c64d7d57ca34236d1b424f00e8e2dda90\n"
    },
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "f52d92fce224c86491d9b0fd6fca805564119426",
      "tree": "fbf38f272a980e965627918d9dc6bbb536395c00",
      "parents": [
        "e660f7232a19a2c173f562b8e0987755a78ee298"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 12:33:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify Monitor/-Pool.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I2d2ebc5ef56e73e5678e0cfcd84c479611dfcca8\n"
    },
    {
      "commit": "67f0e9c167c9dcf5add8afe62760d3770546cd73",
      "tree": "752f441458e0d85b0f9e1e4a2c981664e71242c0",
      "parents": [
        "4617d5823c8e7841fed813b3b9c72664d7fd4dc6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 14:00:12 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 14:48:18 2019 +0000"
      },
      "message": "ART: Fix stale reference use in debugger.\n\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX32 --debug\nBug: 31113334\nChange-Id: I48d137b0fe87b01ed982a4275d1b558fd6e23a4f\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "34857b5fd3be5ee8cf1935bd1fbaad37a8e42768",
      "tree": "eabdd26615030bde559d939eb861f02290851c9e",
      "parents": [
        "3b45890cf987c0b57965acd78958cd8eca487b8e"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "Koji.Fukui@sony.com",
        "time": "Wed Mar 20 19:13:00 2019 +0900"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 12:12:13 2019 +0000"
      },
      "message": "Revert \"Revert \"Change state to waiting during aborting the VM\"\"\n\nThis reverts commit ebb481d070e3fdbb7950580e6f6886c3231a1ad9.\n\nDex2oatWatchdogTest.TestWatchdogTrigger passed.\nApply the change again.\n\nTest: ART_HEAP_POISONING\u003dtrue make test-art-host-gtest-dex2oat_test64\nBug: 127875380\nChange-Id: If4326990cd612815ffe1511490712ca8babfec55\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "179b7c61ea6769b99f70c80a7a89cbb212423ec2",
      "tree": "06130898bfb2d8c3f71f4fe181277f20e1942726",
      "parents": [
        "c8b7d445e02b752a68d824e2bc69658dfb76288a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:38:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 16:54:37 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify String allocations, fix stale refs.\n\nObjPtr\u003c\u003e-ify String allocation functions and related code\nand remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr(). Fix\nstale reference uses in reference_table_test and stub_test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I42927fb8b7240e5132188f73318b2ccb218748fd\n"
    },
    {
      "commit": "ebb481d070e3fdbb7950580e6f6886c3231a1ad9",
      "tree": "af6986daab73dcd17dca5f4bab68024c12c40c83",
      "parents": [
        "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 09:30:35 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 19 12:33:11 2019 +0000"
      },
      "message": "Revert \"Change state to waiting during aborting the VM\"\n\nThis reverts commit 97b964960123d5f215a1cebbce548c8a5322c307.\n\nBug: 127875380\n\nReason for revert: Broke Dex2oatWatchdogTest.TestWatchdogTrigger on host x86_64 and heap poisoning.\n\nChange-Id: Iaebfc4a03543bff4e7239d711dd7ad8c7f880d52\n"
    },
    {
      "commit": "97b964960123d5f215a1cebbce548c8a5322c307",
      "tree": "04239f8bc25ce6f22bda774bbae37755ed8acb27",
      "parents": [
        "26a5dd6fd1d65de29ba85e4bb61d9267dd428238"
      ],
      "author": {
        "name": "Koji Fukui",
        "email": "koji.fukui@sony.com",
        "time": "Tue Mar 05 12:22:57 2019 +0900"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 18 17:19:04 2019 +0000"
      },
      "message": "Change state to waiting during aborting the VM\n\nSymptom:\nProcess freeze when multiple runtime error happen on runnable threads.\n\nRoot cause:\nWhen multiple runtime error happen, only one thread locks abort_lock_\nand other threads are blocked even if they are runnable state.\nIf an other thread tries to suspend blocked threads at the same time,\nblocked threads can\u0027t be suspended until abort_lock_ is unlocked from\nowner thread. But owner thread can be suspended even if it locks\nabort_lock_. Thus, these threads causes dead lock.\n\nSolution:\nChange state to waiting when locking abort_lock_.\n\nBug: 127875380\nChange-Id: I7e914924690bb30d6d0490cf5f8afdb1c3cd4e4a\n"
    },
    {
      "commit": "fe2886de2a9f06f286fe905ce8417981b9089c5c",
      "tree": "060025813c4ab6d3bfd98aaafa54a97be342a0c0",
      "parents": [
        "d7d3f6fa1870b9e9b8f58ab7854e5eeee071ba2e",
        "226805d9b81ba442251d0e2c4baedc36fcda6592"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 14:22:23 2019 +0000"
      },
      "message": "Merge \"Deoptimize zygote compiled methods in DeoptimizeBootImage.\""
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "226805d9b81ba442251d0e2c4baedc36fcda6592",
      "tree": "3a256b1d36894d8d43ec9650f2a3f55c90c4730c",
      "parents": [
        "96453b7d6aa445c6609aa465df5d66ae0beb7956"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 14 10:59:02 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 19 09:22:01 2018 +0000"
      },
      "message": "Deoptimize zygote compiled methods in DeoptimizeBootImage.\n\nThose methods don\u0027t get compiled with the \"debuggable\" flag,\nso we need to deoptimize them.\n\nAlso fix a bug revealed by the new test where a concurrent\nJIT collection happens when trying to disable it.\n\nAlso make DeoptimizeBootImage truly mutator lock exclusive.\n\nTest: 689-zygote-jit-deopt\nChange-Id: I00607dbe100350c5328293c35c87946fa97924b8\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "c7d878d4be3f0971d4b86266308c7540a26c2856",
      "tree": "041a6d897df81ae64f25c211f16e8640959a35f5",
      "parents": [
        "d295a75d952742604eaae0530daea19dd6fd782c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 18:42:06 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 17:09:07 2018 -0800"
      },
      "message": "Revert^4 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit ec43a01e0ac948c59d5b1f9c3812f2901b48942a.\n\nReason for revert: Added missing code.\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: Id30ccdf9aa9a6e56a914254793e399f2712c882d\n"
    },
    {
      "commit": "ec43a01e0ac948c59d5b1f9c3812f2901b48942a",
      "tree": "57e1a23dcc0beba8e98841b8cf063f6153b08c9b",
      "parents": [
        "3d477f3a3eea757a49ca621cc579f711f22fccdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"ART: Add StackVisitor accepting a lambda\"\"\n\nThis reverts commit 3d477f3a3eea757a49ca621cc579f711f22fccdd.\n\nBug: 115837065\n\nReason for revert: Breaks jdwp tests.\n\nChange-Id: I09249331798970751a20c6b41675c3efef72adfb\n"
    },
    {
      "commit": "3d477f3a3eea757a49ca621cc579f711f22fccdd",
      "tree": "b4b402d0181610c62062c8c597ef30ee2840b6b1",
      "parents": [
        "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 16:40:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 10:13:38 2018 -0800"
      },
      "message": "Revert^2 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 8248490f24e8582ce2ead8cd878d8a2c38310a48.\n\nReason for revert: Fixed instrumentation.cc\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: I484833f4712c835fcaf3452dca4cae5b031d5a7d\n"
    },
    {
      "commit": "8248490f24e8582ce2ead8cd878d8a2c38310a48",
      "tree": "f542af6560561526fc413e361e3323a615b5429c",
      "parents": [
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "message": "Revert \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 36f8d22c672498753b9edc66ba11acc9816b2a17.\n\nReason for revert: Seems to be breaking test 687\n\nBug: 115837065\nChange-Id: I83bb1a9d76cc701c3d582778e5047ebd5dab5d29\nTest: TreeHugger\n"
    },
    {
      "commit": "36f8d22c672498753b9edc66ba11acc9816b2a17",
      "tree": "7a7195bf16db14d7f56f94a4d6421f6837b2f686",
      "parents": [
        "a53da8f8170ddaff3e4160641938ba1b7806202c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 08 08:13:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 02 16:01:30 2018 -0700"
      },
      "message": "ART: Add StackVisitor accepting a lambda\n\nTo simplify implementation of visitors. Rewrite some\nvisitors.\n\nBug: 115837065\nTest: mmma art\nTest: m test-art-host\nChange-Id: I04172d7626b702c1d69c63eba65526378935a25d\n"
    },
    {
      "commit": "fd63bbf88147e19c32c21678b90d8cc450496fc3",
      "tree": "d78f12fbfd72bf29b16e13a7f3fabfca5f1d3f88",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:55:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 10:57:42 2018 -0700"
      },
      "message": "ART: Add string-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for string allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I68d3bcf2b3615d12231010940d0a24a1dbc03826\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "99f97330a3c55e54ebba6fb0a668f445f34dc2d6",
      "tree": "e5f8a9f3baf7bfc9e517289c8463b8089022d27b",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 15:44:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 04 11:13:49 2018 +0100"
      },
      "message": "Remove InvokeVirtualOrInterface event from instrumentation.\n\nIt is no longer used.\n\nTest: test-art-host-gtest\nChange-Id: I4d5f574d972ad2943a27adcca1d326d5d82a1923\n"
    },
    {
      "commit": "e5afbf335a8bc110ff7d4f86585a284c98a25a13",
      "tree": "7596a7b52e5f9a63b409969aba2805aaf012f199",
      "parents": [
        "7dca45b9677c16a54347cdc0d08bfa2bdd94b464"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 12 17:51:54 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 13 14:44:52 2018 -0700"
      },
      "message": "Refactor DecodeDebugLocalInfo\n\nRefactor the function to use a visitor instead of callback.\n\nTest: test-art-ghost\nBug: 112311591\nBug: 77709234\n\nChange-Id: I55385994952373b3fec4f9122400cf3c9d43da3b\n"
    },
    {
      "commit": "3e2e123239952c80e1b37431bf2efbbe07a41940",
      "tree": "153be0dafdbce55b5e5432cb10025b802a637402",
      "parents": [
        "68851b53e4152d3edaea977573af8bdc0bd23313"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 11 12:35:30 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 12 11:32:40 2018 -0700"
      },
      "message": "Refactor debug info position visiting\n\nMove logic to CodeItemDebugInfoAccessor, makes it easier to modify\nthe debug info format.\n\nTest: test-art-host\nBug: 112311591\nBug: 77709234\nChange-Id: Ice56a88951efa54dc07d88f2c228c01be4670e73\n"
    },
    {
      "commit": "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8",
      "tree": "6d3bef945030868d7e78162dc3f4f35a07ce410a",
      "parents": [
        "a0878aa9f4f4102e56a6381b28a8d7c38dec80b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 08:11:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:13:50 2018 -0700"
      },
      "message": "ART: Continue adding override annotations\n\nUse Clang-tidy\u0027s modernize-use-override to add more annotations. Ignore\ninferred annotations on destructors.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ic432c928e398d44df9171e42db04ee19946e6887\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "f28586390b055a5681e50617d729a3fa09792d9c",
      "tree": "f213a9d41709dea55d2c0a9014423ac27d04e952",
      "parents": [
        "30a2d9c61da75359dee4ce90236d19fc6341b07a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 02 11:28:50 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 03 15:51:41 2018 +0000"
      },
      "message": "Revert^6 \"Ensure that OSR still is possible with jvmti\"\n\nThe instrumentation uninstall could set methods to non-debuggable\nboot.oat code. This could cause events to be missed due to methods\nbeing inlined. We needed to change the path so that we would only have\nthe JIT/interpreter replace methods. We do this by adding a new\ncallback that can be used to determine if a method needs to be\ndebuggable and being more careful about replacing code when this is\ntrue.\n\nThis reverts commit 5f3005c8844d851d7d218b88b5f90d6c9083ce24.\nThis unreverts commit b9ad26d1ed9146b89555d4333021f44eeb831f05.\n\nReason for revert: Fixed issue causing CTS version of test 993 failure.\n\nTest: cts-tradefed run cts-dev CtsJvmtiRunTest993HostTestCases\nTest: ./test.py --host -j50 --all -t 993\nTest: ./test.py --host\nTest: while ./test/run-test --host --jit 1935; do; done\nTest: while ./test/run-test --host --jit --jvmti-redefine-stress 1935; do; done\nTest: am start --attach-agent -n com.example.android.displayingbitmaps/.ui.ImageGridActivity\n      Run blur filter.\nBug: 76226464\nBug: 77306669\n\nChange-Id: I5068201a03f7613787c66981405499b6499c24e1\n"
    },
    {
      "commit": "1eeefa63b9ad8289138b83dfccda3ff38ed23fb6",
      "tree": "4fa08e1dc9dbec13d267cd5550c2c7940688020e",
      "parents": [
        "d1ede32d56d2b6c95f94a8c67d8b9f309940d9de"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 19 13:47:56 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 28 09:46:48 2018 -0700"
      },
      "message": "Remove unhelpful ExceptionDescribe from DDMS error path.\n\nIf a DDMS handler threw an error or returned invalid input we would\ncall ExceptionDescribe on the exception. This is usually not very\nhelpful since it goes to System.err instead of logcat and can make\ntesting difficult. This change replaces the ExceptionDescribe with a\nLOG(INFO).\n\nTest: ./test.py --host -j50\nBug: 70988713\nChange-Id: I41e743c42e63c0dcb6d32473c31f391983819d32\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "af290318c31180148bab64038d66a6059a1a89d5",
      "tree": "f5369e0be49f4599ada2a1d70cd564dbe5ba5ff5",
      "parents": [
        "cc4e7b7c7b37d9f7bd6e2bfe22e36308150dddad"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 27 20:02:17 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 27 20:02:17 2018 +0000"
      },
      "message": "Small documentation and stylistic changes.\n\nTest: art/test.py\nChange-Id: Ibc74ee4783314266bf1d027811715058626c57c8\n"
    },
    {
      "commit": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\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": "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": "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": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "94c589db78da2b66bc681c6480819ca4bd4d3326",
      "tree": "dd790ffa1c358e4fa41af5468f52909bc1035cfa",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 12:43:01 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 12:45:52 2017 -0800"
      },
      "message": "ART: Mark Dbg GCs as debugger\n\nChange Heap::CollectGarbage to accept explicit GcCause, but implicitly\ndefault to kGcCauseExplicit.\n\nChange Dbg functions that run an explicit GC to set the cause to\nkGcCauseDebugger.\n\nTest: m test-art-host\nChange-Id: I53d4073fca01c1de78d14a58dff33004c7971981\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "403207107da7f11525c4d305184c56b35ec1c17a",
      "tree": "f97f080fcfa8051df18536e97a33582ee4bbbc6a",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 11:52:04 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 09:26:11 2017 -0800"
      },
      "message": "Add support for selecting alternate JDWP implementations\n\nChange JDWP options parsing to take place later and add a\n-XjdwpProvider:_ option that can be used by the runtime to select an\nappropriate JDWP provider. The argument is a string.\n\nIf \u0027none\u0027 is given JDWP will be totally disabled.\n\nIf \u0027internal\u0027 is given the current internal JDWP implementation is\nused.\n\nIf \u0027default\u0027 is given the \u0027internal\u0027 JDWP implementation will\ncurrently be used.\n\nOther values will be added in the future.\n\nAlso adds a runtime callback that will be invoked when the runtime\nwants to start or stop the debugger (namely at the post-zygote fork\nand just before exit) and check if a debugger is availible.\n\nAlso add \u0027-XjdwpOptions:_\u0027 in preparation for the eventual removal of\nthe existing -Xrunjdwp\u003d_ and -Xagentlib:jdwp\u003d_ as top-level options.\nAll of these options now store their arguments as a std::string to be\ninterpreted by the JDWP implementation as it sees fit. Also change the\njdwpOptions to default to transport\u003ddt_android_adb if there is not one\nspecified and it is available. This will make changing the default\ntransport based on the JDWP provider easier.\n\nThese new options are needed to allow us to support both the old,\ninternal, JDWP implementation as its replacement is tested and\nverified. This lets us switch between them with little difficulty.\n\nWe will probably remove one or both of these options once we have\nconfidence that the new jdwp implementation has stuck.\n\nTest: ./test.py --host -j50\nTest: ./test/run-test --host --debug 001-HelloWorld\nTest: Manual, flash walleye, debug app\n\nBug: 62821960\n\nChange-Id: Ie31db6b6f7d76a03d4ab8e178fcf298ed0eec203\n"
    },
    {
      "commit": "acea2435e2dd93e8ec1e810bd024e60fe74c399f",
      "tree": "98a9bcf105df391829a8804995e480bfe4130ebf",
      "parents": [
        "76fb093e618970bafec4375cc6e7034fc11c7541",
        "e5463a88039a14c1d1d501d2932d069e6d4224e2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 12 23:38:25 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 12 23:38:25 2017 +0000"
      },
      "message": "Merge changes Ic67db951,I1ba0f43c\n\n* changes:\n  Ensure that DDM processing doesn\u0027t leave unhandled exceptions\n  Clean up JVMTI DDMS extension function.\n"
    },
    {
      "commit": "e5463a88039a14c1d1d501d2932d069e6d4224e2",
      "tree": "88eda80bdf7cc2fb7dec4381b21ff444b8741c58",
      "parents": [
        "6f2a6341b6dd8910aebacefea653f11006b46abe"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 12 13:33:28 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 12 21:52:40 2017 +0000"
      },
      "message": "Ensure that DDM processing doesn\u0027t leave unhandled exceptions\n\nPreviously if a DDM chunk handler returns an invalid chunk the thread\nthat processed the chunk could end up with an unhandled exception.\nThis could be troublesome if it happened on a debugger thread, which\nmight never actually handle it.\n\nTest: ./test.py --host -j50\nBug: 70570850\nChange-Id: Ic67db951d721cf7532b08c0cc3f35bed9396d52d\n"
    },
    {
      "commit": "6f2a6341b6dd8910aebacefea653f11006b46abe",
      "tree": "54c624ea15d204826423f68d17cc35846538f3c0",
      "parents": [
        "9e73b32fed15d262b0393f114b9602ac7ef88917"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 12 09:55:05 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 12 13:22:01 2017 -0800"
      },
      "message": "Clean up JVMTI DDMS extension function.\n\nWe change it to not return failure (and print a warning) if the chunk\nhandler returns an empty chunk. This is a surprisingly common result\nin real-world code and was causing significant log-spam.\n\nBug: 70559172\nTest: ./test.py --host -j50\nChange-Id: I1ba0f43cb2e834b09f51db75ec9100d97e916b62\n"
    },
    {
      "commit": "31f4c9f86522061d682fd0e2c6003043cec496dc",
      "tree": "fc7192bc634811bdc8176afc4b5e60a049d56ae0",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 08 15:46:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 19:55:46 2017 -0800"
      },
      "message": "Add CodeItemDebugInfoAccessor\n\nUse it in places where DecodeDebugPositionInfo is called.\n\nMotivation: Abstract away calls to GetDebugInfoOffset.\n\nBug: 63756964\nTest: test-art-host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 --debug\n\nChange-Id: I3ab2eff56c472cc717f49d17fd17eb0b8fde4062\n"
    },
    {
      "commit": "660be6ff67870d2512230b13effefdbc5abe43e4",
      "tree": "4a4cde728d6aeb2ea8f1ef63c7e7f82383a9acd0",
      "parents": [
        "a602c56ba1a82d70eb40de35e7c716477a46ee28"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Nov 22 16:12:29 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Dec 01 09:10:48 2017 +0000"
      },
      "message": "Add VMDebug.getInstancesOfClasses API.\n\nThe API can be used to iterate over instances of a given type on the\nheap.\n\nThe GetInstancesOfClassesBenchmark run on bullhead shows the run time\nof the API grows linearly in the number of classes, C, to get instances\nof and the number of total instances, N, allocated on the heap.\n\nC   N\u003d~2^18   N\u003d~2^19\n1      13ms      21ms\n2      26ms      43ms\n4      53ms      87ms\n\nBug: 69729799\nTest: ./test/testrunner/testrunner.py -t 099-vmdebug -b --host\n\nChange-Id: Ied053d19760e656012e2577776f75a1cc0a14ac3\n"
    },
    {
      "commit": "58cc1cb66c1a96ffba4a314edb2c5b4e8b235d5b",
      "tree": "ed00c90ab564c54ae4f09a4acbc5f3ffa65b9e71",
      "parents": [
        "65e0432cdaf3ee170045b21943c24eae5d6a0357"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 13:27:29 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 23 10:44:47 2017 +0000"
      },
      "message": "Pass the debug_info_offset explicitly.\n\nIn order to use debug_info_offset for encoding implementation details,\nrewrite all indirect users of it to fetch it before calling DexFile\nmethods.\n\nThis allows keeping the DexFile interface clean of runtime\nconsiderations.\n\nTest: test.py\nChange-Id: I4591e0039b5f822f4409aae411071ecbe97082b1\n"
    },
    {
      "commit": "772099a8976cb8341475c42bfc595373778217dd",
      "tree": "1c7131a4525da61ae89aca20f0d7c7ce7ebe0000",
      "parents": [
        "cb90e3a29041ea55c4b5eb3d1477aa360381a1f1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 21 14:05:04 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 21 17:06:11 2017 -0800"
      },
      "message": "Add remaining DDMS messages into DdmPublishChunk\n\nThis ensures that one can get notified of every DDMS chunk that would\nbe published.\n\nAdd a test to ensure that appropriate ddms events are sent.\n\nWe also refactor the underlying code so that the only way these events\nare sent is through the DdmPublishChunk callback.\n\nTest: ./test.py --host -j50\nBug: 62821960\nChange-Id: I0c4a60b75615c206a27aff17df853b53cf5e8c96\n"
    },
    {
      "commit": "8c2b929696cac235e8fd8bf4cae0ca751603b570",
      "tree": "ef280c4ff76d44ba867d65564ec192ba4a90e874",
      "parents": [
        "a16fec549253638268dda3d83e6e34a500cbfc1c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 09 13:21:01 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 14 17:09:35 2017 -0800"
      },
      "message": "Add JVMTI DDMS extension method and event.\n\nAdd a new jvmti extension method\n\u0027com.android.art.internal.ddm.process_chunk\u0027 that can be used to\nrequest that the system process a DDMS chunk with a given type and\ndata payload. It returns the processed chunk type and data. Agents can\nuse this to interact with DDMS.\n\nAlso add a new jvmti extension event\n\u0027com.android.art.internal.ddm.publish_chunk\u0027 that will be called\nwhenever the system wishes to send an unrequested chunk of data to be\nprocessed. This is triggered by code executing \u0027DdmServer#sendChunk\u0027\nor by other internal mechanisms.\n\nBoth of these extensions are provided mainly to aid in the maintenence\nof backwards compatibility with existing DDMS applications.  Generally\nagents should prefer to use the normal JVMTI events and controls over\ninterpreting DDMS data or calling DDMS functions.\n\nBug: 62821960\nTest: ./test.py --host -j50\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost \\\n            --test org.apache.harmony.jpda.tests.jdwp.DDM.DDMTest\nChange-Id: I39f22d3d096d12b59713ec7b8b0c08d0d68ff422\n"
    },
    {
      "commit": "4098a7ad22535212c193f5c66eaf8a7387e1b7fc",
      "tree": "b6fbfef133515376185b769ea2c9625a6a637a04",
      "parents": [
        "383684585824efa60350b208b92362efab3962eb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:00:51 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 06 16:24:06 2017 +0000"
      },
      "message": "Refactor ArtField::GetType\u003c\u003e() as {Lookup,Resolve}Type().\n\nAnd add no thread suspension assertion to LookupType()\nas well as ArtMethod::LookupResolvedClassFromTypeIndex().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: If1541ccb0aafeabb6d1dd5566f10afcac98a2ef1\n"
    },
    {
      "commit": "0fa1786bdcc333873ed65a1f77a4669d5701ac5e",
      "tree": "3ee1a5ead68150d60c0a72efa4c85b7db5b3e689",
      "parents": [
        "0d2b2ad6cd9ca650d7a3f85a42afaf518cbfa4e0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 24 13:43:05 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 30 09:43:57 2017 -0700"
      },
      "message": "Avoid JVMTI global deoptimization when possible\n\nThis changes the openjdkjvmti plugin to be more controlled about the\nsituations that it will deoptimize everything. Most notably this makes\nthe plugin deoptimize only individual methods for breakpoints instead\nof doing a full deoptimization. It also doesn\u0027t deoptimize for the\nJVMTI_EVENT_EXCEPTION method, since our throwing code will always send\nthe appropriate event.\n\nImpact:\n    Exoplayer benchmark with breakpointlogger setting a breakpoint on\n    a method that is never called.\n\n    The agent is the tools/breakpoint-logger agent.\n\n    \u0027art\u0027 options are for all runs were:\n        --64\n        -Xusejit:true\n        -Xcompiler-option --debuggable\n    \u0027art\u0027 options for \u0027Pre change\u0027 and \u0027Post change\u0027 runs included:\n        -Xplugin:libopenjdkjvmti.so\n        \u0027-agentpath:libbreakpointlogger.so\u003dLbenchmarks/common/java/BenchmarkBase;-\u003erun()V@0\u0027\n\n    Clean run (no agent loaded):\n        Running FMP4 x 1 : 53\n        Running TS x 1 : 144\n        Running FMP4 x 2500 : 3309\n        Running TS x 100 : 3584\n        ExoPlayerBench(RunTime): 6977000.0 us.\n    Pre change:\n        Running FMP4 x 1 : 159\n        Running TS x 1 : 9395\n        Running FMP4 x 2500 : 298591\n        Running TS x 100 : 944447\n        ExoPlayerBench(RunTime): 1.243226E9 us.\n    Post change:\n        Running FMP4 x 1 : 87\n        Running TS x 1 : 495\n        Running FMP4 x 2500 : 2939\n        Running TS x 100 : 3947\n        ExoPlayerBench(RunTime): 6979000.0 us.\n\n    Post change vs clean run is well within margin of error for this\n    benchmark.\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-prebuild-libjdwp-tests.sh\n\nBug: 62821960\nBug: 67958496\n\nChange-Id: I63ef04f71c36c34d8534651d0c075921a836ec08\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "2161193652e925a2b450514f4e445ccd2fb660b3",
      "tree": "0fdbb54879de0b7b98509bede399cccfb0d4b34c",
      "parents": [
        "8b96c164a11284c07886fca9e4a4a0e15d33e816"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 26 13:07:39 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 27 14:32:20 2017 +0000"
      },
      "message": "Ensure that OSR doesn\u0027t break local-variable get/set\n\nWe had a bug where we would on-stack replace a method with a modified\nlocal variable. Thanks to inlining \u0026 load-store elimination of local\nvariable values this could cause the change to the variable to be lost.\nWe fixed this by giving plugins a way to notify the runtime they are\ninterested in a particular method.\n\nBug: 66959663\nBug: 66933582\n\nTest: while ./test/run-test --host --prebuild -O --jit 1935; do; done\nTest: ./test.py --host -j50\nChange-Id: Ic001b8a9d8d0bd9ce292e807752c86a505f85d36\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "72e80c66e6ab46859eeff46226dc1bcaf6848aa9",
      "tree": "26a43553284d972ca763c01c48fad90f2a6f5bfa",
      "parents": [
        "c5e7180231f6703925557ffaf8bc64615219e078",
        "41006c6e8c0c5132a22bb7e100b6cd545dbb55a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 15 18:47:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 15 18:47:46 2017 +0000"
      },
      "message": "Merge changes Ia3f19f0f,I0fe8038e\n\n* changes:\n  Implement JVMTI GetCurrentContendedMonitor\n  Add support for JVMTI monitor events.\n"
    },
    {
      "commit": "77fee87b262e969b29a9ac121a8bcbf87b68d9ce",
      "tree": "3280ba8d887045217bfbcb81eb624f571eeee7d0",
      "parents": [
        "ec995142998f6c7371734e6df95b5e2c80b18d27"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 09:57:03 2017 -0700"
      },
      "message": "Add support for JVMTI monitor events.\n\nAdds support for the JVMTI can_generate_monitor_events capability and\nall associated events. This adds support for the\nJVMTI_EVENT_MONITOR_WAIT, JVMTI_EVENT_MONITOR_WAITED,\nJVMTI_EVENT_MONITOR_CONTENDED_ENTER, and\nJVMTI_EVENT_MONITOR_CONTENDED_ENTERED events.\n\nBug: 65558434\nBug: 62821960\nBug: 34415266\n\nTest: ./test.py --host -j50\n\nChange-Id: I0fe8038e6c4249e77d37a67e5056b5d2a94b6f48\n"
    },
    {
      "commit": "05f47743e604e9b3b1de9ec930c6af6d9780c440",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "b2c8fc62f4e7889300da2d26294537194e37b926"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 14 00:34:44 2017 +0000"
      },
      "message": "Revert \"Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\"\n\nForgot to revert this.\n\nThis reverts commit b2c8fc62f4e7889300da2d26294537194e37b926.\n\nReason for revert: Fixed issue with tests\n\nChange-Id: I1fd5a2759c67a906d55137e2b6548726af2c8e4f\nTest: treehugger\n"
    },
    {
      "commit": "9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed",
      "tree": "f4ec9bb10a2191f4aa80b1ee40332071bed38bab",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 09:32:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 05 10:54:05 2017 -0700"
      },
      "message": "Revert \"Revert \"JVMTI Exception and ExceptionCatch events\"\"\n\nFixed error where we were incorrectly not updating a ShadowFrame\ndex_pc causing deoptimization errors.\n\nBug: 62821960\nBug: 65049545\n\nTest: ./test.py --host -j50\nTest: ./art/tools/run-libcore-tests.sh \\\n            --mode\u003dhost --variant-X32 --debug\n\nThis reverts commit 959742483885779f106e000df6dd422fc8657931.\n\nChange-Id: I91ab2bc3e645ddf0359c189b19a59a3ecf0d8921\n"
    },
    {
      "commit": "959742483885779f106e000df6dd422fc8657931",
      "tree": "413cbb42607eb92012cfc20f7e0d32d0da3e9875",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:45:51 2017 +0000"
      },
      "message": "Revert \"JVMTI Exception and ExceptionCatch events\"\n\nBreaks tests.\n\nBug: 62821960\nBug: 65049545\n\nThis reverts commit 798eab03120f6189e8f6aa804d67af1b1d9f00b0.\n\nChange-Id: Ie96903df06bbbe41f288f5b75a5114b142998fac\n"
    },
    {
      "commit": "b2c8fc62f4e7889300da2d26294537194e37b926",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 04 08:44:51 2017 +0000"
      },
      "message": "Revert \"Make WatchedFramePop instrumentation event pure-virtual\"\n\nBuilds on top of a change that breaks tests.\n\nThis reverts commit a0e0f103956fab23d1bfb08a69dadb0bc81d1a35.\n\nChange-Id: I6a35fc2f4a099e807b5ed81b93a3f9a8d8beeea2\n"
    },
    {
      "commit": "a0e0f103956fab23d1bfb08a69dadb0bc81d1a35",
      "tree": "9c4342297a37c3cfe22c69ef9f7d82f722006431",
      "parents": [
        "798eab03120f6189e8f6aa804d67af1b1d9f00b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:33:41 2017 -0700"
      },
      "message": "Make WatchedFramePop instrumentation event pure-virtual\n\nAll the other events are pure virtual but this one had an (empty)\ndefault implementation. Change the event to make it consistent with\nall the others.\n\nTest: Builds\nTest: Treehugger\nChange-Id: I3d81914d067b305f09d4072c443e5ac9027af443\n"
    },
    {
      "commit": "798eab03120f6189e8f6aa804d67af1b1d9f00b0",
      "tree": "828a9a896619a8575bcf20a078f193df54354899",
      "parents": [
        "9c4feaa082d8e8c00611a0657c3f80b1c1179a6f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 12:54:53 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 01 10:10:14 2017 -0700"
      },
      "message": "JVMTI Exception and ExceptionCatch events\n\nAdd support for the JVMTI can_generate_exception_events capability.\nThis includes the Exception and ExceptionCatch events and all their\nassociated behaviors.\n\nTest: ./test.py --host -j50\nBug: 62821960\nBug: 65049545\n\nChange-Id: I21cc8522c01033cdeb47bf34fa433bf04bf7ca5c\n"
    },
    {
      "commit": "6e1607e247d979a1671a1fd5a98de3f1031fe719",
      "tree": "1174cdcce601419dcd5d1563777f721477d5cb6a",
      "parents": [
        "2ee17e69110a9ef98ea8c94219c7da23b918ef3f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 10:06:18 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 13:15:17 2017 -0700"
      },
      "message": "Rename instrumentation ExceptionCaught to ExceptionThrown\n\nThe instrumentation ExceptionCaught event was badly named since it is\nactually sent at the time the exception is thrown and is sent even if\nthe exception is never actually caught. Rename it and associated\nmethods/fields to ExceptionThrown to more accurately reflect the\nevent\u0027s semantics.\n\nTest: ./test.py --host -j50\nChange-Id: I1e9c401ab619259b25928dbf19f62d3fa9573d47\n"
    },
    {
      "commit": "b45528c1f1b83ca8c970f439b54fbfcfda6908ea",
      "tree": "e8f493a7b21064d353d112ea1378d7819db385aa",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 14:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 15:30:47 2017 +0100"
      },
      "message": "ART: Refactor retrieval of types through ArtMethod.\n\nSplit Get*() functions that take a \"bool resolve\"\nargument into Lookup*() and Resolve*() functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I0b7eaa1fadc2ffa8c0168203790467f91a126963\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "0c18338ebae6b3597c882887f8354b64abb5e90f",
      "tree": "fde8624a51b99ef7338784c863a9edf55dc2d08b",
      "parents": [
        "10d39085d5e064ae0afdc898eb32741a660c4b9d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 13 22:26:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 18 00:09:01 2017 -0700"
      },
      "message": "ART: Replace or remove some ObjectCallback Walk functions\n\nReplace with visitor functions in RegionSpace and SpaceBitmap. Remove\nold ObjectCallback version in HeapBitmap. Fix up users. Move some\nthread-safety annotations.\n\nMove ObjectCallback definition to the only remaining user (ModUnionTable).\n\nTest: m\nChange-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c\n"
    },
    {
      "commit": "5e7eb2faccf8f4a28e9fcda26053a5b388f2190a",
      "tree": "12b2936d445607d1bd7294d3f4a6ba19c27d8951",
      "parents": [
        "6e875347976b1f332731be775dfd066fda730085",
        "88fd720b6799184c8ad61e766a6d37af33ed30ef"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "message": "Merge \"Add Jvmti Suspend/ResumeThread functions\""
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "84eadb2daafa75c54a4daca151ca90f8b606c596",
      "tree": "635e35f606e05485d10498211f6ec77780d35e78",
      "parents": [
        "2eeb01a9327b091124521a84c76edb2c6dcfa8f0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 15:08:01 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 17:53:21 2017 -0700"
      },
      "message": "ART: Change StringTable to unordered_set\n\nCache the string hash in the table element. Trade space for time.\n\nEffect on b/37620770 repro case: Dump time \u003d 3.7s -\u003e 1.6s\n\nBug: 37620770\nTest: m test-art-host\nChange-Id: Ifaed1c65e30097851188450a5db2bc8ee30efbb4\n"
    },
    {
      "commit": "2eeb01a9327b091124521a84c76edb2c6dcfa8f0",
      "tree": "d0c6662bf6d59576fd5858c7654aa258b1e9c726",
      "parents": [
        "d0fc768defcc417393d4ef5a25214b566bfc36c2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 14:09:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 17:53:21 2017 -0700"
      },
      "message": "ART: Change StringTable for RecentAllocations\n\nAvoid the expensive std::distance call by caching the index inside\nthe set element. This requires a mutable field and a Finish call.\n\nEffect on b/37620770 repro case: Dump time \u003d ~ 12s -\u003e 3.7s\n\nBug: 37620770\nTest: m test-art-host\nChange-Id: I6ab89e0e99994466183042bd59358439f98dde42\n"
    },
    {
      "commit": "d0fc768defcc417393d4ef5a25214b566bfc36c2",
      "tree": "cc7052af2722709d9eec7b580bf6f0196f299af3",
      "parents": [
        "c7960729dd3585bc971645ded2fab7498b456749"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 14:03:08 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 17:53:21 2017 -0700"
      },
      "message": "ART: Presize output vector in RecentAllocations\n\nReserve the needed storage for each allocation record before dumping the\ndata to avoid incremental increases.\n\nEffect on b/37620770 repro case: Dump time ~ 12s\n\nBug: 37620770\nTest: m test-art-host\nChange-Id: I24f46786c9cf15e6523389c630952eff0981f4dc\n"
    },
    {
      "commit": "ff29cee3258b7c0984b447a8b5cff2ef9d332699",
      "tree": "5861dfb085b5eccd387fe47736f6669fe20d8a7f",
      "parents": [
        "c5e4a53252bda0052fb642424e9f5ba908603eb8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 11:11:15 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 15:16:06 2017 -0700"
      },
      "message": "ART: Add VLOGs to GetRecentAllocations\n\nAdd some logging of the different stages.\n\nTest: m test-art-host\nChange-Id: Idcddb109695c4ed7ff83d2b96e27984c5077159b\n"
    },
    {
      "commit": "f774a4e5243b9b06f3c71ea9b67fc40b96a78342",
      "tree": "f7622bc30dc7bb229f90ff4cd621168bebbfe9f7",
      "parents": [
        "73e64c47c510ea5a0061272ae98e85c070f5c5b1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 06 22:15:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 07 00:11:30 2017 -0700"
      },
      "message": "ART: Improve Dbg::GetRecentAllocations\n\nMove ClassTable to const char* instead of std::string, and let it\nknow when it needs to keep a copy of the string itself. This avoids\nlots of temporary allocations.\n\nIncrease the stack depth in test 098 to better cover this behavior.\nAdd allocations of proxies and arrays to cover the backing storage.\n\nImprovements on test 098:\n\nBefore:\n\nheaptrack stats:\n        allocations:            598174\n        leaked allocations:     186\n        temporary allocations:  132302\n\n65797 calls to allocation functions with 3.34KB peak consumption from\nart::StringTable::Add(char const*)\n65666 calls to allocation functions with 144B peak consumption from\nart::StringTable::IndexOf(char const*) const\n\nAfter:\n\nheaptrack stats:\n        allocations:            466828\n        leaked allocations:     186\n        temporary allocations:  1002\n\nBug: 37620770\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 098\nTest: SANITIZE_HOST\u003daddress art/test/testrunner/testrunner.py -b --host -t 098\nChange-Id: Iee496c96471dbb825c22b2656598c95f7c029a2f\n"
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "97e78033e6cf81d72c9d4d016e349282b911303c",
      "tree": "6d24f271c7c707646ae2eb87161c887004fcd469",
      "parents": [
        "ef43805b0e80015645a5fc52e53b93ad178f60e3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 27 17:51:55 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 28 09:55:48 2017 -0700"
      },
      "message": "Move debugger.cc GetCanonicalMethod to ArtMethod\n\nThis functionality will be useful to other parts of the runtime so put\nit in a more central place.\n\nTest: ./test.py --host -j40\nChange-Id: I4d19cc1016884f5921245ac284c7323cbf3ea8cd\n"
    },
    {
      "commit": "e00ec30588a36eed90aa24eaca9dbc7520f17bf7",
      "tree": "c31d512d62ae2d33b3f57a6549b4c585e0235627",
      "parents": [
        "61944b0c756309a6cf4a3f03fe2aa515e3721621"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 16 08:56:43 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 16 11:22:26 2017 -0700"
      },
      "message": "Make native field operations call instrumentation listeners.\n\nPreviously native reads and writes of fields would not be reported to\ninstrumentation listeners.\n\nWe filter these events out from the debugger since currently the\ndebugger will deadlock if it tries to propagate them through JDWP.\n\nBug: 62712031\n\nTest: ./test.py --host --trace -j40\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost\nTest: Manual\nChange-Id: Ibc75248bdca06537d8b4ff7bb890546136ffa161\n"
    },
    {
      "commit": "d76615851af31791c7b1549e8c4609152237b9ce",
      "tree": "e438a8cb0892e02768c55c2bc99f8be1d00abacb",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 01 13:48:16 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 07 11:10:50 2017 -0700"
      },
      "message": "Handler-ize InstrumentationListener and related code\n\nWe are going to be making instrumentation listeners that can cause\nsuspensions during their running. We explicitly handler-ize all the\ninstrumentation listener functions in order to ensure this is safe.\n\nBug: 34414073\nTest: ./test.py --host --ntrace --trace -j40\nChange-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "77d8a1c3572afb38542cb5a2b3516674a182ce48",
      "tree": "cc8d5d0bdc7b656a73beb5d65ca660e36a0fe22e",
      "parents": [
        "6b90142986f76436503bcdca37ace6537ba8f0d4"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:53:19 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Apr 26 10:07:39 2017 +0000"
      },
      "message": "Revert^2 \"ART: Support for SourceDebugExtension\"\n\nThis reverts commit 6530cab77a36d6d284c9d61084e39cd2c7fb91f8.\n\nBug: 30109642\nBug: 37560145\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --test org.apache.harmony.jpda.tests.jdwp.ReferenceType.SourceDebugExtensionTest\nChange-Id: I74cacb351fb7b181c5a17e004914d6d8bdcaaa48\n"
    },
    {
      "commit": "6530cab77a36d6d284c9d61084e39cd2c7fb91f8",
      "tree": "d04da8c615716cabac429319a124b013ff0a39e4",
      "parents": [
        "40dc110da3d951465bd2e1ea80ccec8bf99bddaa"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:32:00 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 14:41:31 2017 +0100"
      },
      "message": "Revert \"ART: Support for SourceDebugExtension\"\n\nThis reverts commit 70a45017d6371521c251d67a9aac7d1c86fb6a06.\n\nPending fix for run-jdwp-tests.sh --mode\u003ddevice.\n\nBug: 30109642\nTest: art/tools/run-jdwp-tests.sh\n\nChange-Id: I62f84e0fb09b6fe280ca6b518fbd2bc431318a56\n"
    },
    {
      "commit": "40dc110da3d951465bd2e1ea80ccec8bf99bddaa",
      "tree": "edc4e6d103606bc2f9379060c90f5fdd4bf588db",
      "parents": [
        "5a0336dd8926e1ddee517f7bf39fd6ed3c68f656",
        "70a45017d6371521c251d67a9aac7d1c86fb6a06"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 08:05:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 24 08:06:00 2017 +0000"
      },
      "message": "Merge \"ART: Support for SourceDebugExtension\""
    },
    {
      "commit": "cdd798de1b2e7807f1cab8ebbfbb165069beae6b",
      "tree": "3cd00e41bdc8972936f39e6ec7f3cd262b45fa1e",
      "parents": [
        "2203253254e18ebde386740d3c841c04c432a42e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 18 18:28:51 2017 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 19 10:16:45 2017 +0200"
      },
      "message": "Follow-up to 70d60275cc2860bde50e5f9c5b151e94f745ae14\n\nTest: make -j build-art-host\nChange-Id: Id6e81518041bd64dec537ff3da2fa049d39b27d0\n"
    },
    {
      "commit": "70a45017d6371521c251d67a9aac7d1c86fb6a06",
      "tree": "f9352ab3e446094013fd986fcfa10e6ed5ea26ea",
      "parents": [
        "1cae72e6cfc0b4cd4ad20467dfea243139296998"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 30 16:30:31 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Apr 18 14:05:55 2017 +0100"
      },
      "message": "ART: Support for SourceDebugExtension\n\nAdds support for reading SourceDebugExtension class annotation from\nDEX files.\n\nBug: 30109642\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --test org.apache.harmony.jpda.tests.jdwp.ReferenceType.SourceDebugExtensionTest\nChange-Id: I2187a2776953a21d36f8b2d165bef6733c02811e\n"
    }
  ],
  "next": "70d60275cc2860bde50e5f9c5b151e94f745ae14"
}
