mirror of
https://github.com/golang/go.git
synced 2025-11-10 21:51:05 +00:00
runtime: factor out mStackIsSystemAllocated
Rather than repeat long lists of GOOS values, factor out the code that checks if a runtime starts on a system allocated stack. Note that this adds aix to one case, which appears to have been previously missed. Change-Id: I5cecb0bb47dd79cde8d723e5a42ba541e43cbfff Reviewed-on: https://go-review.googlesource.com/c/go/+/250179 Trust: Joel Sing <joel@sing.id.au> Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Joel Sing <joel@sing.id.au> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
dbab079835
commit
9fed39d281
1 changed files with 12 additions and 3 deletions
|
|
@ -1206,6 +1206,16 @@ func startTheWorldWithSema(emitTraceEvent bool) int64 {
|
|||
return startTime
|
||||
}
|
||||
|
||||
// mStackIsSystemAllocated indicates whether this runtime starts on a
|
||||
// system-allocated stack.
|
||||
func mStackIsSystemAllocated() bool {
|
||||
switch GOOS {
|
||||
case "aix", "darwin", "plan9", "illumos", "ios", "solaris", "windows":
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// mstart is the entry-point for new Ms.
|
||||
//
|
||||
// This must not split the stack because we may not even have stack
|
||||
|
|
@ -1240,8 +1250,7 @@ func mstart() {
|
|||
mstart1()
|
||||
|
||||
// Exit this thread.
|
||||
switch GOOS {
|
||||
case "windows", "solaris", "illumos", "plan9", "darwin", "ios", "aix":
|
||||
if mStackIsSystemAllocated() {
|
||||
// Windows, Solaris, illumos, Darwin, AIX and Plan 9 always system-allocate
|
||||
// the stack, but put it in _g_.stack before mstart,
|
||||
// so the logic above hasn't set osStack yet.
|
||||
|
|
@ -1724,7 +1733,7 @@ func allocm(_p_ *p, fn func(), id int64) *m {
|
|||
|
||||
// In case of cgo or Solaris or illumos or Darwin, pthread_create will make us a stack.
|
||||
// Windows and Plan 9 will layout sched stack on OS stack.
|
||||
if iscgo || GOOS == "solaris" || GOOS == "illumos" || GOOS == "windows" || GOOS == "plan9" || GOOS == "darwin" || GOOS == "ios" {
|
||||
if iscgo || mStackIsSystemAllocated() {
|
||||
mp.g0 = malg(-1)
|
||||
} else {
|
||||
mp.g0 = malg(8192 * sys.StackGuardMultiplier)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue