diff options
author | Matthew Dempsky <mdempsky@google.com> | 2021-01-04 02:24:48 -0800 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2021-01-10 08:02:16 +0000 |
commit | c9c26d7ffb3c4077ffaa80f7c8e2d550528e1445 (patch) | |
tree | 21e3971160c7b871237f8fb9453efb25c4d7f8f5 /src/cmd/compile/internal/escape | |
parent | 950cf4d46c5bc343644e7ef08828b9e5114d4676 (diff) | |
download | go-c9c26d7ffb3c4077ffaa80f7c8e2d550528e1445.tar.gz go-c9c26d7ffb3c4077ffaa80f7c8e2d550528e1445.zip |
[dev.regabi] cmd/compile: use ClosureVars for method value wrappers
Similar to with regular closures, we can change method value wrappers
to use ClosureVars and allow SSA construction to take care of wiring
it up appropriately.
Change-Id: I05c0b1bcec4e24305324755df35b7bc5b8a6ce7a
Reviewed-on: https://go-review.googlesource.com/c/go/+/281353
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/escape')
-rw-r--r-- | src/cmd/compile/internal/escape/escape.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/escape/escape.go b/src/cmd/compile/internal/escape/escape.go index 5df82d8cdc..9b9b8f6a58 100644 --- a/src/cmd/compile/internal/escape/escape.go +++ b/src/cmd/compile/internal/escape/escape.go @@ -583,6 +583,9 @@ func (e *escape) exprSkipInit(k hole, n ir.Node) { if n.Class == ir.PFUNC || n.Class == ir.PEXTERN { return } + if n.IsClosureVar() && n.Defn == nil { + return // ".this" from method value wrapper + } e.flow(k, e.oldLoc(n)) case ir.ONAMEOFFSET: |