diff --git a/src/racket/src/jitinline.c b/src/racket/src/jitinline.c index 7688eac48d..1c9782e7c7 100644 --- a/src/racket/src/jitinline.c +++ b/src/racket/src/jitinline.c @@ -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")) { diff --git a/src/racket/src/number.c b/src/racket/src/number.c index 02b9751214..d478e78350 100644 --- a/src/racket/src/number.c +++ b/src/racket/src/number.c @@ -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?",