diff --git a/src/racket/src/eval.c b/src/racket/src/eval.c index 05df396514..720f617d64 100644 --- a/src/racket/src/eval.c +++ b/src/racket/src/eval.c @@ -2489,6 +2489,7 @@ static Scheme_Object *apply_inlined(Scheme_Object *p, Scheme_Closure_Data *data, Scheme_Object *val; int i, expected; int *flags, flag; + Optimize_Info *sub_info; expected = data->num_params; @@ -2565,7 +2566,14 @@ static Scheme_Object *apply_inlined(Scheme_Object *p, Scheme_Closure_Data *data, else lh->body = p; - p = scheme_optimize_lets((Scheme_Object *)lh, info, 1, context); + sub_info = scheme_optimize_info_add_frame(info, 0, 0, 0); + sub_info->inline_fuel >>= 1; + + p = scheme_optimize_lets((Scheme_Object *)lh, sub_info, 1, context); + + info->single_result = sub_info->single_result; + info->preserves_marks = sub_info->preserves_marks; + scheme_optimize_info_done(sub_info); if (le_prev) { *((Scheme_Object **)(((char *)le_prev) + prev_offset)) = p; diff --git a/src/racket/src/syntax.c b/src/racket/src/syntax.c index 4177c6bf2b..c8cb77bc01 100644 --- a/src/racket/src/syntax.c +++ b/src/racket/src/syntax.c @@ -3281,9 +3281,6 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline, i else rhs_info = body_info; - if (for_inline) - body_info->inline_fuel >>= 1; - body = head->body; for (i = head->num_clauses; i--; ) { pre_body = (Scheme_Compiled_Let_Value *)body;