summaryrefslogtreecommitdiff
path: root/test/mallocfin.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/mallocfin.go')
-rw-r--r--test/mallocfin.go67
1 files changed, 0 insertions, 67 deletions
diff --git a/test/mallocfin.go b/test/mallocfin.go
deleted file mode 100644
index dc6d74bad..000000000
--- a/test/mallocfin.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// $G $D/$F.go && $L $F.$A && ./$A.out
-
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// trivial finalizer test
-
-package main
-
-import (
- "runtime"
- "time"
-)
-
-const N = 250
-
-type A struct {
- b *B
- n int
-}
-
-type B struct {
- n int
-}
-
-var i int
-var nfinal int
-var final [N]int
-
-// the unused return is to test finalizers with return values
-func finalA(a *A) (unused [N]int) {
- if final[a.n] != 0 {
- println("finalA", a.n, final[a.n])
- panic("fail")
- }
- final[a.n] = 1
- return
-}
-
-func finalB(b *B) {
- if final[b.n] != 1 {
- println("finalB", b.n, final[b.n])
- panic("fail")
- }
- final[b.n] = 2
- nfinal++
-}
-
-func main() {
- runtime.GOMAXPROCS(4)
- for i = 0; i < N; i++ {
- b := &B{i}
- a := &A{b, i}
- runtime.SetFinalizer(b, finalB)
- runtime.SetFinalizer(a, finalA)
- }
- for i := 0; i < N; i++ {
- runtime.GC()
- runtime.Gosched()
- time.Sleep(1e6)
- }
- if nfinal < N*8/10 {
- println("not enough finalizing:", nfinal, "/", N)
- panic("fail")
- }
-}