summaryrefslogtreecommitdiff
path: root/libguile/tags.h
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2010-03-27 17:35:46 -0400
committerAndy Wingo <wingo@pobox.com>2010-03-28 14:34:19 +0200
commitf60c2c4e100b36e5ec2616ba7940280b57d952b9 (patch)
tree7f2bc085b100794a730d28f0e55b70d789f121c3 /libguile/tags.h
parent98dcf051e00bb0b36b932b60e5bdce584f2acde4 (diff)
downloadguile-f60c2c4e100b36e5ec2616ba7940280b57d952b9.tar.gz
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/boolean.c: * libguile/boolean.h: SCM_XXX_ANOTHER_BOOLEAN_DONT_USE --> SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_0
Diffstat (limited to 'libguile/tags.h')
-rw-r--r--libguile/tags.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/libguile/tags.h b/libguile/tags.h
index 2e6dea22e..d11bf6864 100644
--- a/libguile/tags.h
+++ b/libguile/tags.h
@@ -498,7 +498,7 @@ enum scm_tc8_tags
* must all be equal except for two bit positions.
* (used to implement scm_is_lisp_false)
*
- * - SCM_ELISP_NIL, SCM_BOOL_F, SCM_BOOL_T, SCM_XXX_ANOTHER_BOOLEAN_DONT_USE
+ * - SCM_ELISP_NIL, SCM_BOOL_F, SCM_BOOL_T, SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_0
* must all be equal except for two bit positions.
* (used to implement scm_is_bool_or_nil)
*
@@ -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))