]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile: wrap defer/go call with results
authorCherry Zhang <cherryyz@google.com>
Mon, 29 Mar 2021 18:17:18 +0000 (14:17 -0400)
committerCherry Zhang <cherryyz@google.com>
Tue, 30 Mar 2021 00:49:14 +0000 (00:49 +0000)
commit06ad41642c6e06ddb6faa8575fcc3cfafa6a13d1
treed105203b5ebce9cfc2e81309e5ff289c37256aea
parente27f3966bbb95d0f3330a60202eabe8dff57a311
cmd/compile: wrap defer/go call with results

CL 298669 implemented wrapping for defer/go calls so the function
being called with defer or go statement has no arguments. This
simplifies the compiler and the runtime, especially with the
new ABI.

Currently, it does not wrap functions that has no arguments but
only results. For defer/go calls, the results are not used. But
the runtime needs to allocate stack space for the callee to store
the results. Wrapping functions with results makes the runtime
simpler.

TODO: maybe not wrap if all results are in registers.

Updates #40724.

Change-Id: I74d2f4db1cbf9979afbcd846facb30d11d72ab23
Reviewed-on: https://go-review.googlesource.com/c/go/+/305550
Trust: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/compile/internal/ssagen/ssa.go
src/cmd/compile/internal/walk/order.go