From b1801db3044b2e069d89b22bab21ef60504626e8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 31 Mar 2010 11:24:49 +0000 Subject: [PATCH] fix unsafe-vector*-set! svn: r18689 --- src/mzscheme/src/jit.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index d911527471..898e1f4bf6 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -7098,8 +7098,6 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int GC_CAN_IGNORE jit_insn *ref, *reffail, *pref; if (!skip_checks && (!unsafe || can_chaperone)) { - if (set && !unbox_flonum) - mz_rs_str(JIT_R2); if (set && !unbox_flonum) mz_rs_str(JIT_R2); __START_TINY_JUMPS__(1); @@ -7189,7 +7187,7 @@ static int generate_vector_op(mz_jit_state *jitter, int set, int int_ready, int jit_addi_p(JIT_V1, JIT_V1, base_offset); } if (set) { - if (!unbox_flonum && !unsafe) + if (!unbox_flonum && (!unsafe || can_chaperone)) jit_ldr_p(JIT_R2, JIT_RUNSTACK); if (!for_fl) { jit_stxr_p(JIT_V1, JIT_R0, JIT_R2); @@ -7635,7 +7633,7 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i generate_two_args(app->rand1, app->rand2, jitter, 1, 2); CHECK_LIMIT(); - if (!unsafe) + if (!unsafe || can_chaperone) mz_rs_sync(); if (!which) { @@ -7682,7 +7680,8 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i generate_non_tail(app->rand1, jitter, 0, 1, 0); CHECK_LIMIT(); - mz_rs_sync(); + if (!unsafe || can_chaperone) + mz_rs_sync(); offset = SCHEME_INT_VAL(app->rand2); if (!unsafe) @@ -8073,7 +8072,7 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int else pushed = 1; - if (!pushed && !flonum_arg && !unsafe) + if (!pushed && !flonum_arg && (!unsafe || can_chaperone)) pushed = 1; /* need temporary space */ mz_runstack_skipped(jitter, 3 - pushed); @@ -8150,7 +8149,8 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int /* All pieces are in place */ - mz_rs_sync(); + if (!unsafe || can_chaperone) + mz_rs_sync(); if (!simple) { if (!which) {