mirror of
https://github.com/golang/go
synced 2024-11-05 16:16:11 -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)
|
externs := len(externdcl)
|
||||||
|
|
||||||
dumpglobls()
|
dumpglobls()
|
||||||
dumpptabs()
|
addptabs()
|
||||||
dumptypestructs()
|
dumptypestructs(externdcl)
|
||||||
|
dumptabs()
|
||||||
|
dumpimportstrings()
|
||||||
|
dumpbasictypes()
|
||||||
|
|
||||||
// Dump extra globals.
|
// Dump extra globals.
|
||||||
tmp := externdcl
|
tmp := externdcl
|
||||||
@ -171,7 +174,7 @@ func dumpobj1(outfile string, mode int) {
|
|||||||
bout.Close()
|
bout.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func dumpptabs() {
|
func addptabs() {
|
||||||
if !Ctxt.Flag_dynlink || localpkg.Name != "main" {
|
if !Ctxt.Flag_dynlink || localpkg.Name != "main" {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1394,9 +1394,9 @@ func addsignat(t *types.Type) {
|
|||||||
signatlist[formalType(t)] = true
|
signatlist[formalType(t)] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func dumptypestructs() {
|
func dumptypestructs(dcls []*Node) {
|
||||||
// copy types from externdcl list to signatlist
|
// copy types from dcl list to signatlist
|
||||||
for _, n := range externdcl {
|
for _, n := range dcls {
|
||||||
if n.Op == OTYPE {
|
if n.Op == OTYPE {
|
||||||
addsignat(n.Type)
|
addsignat(n.Type)
|
||||||
}
|
}
|
||||||
@ -1421,7 +1421,9 @@ func dumptypestructs() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dumptabs() {
|
||||||
// process itabs
|
// process itabs
|
||||||
for _, i := range itabs {
|
for _, i := range itabs {
|
||||||
// dump empty itab symbol into i.sym
|
// dump empty itab symbol into i.sym
|
||||||
@ -1474,18 +1476,22 @@ func dumptypestructs() {
|
|||||||
}
|
}
|
||||||
ggloblsym(s, int32(ot), int16(obj.RODATA))
|
ggloblsym(s, int32(ot), int16(obj.RODATA))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dumpimportstrings() {
|
||||||
// generate import strings for imported packages
|
// generate import strings for imported packages
|
||||||
for _, p := range types.ImportedPkgList() {
|
for _, p := range types.ImportedPkgList() {
|
||||||
dimportpath(p)
|
dimportpath(p)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dumpbasictypes() {
|
||||||
// do basic types if compiling package runtime.
|
// do basic types if compiling package runtime.
|
||||||
// they have to be in at least one package,
|
// they have to be in at least one package,
|
||||||
// and runtime is always loaded implicitly,
|
// and runtime is always loaded implicitly,
|
||||||
// so this is as good as any.
|
// so this is as good as any.
|
||||||
// another possible choice would be package main,
|
// 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" {
|
if myimportpath == "runtime" {
|
||||||
for i := types.EType(1); i <= TBOOL; i++ {
|
for i := types.EType(1); i <= TBOOL; i++ {
|
||||||
dtypesym(types.NewPtr(types.Types[i]))
|
dtypesym(types.NewPtr(types.Types[i]))
|
||||||
|
Loading…
Reference in New Issue
Block a user