)]}'
{
  "commit": "769d4b68ef72125de068a060220c3dbd9ba65c43",
  "tree": "9a54b697bcc1a1fb24c81bc06376e255c000693b",
  "parents": [
    "4e27aa6cd2c3f579328e3b490780664ade34053d"
  ],
  "author": {
    "name": "Than McIntosh",
    "email": "thanm@google.com",
    "time": "Wed Feb 24 12:55:52 2021 -0500"
  },
  "committer": {
    "name": "Than McIntosh",
    "email": "thanm@google.com",
    "time": "Tue Mar 23 23:08:19 2021 +0000"
  },
  "message": "cmd/compile: wrap/desugar defer calls for register abi\n\nAdds code to the compiler\u0027s \"order\" phase to rewrite go and defer\nstatements to always be argument-less. E.g.\n\n defer f(x,y)       \u003d\u003e     x1, y1 :\u003d x, y\n\t\t\t   defer func() { f(x1, y1) }\n\nThis transformation is not beneficial on its own, but it helps\nsimplify runtime defer handling for the new register ABI (when\ninvoking deferred functions on the panic path, the runtime doesn\u0027t\nneed to manage the complexity of determining which args to pass in\nregister vs memory).\n\nThis feature is currently enabled by default if GOEXPERIMENT\u003dregabi or\nGOEXPERIMENT\u003dregabidefer is in effect.\n\nIncluded in this CL are some workarounds in the runtime to insure that\n\"go\" statement targets in the runtime are argument-less already (since\nwrapping them can potentially introduce heap-allocated closures, which\nare currently not allowed). The expectation is that these workarounds\nwill be temporary, and can go away once we either A) change the rules\nabout heap-allocated closures, or B) implement some other scheme for\nhandling go statements.\n\nChange-Id: I01060d79a6b140c6f0838d6e6813f807ccdca319\nReviewed-on: https://go-review.googlesource.com/c/go/+/298669\nTrust: Than McIntosh \u003cthanm@google.com\u003e\nRun-TryBot: Than McIntosh \u003cthanm@google.com\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Cherry Zhang \u003ccherryyz@google.com\u003e\nReviewed-by: David Chase \u003cdrchase@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2d62b22d8c7da8eea20c45dc8a96c2486ae2d5b7",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/ir/expr.go",
      "new_id": "49b9fa8e54ace578f7ae9082fcf2bd42a729b256",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/ir/expr.go"
    },
    {
      "type": "modify",
      "old_id": "d7d610581670e8b953025812697083d129fd9e34",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/walk/closure.go",
      "new_id": "2194e1c5b0c7a3fd9f5ed01a57bb1e8aeb613238",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/walk/closure.go"
    },
    {
      "type": "modify",
      "old_id": "fe0b6a0eff4ec9ff15b28840f5c033a4efd2daca",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/walk/order.go",
      "new_id": "5a687d8e34456d28326180f436121a92759e10f0",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/walk/order.go"
    },
    {
      "type": "modify",
      "old_id": "836ac6b6abd2465043692d6a617bc32c0b441d1f",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/walk/stmt.go",
      "new_id": "773620bea6c137e1fe64c41ab979da3cbfb846e8",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/walk/stmt.go"
    },
    {
      "type": "modify",
      "old_id": "2a33f0d84ab76af81ddb23b51fd2f1b85d0e6935",
      "old_mode": 33188,
      "old_path": "src/cmd/internal/objabi/util.go",
      "new_id": "e066311cd1a06ff8eae4a4c5c26aa3e1ad9daa8b",
      "new_mode": 33188,
      "new_path": "src/cmd/internal/objabi/util.go"
    },
    {
      "type": "modify",
      "old_id": "c03cf136f2aa84debde7843da6076e58f8d43830",
      "old_mode": 33188,
      "old_path": "src/runtime/export_test.go",
      "new_id": "1650541fda7af253919b2875aea7fffc9e3f1e05",
      "new_mode": 33188,
      "new_path": "src/runtime/export_test.go"
    },
    {
      "type": "modify",
      "old_id": "6927e90daadafcb06a61995cefb0e7b19b2e56e6",
      "old_mode": 33188,
      "old_path": "src/runtime/mgc.go",
      "new_id": "4b99d755c471899f48e4c706714e96cbc273eb3c",
      "new_mode": 33188,
      "new_path": "src/runtime/mgc.go"
    },
    {
      "type": "modify",
      "old_id": "46a40632bf482a8896ef6fe916e36c94fd6af77e",
      "old_mode": 33188,
      "old_path": "src/runtime/mgcscavenge.go",
      "new_id": "6632bed2b35f9ce95fc9f1d3cc0d4a59f241c89b",
      "new_mode": 33188,
      "new_path": "src/runtime/mgcscavenge.go"
    },
    {
      "type": "modify",
      "old_id": "76bc4246e59891985e999ebf2b9d9b5eae82e5b5",
      "old_mode": 33188,
      "old_path": "src/runtime/mgcsweep.go",
      "new_id": "f3d6c6caa479e2fed09fc90b3ba82f33411b1d7a",
      "new_mode": 33188,
      "new_path": "src/runtime/mgcsweep.go"
    },
    {
      "type": "modify",
      "old_id": "4a959d9aba418b35336327f199bb40aefb7bedab",
      "old_mode": 33188,
      "old_path": "src/runtime/race/output_test.go",
      "new_id": "2a2197ae262a5fa89d82d2815aff953731eb2ca3",
      "new_mode": 33188,
      "new_path": "src/runtime/race/output_test.go"
    },
    {
      "type": "modify",
      "old_id": "d52ce7f0075017a7669d0a4fbdb6515291055379",
      "old_mode": 33188,
      "old_path": "test/live.go",
      "new_id": "6d1a4754922e557e0c9037c03885b799e577fc78",
      "new_mode": 33188,
      "new_path": "test/live.go"
    },
    {
      "type": "modify",
      "old_id": "d999f1879029a5ca40c64fbe42f0053cd212e5ea",
      "old_mode": 33188,
      "old_path": "test/run.go",
      "new_id": "cc2fcf351868b130cdca5619cb96700a8bf41424",
      "new_mode": 33188,
      "new_path": "test/run.go"
    }
  ]
}
