)]}'
{
  "commit": "301f6c8019bea813b039c3d376a6464a0e117dce",
  "tree": "9f357af4032039785de2e13bfb63a71a01aad4cb",
  "parents": [
    "dfd875d015fb67671a2374c229e2159388d37693"
  ],
  "author": {
    "name": "Keith Randall",
    "email": "khr@golang.org",
    "time": "Fri Sep 10 15:24:16 2021 -0700"
  },
  "committer": {
    "name": "Keith Randall",
    "email": "khr@golang.org",
    "time": "Mon Sep 27 20:42:34 2021 +0000"
  },
  "message": "cmd/compile: keep methods on generic types from being deadcode eliminated\n\nWe currently make dictionaries contain a relocation pointing to\nmethods that generic code might use, so that those methods are not\ndeadcode eliminated. However, with inlining we can end up not using\nthe dictionary, making the reference from the dictionary to the method\nno longer keep the method alive.\n\nFix this by keeping the dictionary alive at generic interface call sites.\nIt\u0027s a bit of overkill, as we only need to keep the dictionary statically\nalive. We don\u0027t actually need it dynamically alive, which is what KeepAlive\ndoes. But it works. It ends up generating a LEAQ + stack spill that aren\u0027t\nnecessary, but that\u0027s pretty low overhead.\n\nTo make this work, I needed to stop generating methods on shape types.\nWe should do this anyway, as we shouldn\u0027t ever need them. But currently\nwe do use them! issue44688.go has a test that only works because it calls\na method on a shape type. I\u0027ve disabled that test for now, will work on it\nin a subsequent CL.\n\nFixes #48047\n\nChange-Id: I78968868d6486c1745f51b8b43be0898931432a2\nReviewed-on: https://go-review.googlesource.com/c/go/+/349169\nTrust: Keith Randall \u003ckhr@golang.org\u003e\nTrust: Dan Scales \u003cdanscales@google.com\u003e\nRun-TryBot: Keith Randall \u003ckhr@golang.org\u003e\nTryBot-Result: Go Bot \u003cgobot@golang.org\u003e\nReviewed-by: Dan Scales \u003cdanscales@google.com\u003e\nReviewed-by: Than McIntosh \u003cthanm@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8a1540307594c741932e2d957bd2ee73ae5cbea",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/helpers.go",
      "new_id": "83830a5d3154ea76b6ff91e85fe4af93223f54ed",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/helpers.go"
    },
    {
      "type": "modify",
      "old_id": "772fcca46a2cf2f754ea728a6412a798ec2ea483",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/stencil.go",
      "new_id": "e49702c04cb47f3d4e3340c611ab6f5368ea589d",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/stencil.go"
    },
    {
      "type": "modify",
      "old_id": "f7115904fe1837ae4b63e1426603d54a290865e1",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/noder/transform.go",
      "new_id": "9076db282276ad49cb9f6fa7bd239b37d8d4edeb",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/noder/transform.go"
    },
    {
      "type": "modify",
      "old_id": "295dc2cdfa4a65809484c7179e71e61d709bf3dd",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/reflectdata/reflect.go",
      "new_id": "8503dee60d8cb87d31a9f6bff7f2d534c6e7f6ce",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/reflectdata/reflect.go"
    },
    {
      "type": "modify",
      "old_id": "e5bf6cf0b5e3670a8df0c827f1385ff40251f54d",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/walk/expr.go",
      "new_id": "c452cecbed4df970f8f186e31771f53678479636",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/walk/expr.go"
    },
    {
      "type": "modify",
      "old_id": "5ebce72628ff6157e09ea9a4cbc75f7e6291643c",
      "old_mode": 33188,
      "old_path": "test/typeparam/issue44688.go",
      "new_id": "98260694dc1ab0ccfb020711e88aba0bbb81c6f2",
      "new_mode": 33188,
      "new_path": "test/typeparam/issue44688.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1bff65a9494847416b633f7bbc34b1926ab71c90",
      "new_mode": 33188,
      "new_path": "test/typeparam/issue48047.go"
    }
  ]
}
