)]}'
{
  "commit": "947ff080753c786a74f1cd7aeb09f717bb7074bd",
  "tree": "ae8d4ceb42602b19b62b61205a5bcb70e6ef6ab3",
  "parents": [
    "ad5f8731448f03c59d5fc8d9b5b25ee91d351ba9"
  ],
  "author": {
    "name": "Sebastien Hertz",
    "email": "shertz@google.com",
    "time": "Tue Sep 17 14:10:13 2013 +0200"
  },
  "committer": {
    "name": "Sebastien Hertz",
    "email": "shertz@google.com",
    "time": "Tue Sep 17 15:28:37 2013 +0200"
  },
  "message": "Load shadow frame\u0027s this object only upon instrumentation.\n\nWe used to load the shadow frame\u0027s this object when entering the interpreter\nand push it into thread\u0027s SIRT to make it visible to garbage collector. But\nit is only used by instrumentation listeners.\n\nWe now move this load at each place an instrumentation listener is called. This\navoids loading it when instrumentation is disabled. This also allows to remove\nthe SIRT reference and the push/pop management it implies when entering/exiting\nthe interpreter.\n\nThe performance improvement is 6% in average on our benchmarks suite.\n\nThis CL also makes method Instrumentation::ExceptionCaughtEvent const so we can\nuse a \"const instrumentation::Instrumentation*\" object in interpreter.\n\nChange-Id: I2caccba9a906f244c8057b24031250f9824cc711\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3787e1c75945d4ebd6ab274568bd526054ede02b",
      "old_mode": 33188,
      "old_path": "runtime/instrumentation.cc",
      "new_id": "481cbad3b8400bee848db3d9963f335c3e0e230a",
      "new_mode": 33188,
      "new_path": "runtime/instrumentation.cc"
    },
    {
      "type": "modify",
      "old_id": "6c80b41b642ce58c14ae02dcaabeeba710bf05b2",
      "old_mode": 33188,
      "old_path": "runtime/instrumentation.h",
      "new_id": "28f95553f8eae868b71197f22a2fbf024861f4a9",
      "new_mode": 33188,
      "new_path": "runtime/instrumentation.h"
    },
    {
      "type": "modify",
      "old_id": "8cd526a79ba1192f0691dd253a7b1cc5cb56e572",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/interpreter_common.h",
      "new_id": "794891e501c60bd49c647f6148a3d2f67ef9427a",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/interpreter_common.h"
    },
    {
      "type": "modify",
      "old_id": "7f4c7c8302282595476bf7d0815fa3b0b2919b77",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/interpreter_goto_table_impl.cc",
      "new_id": "4bef770408331a536054ad10a3ad145ecb0ddfbf",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/interpreter_goto_table_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "5253e9dbbf47c17e9bf58925ded9ec596974ab6b",
      "old_mode": 33188,
      "old_path": "runtime/interpreter/interpreter_switch_impl.cc",
      "new_id": "01a0e4b45715ec4731f0bad76a1e27976fd99e5f",
      "new_mode": 33188,
      "new_path": "runtime/interpreter/interpreter_switch_impl.cc"
    }
  ]
}
