;;;; gc.test --- test guile's garbage collection -*- scheme -*-
-;;;; Copyright (C) 2000, 2001, 2004, 2006, 2007 Free Software Foundation, Inc.
+;;;; Copyright (C) 2000, 2001, 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
(with-test-prefix "gc"
(pass-if "Unused modules are removed"
- ;; FIXME: This test fails because of the circular reference
- ;; created by `make-module' between the module itself and its
- ;; standard eval closure.
(let* ((guard (make-guardian))
(total 1000))
(for-each (lambda (x) (guard (make-module))) (iota total))
+
+ ;; XXX: This hack aims to clean up the stack to make sure we
+ ;; don't leave a reference to one of the modules we created. It
+ ;; proved to be useful on SPARC:
+ ;; http://lists.gnu.org/archive/html/guile-devel/2008-02/msg00006.html .
+ (let cleanup ((i 10))
+ (and (> i 0)
+ (begin (cleanup (1- i)) i)))
+
(gc)
(gc) ;; twice: have to kill the weak vectors.
(= (length (filter (lambda (x)