-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmd/compile: reimplement parameter leak encoding
Currently, escape analysis is able to record at most one dereference when a parameter leaks to the heap; that is, at call sites, it can't distinguish between any of these three functions: func x1(p ****int) { sink = *p } func x2(p ****int) { sink = **p } func x3(p ****int) { sink = ***p } Similarly, it's limited to recording parameter leaks to only the first 4 parameters, and only up to 6 dereferences. All of these limitations are due to the awkward encoding scheme used at the moment. This CL replaces the encoding scheme with a simple [8]uint8 array, which can handle up to the first 7 parameters, and up to 254 dereferences, which ought to be enough for anyone. And if not, it's much more easily increased. Shrinks export data size geometric mean for Kubernetes by 0.07%. Fixes #33981. Change-Id: I10a94b9accac9a0c91490e0d6d458316f5ca1e13 Reviewed-on: https://go-review.googlesource.com/c/go/+/197680 Reviewed-by: Cherry Zhang <[email protected]>
- Loading branch information
Showing
3 changed files
with
67 additions
and
157 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters