From 49200e3f3e61f505acb152e150d054ef1db03b3e Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Wed, 5 Jun 2019 18:42:31 +0000 Subject: Revert "cmd/compile,runtime: allocate defer records on the stack" This reverts commit fff4f599fe1c21e411a99de5c9b3777d06ce0ce6. Reason for revert: Seems to still have issues around GC. Fixes #32452 Change-Id: Ibe7af629f9ad6a3d5312acd7b066123f484da7f0 Reviewed-on: https://go-review.googlesource.com/c/go/+/180761 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: Josh Bleecher Snyder --- src/runtime/stack_test.go | 55 ----------------------------------------------- 1 file changed, 55 deletions(-) (limited to 'src/runtime/stack_test.go') diff --git a/src/runtime/stack_test.go b/src/runtime/stack_test.go index 143d3a99a0..df73b3a1d5 100644 --- a/src/runtime/stack_test.go +++ b/src/runtime/stack_test.go @@ -799,58 +799,3 @@ func TestDeferLiveness(t *testing.T) { t.Errorf("output:\n%s\n\nwant no output", output) } } - -func TestDeferHeapAndStack(t *testing.T) { - P := 4 // processors - N := 10000 //iterations - D := 200 // stack depth - - if testing.Short() { - P /= 2 - N /= 10 - D /= 10 - } - c := make(chan bool) - for p := 0; p < P; p++ { - go func() { - for i := 0; i < N; i++ { - if deferHeapAndStack(D) != 2*D { - panic("bad result") - } - } - c <- true - }() - } - for p := 0; p < P; p++ { - <-c - } -} - -// deferHeapAndStack(n) computes 2*n -func deferHeapAndStack(n int) (r int) { - if n == 0 { - return 0 - } - if n%2 == 0 { - // heap-allocated defers - for i := 0; i < 2; i++ { - defer func() { - r++ - }() - } - } else { - // stack-allocated defers - defer func() { - r++ - }() - defer func() { - r++ - }() - } - r = deferHeapAndStack(n - 1) - escapeMe(new([1024]byte)) // force some GCs - return -} - -// Pass a value to escapeMe to force it to escape. -var escapeMe = func(x interface{}) {} -- cgit v1.3-5-g9baa