Added gc mark and fixup support for scheme_serialized_symbol

This commit is contained in:
Kevin Tew 2011-05-05 16:01:21 -06:00
parent 94d92092a5
commit 85ef1e2153
3 changed files with 40 additions and 0 deletions

View File

@ -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));

View File

@ -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;

View File

@ -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);