mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: move compiler-specific flags into compiler-spec. export data section
Also: Adjust go/importer accordingly. Change-Id: Ia6669563793e218946af45b9fba1cf986a21c031 Reviewed-on: https://go-review.googlesource.com/21896 Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
parent
be7c786dd0
commit
b1851a3c11
3 changed files with 14 additions and 21 deletions
|
|
@ -182,22 +182,12 @@ func export(out *bufio.Writer, trace bool) int {
|
||||||
Fatalf("exporter: local package path not empty: %q", localpkg.Path)
|
Fatalf("exporter: local package path not empty: %q", localpkg.Path)
|
||||||
}
|
}
|
||||||
p.pkg(localpkg)
|
p.pkg(localpkg)
|
||||||
|
|
||||||
// write compiler-specific flags
|
|
||||||
// TODO(gri) move this into the compiler-specific export data section
|
|
||||||
{
|
|
||||||
var flags string
|
|
||||||
if safemode != 0 {
|
|
||||||
flags = "safe"
|
|
||||||
}
|
|
||||||
p.string(flags)
|
|
||||||
}
|
|
||||||
if p.trace {
|
if p.trace {
|
||||||
p.tracef("\n")
|
p.tracef("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
// export objects
|
// export objects
|
||||||
|
//
|
||||||
// First, export all exported (package-level) objects; i.e., all objects
|
// First, export all exported (package-level) objects; i.e., all objects
|
||||||
// in the current exportlist. These objects represent all information
|
// in the current exportlist. These objects represent all information
|
||||||
// required to import this package and type-check against it; i.e., this
|
// required to import this package and type-check against it; i.e., this
|
||||||
|
|
@ -270,6 +260,12 @@ func export(out *bufio.Writer, trace bool) int {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// write compiler-specific flags
|
||||||
|
p.bool(safemode != 0)
|
||||||
|
if p.trace {
|
||||||
|
p.tracef("\n")
|
||||||
|
}
|
||||||
|
|
||||||
// Phase 2: Export objects added to exportlist during phase 1.
|
// Phase 2: Export objects added to exportlist during phase 1.
|
||||||
// Don't use range since exportlist may grow during this phase
|
// Don't use range since exportlist may grow during this phase
|
||||||
// and we want to export all remaining objects.
|
// and we want to export all remaining objects.
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,6 @@ func Import(in *bufio.Reader) {
|
||||||
Fatalf("importer: imported package not found in pkgList[0]")
|
Fatalf("importer: imported package not found in pkgList[0]")
|
||||||
}
|
}
|
||||||
|
|
||||||
// read compiler-specific flags
|
|
||||||
importpkg.Safe = p.string() == "safe"
|
|
||||||
|
|
||||||
// defer some type-checking until all types are read in completely
|
// defer some type-checking until all types are read in completely
|
||||||
// (parser.go:import_package)
|
// (parser.go:import_package)
|
||||||
tcok := typecheckok
|
tcok := typecheckok
|
||||||
|
|
@ -73,7 +70,7 @@ func Import(in *bufio.Reader) {
|
||||||
|
|
||||||
// read objects
|
// read objects
|
||||||
|
|
||||||
// Phase 1
|
// phase 1
|
||||||
objcount := 0
|
objcount := 0
|
||||||
for {
|
for {
|
||||||
tag := p.tagOrIndex()
|
tag := p.tagOrIndex()
|
||||||
|
|
@ -91,7 +88,10 @@ func Import(in *bufio.Reader) {
|
||||||
|
|
||||||
// --- compiler-specific export data ---
|
// --- compiler-specific export data ---
|
||||||
|
|
||||||
// Phase 2
|
// read compiler-specific flags
|
||||||
|
importpkg.Safe = p.bool()
|
||||||
|
|
||||||
|
// phase 2
|
||||||
objcount = 0
|
objcount = 0
|
||||||
for {
|
for {
|
||||||
tag := p.tagOrIndex()
|
tag := p.tagOrIndex()
|
||||||
|
|
@ -264,7 +264,7 @@ func (p *importer) obj(tag int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Fatalf("importer: unexpected object tag")
|
Fatalf("importer: unexpected object (tag = %d)", tag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,9 +78,6 @@ func BImportData(imports map[string]*types.Package, data []byte, path string) (i
|
||||||
panic("imported packaged not found in pkgList[0]")
|
panic("imported packaged not found in pkgList[0]")
|
||||||
}
|
}
|
||||||
|
|
||||||
// read compiler-specific flags
|
|
||||||
p.string() // discard
|
|
||||||
|
|
||||||
// read objects of phase 1 only (see cmd/compiler/internal/gc/bexport.go)
|
// read objects of phase 1 only (see cmd/compiler/internal/gc/bexport.go)
|
||||||
objcount := 0
|
objcount := 0
|
||||||
for {
|
for {
|
||||||
|
|
@ -193,7 +190,7 @@ func (p *importer) obj(tag int) {
|
||||||
p.declare(types.NewFunc(token.NoPos, pkg, name, sig))
|
p.declare(types.NewFunc(token.NoPos, pkg, name, sig))
|
||||||
|
|
||||||
default:
|
default:
|
||||||
panic("unexpected object tag")
|
panic(fmt.Sprintf("unexpected object tag %d", tag))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue