Skip to content

Commit

Permalink
cmd/compile: break apart dumptypestructs
Browse files Browse the repository at this point in the history
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 <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Brad Fitzpatrick <[email protected]>
  • Loading branch information
josharian committed Apr 24, 2017
1 parent 07d0900 commit 976a5ce
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
9 changes: 6 additions & 3 deletions src/cmd/compile/internal/gc/obj.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -171,7 +174,7 @@ func dumpobj1(outfile string, mode int) {
bout.Close()
}

func dumpptabs() {
func addptabs() {
if !Ctxt.Flag_dynlink || localpkg.Name != "main" {
return
}
Expand Down
14 changes: 10 additions & 4 deletions src/cmd/compile/internal/gc/reflect.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -1421,7 +1421,9 @@ func dumptypestructs() {
}
}
}
}

func dumptabs() {
// process itabs
for _, i := range itabs {
// dump empty itab symbol into i.sym
Expand Down Expand Up @@ -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]))
Expand Down

0 comments on commit 976a5ce

Please sign in to comment.