1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Tweak the "unused modules are removed" test.

* test-suite/tests/gc.test ("gc")["unused modules are removed"]: Add
  loop to clean up stale references from the stack.
This commit is contained in:
Ludovic Courtès 2009-12-11 23:27:47 +01:00
parent 2cf7ff2e79
commit 9035e9d6db

View file

@ -59,19 +59,23 @@
(with-test-prefix "gc"
(pass-if "Unused modules are removed"
(let* ((guard (make-guardian))
(total 1000))
(let* ((guard (make-guardian))
(total 1000))
(for-each (lambda (x) (guard (make-module))) (iota total))
(for-each (lambda (x) (guard (make-module))) (iota total))
(gc)
(gc) ;; twice: have to kill the weak vectors.
(gc) ;; thrice: because the test doesn't succeed with only
;; one gc round. not sure why.
;; Avoid false references to the modules on the stack.
(let cleanup ((i 20))
(and (> i 0)
(begin (cleanup (1- i)) i)))
(= (let lp ((i 0))
(if (guard)
(lp (1+ i))
i))
total))))
(gc)
(gc) ;; twice: have to kill the weak vectors.
(gc) ;; thrice: because the test doesn't succeed with only
;; one gc round. not sure why.
(= (let lp ((i 0))
(if (guard)
(lp (1+ i))
i))
total))))