diff options
author | Russ Cox <rsc@golang.org> | 2020-12-23 00:55:38 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2020-12-23 06:39:23 +0000 |
commit | de65151e507e7b3c8e46d74f223d7c562177bedc (patch) | |
tree | bc69072cd239c458a6f8015be51fcb3577671e36 /src/cmd/compile/internal/gc/obj.go | |
parent | 4dfb5d91a86dfcc046ced03cee6e844df0751e41 (diff) | |
download | go-de65151e507e7b3c8e46d74f223d7c562177bedc.tar.gz go-de65151e507e7b3c8e46d74f223d7c562177bedc.zip |
[dev.regabi] cmd/compile: split out package reflectdata [generated]
[git-generate]
cd src/cmd/compile/internal/gc
rf '
ex {
import "cmd/compile/internal/base"
thearch.LinkArch.Name -> base.Ctxt.Arch.Name
}
# Move out of reflect.go a few functions that should stay.
mv addsignats obj.go
mv deferstruct ssa.go
# Export reflectdata API.
mv zerosize ZeroSize
mv hmap MapType
mv bmap MapBucketType
mv hiter MapIterType
mv addsignat NeedRuntimeType
mv typename TypePtr
mv typenamesym TypeSym
mv typesymprefix TypeSymPrefix
mv itabsym ITabSym
mv tracksym TrackSym
mv zeroaddr ZeroAddr
mv itabname ITabAddr
mv ifaceMethodOffset InterfaceMethodOffset
mv peekitabs CompileITabs
mv addptabs CollectPTabs
mv algtype AlgType
mv dtypesym WriteType
mv dumpbasictypes WriteBasicTypes
mv dumpimportstrings WriteImportStrings
mv dumpsignats WriteRuntimeTypes
mv dumptabs WriteTabs
mv eqinterface EqInterface
mv eqstring EqString
mv GCProg gcProg
mv EqCanPanic eqCanPanic
mv IsRegularMemory isRegularMemory
mv Sig typeSig
mv hashmem alg.go
mv CollectPTabs genwrapper ZeroSize reflect.go
mv alg.go reflect.go cmd/compile/internal/reflectdata
'
Change-Id: Iaae9da9e9fad5f772f5216004823ccff2ea8f139
Reviewed-on: https://go-review.googlesource.com/c/go/+/279475
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/gc/obj.go')
-rw-r--r-- | src/cmd/compile/internal/gc/obj.go | 60 |
1 files changed, 20 insertions, 40 deletions
diff --git a/src/cmd/compile/internal/gc/obj.go b/src/cmd/compile/internal/gc/obj.go index 50935d4e98..4db2ad9d4a 100644 --- a/src/cmd/compile/internal/gc/obj.go +++ b/src/cmd/compile/internal/gc/obj.go @@ -8,6 +8,7 @@ import ( "cmd/compile/internal/base" "cmd/compile/internal/ir" "cmd/compile/internal/objw" + "cmd/compile/internal/reflectdata" "cmd/compile/internal/staticdata" "cmd/compile/internal/typecheck" "cmd/compile/internal/types" @@ -112,14 +113,14 @@ func dumpdata() { dumpglobls(typecheck.Target.Externs) staticdata.WriteFuncSyms() - addptabs() + reflectdata.CollectPTabs() numExports := len(typecheck.Target.Exports) addsignats(typecheck.Target.Externs) - dumpsignats() - dumptabs() - numPTabs, numITabs := CountTabs() - dumpimportstrings() - dumpbasictypes() + reflectdata.WriteRuntimeTypes() + reflectdata.WriteTabs() + numPTabs, numITabs := reflectdata.CountTabs() + reflectdata.WriteImportStrings() + reflectdata.WriteBasicTypes() dumpembeds() // Calls to dumpsignats can generate functions, @@ -138,7 +139,7 @@ func dumpdata() { } numDecls = len(typecheck.Target.Decls) compileFunctions() - dumpsignats() + reflectdata.WriteRuntimeTypes() if numDecls == len(typecheck.Target.Decls) { break } @@ -147,9 +148,9 @@ func dumpdata() { // Dump extra globals. dumpglobls(typecheck.Target.Externs[numExterns:]) - if zerosize > 0 { + if reflectdata.ZeroSize > 0 { zero := ir.Pkgs.Map.Lookup("zero") - objw.Global(zero.Linksym(), int32(zerosize), obj.DUPOK|obj.RODATA) + objw.Global(zero.Linksym(), int32(reflectdata.ZeroSize), obj.DUPOK|obj.RODATA) } addGCLocals() @@ -157,7 +158,7 @@ func dumpdata() { if numExports != len(typecheck.Target.Exports) { base.Fatalf("Target.Exports changed after compile functions loop") } - newNumPTabs, newNumITabs := CountTabs() + newNumPTabs, newNumITabs := reflectdata.CountTabs() if newNumPTabs != numPTabs { base.Fatalf("ptabs changed after compile functions loop") } @@ -184,36 +185,6 @@ func dumpLinkerObj(bout *bio.Writer) { obj.WriteObjFile(base.Ctxt, bout) } -func addptabs() { - if !base.Ctxt.Flag_dynlink || types.LocalPkg.Name != "main" { - return - } - for _, exportn := range typecheck.Target.Exports { - s := exportn.Sym() - nn := ir.AsNode(s.Def) - if nn == nil { - continue - } - if nn.Op() != ir.ONAME { - continue - } - n := nn.(*ir.Name) - if !types.IsExported(s.Name) { - continue - } - if s.Pkg.Name != "main" { - continue - } - if n.Type().Kind() == types.TFUNC && n.Class_ == ir.PFUNC { - // function - ptabs = append(ptabs, ptabEntry{s: s, t: s.Def.Type()}) - } else { - // variable - ptabs = append(ptabs, ptabEntry{s: s, t: types.NewPtr(s.Def.Type())}) - } - } -} - func dumpGlobal(n *ir.Name) { if n.Type() == nil { base.Fatalf("external %v nil type\n", n) @@ -373,3 +344,12 @@ func dumpembeds() { staticdata.WriteEmbed(v) } } + +func addsignats(dcls []ir.Node) { + // copy types from dcl list to signatset + for _, n := range dcls { + if n.Op() == ir.OTYPE { + reflectdata.NeedRuntimeType(n.Type()) + } + } +} |