fix another bit-array-allocation problem in bytecode compiler

svn: r17358
This commit is contained in:
Matthew Flatt 2009-12-19 16:30:01 +00:00
parent 3e98722e10
commit b7efdd59a5

View File

@ -1505,18 +1505,13 @@ scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info,
&& (offset || !has_tl) /* either need args, or treat as convert becasue it's fully closed */
) {
/* Take over closure_map to be the convert map, instead. */
int new_boxes_size;
convert_map = closure_map;
convert_size = offset;
if (convert_boxes)
new_boxes_size = boxmap_size(convert_size + data->num_params + (has_tl ? 1 : 0));
else
new_boxes_size = 0;
if (has_tl || convert_boxes || cl->flonum_map) {
int new_boxes_size;
int sz;
new_boxes_size = boxmap_size(convert_size + data->num_params + (has_tl ? 1 : 0));
sz = ((has_tl ? sizeof(mzshort) : 0) + new_boxes_size * sizeof(mzshort));
closure_map = (mzshort *)scheme_malloc_atomic(sz);
memset(closure_map, 0, sz);
@ -1581,7 +1576,7 @@ scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info,
: 0)),
NULL);
if (cl->flonum_map && cl->flonum_map[i])
boxmap_set(closure_map, i + convert_size, 2, data->closure_size);
boxmap_set(closure_map, i + convert_size, 2, closure_size);
}
if (expanded_already && !just_compute_lift)
SCHEME_CLOSURE_DATA_FLAGS(data) |= CLOS_HAS_TYPED_ARGS;