aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/select.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/select.go')
-rw-r--r--src/runtime/select.go11
1 files changed, 9 insertions, 2 deletions
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)