)]}'
{
  "log": [
    {
      "commit": "4060786d8fa8c0c63c751a837decce4f95a33112",
      "tree": "7ce0fcebc6399c5c672569dcf7aa3dc67d503978",
      "parents": [
        "3ff45bf767f4f1baf858e2220e36acffa97b0383"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:16:24 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 09:07:24 2019 +0000"
      },
      "message": "Revert^2 \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit b2a8964f4218c2c52dacf599ebf5cf69f8753bf0.\n\nIt turns out that transitioning from instrumentation trampolines and\ninterpreter trampolines interacts in a racy way with single thread\ndeoptimization. This caused tests that perform this transition\nrepeatedly to be flaky when run with the --trace. Since it is expected\nto be rare that one traces at the same time they are performing JVMTI\nfunctions (since JVMTI is a superset of trace behaviors) we solved\nthis by simply not allowing the transition.\n\nReason for revert: Prevented unsafe transition between entry-exit\n                   trampolines and interpreter only.\nBug: 131865028\nBug: 132283660\nTest: ./test.py --host --trace --ntrace\nTest: echo \"#!/bin/bash\" \u003e run-one-test.sh\n      echo \"./art/test/run-test --dev --jit --trace --64 1956-pop-frame-jit-calling 2\u003e\u00261\" \u003e\u003e run-one-test.sh\n      chmod u+x run-one-test.sh\n      ./art/tools/parallel_run.py -j20 ./run-one-test.sh\n\nChange-Id: Id496b272f353a5a5e000574c107a97d67405d54b\n"
    },
    {
      "commit": "b2a8964f4218c2c52dacf599ebf5cf69f8753bf0",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "c8c7e0659a76a951f3ab110ed9b7f37777448d36"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 06 18:05:55 2019 +0000"
      },
      "message": "Revert \"Correctly handle thread deopt with thread-specific JVMTI events\"\n\nThis reverts commit c8c7e0659a76a951f3ab110ed9b7f37777448d36.\n\nTest: none.\nReason for revert: Causes art-tracing to flake/fail pop-frame tests.\nBug: 131865028\n\nChange-Id: I16bda461da94405f372b6b0be54ac4b4efb08fda\n"
    },
    {
      "commit": "c8c7e0659a76a951f3ab110ed9b7f37777448d36",
      "tree": "8a77fac99879f781d3c4eeaa8c79b3d9eb7bbc13",
      "parents": [
        "765b2a04576f4e985a88165456f5ee55cdfe56b8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu May 02 17:35:02 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 03 19:56:27 2019 +0000"
      },
      "message": "Correctly handle thread deopt with thread-specific JVMTI events\n\nWe were incorrectly treating some JVMTI events as still requiring\nglobal deopt even though that requirment had been lifted. This meant\nthat if one sets thread-specific event notification requests on\nmultiple threads only some of them will actually be deoptimized. This\ncould cause events to be missed if the relevant methods/threads had\nbeen jitted.\n\nTest: ./test.py --host --jit-on-first-use\nTest: ./test.py\nBug: 131865028\n\nChange-Id: Ib196faa635e61262eea7ccc576dc0d700b3e7eff\n"
    }
  ]
}
