From ea1929841bc2be93f9a3b9115ef62684f0786629 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 12 Dec 2009 03:18:24 +0000 Subject: [PATCH] fix and adjust inlining metric svn: r17274 --- src/mzscheme/src/env.c | 2 +- src/mzscheme/src/eval.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index 1eb4d678ce..c5425e5b0e 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -3166,7 +3166,7 @@ Optimize_Info *scheme_optimize_info_create() #ifdef MZTAG_REQUIRED info->type = scheme_rt_optimize_info; #endif - info->inline_fuel = 16; + info->inline_fuel = 32; return info; } diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index 08725e0da4..a38d1db5aa 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -2552,14 +2552,14 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info all_vals = 0; } + info->size += 1; + if (all_vals) { le = try_optimize_fold(app->args[0], (Scheme_Object *)app, info); if (le) return le; } - info->size += 1; - info->preserves_marks = !!(rator_flags & CLOS_PRESERVES_MARKS); info->single_result = !!(rator_flags & CLOS_SINGLE_RESULT); if (rator_flags & CLOS_RESULT_TENTATIVE) { @@ -2723,14 +2723,14 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf /* Fold or continue */ + info->size += 1; + if (all_vals) { le = try_optimize_fold(app->rator, (Scheme_Object *)app, info); if (le) return le; } - info->size += 1; - /* Check for (call-with-values (lambda () M) N): */ if (SAME_OBJ(app->rator, scheme_call_with_values_proc)) { if (SAME_TYPE(SCHEME_TYPE(app->rand1), scheme_compiled_unclosed_procedure_type)) { @@ -3154,8 +3154,10 @@ Scheme_Object *scheme_optimize_expr(Scheme_Object *expr, Optimize_Info *info) val = scheme_optimize_info_lookup(info, pos, NULL, NULL); if (val) { - if (SAME_TYPE(SCHEME_TYPE(val), scheme_compiled_toplevel_type)) + if (SAME_TYPE(SCHEME_TYPE(val), scheme_compiled_toplevel_type)) { + info->size -= 1; return scheme_optimize_expr(val, info); + } return val; } @@ -3189,6 +3191,7 @@ Scheme_Object *scheme_optimize_expr(Scheme_Object *expr, Optimize_Info *info) case scheme_compiled_let_void_type: return scheme_optimize_lets(expr, info, 0); case scheme_compiled_toplevel_type: + info->size += 1; if (info->top_level_consts) { int pos; Scheme_Object *c; @@ -3226,6 +3229,7 @@ Scheme_Object *scheme_optimize_expr(Scheme_Object *expr, Optimize_Info *info) scheme_optimize_info_used_top(info); return expr; case scheme_compiled_quote_syntax_type: + info->size += 1; scheme_optimize_info_used_top(info); return expr; case scheme_variable_type: