mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.typeparams] runtime: simplify defer record allocation
Now that deferred functions are always argumentless and defer records are no longer with arguments, defer record can be fixed size (just the _defer struct). This allows us to simplify the allocation of defer records, specifically, remove the defer classes and the pools of different sized defers. Change-Id: Icc4b16afc23b38262ca9dd1f7369ad40874cf701 Reviewed-on: https://go-review.googlesource.com/c/go/+/326062 Trust: Cherry Mui <cherryyz@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
4468e1cfb9
commit
e0e9fb8aff
6 changed files with 50 additions and 142 deletions
|
|
@ -613,8 +613,8 @@ type p struct {
|
|||
pcache pageCache
|
||||
raceprocctx uintptr
|
||||
|
||||
deferpool [5][]*_defer // pool of available defer structs of different sizes (see panic.go)
|
||||
deferpoolbuf [5][32]*_defer
|
||||
deferpool []*_defer // pool of available defer structs (see panic.go)
|
||||
deferpoolbuf [32]*_defer
|
||||
|
||||
// Cache of goroutine ids, amortizes accesses to runtime·sched.goidgen.
|
||||
goidcache uint64
|
||||
|
|
@ -801,9 +801,9 @@ type schedt struct {
|
|||
sudoglock mutex
|
||||
sudogcache *sudog
|
||||
|
||||
// Central pool of available defer structs of different sizes.
|
||||
// Central pool of available defer structs.
|
||||
deferlock mutex
|
||||
deferpool [5]*_defer
|
||||
deferpool *_defer
|
||||
|
||||
// freem is the list of m's waiting to be freed when their
|
||||
// m.exited is set. Linked through m.freelink.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue