From: Matthew Dempsky Date: Tue, 7 Sep 2021 17:51:14 +0000 (-0700) Subject: cmd/compile: fix lazy loading in reader2 X-Git-Tag: go1.18beta1~1462 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e581ec07ee;p=gostls13.git cmd/compile: fix lazy loading in reader2 Calling reader2.obj fully loads the referenced object, which is necessary in general; but for reading the package index, we just need to setup the name->index mapping. This CL adds this, so that lazy loading works as intended. Change-Id: Ie51d59e2247d99b46f9dc69fba7ce89e2584b7c4 Reviewed-on: https://go-review.googlesource.com/c/go/+/348011 Trust: Matthew Dempsky Trust: Cuong Manh Le Run-TryBot: Matthew Dempsky TryBot-Result: Go Bot Reviewed-by: Cuong Manh Le --- diff --git a/src/cmd/compile/internal/noder/reader2.go b/src/cmd/compile/internal/noder/reader2.go index cffa037236..296d84289c 100644 --- a/src/cmd/compile/internal/noder/reader2.go +++ b/src/cmd/compile/internal/noder/reader2.go @@ -43,7 +43,12 @@ func readPackage2(check *types2.Checker, imports map[string]*types2.Package, inp r.bool() // has init for i, n := 0, r.len(); i < n; i++ { - r.obj() + // As if r.obj(), but avoiding the Scope.Lookup call, + // to avoid eager loading of imports. + r.sync(syncObject) + assert(!r.bool()) + r.p.objIdx(r.reloc(relocObj)) + assert(r.len() == 0) } r.sync(syncEOF)