From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: ludo@gnu.org (Ludovic =?iso-8859-1?Q?Court=E8s?=) Newsgroups: gmane.lisp.guile.devel Subject: SCM_BOOL_F == 0 and BDW-GC Date: Mon, 31 Aug 2009 23:55:17 +0200 Message-ID: <87zl9fps1m.fsf_-_@gnu.org> References: <87k52uvhnt.fsf@arudy.ossau.uklinux.net> <20090702142823.GA1401@fibril.netris.org> <877hyqk8bx.fsf@arudy.ossau.uklinux.net> <20090703153218.GA1382@fibril.netris.org> <20090705024135.GA2363@fibril.netris.org> <20090707111406.GA1388@fibril.netris.org> <87iqg5y2o8.fsf@arudy.ossau.uklinux.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1251755841 27179 80.91.229.12 (31 Aug 2009 21:57:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 31 Aug 2009 21:57:21 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Mon Aug 31 23:57:14 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MiEsC-00039Q-4P for guile-devel@m.gmane.org; Mon, 31 Aug 2009 23:57:12 +0200 Original-Received: from localhost ([127.0.0.1]:53177 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MiEsB-0005fl-FH for guile-devel@m.gmane.org; Mon, 31 Aug 2009 17:57:11 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MiEqq-0005EH-7c for guile-devel@gnu.org; Mon, 31 Aug 2009 17:55:48 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MiEql-0005C0-SC for guile-devel@gnu.org; Mon, 31 Aug 2009 17:55:47 -0400 Original-Received: from [199.232.76.173] (port=59494 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MiEql-0005Bu-FI for guile-devel@gnu.org; Mon, 31 Aug 2009 17:55:43 -0400 Original-Received: from lo.gmane.org ([80.91.229.12]:52838) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MiEqk-0000kc-TH for guile-devel@gnu.org; Mon, 31 Aug 2009 17:55:43 -0400 Original-Received: from list by lo.gmane.org with local (Exim 4.50) id 1MiEqi-0002kb-0B for guile-devel@gnu.org; Mon, 31 Aug 2009 23:55:40 +0200 Original-Received: from reverse-83.fdn.fr ([80.67.176.83]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 31 Aug 2009 23:55:39 +0200 Original-Received: from ludo by reverse-83.fdn.fr with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 31 Aug 2009 23:55:39 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 34 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: reverse-83.fdn.fr X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 14 Fructidor an 217 de la =?iso-8859-1?Q?R=E9volutio?= =?iso-8859-1?Q?n?= X-PGP-Key-ID: 0xEA52ECF4 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 821D 815D 902A 7EAB 5CEE D120 7FBA 3D4F EB1F 5364 X-OS: x86_64-unknown-linux-gnu User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) Cancel-Lock: sha1:5etyaHk7Leqcv0savROcPf/WQn8= X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:9222 Archived-At: Hello! Neil Jerram writes: > Just checking this because Ludovic said recently that (SCM_BOOL_F == > 0) would have nice properties for BDW-GC. Actually he wasn't quite right when he said that. :-) The issue with BDW-GC is that "disappearing links" (weak pointers in libgc parlance) replace pointers to objects that have been reclaimed by NULL, and there's no way to tell it to use some other value. That leads to insanities in the weak hash table implementation [0, 1], which I thought could somehow vanish if SCM_BOOL_F == 0. Unfortunately that's not true; it would even make things worse because NULL would now be a valid Scheme value. Instead what's really needed is a special pointer-to-reclaimed-object value that can be distinguished from valid Scheme values since that value ends up in the car or cdr of weak pairs in hash table buckets. As such, SCM_PACK (NULL) was a good choice until now. SCM_UNDEFINED == 0 would work fine because SCM_UNDEFINED is not a valid Scheme value, but it wouldn't change the implementation. Thoughts? Thanks, Ludo'. [0] http://git.savannah.gnu.org/cgit/guile.git/tree/libguile/weaks.c?h=boehm-demers-weiser-gc#n40 [1] http://git.savannah.gnu.org/cgit/guile.git/tree/libguile/hashtab.c?h=boehm-demers-weiser-gc#n97