mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 15:10:29 +02:00
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
This commit is contained in:
parent
98dcf051e0
commit
f60c2c4e10
4 changed files with 13 additions and 9 deletions
|
@ -49,7 +49,7 @@ verify (SCM_VALUES_DIFFER_IN_EXACTLY_ONE_BIT_POSITION \
|
|||
(SCM_ELISP_NIL, SCM_EOL));
|
||||
verify (SCM_VALUES_DIFFER_IN_EXACTLY_TWO_BIT_POSITIONS \
|
||||
(SCM_ELISP_NIL, SCM_BOOL_F, SCM_BOOL_T, \
|
||||
SCM_XXX_ANOTHER_BOOLEAN_DONT_USE));
|
||||
SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_0));
|
||||
verify (SCM_VALUES_DIFFER_IN_EXACTLY_TWO_BIT_POSITIONS \
|
||||
(SCM_ELISP_NIL, SCM_BOOL_F, SCM_EOL, \
|
||||
SCM_XXX_ANOTHER_LISP_FALSE_DONT_USE));
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
*
|
||||
* If SCM_ENABLE_ELISP is true, then scm_is_bool_or_nil(x)
|
||||
* returns 1 if and only if x is one of the following: SCM_BOOL_F,
|
||||
* SCM_BOOL_T, SCM_ELISP_NIL, or SCM_XXX_ANOTHER_BOOLEAN_DONT_USE.
|
||||
* SCM_BOOL_T, SCM_ELISP_NIL, or SCM_XXX_ANOTHER_BOOLEAN_DONT_USE_0.
|
||||
* Otherwise, it returns 0.
|
||||
*/
|
||||
#if SCM_ENABLE_ELISP
|
||||
|
|
|
@ -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>",
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue