diff options
| author | Matthew Dempsky <mdempsky@google.com> | 2021-09-01 12:42:35 -0700 |
|---|---|---|
| committer | Matthew Dempsky <mdempsky@google.com> | 2021-09-01 21:38:48 +0000 |
| commit | 88859f3cd80e03f695cba5462d959949ff9a5583 (patch) | |
| tree | f21a1d9c2b946f9bc544d2f83534c5480a5c3506 /src/cmd/compile/internal/noder | |
| parent | 50f38d040532edde038c992ddbe978658556c51f (diff) | |
| download | go-88859f3cd80e03f695cba5462d959949ff9a5583.tar.xz | |
cmd/compile: optimize unified IR handling of imported functions
This CL skips reading of imported function bodies except from the
local package or for inlining. Previously, we wasted a bunch of CPU
and memory by reading in normal function bodies for all imported
functions and methods.
Change-Id: I0b3df3f4a3e2819117dac11a1f9e4526288c14d8
Reviewed-on: https://go-review.googlesource.com/c/go/+/347030
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Diffstat (limited to 'src/cmd/compile/internal/noder')
| -rw-r--r-- | src/cmd/compile/internal/noder/reader.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go index 17ccb25e1d..204d25bce8 100644 --- a/src/cmd/compile/internal/noder/reader.go +++ b/src/cmd/compile/internal/noder/reader.go @@ -920,6 +920,12 @@ func (r *reader) addBody(fn *ir.Func) { pri := pkgReaderIndex{r.p, r.reloc(relocBody), r.dict} bodyReader[fn] = pri + if fn.Nname.Defn == nil { + // Don't read in function body for imported functions. + // See comment in funcExt. + return + } + if r.curfn == nil { todoBodies = append(todoBodies, fn) return |
