The msymbol slots are now a field of scm_bits_t values.
This commit is contained in:
parent
12a8b76952
commit
cf551a2be9
4 changed files with 33 additions and 15 deletions
|
|
@ -1,3 +1,20 @@
|
|||
2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||
|
||||
* gc.c (scm_gc_sweep): Simplify the computation of freed memory
|
||||
size for msymbols.
|
||||
|
||||
* symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
|
||||
SCM_SYMBOL_HASH): The msymbol slots are now a field of scm_bits_t
|
||||
values.
|
||||
|
||||
* symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS): New
|
||||
macros.
|
||||
|
||||
symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
|
||||
scm_symbol_pset_x): Use them.
|
||||
|
||||
* symbols.c (scm_symbol_hash): Unpack to access SCM raw data.
|
||||
|
||||
2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||
|
||||
* ports.c (scm_port_print): The port data is read as raw data.
|
||||
|
|
@ -16,7 +33,7 @@
|
|||
|
||||
* objects.h (SCM_SET_ENTITY_PROCEDURE): New macro.
|
||||
|
||||
* objects.c (scm_set_object_procedure_x): Use it.
|
||||
objects.c (scm_set_object_procedure_x): Use it.
|
||||
|
||||
* struct.c (scm_struct_init): Unused variable 'data' removed.
|
||||
|
||||
|
|
@ -31,7 +48,7 @@
|
|||
|
||||
* struct.h (SCM_SET_STRUCT_LAYOUT): New macro.
|
||||
|
||||
* struct.c (scm_make_vtable_vtable): Use it.
|
||||
struct.c (scm_make_vtable_vtable): Use it.
|
||||
|
||||
2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
|
||||
|
||||
|
|
|
|||
|
|
@ -1747,9 +1747,8 @@ scm_gc_sweep ()
|
|||
case scm_tc7_msymbol:
|
||||
if (SCM_GC8MARKP (scmptr))
|
||||
goto c8mrkcontinue;
|
||||
m += ( SCM_LENGTH (scmptr)
|
||||
+ 1
|
||||
+ sizeof (SCM) * ((SCM *)SCM_CHARS (scmptr) - SCM_SLOTS(scmptr)));
|
||||
m += (SCM_LENGTH (scmptr) + 1
|
||||
+ (SCM_CHARS (scmptr) - (char *) SCM_SLOTS (scmptr)));
|
||||
scm_must_free ((char *)SCM_SLOTS (scmptr));
|
||||
break;
|
||||
case scm_tc7_contin:
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ scm_intern_obarray_soft (const char *name,scm_sizet len,SCM obarray,int softness
|
|||
|
||||
SCM_SETLENGTH (lsym, (long) len, scm_tc7_msymbol);
|
||||
SCM_SYMBOL_HASH (lsym) = scm_hash;
|
||||
SCM_SYMBOL_PROPS (lsym) = SCM_EOL;
|
||||
SCM_SET_SYMBOL_PROPS (lsym, SCM_EOL);
|
||||
if (SCM_FALSEP (obarray))
|
||||
{
|
||||
SCM answer;
|
||||
|
|
@ -704,7 +704,7 @@ msymbolize (SCM s)
|
|||
SCM_SETLENGTH (s, SCM_LENGTH (s), scm_tc7_msymbol);
|
||||
SCM_SETCDR (string, SCM_EOL);
|
||||
SCM_SETCAR (string, SCM_EOL);
|
||||
SCM_SYMBOL_PROPS (s) = SCM_EOL;
|
||||
SCM_SET_SYMBOL_PROPS (s, SCM_EOL);
|
||||
/* If it's a tc7_ssymbol, it comes from scm_symhash */
|
||||
SCM_SYMBOL_HASH (s) = scm_strhash (SCM_UCHARS (s),
|
||||
(scm_sizet) SCM_LENGTH (s),
|
||||
|
|
@ -752,7 +752,7 @@ SCM_DEFINE (scm_symbol_fset_x, "symbol-fset!", 2, 0, 0,
|
|||
if (SCM_TYP7(s) == scm_tc7_ssymbol)
|
||||
msymbolize (s);
|
||||
SCM_ALLOW_INTS;
|
||||
SCM_SYMBOL_FUNC (s) = val;
|
||||
SCM_SET_SYMBOL_FUNC (s, val);
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
|
@ -767,7 +767,7 @@ SCM_DEFINE (scm_symbol_pset_x, "symbol-pset!", 2, 0, 0,
|
|||
SCM_DEFER_INTS;
|
||||
if (SCM_TYP7(s) == scm_tc7_ssymbol)
|
||||
msymbolize (s);
|
||||
SCM_SYMBOL_PROPS (s) = val;
|
||||
SCM_SET_SYMBOL_PROPS (s, val);
|
||||
SCM_ALLOW_INTS;
|
||||
return SCM_UNSPECIFIED;
|
||||
}
|
||||
|
|
@ -783,7 +783,7 @@ SCM_DEFINE (scm_symbol_hash, "symbol-hash", 1, 0, 0,
|
|||
SCM_VALIDATE_SYMBOL (1,s);
|
||||
if (SCM_TYP7(s) == scm_tc7_ssymbol)
|
||||
msymbolize (s);
|
||||
return SCM_MAKINUM ((unsigned long)s ^ SCM_SYMBOL_HASH (s));
|
||||
return SCM_MAKINUM (SCM_UNPACK (s) ^ SCM_SYMBOL_HASH (s));
|
||||
}
|
||||
#undef FUNC_NAME
|
||||
|
||||
|
|
|
|||
|
|
@ -87,11 +87,13 @@ extern int scm_symhash_dim;
|
|||
#define SCM_UCHARS(x) ((unsigned char *) (SCM_CELL_WORD_1 (x)))
|
||||
#define SCM_SETCHARS(x, v) (SCM_SET_CELL_WORD_1 ((x), (scm_bits_t) (v)))
|
||||
|
||||
#define SCM_SYMBOL_SLOTS 4
|
||||
#define SCM_SLOTS(x) ((SCM *) (* ((SCM *) SCM_CHARS (x) - 1)))
|
||||
#define SCM_SYMBOL_FUNC(X) (SCM_SLOTS (X)[0])
|
||||
#define SCM_SYMBOL_PROPS(X) (SCM_SLOTS (X)[1])
|
||||
#define SCM_SYMBOL_HASH(X) (*(unsigned long*) (&SCM_SLOTS (X)[2]))
|
||||
#define SCM_SYMBOL_SLOTS 4
|
||||
#define SCM_SLOTS(x) ((scm_bits_t *) (* ((scm_bits_t *) SCM_CHARS (x) - 1)))
|
||||
#define SCM_SYMBOL_FUNC(X) (SCM_PACK (SCM_SLOTS (X) [0]))
|
||||
#define SCM_SET_SYMBOL_FUNC(X, v) (SCM_SLOTS (X) [0] = SCM_UNPACK (v))
|
||||
#define SCM_SYMBOL_PROPS(X) (SCM_PACK (SCM_SLOTS (X) [1]))
|
||||
#define SCM_SET_SYMBOL_PROPS(X, v) (SCM_SLOTS (X) [1] = SCM_UNPACK (v))
|
||||
#define SCM_SYMBOL_HASH(X) (SCM_SLOTS (X) [2])
|
||||
|
||||
#define SCM_ROSTRINGP(x) (SCM_NIMP(x) && ((SCM_TYP7S(x)==scm_tc7_string) \
|
||||
|| (SCM_TYP7S(x) == scm_tc7_ssymbol)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue