mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 12:20:26 +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));
|
(SCM_ELISP_NIL, SCM_EOL));
|
||||||
verify (SCM_VALUES_DIFFER_IN_EXACTLY_TWO_BIT_POSITIONS \
|
verify (SCM_VALUES_DIFFER_IN_EXACTLY_TWO_BIT_POSITIONS \
|
||||||
(SCM_ELISP_NIL, SCM_BOOL_F, SCM_BOOL_T, \
|
(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 \
|
verify (SCM_VALUES_DIFFER_IN_EXACTLY_TWO_BIT_POSITIONS \
|
||||||
(SCM_ELISP_NIL, SCM_BOOL_F, SCM_EOL, \
|
(SCM_ELISP_NIL, SCM_BOOL_F, SCM_EOL, \
|
||||||
SCM_XXX_ANOTHER_LISP_FALSE_DONT_USE));
|
SCM_XXX_ANOTHER_LISP_FALSE_DONT_USE));
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
*
|
*
|
||||||
* If SCM_ENABLE_ELISP is true, then scm_is_bool_or_nil(x)
|
* 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,
|
* 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.
|
* Otherwise, it returns 0.
|
||||||
*/
|
*/
|
||||||
#if SCM_ENABLE_ELISP
|
#if SCM_ENABLE_ELISP
|
||||||
|
|
|
@ -68,7 +68,9 @@ static const char *iflagnames[] =
|
||||||
"#<XXX UNUSED LISP FALSE -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
|
"#<XXX UNUSED LISP FALSE -- DO NOT USE -- SHOULD NEVER BE SEEN XXX>",
|
||||||
"()",
|
"()",
|
||||||
"#t",
|
"#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>",
|
"#<unspecified>",
|
||||||
"#<undefined>",
|
"#<undefined>",
|
||||||
"#<eof>",
|
"#<eof>",
|
||||||
|
|
|
@ -498,7 +498,7 @@ enum scm_tc8_tags
|
||||||
* must all be equal except for two bit positions.
|
* must all be equal except for two bit positions.
|
||||||
* (used to implement scm_is_lisp_false)
|
* (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.
|
* must all be equal except for two bit positions.
|
||||||
* (used to implement scm_is_bool_or_nil)
|
* (used to implement scm_is_bool_or_nil)
|
||||||
*
|
*
|
||||||
|
@ -519,12 +519,14 @@ enum scm_tc8_tags
|
||||||
#define SCM_BOOL_T SCM_MAKIFLAG (4)
|
#define SCM_BOOL_T SCM_MAKIFLAG (4)
|
||||||
|
|
||||||
#ifdef BUILDING_LIBGUILE
|
#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
|
#endif
|
||||||
|
|
||||||
#define SCM_UNSPECIFIED SCM_MAKIFLAG (6)
|
#define SCM_UNSPECIFIED SCM_MAKIFLAG (8)
|
||||||
#define SCM_UNDEFINED SCM_MAKIFLAG (7)
|
#define SCM_UNDEFINED SCM_MAKIFLAG (9)
|
||||||
#define SCM_EOF_VAL SCM_MAKIFLAG (8)
|
#define SCM_EOF_VAL SCM_MAKIFLAG (10)
|
||||||
|
|
||||||
/* When a variable is unbound this is marked by the SCM_UNDEFINED
|
/* When a variable is unbound this is marked by the SCM_UNDEFINED
|
||||||
* value. The following is an unbound value which can be handled on
|
* 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
|
* 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
|
* used instead. It is not ideal to let this kind of unique and
|
||||||
* strange values loose on the Scheme level. */
|
* 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))
|
#define SCM_UNBNDP(x) (scm_is_eq ((x), SCM_UNDEFINED))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue