]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: directly create go.map and go.track symbols
authorMatthew Dempsky <mdempsky@google.com>
Sun, 17 Jan 2021 10:53:18 +0000 (02:53 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 19 Jan 2021 03:02:52 +0000 (03:02 +0000)
These symbols are implementation details and don't correspond to Go
source symbols, so directly create them as linker symbols and get rid
of their pseudo packages.

Passes toolstash -cmp w/ -gcflags=all=-abiwrap.

Change-Id: I2e97374c21f3e909f6d350f15e7a5ed3574cadf4
Reviewed-on: https://go-review.googlesource.com/c/go/+/284372
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Trust: Matthew Dempsky <mdempsky@google.com>

src/cmd/compile/internal/gc/main.go
src/cmd/compile/internal/gc/obj.go
src/cmd/compile/internal/ir/symtab.go
src/cmd/compile/internal/reflectdata/reflect.go

index f758933d79e396af3b70df040e548d6c9c6caf1e..726a0685d57fff33053395c97eb176bd730e0267 100644 (file)
@@ -96,13 +96,6 @@ func Main(archInit func(*ssagen.ArchInfo)) {
        ir.Pkgs.Itab = types.NewPkg("go.itab", "go.itab")
        ir.Pkgs.Itab.Prefix = "go.itab" // not go%2eitab
 
-       ir.Pkgs.Track = types.NewPkg("go.track", "go.track")
-       ir.Pkgs.Track.Prefix = "go.track" // not go%2etrack
-
-       // pseudo-package used for map zero values
-       ir.Pkgs.Map = types.NewPkg("go.map", "go.map")
-       ir.Pkgs.Map.Prefix = "go.map"
-
        // pseudo-package used for methods with anonymous receivers
        ir.Pkgs.Go = types.NewPkg("go", "")
 
index 847d84966646ef0bb5817aa6bf2c0e7e21fa7d1c..0472af74419e57975f3cabf26e9ed3acef776837 100644 (file)
@@ -146,7 +146,7 @@ func dumpdata() {
        dumpglobls(typecheck.Target.Externs[numExterns:])
 
        if reflectdata.ZeroSize > 0 {
-               zero := ir.Pkgs.Map.Lookup("zero").Linksym()
+               zero := base.PkgLinksym("go.map", "zero", obj.ABI0)
                objw.Global(zero, int32(reflectdata.ZeroSize), obj.DUPOK|obj.RODATA)
        }
 
index 0968efbf5cb3ed62437e24268d11827a67ffddcd..61727fb1c4b004d52e4942631e200ce837f791f4 100644 (file)
@@ -67,8 +67,6 @@ var Syms struct {
 var Pkgs struct {
        Go      *types.Pkg
        Itab    *types.Pkg
-       Map     *types.Pkg
        Runtime *types.Pkg
-       Track   *types.Pkg
        Unsafe  *types.Pkg
 }
index bd89b62ff5b8bbd4b1f07e9635c8313aa7e96169..1ec92e3dd073e7ebd6ae4e2c9aca2d9710e9eefc 100644 (file)
@@ -791,7 +791,7 @@ func dcommontype(lsym *obj.LSym, t *types.Type) int {
 // TrackSym returns the symbol for tracking use of field/method f, assumed
 // to be a member of struct/interface type t.
 func TrackSym(t *types.Type, f *types.Field) *obj.LSym {
-       return ir.Pkgs.Track.Lookup(t.ShortString() + "." + f.Sym.Name).Linksym()
+       return base.PkgLinksym("go.track", t.ShortString() + "." + f.Sym.Name, obj.ABI0)
 }
 
 func TypeSymPrefix(prefix string, t *types.Type) *types.Sym {
@@ -1654,18 +1654,9 @@ func ZeroAddr(size int64) ir.Node {
        if ZeroSize < size {
                ZeroSize = size
        }
-       s := ir.Pkgs.Map.Lookup("zero")
-       if s.Def == nil {
-               x := typecheck.NewName(s)
-               x.SetType(types.Types[types.TUINT8])
-               x.Class = ir.PEXTERN
-               x.SetTypecheck(1)
-               s.Def = x
-       }
-       z := typecheck.NodAddr(ir.AsNode(s.Def))
-       z.SetType(types.NewPtr(types.Types[types.TUINT8]))
-       z.SetTypecheck(1)
-       return z
+       lsym := base.PkgLinksym("go.map", "zero", obj.ABI0)
+       x := ir.NewLinksymExpr(base.Pos, lsym, types.Types[types.TUINT8])
+       return typecheck.Expr(typecheck.NodAddr(x))
 }
 
 func CollectPTabs() {