From 94e5b1723b207cd4a79136c05113041a7eec9413 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 28 Aug 2015 20:24:46 -0600 Subject: [PATCH] JIT simplification Remove unused and confusing attempt to avoid runstack sync. --- racket/src/racket/src/jit.c | 86 +++------------------------ racket/src/racket/src/jit.h | 6 +- racket/src/racket/src/jitinline.c | 96 +++++++++++++++---------------- 3 files changed, 59 insertions(+), 129 deletions(-) diff --git a/racket/src/racket/src/jit.c b/racket/src/racket/src/jit.c index 4fbfd74ef3..4fd13aff1e 100644 --- a/racket/src/racket/src/jit.c +++ b/racket/src/racket/src/jit.c @@ -434,68 +434,6 @@ static int is_short(Scheme_Object *obj, int fuel) } #endif -static int no_sync_change(Scheme_Object *obj, int fuel) -{ - Scheme_Type t; - - if (fuel <= 0) - return fuel; - - t = SCHEME_TYPE(obj); - - switch (t) { - case scheme_application2_type: - { - Scheme_App2_Rec *app = (Scheme_App2_Rec *)obj; - if (SCHEME_PRIMP(app->rator) - && (SCHEME_PRIM_PROC_OPT_FLAGS(app->rator) & SCHEME_PRIM_IS_UNARY_INLINED) - && (IS_NAMED_PRIM(app->rator, "car") - || IS_NAMED_PRIM(app->rator, "cdr") - || IS_NAMED_PRIM(app->rator, "cadr") - || IS_NAMED_PRIM(app->rator, "cdar") - || IS_NAMED_PRIM(app->rator, "caar") - || IS_NAMED_PRIM(app->rator, "cddr"))) { - return no_sync_change(app->rand, fuel - 1); - } - return 0; - } - break; - case scheme_sequence_type: - { - Scheme_Sequence *seq = (Scheme_Sequence *)obj; - int i; - - fuel -= seq->count; - for (i = seq->count; i--; ) { - fuel = no_sync_change(seq->array[i], fuel); - } - return fuel; - } - break; - case scheme_branch_type: - { - Scheme_Branch_Rec *branch = (Scheme_Branch_Rec *)obj; - fuel -= 3; - fuel = no_sync_change(branch->test, fuel); - fuel = no_sync_change(branch->tbranch, fuel); - return no_sync_change(branch->fbranch, fuel); - } - case scheme_local_type: - if (JIT_TYPE_NEEDS_BOXING(SCHEME_GET_LOCAL_TYPE(obj))) - return 0; - else - return fuel - 1; - case scheme_toplevel_type: - case scheme_local_unbox_type: - return fuel - 1; - default: - if (t > _scheme_values_types_) - return fuel - 1; - else - return 0; - } -} - Scheme_Object *scheme_extract_global(Scheme_Object *o, Scheme_Native_Closure *nc, int local_only) { /* GLOBAL ASSUMPTION: we assume that globals are the last thing @@ -1677,7 +1615,7 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail mz_jit_unbox_state ubs; int ubd, save_ubd; int pushed_marks; - int nsrs, nsrs1, g1, g2, amt, need_sync, flostack, flostack_pos; + int nsrs, nsrs1, g1, g2, amt, flostack, flostack_pos; int else_is_empty = 0, i, can_chain_branch, chain_true, chain_false, old_self_pos; #ifdef NEED_LONG_BRANCHES int then_short_ok, else_short_ok; @@ -1728,14 +1666,6 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail LOG_IT(("if...\n")); - /* Avoid rs_sync if neither branch changes the sync state? - Currently, we force a sync, anyway. */ - if ((no_sync_change(branch->tbranch, 32) > 0) - && (no_sync_change(branch->fbranch, 32) > 0)) - need_sync = 0; - else - need_sync = 1; - if (result_ignored && (SCHEME_TYPE(branch->fbranch) > _scheme_compiled_values_types_)) else_is_empty = 1; @@ -1746,7 +1676,7 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail scheme_mz_unbox_save(jitter, &ubs); - if (!scheme_generate_inlined_test(jitter, branch->test, then_short_ok, &for_this_branch, need_sync)) { + if (!scheme_generate_inlined_test(jitter, branch->test, then_short_ok, &for_this_branch)) { CHECK_LIMIT(); generate_non_tail_with_branch_and_values(branch->test, jitter, 0, 1, 0, &for_this_branch, NULL); CHECK_LIMIT(); @@ -1802,7 +1732,7 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail if (!is_tail) { if (amt) mz_rs_inc(amt); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); } __START_SHORT_JUMPS__(else_short_ok); if (else_is_empty) @@ -1821,7 +1751,7 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail } jitter->need_set_rs = nsrs; jitter->pushed_marks = pushed_marks; - if (need_sync) mz_rs_sync_0(); + mz_rs_sync_0(); if (old_self_pos != jitter->self_pos) scheme_signal_error("internal error: self position moved across branch"); @@ -1871,7 +1801,7 @@ static int generate_branch(Scheme_Object *obj, mz_jit_state *jitter, int is_tail if (!is_tail) { if (amt) mz_rs_inc(amt); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); } } else if (g2 == 2) { jitter->need_set_rs = 0; @@ -1999,7 +1929,7 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w if (for_branch) { mz_rs_sync(); - if (scheme_generate_inlined_test(jitter, obj, for_branch->branch_short, for_branch, 1)) + if (scheme_generate_inlined_test(jitter, obj, for_branch->branch_short, for_branch)) return 1; CHECK_LIMIT(); } @@ -2654,7 +2584,7 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w Scheme_Object *args[2]; int r; - r = scheme_generate_inlined_unary(jitter, app, is_tail, multi_ok, NULL, 1, 0, result_ignored, target); + r = scheme_generate_inlined_unary(jitter, app, is_tail, multi_ok, NULL, 0, result_ignored, target); CHECK_LIMIT(); if (r) { if (for_branch) finish_branch(jitter, target, for_branch); @@ -2704,7 +2634,7 @@ int scheme_generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int w return 1; } - r = scheme_generate_inlined_binary(jitter, app, is_tail, multi_ok, NULL, 1, 0, result_ignored, target); + r = scheme_generate_inlined_binary(jitter, app, is_tail, multi_ok, NULL, 0, result_ignored, target); CHECK_LIMIT(); if (r) { if (for_branch) finish_branch(jitter, target, for_branch); diff --git a/racket/src/racket/src/jit.h b/racket/src/racket/src/jit.h index b6a9137ba1..f921be2fd5 100644 --- a/racket/src/racket/src/jit.h +++ b/racket/src/racket/src/jit.h @@ -1404,16 +1404,16 @@ int scheme_inlined_unary_prim(Scheme_Object *o, Scheme_Object *_app, mz_jit_stat int scheme_inlined_binary_prim(Scheme_Object *o, Scheme_Object *_app, mz_jit_state *jitter); int scheme_inlined_nary_prim(Scheme_Object *o, Scheme_Object *_app, mz_jit_state *jitter); int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, int is_tail, int multi_ok, - Branch_Info *for_branch, int branch_short, int need_sync, int result_ignored, + Branch_Info *for_branch, int branch_short, int result_ignored, int dest); int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, int is_tail, int multi_ok, - Branch_Info *for_branch, int branch_short, int need_sync, int result_ignored, + Branch_Info *for_branch, int branch_short, int result_ignored, int dest); int scheme_generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int is_tail, int multi_ok, Branch_Info *for_branch, int branch_short, int result_ignored, int dest); int scheme_generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_short, - Branch_Info *for_branch, int need_sync); + Branch_Info *for_branch); int scheme_generate_cons_alloc(mz_jit_state *jitter, int rev, int inline_retry, int known_list, int dest); int scheme_generate_struct_alloc(mz_jit_state *jitter, int num_args, int inline_slow, int pop_and_jump, diff --git a/racket/src/racket/src/jitinline.c b/racket/src/racket/src/jitinline.c index 509371925a..f42b64583a 100644 --- a/racket/src/racket/src/jitinline.c +++ b/racket/src/racket/src/jitinline.c @@ -213,7 +213,7 @@ int scheme_inlined_nary_prim(Scheme_Object *o, Scheme_Object *_app, mz_jit_state static int generate_inlined_constant_test(mz_jit_state *jitter, Scheme_App2_Rec *app, Scheme_Object *cnst, Scheme_Object *cnst2, - Branch_Info *for_branch, int branch_short, int need_sync, + Branch_Info *for_branch, int branch_short, int dest) /* de-sync'd ok */ { @@ -228,7 +228,7 @@ static int generate_inlined_constant_test(mz_jit_state *jitter, Scheme_App2_Rec mz_runstack_unskipped(jitter, 1); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -264,7 +264,7 @@ static int generate_inlined_constant_test(mz_jit_state *jitter, Scheme_App2_Rec static int generate_inlined_type_test(mz_jit_state *jitter, Scheme_App2_Rec *app, Scheme_Type lo_ty, Scheme_Type hi_ty, int can_chaperone, - Branch_Info *for_branch, int branch_short, int need_sync, + Branch_Info *for_branch, int branch_short, int dest) { GC_CAN_IGNORE jit_insn *ref, *ref2, *ref3, *ref4, *ref5; @@ -281,7 +281,7 @@ static int generate_inlined_type_test(mz_jit_state *jitter, Scheme_App2_Rec *app mz_runstack_unskipped(jitter, 1); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -879,7 +879,7 @@ static int is_cXr_prim(const char *name) } static int generate_inlined_constant_varref_test(mz_jit_state *jitter, Scheme_Object *obj, - Branch_Info *for_branch, int branch_short, int need_sync, + Branch_Info *for_branch, int branch_short, int dest) { GC_CAN_IGNORE jit_insn *ref1, *ref2; @@ -904,7 +904,7 @@ static int generate_inlined_constant_varref_test(mz_jit_state *jitter, Scheme_Ob mz_runstack_unskipped(jitter, 1); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -941,7 +941,7 @@ static int generate_vector_alloc(mz_jit_state *jitter, Scheme_Object *rator, int dest); int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, int is_tail, int multi_ok, - Branch_Info *for_branch, int branch_short, int need_sync, int result_ignored, + Branch_Info *for_branch, int branch_short, int result_ignored, int dest) /* de-sync's, unless branch */ { @@ -969,7 +969,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in if (SAME_OBJ(rator, scheme_varref_const_p_proc) && SAME_TYPE(SCHEME_TYPE(app->rand), scheme_varref_form_type)) { - generate_inlined_constant_varref_test(jitter, app->rand, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_varref_test(jitter, app->rand, for_branch, branch_short, dest); return 1; } @@ -982,85 +982,85 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in scheme_direct_call_count++; if (IS_NAMED_PRIM(rator, "not")) { - generate_inlined_constant_test(jitter, app, scheme_false, NULL, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_test(jitter, app, scheme_false, NULL, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "null?")) { - generate_inlined_constant_test(jitter, app, scheme_null, NULL, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_test(jitter, app, scheme_null, NULL, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "void?")) { - generate_inlined_constant_test(jitter, app, scheme_void, NULL, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_test(jitter, app, scheme_void, NULL, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "pair?")) { - generate_inlined_type_test(jitter, app, scheme_pair_type, scheme_pair_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_pair_type, scheme_pair_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "mpair?")) { - generate_inlined_type_test(jitter, app, scheme_mutable_pair_type, scheme_mutable_pair_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_mutable_pair_type, scheme_mutable_pair_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "symbol?")) { - generate_inlined_type_test(jitter, app, scheme_symbol_type, scheme_symbol_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_symbol_type, scheme_symbol_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "keyword?")) { - generate_inlined_type_test(jitter, app, scheme_keyword_type, scheme_keyword_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_keyword_type, scheme_keyword_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "syntax?")) { - generate_inlined_type_test(jitter, app, scheme_stx_type, scheme_stx_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_stx_type, scheme_stx_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "char?")) { - generate_inlined_type_test(jitter, app, scheme_char_type, scheme_char_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_char_type, scheme_char_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "boolean?")) { - generate_inlined_constant_test(jitter, app, scheme_false, scheme_true, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_test(jitter, app, scheme_false, scheme_true, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "number?")) { - generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "real?")) { - generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_double_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_double_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "exact-integer?")) { - generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_bignum_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_bignum_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "fixnum?")) { - generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_integer_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_integer_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "inexact-real?")) { - generate_inlined_type_test(jitter, app, SCHEME_FLOAT_TYPE, scheme_double_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, SCHEME_FLOAT_TYPE, scheme_double_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "flonum?")) { - generate_inlined_type_test(jitter, app, scheme_double_type, scheme_double_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_double_type, scheme_double_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "extflonum?")) { - generate_inlined_type_test(jitter, app, scheme_long_double_type, scheme_long_double_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_long_double_type, scheme_long_double_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "single-flonum?")) { - generate_inlined_type_test(jitter, app, SCHEME_FLOAT_TYPE, SCHEME_FLOAT_TYPE, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, SCHEME_FLOAT_TYPE, SCHEME_FLOAT_TYPE, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "procedure?")) { - generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_proc_chaperone_type, 1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_proc_chaperone_type, 1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "chaperone?")) { - generate_inlined_type_test(jitter, app, scheme_proc_chaperone_type, scheme_chaperone_type, -1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_proc_chaperone_type, scheme_chaperone_type, -1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "impersonator?")) { - generate_inlined_type_test(jitter, app, scheme_proc_chaperone_type, scheme_chaperone_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_proc_chaperone_type, scheme_chaperone_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "vector?")) { - generate_inlined_type_test(jitter, app, scheme_vector_type, scheme_vector_type, 1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_vector_type, scheme_vector_type, 1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "box?")) { - generate_inlined_type_test(jitter, app, scheme_box_type, scheme_box_type, 1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_box_type, scheme_box_type, 1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "string?")) { - generate_inlined_type_test(jitter, app, scheme_char_string_type, scheme_char_string_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_char_string_type, scheme_char_string_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "bytes?")) { - generate_inlined_type_test(jitter, app, scheme_byte_string_type, scheme_byte_string_type, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_byte_string_type, scheme_byte_string_type, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "path?")) { - generate_inlined_type_test(jitter, app, SCHEME_PLATFORM_PATH_KIND, SCHEME_PLATFORM_PATH_KIND, 0, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, SCHEME_PLATFORM_PATH_KIND, SCHEME_PLATFORM_PATH_KIND, 0, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "eof-object?")) { - generate_inlined_constant_test(jitter, app, scheme_eof, NULL, for_branch, branch_short, need_sync, dest); + generate_inlined_constant_test(jitter, app, scheme_eof, NULL, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "zero?")) { scheme_generate_arith(jitter, rator, app->rand, NULL, 1, 0, CMP_EQUAL, 0, for_branch, branch_short, 0, 0, NULL, dest); @@ -1087,7 +1087,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in mz_runstack_unskipped(jitter, 1); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -1154,7 +1154,7 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in mz_runstack_unskipped(jitter, 1); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); if (for_branch) { scheme_prepare_branch_jump(jitter, for_branch); @@ -2010,10 +2010,10 @@ int scheme_generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in return 1; } else if (IS_NAMED_PRIM(rator, "future?")) { - generate_inlined_type_test(jitter, app, scheme_future_type, scheme_future_type, 1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_future_type, scheme_future_type, 1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "fsemaphore?")) { - generate_inlined_type_test(jitter, app, scheme_fsemaphore_type, scheme_fsemaphore_type, 1, for_branch, branch_short, need_sync, dest); + generate_inlined_type_test(jitter, app, scheme_fsemaphore_type, scheme_fsemaphore_type, 1, for_branch, branch_short, dest); return 1; } else if (IS_NAMED_PRIM(rator, "future") || IS_NAMED_PRIM(rator, "touch") @@ -2473,7 +2473,7 @@ static int allocate_rectangular(mz_jit_state *jitter, int dest) } int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, int is_tail, int multi_ok, - Branch_Info *for_branch, int branch_short, int need_sync, int result_ignored, + Branch_Info *for_branch, int branch_short, int result_ignored, int dest) /* de-sync's; for branch, sync'd before */ { @@ -2481,7 +2481,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i if (SCHEME_PRIMP(rator) && IS_NAMED_PRIM(rator, "ptr-ref")) { Scheme_App_Rec *app2; - if (need_sync) mz_rs_sync(); + mz_rs_sync(); app2 = scheme_malloc_application(3); app2->args[0] = app->rator; app2->args[1] = app->rand1; @@ -2532,7 +2532,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i scheme_generate_non_tail(a2, jitter, 0, 1, 0); CHECK_LIMIT(); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); mz_runstack_unskipped(jitter, 2); @@ -2579,7 +2579,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i scheme_generate_two_args(a2, a1, jitter, 0, 2); CHECK_LIMIT(); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -2654,7 +2654,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i scheme_generate_two_args(app->rand1, app->rand2, jitter, 0, 2); CHECK_LIMIT(); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); __START_SHORT_JUMPS__(branch_short); @@ -2762,7 +2762,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i scheme_generate_two_args(app->rand1, app->rand2, jitter, 1, 2); CHECK_LIMIT(); - if (need_sync) mz_rs_sync(); + mz_rs_sync(); if (for_branch) { __START_SHORT_JUMPS__(branch_short); @@ -5062,16 +5062,16 @@ static int generate_vector_alloc(mz_jit_state *jitter, Scheme_Object *rator, } int scheme_generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_short, - Branch_Info *for_branch, int need_sync) + Branch_Info *for_branch) /* de-sync'd ok; syncs before jump */ { switch (SCHEME_TYPE(obj)) { case scheme_application_type: return scheme_generate_inlined_nary(jitter, (Scheme_App_Rec *)obj, 0, 0, for_branch, branch_short, 0, JIT_R0); case scheme_application2_type: - return scheme_generate_inlined_unary(jitter, (Scheme_App2_Rec *)obj, 0, 0, for_branch, branch_short, need_sync, 0, JIT_R0); + return scheme_generate_inlined_unary(jitter, (Scheme_App2_Rec *)obj, 0, 0, for_branch, branch_short, 0, JIT_R0); case scheme_application3_type: - return scheme_generate_inlined_binary(jitter, (Scheme_App3_Rec *)obj, 0, 0, for_branch, branch_short, need_sync, 0, JIT_R0); + return scheme_generate_inlined_binary(jitter, (Scheme_App3_Rec *)obj, 0, 0, for_branch, branch_short, 0, JIT_R0); } return 0;