fix broken resize of place array

Change default array size from 32 to 4, so that the
resize path is used (and tested) on more typical
machines.
This commit is contained in:
Matthew Flatt 2015-11-24 09:19:38 -07:00
parent fcfa969b4a
commit b443f3fe68

View File

@ -2984,11 +2984,11 @@ void GC_allow_master_gc_check() {
static void NewGCMasterInfo_initialize() { static void NewGCMasterInfo_initialize() {
int i; int i;
MASTERGCINFO = ofm_malloc_zero(sizeof(NewGCMasterInfo)); MASTERGCINFO = ofm_malloc_zero(sizeof(NewGCMasterInfo));
MASTERGCINFO->size = 32; MASTERGCINFO->size = 4;
MASTERGCINFO->alive = 0; MASTERGCINFO->alive = 0;
MASTERGCINFO->ready = 0; MASTERGCINFO->ready = 0;
MASTERGCINFO->signal_fds = (void **)ofm_malloc(sizeof(void*) * MASTERGCINFO->size); MASTERGCINFO->signal_fds = (void **)ofm_malloc(sizeof(void*) * MASTERGCINFO->size);
for (i=0; i < 32; i++ ) { for (i=0; i < MASTERGCINFO->size; i++ ) {
MASTERGCINFO->signal_fds[i] = (void *)REAPED_SLOT_AVAILABLE; MASTERGCINFO->signal_fds[i] = (void *)REAPED_SLOT_AVAILABLE;
} }
mzrt_rwlock_create(&MASTERGCINFO->cangc); mzrt_rwlock_create(&MASTERGCINFO->cangc);
@ -3157,7 +3157,6 @@ static intptr_t NewGCMasterInfo_find_free_id() {
void **new_signal_fds; void **new_signal_fds;
size = MASTERGCINFO->size * 2; size = MASTERGCINFO->size * 2;
MASTERGCINFO->alive++;
new_signal_fds = ofm_malloc(sizeof(void*) * size); new_signal_fds = ofm_malloc(sizeof(void*) * size);
memcpy(new_signal_fds, MASTERGCINFO->signal_fds, sizeof(void*) * MASTERGCINFO->size); memcpy(new_signal_fds, MASTERGCINFO->signal_fds, sizeof(void*) * MASTERGCINFO->size);
@ -3165,6 +3164,8 @@ static intptr_t NewGCMasterInfo_find_free_id() {
new_signal_fds[i] = (void *)REAPED_SLOT_AVAILABLE; new_signal_fds[i] = (void *)REAPED_SLOT_AVAILABLE;
} }
ofm_free(MASTERGCINFO->signal_fds, sizeof(void*) * MASTERGCINFO->size);
MASTERGCINFO->signal_fds = new_signal_fds; MASTERGCINFO->signal_fds = new_signal_fds;
MASTERGCINFO->size = size; MASTERGCINFO->size = size;
} }