aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types/sym.go
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2017-04-21 07:51:41 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2017-04-21 16:10:29 +0000
commit30940e2cc2f4598b4a9d237c34aac402ee17a71e (patch)
treeda493f9934ec00602d7c1159c14f1a0ee9add569 /src/cmd/compile/internal/types/sym.go
parent5aebeaaca2c8221cc9ad0a0c8d8af46cd453955b (diff)
downloadgo-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.go24
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
+}