fix JIT future glue for MSVC

This commit is contained in:
Matthew Flatt 2010-10-08 06:15:05 -06:00
parent 3e205b6193
commit d0fd2c40ad
3 changed files with 25 additions and 25 deletions

View File

@ -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);

View File

@ -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)]

View File

@ -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);