diff options
| author | Dan Scales <danscales@google.com> | 2019-09-23 17:46:38 -0700 |
|---|---|---|
| committer | Dan Scales <danscales@google.com> | 2019-09-25 23:27:16 +0000 |
| commit | 225f484c880a840046129f16102216ee29271e66 (patch) | |
| tree | fdf43712239f32fe62e988f3b4033f1f924eb741 /test/codegen/stack.go | |
| parent | 8c99e45ef956be18677d862fd64d1ba5346ce403 (diff) | |
| download | go-225f484c880a840046129f16102216ee29271e66.tar.xz | |
misc, runtime, test: extra tests and benchmarks for defer
Add a bunch of extra tests and benchmarks for defer, in preparation for new
low-cost (open-coded) implementation of defers (see #34481),
- New file defer_test.go that tests a bunch more unusual defer scenarios,
including things that might have problems for open-coded defers.
- Additions to callers_test.go actually verifying what the stack trace looks like
for various panic or panic-recover scenarios.
- Additions to crash_test.go testing several more crash scenarios involving
recursive panics.
- New benchmark in runtime_test.go measuring speed of panic-recover
- New CGo benchmark in cgo_test.go calling from Go to C back to Go that
shows defer overhead
Updates #34481
Change-Id: I423523f3e05fc0229d4277dd00073289a5526188
Reviewed-on: https://go-review.googlesource.com/c/go/+/197017
Run-TryBot: Dan Scales <danscales@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'test/codegen/stack.go')
| -rw-r--r-- | test/codegen/stack.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/codegen/stack.go b/test/codegen/stack.go index 37d378aa78..7d70024cdd 100644 --- a/test/codegen/stack.go +++ b/test/codegen/stack.go @@ -110,7 +110,11 @@ func MightPanic(a []int, i, j, k, s int) { _ = i / j // panicDivide } +// Put a defer in a loop, so second defer is not open-coded func Defer() { + for i := 0; i < 2; i++ { + defer func() {}() + } // amd64:`CALL\truntime\.deferprocStack` defer func() {}() } |
