)]}'
{
  "commit": "7585b91bfc77b8e4b821ccfa716fa86e46455275",
  "tree": "b37517925ac9ab701cbae7f446dc8bb624ddd492",
  "parents": [
    "0d2b2ad6cd9ca650d7a3f85a42afaf518cbfa4e0"
  ],
  "author": {
    "name": "Alex Light",
    "email": "allight@google.com",
    "time": "Mon Oct 30 15:33:58 2017 -0700"
  },
  "committer": {
    "name": "Alex Light",
    "email": "allight@google.com",
    "time": "Mon Oct 30 16:16:41 2017 -0700"
  },
  "message": "Prevent races with GC when transferring objects between threads\n\nWe could have races with the GC when JVMTI code transfers a local\nreference from one thread to another. This race would happen if a GC\nwas currently underway causing an unmoved reference to be transferred\nto a thread that has already fixed up all of its references. This\nmeant that the receiving thread would now have a reference belonging\nto the from-space on its stack.\n\nThis could cause memory errors and CHECK failures.\n\nTo fix this we make sure to run all checkpoints where local references\nmight be transferred in a GC-critical-section.\n\nWe also needed to fix a too-strict check in the method verifier where\nwe were incorrectly asserting that suspension be allowable when in\nfact it was not necessary in all cases.\n\nTest: ./test.py --host -j50\nBug: 67838964\n\nChange-Id: Ib9166cc233d3c1b488864c0aff33246a3f99e436\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41679daaa152ab8e7f6fba77f6d44af9887f1106",
      "old_mode": 33188,
      "old_path": "openjdkjvmti/ti_method.cc",
      "new_id": "fccc0b1197fd46fdce87505190fcf56bdca59f76",
      "new_mode": 33188,
      "new_path": "openjdkjvmti/ti_method.cc"
    },
    {
      "type": "modify",
      "old_id": "5881f8c7a91069833c704c265d69b584f9bbe167",
      "old_mode": 33188,
      "old_path": "openjdkjvmti/ti_monitor.cc",
      "new_id": "7db0566a2efa4a49487f472b26d44e957ae7d93d",
      "new_mode": 33188,
      "new_path": "openjdkjvmti/ti_monitor.cc"
    },
    {
      "type": "modify",
      "old_id": "e346e16f924584f33874a5aea89ea780b7185d15",
      "old_mode": 33188,
      "old_path": "openjdkjvmti/ti_stack.cc",
      "new_id": "b43eaa028635d1aba6bbdcf9be7dee71607ba594",
      "new_mode": 33188,
      "new_path": "openjdkjvmti/ti_stack.cc"
    },
    {
      "type": "modify",
      "old_id": "99dea540e523a2822d4f61370da0941ad3dce7fc",
      "old_mode": 33188,
      "old_path": "openjdkjvmti/ti_thread.cc",
      "new_id": "6d075a6b7be8fd9c6f86a33a32ebb7e44f1cc396",
      "new_mode": 33188,
      "new_path": "openjdkjvmti/ti_thread.cc"
    },
    {
      "type": "modify",
      "old_id": "09b4cabcfcb2678e0d2de7192dd5687d901b8821",
      "old_mode": 33188,
      "old_path": "openjdkjvmti/ti_thread.h",
      "new_id": "341bffe51ebd15443441fe522236aca869366c84",
      "new_mode": 33188,
      "new_path": "openjdkjvmti/ti_thread.h"
    },
    {
      "type": "modify",
      "old_id": "00331671602f5cc1c215099d28cec81b32d5bf05",
      "old_mode": 33188,
      "old_path": "runtime/verifier/method_verifier.cc",
      "new_id": "cdea0e5e026f51ff4122f643115870ee16fd5fb2",
      "new_mode": 33188,
      "new_path": "runtime/verifier/method_verifier.cc"
    },
    {
      "type": "modify",
      "old_id": "4ebe151f76250fb6020bb99928d4705d61c4113f",
      "old_mode": 33188,
      "old_path": "runtime/verifier/reg_type_cache.cc",
      "new_id": "0029eb90a354ac58d70d1dcc829e7bfaca2ffb62",
      "new_mode": 33188,
      "new_path": "runtime/verifier/reg_type_cache.cc"
    },
    {
      "type": "modify",
      "old_id": "74d9e9de111243575c08875d0098359d8b84868d",
      "old_mode": 33188,
      "old_path": "runtime/verifier/reg_type_cache.h",
      "new_id": "cb16b15054823220623e58aba701f9769660db7e",
      "new_mode": 33188,
      "new_path": "runtime/verifier/reg_type_cache.h"
    }
  ]
}
