aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2021-09-01 12:42:35 -0700
committerMatthew Dempsky <mdempsky@google.com>2021-09-01 21:38:48 +0000
commit88859f3cd80e03f695cba5462d959949ff9a5583 (patch)
treef21a1d9c2b946f9bc544d2f83534c5480a5c3506 /src/cmd/compile/internal/noder
parent50f38d040532edde038c992ddbe978658556c51f (diff)
downloadgo-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.go6
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