)]}'
{
  "commit": "c19759aa487f7d6f479daa00e7462425f4efc481",
  "tree": "a580e1b01eeb2ecdb81d383e922ad8bb155095b5",
  "parents": [
    "e69f02265c74529a368a2ff27fdce4aeb3483e8b"
  ],
  "author": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Tue Apr 13 08:44:56 2021 -0400"
  },
  "committer": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Tue Apr 13 21:13:12 2021 +0000"
  },
  "message": "runtime: eliminate externalthreadhandler\n\nThis function is no longer used.\n\nEliminating this actually fixes several problems:\n\n- It made assumptions about what registers memclrNoHeapPointers would\n  preserve. Besides being an abstraction violation and lurking\n  maintenance issue, this actively became a problem for regabi because\n  the call to memclrNoHeapPointers now happens through an ABI wrapper,\n  which is generated by the compiler and hence we can\u0027t easily control\n  what registers it clobbers.\n\n- The amd64 implementation (at least), does not interact with the host\n  ABI correctly. Notably, it doesn\u0027t save many of the registers that\n  are callee-save in the host ABI but caller-save in the Go ABI.\n\n- It interacts strangely with the NOSPLIT checker because it allocates\n  an entire M and G on its stack. It worked around this on arm64, and\n  happened to do things the NOSPLIT checker couldn\u0027t track on 386 and\n  amd64, and happened to be *4 bytes* below the limit on arm (so any\n  addition to the m or g structs would cause a NOSPLIT failure). See\n  CL 309031 for a more complete explanation.\n\nFixes #45530.\nUpdates #40724.\n\nChange-Id: Ic70d4d7e1c17f1d796575b3377b8529449e93576\nReviewed-on: https://go-review.googlesource.com/c/go/+/309634\nTrust: Austin Clements \u003caustin@google.com\u003e\nRun-TryBot: Austin Clements \u003caustin@google.com\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Michael Pratt \u003cmpratt@google.com\u003e\nReviewed-by: Michael Knyszek \u003cmknyszek@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4229ae2c026663b9d62bc15fe1395d32b964134a",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/objabi/funcid.go",
      "new_id": "2634106cdf31ce7e26c688d0a34b8b2bf8dad243",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/objabi/funcid.go"
    },
    {
      "type": "modify",
      "old_id": "dc1b53010a98291b3f6d639d7cee426547cfade0",
      "old_mode": 33188,
      "old_path": "src/cmd/link/internal/ld/pe.go",
      "new_id": "3ed8943828f7e72990e8f8833b880d3705fa37c9",
      "new_mode": 33188,
      "new_path": "src/cmd/link/internal/ld/pe.go"
    },
    {
      "type": "modify",
      "old_id": "5e090ef09ebf2b8f6a6fba8efe1045943e96bb49",
      "old_mode": 33188,
      "old_path": "src/runtime/memclr_386.s",
      "new_id": "d2ef17f7cee0a1f8ec3278b3af59f96a51f90797",
      "new_mode": 33188,
      "new_path": "src/runtime/memclr_386.s"
    },
    {
      "type": "modify",
      "old_id": "b4bc9988ecafacebb26f8fe2e613a36135fad8bd",
      "old_mode": 33188,
      "old_path": "src/runtime/memclr_amd64.s",
      "new_id": "5d2bebb901bfd94e7c49aa33ef609c8135a6639d",
      "new_mode": 33188,
      "new_path": "src/runtime/memclr_amd64.s"
    },
    {
      "type": "modify",
      "old_id": "5bff4b6646eef9b574766ba7971f52c96d34e43e",
      "old_mode": 33188,
      "old_path": "src/runtime/os_windows.go",
      "new_id": "bc1240f8bb3b8385e5fff44457f2a375eb7d6b20",
      "new_mode": 33188,
      "new_path": "src/runtime/os_windows.go"
    },
    {
      "type": "modify",
      "old_id": "a382cf600282fe9a7252f5558616ed746d15764c",
      "old_mode": 33188,
      "old_path": "src/runtime/symtab.go",
      "new_id": "c0630c874ef47d2763d830190b2d9d7d2beb31dd",
      "new_mode": 33188,
      "new_path": "src/runtime/symtab.go"
    },
    {
      "type": "modify",
      "old_id": "c8839b99768be154d6e7cedd2b0e80277cbcbe9d",
      "old_mode": 33188,
      "old_path": "src/runtime/sys_windows_386.s",
      "new_id": "d6b521ab659ceafb46136cf78390133bc1df9db8",
      "new_mode": 33188,
      "new_path": "src/runtime/sys_windows_386.s"
    },
    {
      "type": "modify",
      "old_id": "df1462b8779d3e26f74859b5b2c9772d39d635e1",
      "old_mode": 33188,
      "old_path": "src/runtime/sys_windows_amd64.s",
      "new_id": "f7250c65a81e1ecaf641bed8b2309ace71525924",
      "new_mode": 33188,
      "new_path": "src/runtime/sys_windows_amd64.s"
    },
    {
      "type": "modify",
      "old_id": "8914a2688faa75162bd5ca35185a11f7083c0ba9",
      "old_mode": 33188,
      "old_path": "src/runtime/sys_windows_arm.s",
      "new_id": "8073fc0198fe15f3b1c8bdd2a67f7bd8e4b57f64",
      "new_mode": 33188,
      "new_path": "src/runtime/sys_windows_arm.s"
    },
    {
      "type": "modify",
      "old_id": "70f628c27d84457800e087e123053743116b0601",
      "old_mode": 33188,
      "old_path": "src/runtime/sys_windows_arm64.s",
      "new_id": "6b28a0c2ef360d6804291c6cd8c64e82fe80a4a4",
      "new_mode": 33188,
      "new_path": "src/runtime/sys_windows_arm64.s"
    }
  ]
}
