diff options
author | Mark H Weaver <mhw@netris.org> | 2010-03-27 17:35:46 -0400 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-03-28 14:34:19 +0200 |
commit | f60c2c4e100b36e5ec2616ba7940280b57d952b9 (patch) | |
tree | 7f2bc085b100794a730d28f0e55b70d789f121c3 /libguile/tags.h | |
parent | 98dcf051e00bb0b36b932b60e5bdce584f2acde4 (diff) | |
download | guile-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.h | 14 |
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)) |