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
|
#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) {
|
static int cons_cell_SIZE(void *p, struct NewGC *gc) {
|
||||||
return
|
return
|
||||||
gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object));
|
gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object));
|
||||||
|
|
|
@ -543,6 +543,16 @@ symbol_obj {
|
||||||
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3);
|
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 {
|
cons_cell {
|
||||||
mark:
|
mark:
|
||||||
Scheme_Object *o = (Scheme_Object *)p;
|
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_unix_path_type, bstring_obj);
|
||||||
GC_REG_TRAV(scheme_windows_path_type, bstring_obj);
|
GC_REG_TRAV(scheme_windows_path_type, bstring_obj);
|
||||||
GC_REG_TRAV(scheme_symbol_type, symbol_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_keyword_type, symbol_obj);
|
||||||
GC_REG_TRAV(scheme_null_type, char_obj); /* small */
|
GC_REG_TRAV(scheme_null_type, char_obj); /* small */
|
||||||
GC_REG_TRAV(scheme_pair_type, cons_cell);
|
GC_REG_TRAV(scheme_pair_type, cons_cell);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user