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:
|
case scheme_with_cont_mark_type:
|
||||||
{
|
{
|
||||||
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)obj;
|
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)obj;
|
||||||
|
mz_jit_unbox_state ubs;
|
||||||
START_JIT_DATA();
|
START_JIT_DATA();
|
||||||
|
|
||||||
LOG_IT(("wcm...\n"));
|
LOG_IT(("wcm...\n"));
|
||||||
|
|
||||||
|
scheme_mz_unbox_save(jitter, &ubs);
|
||||||
|
|
||||||
/* Key: */
|
/* Key: */
|
||||||
scheme_generate_non_tail(wcm->key, jitter, 0, 1, 0); /* sync'd below */
|
scheme_generate_non_tail(wcm->key, jitter, 0, 1, 0); /* sync'd below */
|
||||||
mz_pushr_p(JIT_R0); /* sync'd below */
|
mz_pushr_p(JIT_R0); /* sync'd below */
|
||||||
|
@ -3284,6 +3287,8 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w
|
||||||
|
|
||||||
jitter->pushed_marks++;
|
jitter->pushed_marks++;
|
||||||
|
|
||||||
|
scheme_mz_unbox_restore(jitter, &ubs);
|
||||||
|
|
||||||
return scheme_generate(wcm->body, jitter, is_tail, wcm_may_replace,
|
return scheme_generate(wcm->body, jitter, is_tail, wcm_may_replace,
|
||||||
multi_ok, orig_target, for_branch, for_values);
|
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;
|
Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)expr;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
no_typed(need_local_type, port);
|
|
||||||
|
|
||||||
r = validate_expr(port, wcm->key, stack, tls, depth, letlimit, delta,
|
r = validate_expr(port, wcm->key, stack, tls, depth, letlimit, delta,
|
||||||
num_toplevels, num_stxes, num_lifts, tl_use_map,
|
num_toplevels, num_stxes, num_lifts, tl_use_map,
|
||||||
tl_state, tl_timestamp,
|
tl_state, tl_timestamp,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user