diff --git a/src/racket/src/future.c b/src/racket/src/future.c index 667c33c262..fdb6da3f63 100644 --- a/src/racket/src/future.c +++ b/src/racket/src/future.c @@ -1535,7 +1535,7 @@ static void do_invoke_rtcall(Scheme_Future_State *fs, future_t *future) scheme_new_mark_segment(p_seg); break; } -# define LOCALIZE(t, f) GC_CAN_IGNORE t f = future->f +# define JIT_TS_LOCALIZE(t, f) GC_CAN_IGNORE t f = future->f # include "jit_ts_runtime_glue.c" default: scheme_signal_error("unknown protocol %d", future->prim_protocol); diff --git a/src/racket/src/gen-jit-ts.rkt b/src/racket/src/gen-jit-ts.rkt index 1f9c9a4422..b01b109989 100644 --- a/src/racket/src/gen-jit-ts.rkt +++ b/src/racket/src/gen-jit-ts.rkt @@ -121,12 +121,12 @@ { prim_@|ts| f = (prim_@|ts|)future->prim_func; @(if (string=? result-type "void") "" @string-append{GC_CAN_IGNORE @|result-type| retval;}) - @(if (equal? arg-types '("Scheme_Object*")) @string-append{receive_special_result(future, future->arg_s0, 1);} "") @(string-join (for/list ([t (in-string (type->arg-string t))] [i (in-naturals)]) - @string-append{LOCALIZE(@(char->type t), arg_@|(string t)|@|(number->string i)|);}) + @string-append{JIT_TS_LOCALIZE(@(char->type t), arg_@|(string t)|@|(number->string i)|);}) " ") + @(if (equal? arg-types '("Scheme_Object*")) @string-append{receive_special_result(future, future->arg_s0, 1);} "") @(string-join (for/list ([t (in-string (type->arg-string t))] [i (in-naturals)] diff --git a/src/racket/src/jit_ts_runtime_glue.c b/src/racket/src/jit_ts_runtime_glue.c index fb457494a6..962df14422 100644 --- a/src/racket/src/jit_ts_runtime_glue.c +++ b/src/racket/src/jit_ts_runtime_glue.c @@ -2,8 +2,8 @@ case SIG_siS_s: { prim_siS_s f = (prim_siS_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(int, arg_i1); JIT_TS_LOCALIZE(Scheme_Object**, arg_S2); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(int, arg_i1); LOCALIZE(Scheme_Object**, arg_S2); future->arg_s0 = NULL; future->arg_S2 = NULL; retval = f(arg_s0, arg_i1, arg_S2); @@ -15,8 +15,8 @@ case SIG_iSs_s: { prim_iSs_s f = (prim_iSs_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(int, arg_i0); JIT_TS_LOCALIZE(Scheme_Object**, arg_S1); JIT_TS_LOCALIZE(Scheme_Object*, arg_s2); - LOCALIZE(int, arg_i0); LOCALIZE(Scheme_Object**, arg_S1); LOCALIZE(Scheme_Object*, arg_s2); future->arg_S1 = NULL; future->arg_s2 = NULL; retval = f(arg_i0, arg_S1, arg_s2); @@ -28,8 +28,8 @@ case SIG_s_s: { prim_s_s f = (prim_s_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); receive_special_result(future, future->arg_s0, 1); - LOCALIZE(Scheme_Object*, arg_s0); future->arg_s0 = NULL; retval = f(arg_s0); @@ -41,8 +41,8 @@ case SIG_n_s: { prim_n_s f = (prim_n_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Native_Closure_Data*, arg_n0); - LOCALIZE(Scheme_Native_Closure_Data*, arg_n0); future->arg_n0 = NULL; retval = f(arg_n0); @@ -67,8 +67,8 @@ case SIG_ss_s: { prim_ss_s f = (prim_ss_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(Scheme_Object*, arg_s1); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(Scheme_Object*, arg_s1); future->arg_s0 = NULL; future->arg_s1 = NULL; retval = f(arg_s0, arg_s1); @@ -80,8 +80,8 @@ case SIG_tt_s: { prim_tt_s f = (prim_tt_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(const Scheme_Object*, arg_t0); JIT_TS_LOCALIZE(const Scheme_Object*, arg_t1); - LOCALIZE(const Scheme_Object*, arg_t0); LOCALIZE(const Scheme_Object*, arg_t1); future->arg_t0 = NULL; future->arg_t1 = NULL; retval = f(arg_t0, arg_t1); @@ -93,8 +93,8 @@ case SIG_ss_m: { prim_ss_m f = (prim_ss_m)future->prim_func; GC_CAN_IGNORE MZ_MARK_STACK_TYPE retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(Scheme_Object*, arg_s1); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(Scheme_Object*, arg_s1); future->arg_s0 = NULL; future->arg_s1 = NULL; retval = f(arg_s0, arg_s1); @@ -106,8 +106,8 @@ case SIG_Sl_s: { prim_Sl_s f = (prim_Sl_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object**, arg_S0); JIT_TS_LOCALIZE(long, arg_l1); - LOCALIZE(Scheme_Object**, arg_S0); LOCALIZE(long, arg_l1); future->arg_S0 = NULL; retval = f(arg_S0, arg_l1); @@ -119,8 +119,8 @@ case SIG_l_s: { prim_l_s f = (prim_l_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(long, arg_l0); - LOCALIZE(long, arg_l0); retval = f(arg_l0); @@ -132,8 +132,8 @@ case SIG_bsi_v: { prim_bsi_v f = (prim_bsi_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Bucket*, arg_b0); JIT_TS_LOCALIZE(Scheme_Object*, arg_s1); JIT_TS_LOCALIZE(int, arg_i2); - LOCALIZE(Scheme_Bucket*, arg_b0); LOCALIZE(Scheme_Object*, arg_s1); LOCALIZE(int, arg_i2); future->arg_b0 = NULL; future->arg_s1 = NULL; f(arg_b0, arg_s1, arg_i2); @@ -145,8 +145,8 @@ case SIG_iiS_v: { prim_iiS_v f = (prim_iiS_v)future->prim_func; + JIT_TS_LOCALIZE(int, arg_i0); JIT_TS_LOCALIZE(int, arg_i1); JIT_TS_LOCALIZE(Scheme_Object**, arg_S2); - LOCALIZE(int, arg_i0); LOCALIZE(int, arg_i1); LOCALIZE(Scheme_Object**, arg_S2); future->arg_S2 = NULL; f(arg_i0, arg_i1, arg_S2); @@ -158,8 +158,8 @@ case SIG_ss_v: { prim_ss_v f = (prim_ss_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(Scheme_Object*, arg_s1); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(Scheme_Object*, arg_s1); future->arg_s0 = NULL; future->arg_s1 = NULL; f(arg_s0, arg_s1); @@ -171,8 +171,8 @@ case SIG_b_v: { prim_b_v f = (prim_b_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Bucket*, arg_b0); - LOCALIZE(Scheme_Bucket*, arg_b0); future->arg_b0 = NULL; f(arg_b0); @@ -184,8 +184,8 @@ case SIG_sl_s: { prim_sl_s f = (prim_sl_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(long, arg_l1); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(long, arg_l1); future->arg_s0 = NULL; retval = f(arg_s0, arg_l1); @@ -197,8 +197,8 @@ case SIG_iS_s: { prim_iS_s f = (prim_iS_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(int, arg_i0); JIT_TS_LOCALIZE(Scheme_Object**, arg_S1); - LOCALIZE(int, arg_i0); LOCALIZE(Scheme_Object**, arg_S1); future->arg_S1 = NULL; retval = f(arg_i0, arg_S1); @@ -210,8 +210,8 @@ case SIG_S_s: { prim_S_s f = (prim_S_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object**, arg_S0); - LOCALIZE(Scheme_Object**, arg_S0); future->arg_S0 = NULL; retval = f(arg_S0); @@ -223,8 +223,8 @@ case SIG_s_v: { prim_s_v f = (prim_s_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); receive_special_result(future, future->arg_s0, 1); - LOCALIZE(Scheme_Object*, arg_s0); future->arg_s0 = NULL; f(arg_s0); @@ -236,8 +236,8 @@ case SIG_iSi_s: { prim_iSi_s f = (prim_iSi_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(int, arg_i0); JIT_TS_LOCALIZE(Scheme_Object**, arg_S1); JIT_TS_LOCALIZE(int, arg_i2); - LOCALIZE(int, arg_i0); LOCALIZE(Scheme_Object**, arg_S1); LOCALIZE(int, arg_i2); future->arg_S1 = NULL; retval = f(arg_i0, arg_S1, arg_i2); @@ -249,8 +249,8 @@ case SIG_siS_v: { prim_siS_v f = (prim_siS_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(int, arg_i1); JIT_TS_LOCALIZE(Scheme_Object**, arg_S2); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(int, arg_i1); LOCALIZE(Scheme_Object**, arg_S2); future->arg_s0 = NULL; future->arg_S2 = NULL; f(arg_s0, arg_i1, arg_S2); @@ -262,8 +262,8 @@ case SIG_z_p: { prim_z_p f = (prim_z_p)future->prim_func; GC_CAN_IGNORE void* retval; + JIT_TS_LOCALIZE(size_t, arg_z0); - LOCALIZE(size_t, arg_z0); retval = f(arg_z0); @@ -275,8 +275,8 @@ case SIG_si_s: { prim_si_s f = (prim_si_s)future->prim_func; GC_CAN_IGNORE Scheme_Object* retval; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(int, arg_i1); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(int, arg_i1); future->arg_s0 = NULL; retval = f(arg_s0, arg_i1); @@ -288,8 +288,8 @@ case SIG_sis_v: { prim_sis_v f = (prim_sis_v)future->prim_func; + JIT_TS_LOCALIZE(Scheme_Object*, arg_s0); JIT_TS_LOCALIZE(int, arg_i1); JIT_TS_LOCALIZE(Scheme_Object*, arg_s2); - LOCALIZE(Scheme_Object*, arg_s0); LOCALIZE(int, arg_i1); LOCALIZE(Scheme_Object*, arg_s2); future->arg_s0 = NULL; future->arg_s2 = NULL; f(arg_s0, arg_i1, arg_s2);