diff options
-rw-r--r-- | libguile/ChangeLog | 9 | ||||
-rw-r--r-- | libguile/gc.h | 4 | ||||
-rw-r--r-- | libguile/hooks.c | 2 | ||||
-rw-r--r-- | libguile/modules.c | 8 |
4 files changed, 16 insertions, 7 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 51aab8bd5..dd9906c61 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,5 +1,14 @@ 2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de> + * gc.h (SCM_FREE_CELL_CDR, SCM_SET_FREE_CELL_CDR), hooks.c + (make_hook), modules.c (OBARRAY, USES, BINDER): Pack and unpack + SCM values appropriately. + + * modules.c (scm_standard_eval_closure): Don't pass an inum to + scm_makcclo, but rather a long value. + +2000-07-18 Dirk Herrmann <D.Herrmann@tu-bs.de> + read.c (scm_lreadrecparen), srcprop.c (scm_set_source_property_x): SCM_SETCDR and SCM_WHASHSET macros don't deliver a return value. Thanks to Han-Wen Nienhuys for the bug report. diff --git a/libguile/gc.h b/libguile/gc.h index 9a647e843..7f1207671 100644 --- a/libguile/gc.h +++ b/libguile/gc.h @@ -154,11 +154,11 @@ typedef scm_cell * SCM_CELLPTR; #define SCM_FREE_CELL_P(x) \ (!SCM_IMP (x) && (* (const scm_bits_t *) SCM2PTR (x) == scm_tc_free_cell)) #define SCM_FREE_CELL_CDR(x) \ - (((const scm_bits_t *) SCM2PTR (x)) [1]) + (SCM_PACK (((const scm_bits_t *) SCM2PTR (x)) [1])) #define SCM_SET_FREE_CELL_TYPE(x, v) \ (((scm_bits_t *) SCM2PTR (x)) [0] = (v)) #define SCM_SET_FREE_CELL_CDR(x, v) \ - (((scm_bits_t *) SCM2PTR (x)) [1] = (v)) + (((scm_bits_t *) SCM2PTR (x)) [1] = SCM_UNPACK (v)) /* the allocated thing: The car of new cells is set to scm_tc16_allocated to avoid the fragile state of newcells wrt the diff --git a/libguile/hooks.c b/libguile/hooks.c index 712debd87..14609cb5e 100644 --- a/libguile/hooks.c +++ b/libguile/hooks.c @@ -167,7 +167,7 @@ make_hook (SCM n_args, const char *subr) if (n < 0 || n > 16) scm_out_of_range (subr, n_args); } - SCM_RETURN_NEWSMOB (scm_tc16_hook + (n << 16), SCM_EOL); + SCM_RETURN_NEWSMOB (scm_tc16_hook + (n << 16), SCM_UNPACK (SCM_EOL)); } diff --git a/libguile/modules.c b/libguile/modules.c index 6e5d3413a..ad016582a 100644 --- a/libguile/modules.c +++ b/libguile/modules.c @@ -188,9 +188,9 @@ scm_system_module_env_p (SCM env) * The code will be replaced by the low-level environments in next release. */ -#define OBARRAY(module) (SCM_STRUCT_DATA (module) [0]) -#define USES(module) (SCM_STRUCT_DATA (module) [1]) -#define BINDER(module) (SCM_STRUCT_DATA (module) [2]) +#define OBARRAY(module) (SCM_PACK (SCM_STRUCT_DATA (module) [0])) +#define USES(module) (SCM_PACK (SCM_STRUCT_DATA (module) [1])) +#define BINDER(module) (SCM_PACK (SCM_STRUCT_DATA (module) [2])) static SCM module_make_local_var_x; @@ -246,7 +246,7 @@ SCM_DEFINE (scm_standard_eval_closure, "standard-eval-closure", 1, 0, 0, "") #define FUNC_NAME s_scm_standard_eval_closure { - SCM cclo = scm_makcclo (f_eval_closure, SCM_MAKINUM (2)); + SCM cclo = scm_makcclo (f_eval_closure, 2); SCM_VELTS (cclo) [1] = module; return cclo; } |