)]}'
{
  "log": [
    {
      "commit": "3b08bcce2d9c32e469ce11d247bed46439977cac",
      "tree": "cc719c563515446f647c01fbf170302ca349996c",
      "parents": [
        "0054aa59c50374751cc65e8de31a1d813912e67d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 11 09:48:51 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 11 19:41:04 2019 +0000"
      },
      "message": "Fixup inconsistency due to change in Plugin loading requirements.\n\nSome time ago plugin loading was changed to always occur with the\nthread in kNative (see commit 3a256b1d3689). This adds asserts that\nto plugin loading that the state is correct, fixes an incorrect\nlock-annotation and fixes a test plugin that was missed.\n\nTest: ./test.py --host\nTest: atest CtsJdwpTunnelHostTestCases\nTest: atest CtsJvmtiAttachingHostTestCases\nChange-Id: Ib27ab58e9a357fa308a33da13a86e8d65575e9f4\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": "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": "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": "673726b39689afe5496bbb0bac5ec52b4d50d334",
      "tree": "f80a573d8c12c60efa757f5c8a02a6cc310857b3",
      "parents": [
        "df810b9c8d5013cd6f5799a75b6aaf0f3991210c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 21 14:19:15 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 21 14:46:59 2018 -0700"
      },
      "message": "Add plugin for testing method tracing speed.\n\nIt can be useful to test how much overhead the ART method tracing\ninfrastructure has. Since normal method tracing APIs (eg\n-Xmethod-trace, JVMTI events) have significant overhead for\nsynchronization or other reasons we created a simple plugin that\nbegins method tracing but doesn\u0027t record or even look at the trace\nevents. This lets us have a rough idea how much simply sending these\nevents costs us.\n\nTest: ./test/run-test --host \\\n         --runtime-option \\\n         -Xplugin:$ANDROID_HOST_OUT/lib/libtracefast-trampolined.so \\\n         001-Main\n\nChange-Id: I1fac4cdd0dfa780cb4efe195025b3d29e8cf619c\n"
    }
  ]
}
