)]}'
{
  "commit": "57f4fa5bd455c1f701f9f0e70e95b5ea15780009",
  "tree": "81b9eb8e777ba7b46fd90cfd57d3a061e02b5b93",
  "parents": [
    "e2da38da44f667db807372834aba2a5401dc94cd"
  ],
  "author": {
    "name": "Mythri Alle",
    "email": "mythria@google.com",
    "time": "Mon Feb 02 13:32:28 2026 +0000"
  },
  "committer": {
    "name": "Mythri Alle",
    "email": "mythria@google.com",
    "time": "Wed Feb 04 05:20:35 2026 -0800"
  },
  "message": "Don\u0027t send method exit trace events multiple times\n\nJVMTI method exit event listeners expect to be called multiple times for\nthe same method to implement features like pop frame and force return.\nWe shouldn\u0027t generate multiple trace events for these events though. To\nhandle this, separate the jvmti method exit listeners from the trace\nevent listeners. Use a bit in the shadow frame flags to check if a\nmethod exit event is already called and make sure only one trace event\nis generated for a method exit.\n\nBug: 455851515\nTest: art/test.py --trace -t 1968/1969/1970\nFlag: EXEMPT BUGFIX\nChange-Id: I20d446a3ac4ef991d3df719cf1f598e50ecf163f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1d4e26db31e5cbeef7ace5ab6bbd2aa5d67de165",
      "old_mode": 33188,
      "old_path": "runtime/instrumentation.cc",
      "new_id": "1e90935fdf77228903f621a33d937bf8e3c99f54",
      "new_mode": 33188,
      "new_path": "runtime/instrumentation.cc"
    },
    {
      "type": "modify",
      "old_id": "88076e4c23a74115493ab6b14a439a1947027b5a",
      "old_mode": 33188,
      "old_path": "runtime/instrumentation.h",
      "new_id": "c37c883973fb4a0dc65fd7a8ba880bfa3f3f0b83",
      "new_mode": 33188,
      "new_path": "runtime/instrumentation.h"
    },
    {
      "type": "modify",
      "old_id": "6542cfdb3b27a535b808e85acd083aff39a67077",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/interpreter.cc",
      "new_id": "ba554344419332fc8971cc3ffb2ccd603538b37b",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/interpreter.cc"
    },
    {
      "type": "modify",
      "old_id": "cd98c894ee8701008ff2948e924f2339ef630e79",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/interpreter_common.cc",
      "new_id": "eb9e5256e8b3f61da8339cda13ae2a9db3c3a83b",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/interpreter_common.cc"
    },
    {
      "type": "modify",
      "old_id": "bf298ff91e035852066c300960dda81fd21e6580",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/shadow_frame.h",
      "new_id": "149b2923755f83f10179ea7ec7383d7ad44c8e66",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/shadow_frame.h"
    },
    {
      "type": "modify",
      "old_id": "4ffaa591e3ab8315af32efa51c8e1e6b1c21aa6d",
      "old_mode": 33188,
      "old_path": "runtime/trace.cc",
      "new_id": "5e13861582c14c1e2f49b14e5a865cfd716a7fe3",
      "new_mode": 33188,
      "new_path": "runtime/trace.cc"
    }
  ]
}
