change `Scheme_Symbol' declaration to avoid compiler warnings

This commit is contained in:
Matthew Flatt 2012-11-01 09:09:36 -06:00
parent 0e4305fc45
commit f832c961a8
4 changed files with 10 additions and 6 deletions

View File

@ -127,10 +127,14 @@ typedef long FILE;
old way. */ old way. */
#ifdef MZ_USE_OLD_ARRAY_STYLE #ifdef MZ_USE_OLD_ARRAY_STYLE
# define mzFLEX_ARRAY_DECL 1 # define mzFLEX_ARRAY_DECL 1
# define mzFLEX_ARRAY4_DECL 4
# define mzFLEX_DELTA 1 # define mzFLEX_DELTA 1
# define mzFLEX4_DELTA 4
#else #else
# define mzFLEX_ARRAY_DECL /* empty */ # define mzFLEX_ARRAY_DECL /* empty */
# define mzFLEX_ARRAY4_DECL /* empty */
# define mzFLEX_DELTA 0 # define mzFLEX_DELTA 0
# define mzFLEX4_DELTA 0
#endif #endif
#ifdef MZ_XFORM #ifdef MZ_XFORM
@ -331,7 +335,7 @@ typedef struct {
typedef struct Scheme_Symbol { typedef struct Scheme_Symbol {
Scheme_Inclhash_Object iso; /* 1 in low bit of keyex indicates uninterned */ Scheme_Inclhash_Object iso; /* 1 in low bit of keyex indicates uninterned */
intptr_t len; intptr_t len;
char s[4]; /* Really, a number of chars to match `len' */ char s[mzFLEX_ARRAY4_DECL];
} Scheme_Symbol; } Scheme_Symbol;
typedef struct Scheme_Vector { typedef struct Scheme_Vector {

View File

@ -1417,21 +1417,21 @@ static int symbol_obj_SIZE(void *p, struct NewGC *gc) {
Scheme_Symbol *s = (Scheme_Symbol *)p; Scheme_Symbol *s = (Scheme_Symbol *)p;
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA);
} }
static int symbol_obj_MARK(void *p, struct NewGC *gc) { static int symbol_obj_MARK(void *p, struct NewGC *gc) {
Scheme_Symbol *s = (Scheme_Symbol *)p; Scheme_Symbol *s = (Scheme_Symbol *)p;
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA);
} }
static int symbol_obj_FIXUP(void *p, struct NewGC *gc) { static int symbol_obj_FIXUP(void *p, struct NewGC *gc) {
Scheme_Symbol *s = (Scheme_Symbol *)p; Scheme_Symbol *s = (Scheme_Symbol *)p;
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA);
} }
#define symbol_obj_IS_ATOMIC 1 #define symbol_obj_IS_ATOMIC 1

View File

@ -551,7 +551,7 @@ symbol_obj {
mark: mark:
size: size:
gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len - 3); gcBYTES_TO_WORDS(sizeof(Scheme_Symbol) + s->len + 1 - mzFLEX4_DELTA);
} }
cons_cell { cons_cell {

View File

@ -356,7 +356,7 @@ make_a_symbol(const char *name, uintptr_t len, int kind)
{ {
Scheme_Symbol *sym; Scheme_Symbol *sym;
sym = (Scheme_Symbol *)scheme_malloc_atomic_tagged(sizeof(Scheme_Symbol) + len - 3); sym = (Scheme_Symbol *)scheme_malloc_atomic_tagged(sizeof(Scheme_Symbol) + len + 1 - mzFLEX4_DELTA);
sym->iso.so.type = scheme_symbol_type; sym->iso.so.type = scheme_symbol_type;
MZ_OPT_HASH_KEY(&sym->iso) = kind; MZ_OPT_HASH_KEY(&sym->iso) = kind;