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:
Matthew Flatt 2016-03-05 05:16:09 -07:00
parent 6c7a9ae03a
commit bfb14637a6
2 changed files with 5 additions and 2 deletions

View File

@ -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);

View File

@ -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,