fix validator and JIT to match with-continuation-mark
compilation
Compiler changes allow the body of a `with-continuation-mark` form to produce an unboxed value, but the validator and JIT were not updated for that change.
This commit is contained in:
parent
6c7a9ae03a
commit
bfb14637a6
|
@ -3235,10 +3235,13 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w
|
|||
case scheme_with_cont_mark_type:
|
||||
{
|
||||
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)obj;
|
||||
mz_jit_unbox_state ubs;
|
||||
START_JIT_DATA();
|
||||
|
||||
LOG_IT(("wcm...\n"));
|
||||
|
||||
scheme_mz_unbox_save(jitter, &ubs);
|
||||
|
||||
/* Key: */
|
||||
scheme_generate_non_tail(wcm->key, jitter, 0, 1, 0); /* sync'd below */
|
||||
mz_pushr_p(JIT_R0); /* sync'd below */
|
||||
|
@ -3283,6 +3286,8 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w
|
|||
LOG_IT(("...in\n"));
|
||||
|
||||
jitter->pushed_marks++;
|
||||
|
||||
scheme_mz_unbox_restore(jitter, &ubs);
|
||||
|
||||
return scheme_generate(wcm->body, jitter, is_tail, wcm_may_replace,
|
||||
multi_ok, orig_target, for_branch, for_values);
|
||||
|
|
|
@ -1721,8 +1721,6 @@ static int validate_expr(Mz_CPort *port, Scheme_Object *expr,
|
|||
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)expr;
|
||||
int r;
|
||||
|
||||
no_typed(need_local_type, port);
|
||||
|
||||
r = validate_expr(port, wcm->key, stack, tls, depth, letlimit, delta,
|
||||
num_toplevels, num_stxes, num_lifts, tl_use_map,
|
||||
tl_state, tl_timestamp,
|
||||
|
|
Loading…
Reference in New Issue
Block a user