Fix jitting of real->double-flonum.

Merge to 5.1.2.
This commit is contained in:
Vincent St-Amour 2011-07-11 12:32:23 -04:00
parent 427eaca513
commit 09b6616bfa
2 changed files with 6 additions and 1 deletions

View File

@ -1111,7 +1111,8 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
|| IS_NAMED_PRIM(rator, "fllog")) {
scheme_generate_arith(jitter, rator, app->rand, NULL, 1, ARITH_FLUNOP, 0, 0, NULL, 1, 0, -1, NULL);
return 1;
} else if (IS_NAMED_PRIM(rator, "exact->inexact")) {
} else if (IS_NAMED_PRIM(rator, "exact->inexact")
|| IS_NAMED_PRIM(rator, "real->double-flonum")) {
scheme_generate_arith(jitter, rator, app->rand, NULL, 1, ARITH_EX_INEX, 0, 0, NULL, 1, 0, 0, NULL);
return 1;
} else if (IS_NAMED_PRIM(rator, "unsafe-fx->fl")) {

View File

@ -377,6 +377,10 @@ scheme_init_number (Scheme_Env *env)
scheme_add_global_constant("real->single-flonum", p, env);
p = scheme_make_folding_prim(real_to_double_flonum, "real->double-flonum", 1, 1, 1);
if (scheme_can_inline_fp_op())
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
else
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_SOMETIMES_INLINED;
scheme_add_global_constant("real->double-flonum", p, env);
scheme_add_global_constant("exact?",