From: Austin Clements Date: Wed, 17 Feb 2016 18:43:19 +0000 (-0500) Subject: runtime: improve comment on selectgo X-Git-Tag: go1.7beta1~1348 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5a50e003067672ff13bc2ea0464f0cf83a943b2d;p=gostls13.git runtime: improve comment on selectgo In particular, document that *sel is on the stack no matter what. Change-Id: I1c264215e026c27721b13eedae73ec845066cdec Reviewed-on: https://go-review.googlesource.com/20032 Reviewed-by: Rick Hudson --- diff --git a/src/runtime/select.go b/src/runtime/select.go index 4e87dba3e7..ddc3d81638 100644 --- a/src/runtime/select.go +++ b/src/runtime/select.go @@ -208,8 +208,15 @@ func block() { gopark(nil, nil, "select (no cases)", traceEvGoStop, 1) // forever } -// overwrites return pc on stack to signal which case of the select -// to run, so cannot appear at the top of a split stack. +// selectgo implements the select statement. +// +// *sel is on the current goroutine's stack (regardless of any +// escaping in selectgo). +// +// selectgo does not return. Instead, it overwrites its return PC and +// returns directly to the triggered select case. Because of this, it +// cannot appear at the top of a split stack. +// //go:nosplit func selectgo(sel *hselect) { pc, offset := selectgoImpl(sel)