unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: guile-devel@gnu.org
Subject: [PATCH] Renumber IFLAGSs so the first 8 are reserved for lisp booleans.
Date: Sat, 27 Mar 2010 12:14:18 -0400	[thread overview]
Message-ID: <20100327161417.GA9481@fibril.netris.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

This patch makes the guile representation of lisp booleans match what
I outlined in my post of Aug 2009, "The cube of lisp booleans" [1].
The only difference from my earlier patch is the addition of two more
do-not-use IFLAGS (6 and 7), which enable more efficient
implementations of several operations.

I confess that I haven't yet tested this patch, but it's so trivial
that it must work *grin*.  Sorry, my development machine is an XO-1,
so compiling guile takes a very long time :(

     Mark

[1] http://lists.gnu.org/archive/html/guile-devel/2009-08/msg00206.html

[-- Attachment #2: 0001-Renumber-IFLAGSs-so-the-first-8-are-reserved-for-lis.patch --]
[-- Type: text/x-diff, Size: 2469 bytes --]

From 013392e6a069912adca367598e9bdc6e44fc0118 Mon Sep 17 00:00:00 2001
From: Mark H Weaver <mhw@netris.org>
Date: Sat, 27 Mar 2010 11:46:30 -0400
Subject: [PATCH] Renumber IFLAGSs so the first 8 are reserved for lisp booleans.

This enables more efficient implementations of several operations,
e.g. scm_is_lisp_bool, canonicalize_boolean, fast_boolean_not,
converting SCM booleans to C booleans, etc.

* libguile/tags.h: Renumber IFLAGs.
* libguile/print.c: Renumber iflagnames to match.
---
 libguile/print.c |    4 +++-
 libguile/tags.h  |   12 +++++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/libguile/print.c b/libguile/print.c
index 8867e6b..ca38d42 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -68,7 +68,9 @@ static const char *iflagnames[] =
   "#<XXX UNUSED LISP FALSE -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
   "()",
   "#t",
-  "#<XXX UNUSED BOOLEAN -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
+  "#<XXX UNUSED BOOLEAN 0 -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
+  "#<XXX UNUSED BOOLEAN 1 -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
+  "#<XXX UNUSED BOOLEAN 2 -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
   "#<unspecified>",
   "#<undefined>",
   "#<eof>",
diff --git a/libguile/tags.h b/libguile/tags.h
index 2e6dea2..dd9875e 100644
--- a/libguile/tags.h
+++ b/libguile/tags.h
@@ -519,12 +519,14 @@ enum scm_tc8_tags
 #define SCM_BOOL_T 		SCM_MAKIFLAG (4)
 
 #ifdef BUILDING_LIBGUILE
-#define SCM_XXX_ANOTHER_BOOLEAN_DONT_USE	SCM_MAKIFLAG (5)
+#define SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_0	SCM_MAKIFLAG (5)
+#define SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_1	SCM_MAKIFLAG (6)
+#define SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_2	SCM_MAKIFLAG (7)
 #endif
 
-#define SCM_UNSPECIFIED		SCM_MAKIFLAG (6)
-#define SCM_UNDEFINED	 	SCM_MAKIFLAG (7)
-#define SCM_EOF_VAL 		SCM_MAKIFLAG (8)
+#define SCM_UNSPECIFIED		SCM_MAKIFLAG (8)
+#define SCM_UNDEFINED	 	SCM_MAKIFLAG (9)
+#define SCM_EOF_VAL 		SCM_MAKIFLAG (10)
 
 /* When a variable is unbound this is marked by the SCM_UNDEFINED
  * value.  The following is an unbound value which can be handled on
@@ -534,7 +536,7 @@ enum scm_tc8_tags
  * the code which handles this value in C so that SCM_UNDEFINED can be
  * used instead.  It is not ideal to let this kind of unique and
  * strange values loose on the Scheme level.  */
-#define SCM_UNBOUND		SCM_MAKIFLAG (9)
+#define SCM_UNBOUND		SCM_MAKIFLAG (11)
 
 #define SCM_UNBNDP(x)		(scm_is_eq ((x), SCM_UNDEFINED))
 
-- 
1.5.6.5


             reply	other threads:[~2010-03-27 16:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-27 16:14 Mark H Weaver [this message]
2010-03-27 16:56 ` [PATCH] Renumber IFLAGSs so the first 8 are reserved for lisp booleans Mark H Weaver
2010-03-27 21:50 ` Mark H Weaver
2010-03-28 12:36   ` Andy Wingo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100327161417.GA9481@fibril.netris.org \
    --to=mhw@netris.org \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).