]> Cypherpunks.ru repositories - gostls13.git/commit
runtime, cmd: rationalize StackLimit and StackGuard
authorAustin Clements <austin@google.com>
Wed, 19 Apr 2023 18:01:05 +0000 (14:01 -0400)
committerGopher Robot <gobot@golang.org>
Fri, 21 Apr 2023 19:28:56 +0000 (19:28 +0000)
commit0f099a4bc569e32fbddefb8e3de6b59cf6d1959d
treef1d4108465cabff9973a65b5c4ec6655b4218b57
parent03ad1f1a340841e7c60ee635ff894fe19cd99506
runtime, cmd: rationalize StackLimit and StackGuard

The current definitions of StackLimit and StackGuard only indirectly
specify the NOSPLIT stack limit and duplicate a literal constant
(928). Currently, they define the stack guard delta, and from there
compute the NOSPLIT limit.

Rationalize these by defining a new constant, abi.StackNosplitBase,
which consolidates and directly specifies the NOSPLIT stack limit (in
the default case). From this we then compute the stack guard delta,
inverting the relationship between these two constants. While we're
here, we rename StackLimit to StackNosplit to make it clearer what's
being limited.

This change does not affect the values of these constants in the
default configuration. It does slightly change how
StackGuardMultiplier values other than 1 affect the constants, but
this multiplier is a pretty rough heuristic anyway.

                    before after
stackNosplit           800   800
_StackGuard            928   928
stackNosplit -race    1728  1600
_StackGuard -race     1856  1728

For #59670.

Change-Id: Ia94094c5e47897e7c088d24b4a5e33f5c2768db5
Reviewed-on: https://go-review.googlesource.com/c/go/+/486976
Auto-Submit: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
src/cmd/internal/objabi/stack.go
src/cmd/link/internal/ld/stackcheck.go
src/internal/abi/stack.go
src/runtime/preempt.go
src/runtime/stack.go
test/nosplit.go