From 85ef1e2153a07025c6ba31d85de00fe862ebef4a Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Thu, 5 May 2011 16:01:21 -0600 Subject: [PATCH] Added gc mark and fixup support for scheme_serialized_symbol --- src/racket/src/mzmark_type.inc | 27 +++++++++++++++++++++++++++ src/racket/src/mzmarksrc.c | 10 ++++++++++ src/racket/src/type.c | 3 +++ 3 files changed, 40 insertions(+) diff --git a/src/racket/src/mzmark_type.inc b/src/racket/src/mzmark_type.inc index cd6ab819ae..4fcd260cac 100644 --- a/src/racket/src/mzmark_type.inc +++ b/src/racket/src/mzmark_type.inc @@ -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)); diff --git a/src/racket/src/mzmarksrc.c b/src/racket/src/mzmarksrc.c index 0fd07175a6..53a05442f4 100644 --- a/src/racket/src/mzmarksrc.c +++ b/src/racket/src/mzmarksrc.c @@ -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; diff --git a/src/racket/src/type.c b/src/racket/src/type.c index de23f847a3..41453b5200 100644 --- a/src/racket/src/type.c +++ b/src/racket/src/type.c @@ -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);