diff options
Diffstat (limited to 'test/stack.go')
| -rw-r--r-- | test/stack.go | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/test/stack.go b/test/stack.go index 816b555a4..1fd57161f 100644 --- a/test/stack.go +++ b/test/stack.go @@ -30,6 +30,32 @@ func d(t T) {  	}  } +func f0() { +	// likely to make a new stack for f0, +	// because the call to f1 puts 3000 bytes +	// in our frame. +	f1() +} + +func f1() [3000]byte { +	// likely to make a new stack for f1, +	// because 3000 bytes were used by f0 +	// and we need 3000 more for the call +	// to f2.  if the call to morestack in f1 +	// does not pass the frame size, the new +	// stack (default size 5k) will not be big +	// enough for the frame, and the morestack +	// check in f2 will die, if we get that far  +	// without faulting. +	f2() +	return [3000]byte{} +} + +func f2() [3000]byte { +	// just take up space +	return [3000]byte{} +} +  var c = make(chan int)  var t T  var b = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} @@ -40,6 +66,7 @@ func recur(n int) {  		panic("bad []byte -> string")  	}  	go g(c, t) +	f0()  	s := <-c  	if s != len(t) {  		println("bad go", s) | 
