diff options
author | Josh Bleecher Snyder <josharian@gmail.com> | 2017-04-21 07:51:41 -0700 |
---|---|---|
committer | Josh Bleecher Snyder <josharian@gmail.com> | 2017-04-21 16:10:29 +0000 |
commit | 30940e2cc2f4598b4a9d237c34aac402ee17a71e (patch) | |
tree | da493f9934ec00602d7c1159c14f1a0ee9add569 /src/cmd/compile/internal/types/sym.go | |
parent | 5aebeaaca2c8221cc9ad0a0c8d8af46cd453955b (diff) | |
download | go-30940e2cc2f4598b4a9d237c34aac402ee17a71e.tar.gz go-30940e2cc2f4598b4a9d237c34aac402ee17a71e.zip |
cmd/compile: move Linksym, linksymname, and isblanksym to types package
Response to code review feedback on CL 40693.
This CL was prepared by:
(1) manually adding new implementations and the Ctxt var to package types
(2) running eg with template:
func before(s *types.Sym) *obj.LSym { return gc.Linksym(s) }
func after(s *types.Sym) *obj.LSym { return s.Linksym() }
(3) running gofmt -r:
gofmt -r 'isblanksym(a) -> a.IsBlank()'
(4) manually removing old implementations from package gc
Passes toolstash-check.
Change-Id: I39c35def7cae5bcbcc7c77253e5d2b066b981dea
Reviewed-on: https://go-review.googlesource.com/41302
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/types/sym.go')
-rw-r--r-- | src/cmd/compile/internal/types/sym.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types/sym.go b/src/cmd/compile/internal/types/sym.go index af6eccc485..92be6ca1a6 100644 --- a/src/cmd/compile/internal/types/sym.go +++ b/src/cmd/compile/internal/types/sym.go @@ -59,3 +59,27 @@ func (sym *Sym) SetUniq(b bool) { sym.flags.set(symUniq, b) } func (sym *Sym) SetSiggen(b bool) { sym.flags.set(symSiggen, b) } func (sym *Sym) SetAsm(b bool) { sym.flags.set(symAsm, b) } func (sym *Sym) SetAlgGen(b bool) { sym.flags.set(symAlgGen, b) } + +func (sym *Sym) IsBlank() bool { + return sym != nil && sym.Name == "_" +} + +func (sym *Sym) LinksymName() string { + if sym.IsBlank() { + return "_" + } + if sym.Linkname != "" { + return sym.Linkname + } + return sym.Pkg.Prefix + "." + sym.Name +} + +func (sym *Sym) Linksym() *obj.LSym { + if sym == nil { + return nil + } + if sym.Lsym == nil { + sym.Lsym = Ctxt.Lookup(sym.LinksymName()) + } + return sym.Lsym +} |