minor bytecode-compiler fix
A bogus flag was propagated to closure information. This flag was ignored by the validator, but not `zo-parse'. Make the validator reject the bogus flag, too, while fixing the compiler.
This commit is contained in:
parent
702df4b07a
commit
be20ecc8f3
|
@ -1933,7 +1933,7 @@ resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info,
|
|||
if (!convert_boxes)
|
||||
convert_boxes = allocate_boxmap(offset);
|
||||
scheme_boxmap_set(convert_boxes, cp, bit, 0);
|
||||
if (need_flags)
|
||||
if (need_flags && (bit > CLOS_TYPE_TYPE_OFFSET))
|
||||
scheme_boxmap_set(closure_map, cp + data->num_params, bit, need_flags);
|
||||
}
|
||||
closure_map[cp] = old_pos;
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
consistently.)
|
||||
*/
|
||||
|
||||
#define MZSCHEME_VERSION "5.3.1.7"
|
||||
#define MZSCHEME_VERSION "5.3.1.8"
|
||||
|
||||
#define MZSCHEME_VERSION_X 5
|
||||
#define MZSCHEME_VERSION_Y 3
|
||||
#define MZSCHEME_VERSION_Z 1
|
||||
#define MZSCHEME_VERSION_W 7
|
||||
#define MZSCHEME_VERSION_W 8
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
|
|
@ -1029,6 +1029,8 @@ static void validate_unclosed_procedure(Mz_CPort *port, Scheme_Object *expr,
|
|||
int pos = data->num_params + i;
|
||||
int ct;
|
||||
ct = scheme_boxmap_get(map, pos, data->closure_size);
|
||||
if (ct == CLOS_TYPE_BOXED)
|
||||
scheme_ill_formed_code(port);
|
||||
if (ct > CLOS_TYPE_TYPE_OFFSET) {
|
||||
if (vld != (VALID_TYPED + (ct - CLOS_TYPE_TYPE_OFFSET)))
|
||||
vld = VALID_NOT;
|
||||
|
|
Loading…
Reference in New Issue
Block a user