[dev.unified] cmd/compile: move "has init" to private metadata

Currently, there's a "has init" bool in the public metadata section,
which is only needed by cmd/compile; but because it's in the public
metadata section, it's known to the go/types importers too. This CL
moves it instead to the new compiler-only private metadata section
added in the last CL for the inline bodies index.

The existing bool in the public metadata section is left in place, and
just always set to false, to avoid breaking the x/tools importer. The
next time we bump the export version number, we can remove the bool
properly. But no urgency just yet.

Change-Id: I380f358652374b5a221f85020a53dc65912ddb29
Reviewed-on: https://go-review.googlesource.com/c/go/+/419676
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Matthew Dempsky 2022-07-27 00:33:56 -07:00
parent f995946094
commit ac0844ec27
4 changed files with 19 additions and 12 deletions

View file

@ -161,7 +161,7 @@ func writePkgStub(noders []*noder) string {
{
w := publicRootWriter
w.pkg(pkg)
w.Bool(false) // has init; XXX
w.Bool(false) // TODO(mdempsky): Remove; was "has init"
scope := pkg.Scope()
names := scope.Names()
@ -237,12 +237,7 @@ func readPackage(pr *pkgReader, importpkg *types.Pkg, localStub bool) {
pkg := r.pkg()
base.Assertf(pkg == importpkg, "have package %q (%p), want package %q (%p)", pkg.Path, pkg, importpkg.Path, importpkg)
if r.Bool() {
sym := pkg.Lookup(".inittask")
task := ir.NewNameAt(src.NoXPos, sym)
task.Class = ir.PEXTERN
sym.Def = task
}
r.Bool() // TODO(mdempsky): Remove; was "has init"
for i, n := 0, r.Len(); i < n; i++ {
r.Sync(pkgbits.SyncObject)
@ -262,6 +257,13 @@ func readPackage(pr *pkgReader, importpkg *types.Pkg, localStub bool) {
if !localStub {
r := pr.newReader(pkgbits.RelocMeta, pkgbits.PrivateRootIdx, pkgbits.SyncPrivate)
if r.Bool() {
sym := importpkg.Lookup(".inittask")
task := ir.NewNameAt(src.NoXPos, sym)
task.Class = ir.PEXTERN
sym.Def = task
}
for i, n := 0, r.Len(); i < n; i++ {
path := r.String()
name := r.String()
@ -302,7 +304,7 @@ func writeUnifiedExport(out io.Writer) {
r.Sync(pkgbits.SyncPkg)
selfPkgIdx = l.relocIdx(pr, pkgbits.RelocPkg, r.Reloc(pkgbits.RelocPkg))
r.Bool() // has init
r.Bool() // TODO(mdempsky): Remove; was "has init"
for i, n := 0, r.Len(); i < n; i++ {
r.Sync(pkgbits.SyncObject)
@ -333,8 +335,7 @@ func writeUnifiedExport(out io.Writer) {
w.Sync(pkgbits.SyncPkg)
w.Reloc(pkgbits.RelocPkg, selfPkgIdx)
w.Bool(typecheck.Lookup(".inittask").Def != nil)
w.Bool(false) // TODO(mdempsky): Remove; was "has init"
w.Len(len(idxs))
for _, idx := range idxs {
@ -361,6 +362,8 @@ func writeUnifiedExport(out io.Writer) {
w := privateRootWriter
w.Bool(typecheck.Lookup(".inittask").Def != nil)
w.Len(len(bodies))
for _, body := range bodies {
w.String(body.sym.Pkg.Path)