diff options
| author | Robert Griesemer <gri@golang.org> | 2017-04-24 15:55:41 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2017-04-24 23:41:27 +0000 |
| commit | cdeda796c7be35f84e8fafd55aa5960901d56a6d (patch) | |
| tree | bb37db7d6e746e517169630a0b21cc0cc78f2415 | |
| parent | 31c96fc2276b54f844bb5a83f2b4f817f956d976 (diff) | |
| download | go-cdeda796c7be35f84e8fafd55aa5960901d56a6d.tar.xz | |
cmd/compile: move typepkg back to gc package (cleanup)
Change-Id: I4d5c54d2dceabf4630e5e642835b20c8c6890524
Reviewed-on: https://go-review.googlesource.com/41616
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
| -rw-r--r-- | src/cmd/compile/internal/gc/reflect.go | 20 | ||||
| -rw-r--r-- | src/cmd/compile/internal/types/pkg.go | 7 |
2 files changed, 15 insertions, 12 deletions
diff --git a/src/cmd/compile/internal/gc/reflect.go b/src/cmd/compile/internal/gc/reflect.go index 5bbeb954c6..757a6376aa 100644 --- a/src/cmd/compile/internal/gc/reflect.go +++ b/src/cmd/compile/internal/gc/reflect.go @@ -901,8 +901,18 @@ func typesymname(t *types.Type) string { return name } +// Fake package for runtime type info (headers) +// Don't access directly, use typeLookup below. +var typepkg = types.NewPkg("type", "type") + +func typeLookup(name string) *types.Sym { + // Keep this wrapper function as a future + // version may protect typepkg with a mutex. + return typepkg.Lookup(name) +} + func typesym(t *types.Type) *types.Sym { - return types.TypePkgLookup(typesymname(t)) + return typeLookup(typesymname(t)) } // tracksym returns the symbol for tracking use of field/method f, assumed @@ -913,7 +923,7 @@ func tracksym(t *types.Type, f *types.Field) *types.Sym { func typesymprefix(prefix string, t *types.Type) *types.Sym { p := prefix + "." + t.ShortString() - s := types.TypePkgLookup(p) + s := typeLookup(p) //print("algsym: %s -> %+S\n", p, s); @@ -1541,7 +1551,7 @@ func dalgsym(t *types.Type) *obj.LSym { // we use one algorithm table for all AMEM types of a given size p := fmt.Sprintf(".alg%d", t.Width) - s := types.TypePkgLookup(p) + s := typeLookup(p) lsym = s.Linksym() if s.AlgGen() { return lsym @@ -1556,7 +1566,7 @@ func dalgsym(t *types.Type) *obj.LSym { // make hash closure p = fmt.Sprintf(".hashfunc%d", t.Width) - hashfunc = types.TypePkgLookup(p).Linksym() + hashfunc = typeLookup(p).Linksym() ot := 0 ot = dsymptr(hashfunc, ot, memhashvarlen, 0) @@ -1566,7 +1576,7 @@ func dalgsym(t *types.Type) *obj.LSym { // make equality closure p = fmt.Sprintf(".eqfunc%d", t.Width) - eqfunc = types.TypePkgLookup(p).Linksym() + eqfunc = typeLookup(p).Linksym() ot = 0 ot = dsymptr(eqfunc, ot, memequalvarlen, 0) diff --git a/src/cmd/compile/internal/types/pkg.go b/src/cmd/compile/internal/types/pkg.go index effb3a82f7..1fe49bd142 100644 --- a/src/cmd/compile/internal/types/pkg.go +++ b/src/cmd/compile/internal/types/pkg.go @@ -68,13 +68,6 @@ var nopkg = &Pkg{ Syms: make(map[string]*Sym), } -// fake package for runtime type info (headers) -var typepkg = NewPkg("type", "type") - -func TypePkgLookup(name string) *Sym { - return typepkg.Lookup(name) -} - func (pkg *Pkg) Lookup(name string) *Sym { s, _ := pkg.LookupOK(name) return s |
