mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 04:10:18 +02:00
* objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
casts its result, so doesn't yield an lvalue per ANSI C. * goops.c (s_scm_sys_set_object_setter_x): use SCM_SET_ENTITY_SETTER. (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE. * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts its result, so doesn't yield an lvalue per ANSI C. (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS. (SCM_GC_CLR_CARD_FLAGS): redefined in terms of SCM_GC_SET_CARD_FLAGS. (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto. * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
This commit is contained in:
parent
60d02d0914
commit
322ec19d3c
5 changed files with 35 additions and 7 deletions
|
@ -1,3 +1,23 @@
|
||||||
|
2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
|
||||||
|
|
||||||
|
from Matthias Köppe:
|
||||||
|
|
||||||
|
* objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
|
||||||
|
casts its result, so doesn't yield an lvalue per ANSI C.
|
||||||
|
|
||||||
|
* goops.c (s_scm_sys_set_object_setter_x): use
|
||||||
|
SCM_SET_ENTITY_SETTER.
|
||||||
|
(clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
|
||||||
|
|
||||||
|
* gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
|
||||||
|
its result, so doesn't yield an lvalue per ANSI C.
|
||||||
|
(SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
|
||||||
|
(SCM_GC_CLR_CARD_FLAGS): redefined in terms of
|
||||||
|
SCM_GC_SET_CARD_FLAGS.
|
||||||
|
(SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
|
||||||
|
|
||||||
|
* gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
|
||||||
|
|
||||||
2001-01-08 Gary Houston <ghouston@arglist.com>
|
2001-01-08 Gary Houston <ghouston@arglist.com>
|
||||||
|
|
||||||
* validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
|
* validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
|
||||||
|
|
|
@ -2026,7 +2026,7 @@ int scm_n_heap_segs = 0;
|
||||||
|
|
||||||
#define INIT_CARD(card, span) \
|
#define INIT_CARD(card, span) \
|
||||||
do { \
|
do { \
|
||||||
SCM_GC_CARD_BVEC (card) = get_bvec (); \
|
SCM_GC_SET_CARD_BVEC (card, get_bvec ()); \
|
||||||
if ((span) == 2) \
|
if ((span) == 2) \
|
||||||
SCM_GC_SET_CARD_DOUBLECELL (card); \
|
SCM_GC_SET_CARD_DOUBLECELL (card); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
|
@ -94,14 +94,19 @@ typedef scm_cell * SCM_CELLPTR;
|
||||||
SCM_PTR_LT ((scm_cell *) (x), SCM_GC_CELL_CARD (x) + SCM_GC_CARD_N_HEADER_CELLS)
|
SCM_PTR_LT ((scm_cell *) (x), SCM_GC_CELL_CARD (x) + SCM_GC_CARD_N_HEADER_CELLS)
|
||||||
|
|
||||||
#define SCM_GC_CARD_BVEC(card) ((scm_c_bvec_limb_t *) ((card)->word_0))
|
#define SCM_GC_CARD_BVEC(card) ((scm_c_bvec_limb_t *) ((card)->word_0))
|
||||||
|
#define SCM_GC_SET_CARD_BVEC(card, bvec) \
|
||||||
|
((card)->word_0 = (scm_bits_t) (bvec))
|
||||||
|
|
||||||
#define SCM_GC_GET_CARD_FLAGS(card) ((long) ((card)->word_1))
|
#define SCM_GC_GET_CARD_FLAGS(card) ((long) ((card)->word_1))
|
||||||
#define SCM_GC_SET_CARD_FLAGS(card, flags) (SCM_GC_GET_CARD_FLAGS (card) = (flags))
|
#define SCM_GC_SET_CARD_FLAGS(card, flags) \
|
||||||
#define SCM_GC_CLR_CARD_FLAGS(card) (SCM_GC_GET_CARD_FLAGS (card) = 0L)
|
((card)->word_1 = (scm_bits_t) (flags))
|
||||||
|
#define SCM_GC_CLR_CARD_FLAGS(card) (SCM_GC_SET_CARD_FLAGS (card, 0L))
|
||||||
|
|
||||||
#define SCM_GC_GET_CARD_FLAG(card, shift) (SCM_GC_GET_CARD_FLAGS (card) & (1L << (shift)))
|
#define SCM_GC_GET_CARD_FLAG(card, shift) (SCM_GC_GET_CARD_FLAGS (card) & (1L << (shift)))
|
||||||
#define SCM_GC_SET_CARD_FLAG(card, shift) (SCM_GC_GET_CARD_FLAGS (card) |= (1L << (shift)))
|
#define SCM_GC_SET_CARD_FLAG(card, shift) \
|
||||||
#define SCM_GC_CLR_CARD_FLAG(card, shift) (SCM_GC_GET_CARD_FLAGS (card) &= ~(1L << (shift)))
|
(SCM_GC_SET_CARD_FLAGS (card, SCM_GC_GET_CARD_FLAGS(card) | (1L << (shift))))
|
||||||
|
#define SCM_GC_CLR_CARD_FLAG(card, shift) \
|
||||||
|
(SCM_GC_SET_CARD_FLAGS (card, SCM_GC_GET_CARD_FLAGS(card) & ~(1L << (shift))))
|
||||||
|
|
||||||
#define SCM_GC_CARDF_DOUBLECELL 0
|
#define SCM_GC_CARDF_DOUBLECELL 0
|
||||||
|
|
||||||
|
|
|
@ -1366,7 +1366,7 @@ SCM_DEFINE (scm_sys_set_object_setter_x, "%set-object-setter!", 2, 0, 0,
|
||||||
SCM_ARG1,
|
SCM_ARG1,
|
||||||
FUNC_NAME);
|
FUNC_NAME);
|
||||||
if (SCM_I_ENTITYP (obj))
|
if (SCM_I_ENTITYP (obj))
|
||||||
SCM_ENTITY_SETTER (obj) = setter;
|
SCM_SET_ENTITY_SETTER (obj, setter);
|
||||||
else
|
else
|
||||||
SCM_OPERATOR_CLASS (obj)->setter = setter;
|
SCM_OPERATOR_CLASS (obj)->setter = setter;
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
|
@ -1545,7 +1545,8 @@ scm_make_method_cache (SCM gf)
|
||||||
static void
|
static void
|
||||||
clear_method_cache (SCM gf)
|
clear_method_cache (SCM gf)
|
||||||
{
|
{
|
||||||
SCM_ENTITY_PROCEDURE (gf) = scm_make_method_cache (gf);
|
SCM cache = scm_make_method_cache (gf);
|
||||||
|
SCM_SET_ENTITY_PROCEDURE (gf, cache);
|
||||||
SCM_SLOT (gf, scm_si_used_by) = SCM_BOOL_F;
|
SCM_SLOT (gf, scm_si_used_by) = SCM_BOOL_F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,6 +94,8 @@
|
||||||
#define SCM_SET_ENTITY_PROCEDURE(obj,v) \
|
#define SCM_SET_ENTITY_PROCEDURE(obj,v) \
|
||||||
(SCM_STRUCT_DATA (obj) [scm_struct_i_procedure] = SCM_UNPACK (v))
|
(SCM_STRUCT_DATA (obj) [scm_struct_i_procedure] = SCM_UNPACK (v))
|
||||||
#define SCM_ENTITY_SETTER(obj) (SCM_PACK (SCM_STRUCT_DATA (obj)[scm_struct_i_setter]))
|
#define SCM_ENTITY_SETTER(obj) (SCM_PACK (SCM_STRUCT_DATA (obj)[scm_struct_i_setter]))
|
||||||
|
#define SCM_SET_ENTITY_SETTER(obj, v) \
|
||||||
|
(SCM_STRUCT_DATA (obj) [scm_struct_i_setter] = SCM_UNPACK (v))
|
||||||
|
|
||||||
#define SCM_SET_CLASS_DESTRUCTOR(c, d) SCM_SET_VTABLE_DESTRUCTOR (c, d)
|
#define SCM_SET_CLASS_DESTRUCTOR(c, d) SCM_SET_VTABLE_DESTRUCTOR (c, d)
|
||||||
#define SCM_SET_CLASS_INSTANCE_SIZE(c, s) \
|
#define SCM_SET_CLASS_INSTANCE_SIZE(c, s) \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue