]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: initial function value devirtualization
authorMichael Pratt <mpratt@google.com>
Thu, 12 Oct 2023 20:01:34 +0000 (16:01 -0400)
committerMichael Pratt <mpratt@google.com>
Mon, 13 Nov 2023 18:17:47 +0000 (18:17 +0000)
commitfb6ff1e4caaece9be61c45518ffb51081e892a73
tree85b672308e7601987dfd2d3ed418c937016f4b8b
parent0c66ae5c27706d4fe5c43fc71f92b52052b24497
cmd/compile: initial function value devirtualization

Today, PGO-based devirtualization only applies to interface calls. This
CL extends initial support to function values (i.e., function/closure
pointers passed as arguments or stored in a struct).

This CL is a minimal implementation with several limitations.

* Export data lookup of function value callees not implemented
  (equivalent of CL 497175; done in CL 540258).
* Callees must be standard static functions. Callees that are closures
  (requiring closure context) are not supported.

For #61577.

Change-Id: I7d328859035249e176294cd0d9885b2d08c853f6
Reviewed-on: https://go-review.googlesource.com/c/go/+/539699
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/cmd/compile/internal/devirtualize/pgo.go
src/cmd/compile/internal/devirtualize/pgo_test.go
src/cmd/compile/internal/test/pgo_devirtualize_test.go
src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt.go
src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt.pprof
src/cmd/compile/internal/test/testdata/pgo/devirtualize/devirt_test.go
src/cmd/compile/internal/test/testdata/pgo/devirtualize/mult.pkg/mult.go