[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.3-209-g9c5d7
From: |
Andy Wingo |
Subject: |
[Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.3-209-g9c5d7fa |
Date: |
Sun, 29 Jan 2012 21:46:05 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=9c5d7fa6714e2c8f5e808cdc211f6bd0c1cd49d6
The branch, stable-2.0 has been updated
via 9c5d7fa6714e2c8f5e808cdc211f6bd0c1cd49d6 (commit)
from a18e13a57c064cc1cde9a96b7ac006cdee3263e0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9c5d7fa6714e2c8f5e808cdc211f6bd0c1cd49d6
Author: Andy Wingo <address@hidden>
Date: Sun Jan 29 22:45:56 2012 +0100
paper over some "lexical vars are collectable" flakiness
* test-suite/tests/gc.test ("gc"): Hack around flakiness in "lexical
vars are collectable" on some architectures.
-----------------------------------------------------------------------
Summary of changes:
test-suite/tests/gc.test | 34 +++++++++++++++++++++++-----------
1 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/test-suite/tests/gc.test b/test-suite/tests/gc.test
index 527bef5..97eeb19 100644
--- a/test-suite/tests/gc.test
+++ b/test-suite/tests/gc.test
@@ -87,14 +87,26 @@
total)))
(pass-if "Lexical vars are collectable"
- (list?
- (compile
- '(begin
- (define guardian (make-guardian))
- (let ((f (list 'foo)))
- ;; Introduce a useless second reference to f to prevent the
- ;; optimizer from propagating the lexical binding.
- f
- (guardian f))
- (gc)(gc)(gc)
- (guardian))))))
+ (let ((l (compile
+ '(begin
+ (define guardian (make-guardian))
+ (let ((f (list 'foo)))
+ (guardian f))
+ ;; See below.
+ ;; ((lambda () #t))
+ (gc)(gc)(gc)
+ (guardian))
+ ;; Prevent the optimizer from propagating f.
+ #:opts '(#:partial-eval? #f))))
+ (if (not l)
+ ;; We think that something on the C stack in the VM is holding
+ ;; on to a reference to the list. This happens on
+ ;; register-poor architectures, where more locals are spilled
+ ;; to the stack. If more code runs before the (gc) is run,
+ ;; like a ((lambda () #t)), then the test passes. So given
+ ;; that at some point, the reference will be dropped, we will
+ ;; count these cases as "unresolved" instead of "fail".
+ ;;
+ ;; See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10336.
+ (throw 'unresolved)
+ (equal? l '(foo))))))
hooks/post-receive
--
GNU Guile
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] GNU Guile branch, stable-2.0, updated. v2.0.3-209-g9c5d7fa,
Andy Wingo <=