]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: optimize unified IR handling of imported functions
authorMatthew Dempsky <mdempsky@google.com>
Wed, 1 Sep 2021 19:42:35 +0000 (12:42 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 1 Sep 2021 21:38:48 +0000 (21:38 +0000)
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>
src/cmd/compile/internal/noder/reader.go

index 17ccb25e1d9b142f598bb75305af5dc2822bbc30..204d25bce8d9772a86ced323e5e229db033900e2 100644 (file)
@@ -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