1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

Add `gc.test' hack for SPARC GNU/Linux.

This commit is contained in:
Ludovic Courtès 2008-02-15 16:02:22 +00:00
parent 8cd5eae91d
commit f937ce3741
2 changed files with 16 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2008-02-15 Ludovic Courtès <ludo@gnu.org>
* tests/gc.test (gc): Add hack to clean up the stack so that the
test passes on SPARC.
2008-02-01 Neil Jerram <neil@ossau.uklinux.net> 2008-02-01 Neil Jerram <neil@ossau.uklinux.net>
* standalone/Makefile.am: Add stanza for test-with-guile-module. * standalone/Makefile.am: Add stanza for test-with-guile-module.

View file

@ -1,5 +1,5 @@
;;;; gc.test --- test guile's garbage collection -*- scheme -*- ;;;; gc.test --- test guile's garbage collection -*- scheme -*-
;;;; Copyright (C) 2000, 2001, 2004, 2006 Free Software Foundation, Inc. ;;;; Copyright (C) 2000, 2001, 2004, 2006, 2008 Free Software Foundation, Inc.
;;;; ;;;;
;;;; This library is free software; you can redistribute it and/or ;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public ;;;; modify it under the terms of the GNU Lesser General Public
@ -63,8 +63,17 @@
((dummy (gc)) ((dummy (gc))
(last-count (cdr (assoc (last-count (cdr (assoc
"eval-closure" (gc-live-object-stats))))) "eval-closure" (gc-live-object-stats)))))
(for-each (lambda (x) (make-module)) (iota 1000)) (for-each (lambda (x) (make-module)) (iota 1000))
;; 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)
(gc) ;; twice: have to kill the weak vectors. (gc) ;; twice: have to kill the weak vectors.
(= last-count (cdr (assoc "eval-closure" (gc-live-object-stats))))) (= last-count (cdr (assoc "eval-closure" (gc-live-object-stats)))))