mirror of
https://github.com/golang/go
synced 2024-11-05 16:06:10 -07:00
cmd/compile: break apart dumptypestructs
dumptypestructs did several different jobs. Split them into separate functions and call them in turn. Hand dumptypestructs a list of dcls, rather than reading the global. Rename dumpptabs for (marginal) clarity. This is groundwork for compiling autogenerated functions concurrently. Passes toolstash-check. Change-Id: I627a1dffc70a7e4b7b4436ab19af1406267f01dc Reviewed-on: https://go-review.googlesource.com/41501 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
07d09003f1
commit
976a5ce1a8
@ -136,8 +136,11 @@ func dumpobj1(outfile string, mode int) {
|
||||
externs := len(externdcl)
|
||||
|
||||
dumpglobls()
|
||||
dumpptabs()
|
||||
dumptypestructs()
|
||||
addptabs()
|
||||
dumptypestructs(externdcl)
|
||||
dumptabs()
|
||||
dumpimportstrings()
|
||||
dumpbasictypes()
|
||||
|
||||
// Dump extra globals.
|
||||
tmp := externdcl
|
||||
@ -171,7 +174,7 @@ func dumpobj1(outfile string, mode int) {
|
||||
bout.Close()
|
||||
}
|
||||
|
||||
func dumpptabs() {
|
||||
func addptabs() {
|
||||
if !Ctxt.Flag_dynlink || localpkg.Name != "main" {
|
||||
return
|
||||
}
|
||||
|
@ -1394,9 +1394,9 @@ func addsignat(t *types.Type) {
|
||||
signatlist[formalType(t)] = true
|
||||
}
|
||||
|
||||
func dumptypestructs() {
|
||||
// copy types from externdcl list to signatlist
|
||||
for _, n := range externdcl {
|
||||
func dumptypestructs(dcls []*Node) {
|
||||
// copy types from dcl list to signatlist
|
||||
for _, n := range dcls {
|
||||
if n.Op == OTYPE {
|
||||
addsignat(n.Type)
|
||||
}
|
||||
@ -1421,7 +1421,9 @@ func dumptypestructs() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func dumptabs() {
|
||||
// process itabs
|
||||
for _, i := range itabs {
|
||||
// dump empty itab symbol into i.sym
|
||||
@ -1474,18 +1476,22 @@ func dumptypestructs() {
|
||||
}
|
||||
ggloblsym(s, int32(ot), int16(obj.RODATA))
|
||||
}
|
||||
}
|
||||
|
||||
func dumpimportstrings() {
|
||||
// generate import strings for imported packages
|
||||
for _, p := range types.ImportedPkgList() {
|
||||
dimportpath(p)
|
||||
}
|
||||
}
|
||||
|
||||
func dumpbasictypes() {
|
||||
// do basic types if compiling package runtime.
|
||||
// they have to be in at least one package,
|
||||
// and runtime is always loaded implicitly,
|
||||
// so this is as good as any.
|
||||
// another possible choice would be package main,
|
||||
// but using runtime means fewer copies in .6 files.
|
||||
// but using runtime means fewer copies in object files.
|
||||
if myimportpath == "runtime" {
|
||||
for i := types.EType(1); i <= TBOOL; i++ {
|
||||
dtypesym(types.NewPtr(types.Types[i]))
|
||||
|
Loading…
Reference in New Issue
Block a user