mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: move selectdone into g
Writing to selectdone on the stack of another goroutine meant a pretty subtle dance between the select code and the stack copying code. Instead move the selectdone variable into the g struct. Change-Id: Id246aaf18077c625adef7ca2d62794afef1bdd1b Reviewed-on: https://go-review.googlesource.com/53390 Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
89d74f5416
commit
32b94f13cf
5 changed files with 27 additions and 78 deletions
|
|
@ -751,7 +751,6 @@ func adjustsudogs(gp *g, adjinfo *adjustinfo) {
|
|||
// might be in the stack.
|
||||
for s := gp.waiting; s != nil; s = s.waitlink {
|
||||
adjustpointer(adjinfo, unsafe.Pointer(&s.elem))
|
||||
adjustpointer(adjinfo, unsafe.Pointer(&s.selectdone))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -768,10 +767,6 @@ func findsghi(gp *g, stk stack) uintptr {
|
|||
if stk.lo <= p && p < stk.hi && p > sghi {
|
||||
sghi = p
|
||||
}
|
||||
p = uintptr(unsafe.Pointer(sg.selectdone)) + unsafe.Sizeof(sg.selectdone)
|
||||
if stk.lo <= p && p < stk.hi && p > sghi {
|
||||
sghi = p
|
||||
}
|
||||
}
|
||||
return sghi
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue