)]}'
{
  "commit": "392336f94ea783c69ac8ed43bf716ebdc0fc71cd",
  "tree": "e4876becb5dcf8bc833cd817436afbb7561924b3",
  "parents": [
    "400f58a0101717639dafea2f80740bbfb250573c"
  ],
  "author": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Thu Mar 26 15:50:22 2015 -0400"
  },
  "committer": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Thu Mar 26 20:38:59 2015 +0000"
  },
  "message": "runtime: disallow write barriers in handoffp and callees\n\nhandoffp by definition runs without a P, so it\u0027s not allowed to have\nwrite barriers. It doesn\u0027t have any right now, but mark it\nnowritebarrier to disallow any creeping in in the future. handoffp in\nturns calls startm, newm, and newosproc, all of which are \"below Go\"\nand make sense to run without a P, so disallow write barriers in these\nas well.\n\nFor most functions, we\u0027ve done this because they may race with\nstoptheworld() and hence must not have write barriers. For these\nfunctions, it\u0027s a little different: the world can\u0027t stop while we\u0027re\nin handoffp, so this race isn\u0027t present. But we implement this\nrestriction with a somewhat broader rule that you can\u0027t have a write\nbarrier without a P. We like this rule because it\u0027s simple and means\nthat our write barriers can depend on there being a P, even though\nthis rule is actually a little broader than necessary. Hence, even\nthough there\u0027s no danger of the race in these functions, we want to\nadhere to the broader rule.\n\nChange-Id: Ie22319c30eea37d703eb52f5c7ca5da872030b88\nReviewed-on: https://go-review.googlesource.com/8130\nRun-TryBot: Austin Clements \u003caustin@google.com\u003e\nReviewed-by: Minux Ma \u003cminux@golang.org\u003e\nTryBot-Result: Gobot Gobot \u003cgobot@golang.org\u003e\nReviewed-by: Rick Hudson \u003crlh@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6a60314494287de00c55c48a0ef32e58d4c9201f",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_darwin.go",
      "new_id": "f6eb557b81ae0738ae2e2374a01c6cfd4578b3c5",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_darwin.go"
    },
    {
      "type": "modify",
      "old_id": "c94b1411b089f2fe9a0e9705955fdde017634f62",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_dragonfly.go",
      "new_id": "33d87ebdd984dd2b625a72b66ef8f40fc5555910",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_dragonfly.go"
    },
    {
      "type": "modify",
      "old_id": "ae9f78c27b304788bb935c58e8859ac221e6fce3",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_freebsd.go",
      "new_id": "10c72d1d7ee831307f5888cb6daf3b6fb41512c4",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_freebsd.go"
    },
    {
      "type": "modify",
      "old_id": "44da57ab0b6cf0ac8b52c3afabfd410ce226456f",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_linux.go",
      "new_id": "190206dcb6499e99f5e0874289127f2f97c49a58",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_linux.go"
    },
    {
      "type": "modify",
      "old_id": "b3759c140815b349f5b7f5afbb5a0050cbf3fffb",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_nacl.go",
      "new_id": "238de5b441da18ef696167f3eeee562102a81c82",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_nacl.go"
    },
    {
      "type": "modify",
      "old_id": "f2e6ef682e28ca914a8cd33dae3618ffe75c7f15",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_netbsd.go",
      "new_id": "9a401550baba0756eecd3b42bb949992ce15f336",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_netbsd.go"
    },
    {
      "type": "modify",
      "old_id": "92a19fe31b4550fb0a1d57bbc54c929b1d04129d",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_openbsd.go",
      "new_id": "1f5ac4aa31a1f670577cac52661286d7b278eddc",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_openbsd.go"
    },
    {
      "type": "modify",
      "old_id": "bba1f17e328dc7f92f981643f555468a6caa6721",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_plan9.go",
      "new_id": "30621ad56128c62e3aec2790653d1b484be2eca6",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_plan9.go"
    },
    {
      "type": "modify",
      "old_id": "4ae1a8411b6512ef7402ae9dc63bbfe2ab86c7c0",
      "old_mode": 33188,
      "old_path": "src/runtime/os1_windows.go",
      "new_id": "609e4307113b9068b8e7bbf40928b2118d7b9cd8",
      "new_mode": 33188,
      "new_path": "src/runtime/os1_windows.go"
    },
    {
      "type": "modify",
      "old_id": "8c65567b8374c0939d5e370782975c511ec6c67b",
      "old_mode": 33188,
      "old_path": "src/runtime/os3_solaris.go",
      "new_id": "ddec87e7e2a2a5e059ca8d6d41f024a8a8755df5",
      "new_mode": 33188,
      "new_path": "src/runtime/os3_solaris.go"
    },
    {
      "type": "modify",
      "old_id": "4459802b158226626fd3b484a8ea44af3d78c35d",
      "old_mode": 33188,
      "old_path": "src/runtime/proc1.go",
      "new_id": "690a97891930fa849c41e1bd1c00d27d82004f2c",
      "new_mode": 33188,
      "new_path": "src/runtime/proc1.go"
    }
  ]
}
