Added gc mark and fixup support for scheme_serialized_symbol
This commit is contained in:
parent
94d92092a5
commit
85ef1e2153
|
@ -1409,6 +1409,33 @@ static int symbol_obj_FIXUP(void *p, struct NewGC *gc) {
|
|||
#define symbol_obj_IS_CONST_SIZE 0
|
||||
|
||||
|
||||
#ifdef MZ_USE_PLACES
|
||||
static int serialized_symbol_obj_SIZE(void *p, struct NewGC *gc) {
|
||||
Scheme_Symbol *s = (Scheme_Symbol *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
||||
}
|
||||
|
||||
static int serialized_symbol_obj_MARK(void *p, struct NewGC *gc) {
|
||||
Scheme_Symbol *s = (Scheme_Symbol *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
||||
}
|
||||
|
||||
static int serialized_symbol_obj_FIXUP(void *p, struct NewGC *gc) {
|
||||
Scheme_Symbol *s = (Scheme_Symbol *)p;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
||||
}
|
||||
|
||||
#define serialized_symbol_obj_IS_ATOMIC 1
|
||||
#define serialized_symbol_obj_IS_CONST_SIZE 0
|
||||
|
||||
#endif
|
||||
|
||||
static int cons_cell_SIZE(void *p, struct NewGC *gc) {
|
||||
return
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object));
|
||||
|
|
|
@ -543,6 +543,16 @@ symbol_obj {
|
|||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
||||
}
|
||||
|
||||
#ifdef MZ_USE_PLACES
|
||||
serialized_symbol_obj {
|
||||
Scheme_Symbol *s = (Scheme_Symbol *)p;
|
||||
|
||||
mark:
|
||||
size:
|
||||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
||||
}
|
||||
#endif
|
||||
|
||||
cons_cell {
|
||||
mark:
|
||||
Scheme_Object *o = (Scheme_Object *)p;
|
||||
|
|
|
@ -575,6 +575,9 @@ void scheme_register_traversers(void)
|
|||
GC_REG_TRAV(scheme_unix_path_type, bstring_obj);
|
||||
GC_REG_TRAV(scheme_windows_path_type, bstring_obj);
|
||||
GC_REG_TRAV(scheme_symbol_type, symbol_obj);
|
||||
#ifdef MZ_USE_PLACES
|
||||
GC_REG_TRAV(scheme_serialized_symbol_type, serialized_symbol_obj);
|
||||
#endif
|
||||
GC_REG_TRAV(scheme_keyword_type, symbol_obj);
|
||||
GC_REG_TRAV(scheme_null_type, char_obj); /* small */
|
||||
GC_REG_TRAV(scheme_pair_type, cons_cell);
|
||||
|
|
Loading…
Reference in New Issue
Block a user