diff --git a/src/racket/src/future.c b/src/racket/src/future.c index 31c5bcd405..ae8ddc8bef 100644 --- a/src/racket/src/future.c +++ b/src/racket/src/future.c @@ -46,7 +46,7 @@ typedef struct future_t { int no_retval; } future_t; -Scheme_Object *future(int argc, Scheme_Object *argv[]) +Scheme_Object *scheme_future(int argc, Scheme_Object *argv[]) { future_t *ft; @@ -124,7 +124,9 @@ static Scheme_Object *processor_count(int argc, Scheme_Object *argv[]) return scheme_make_integer(1); } -Scheme_Object *current_future(int argc, Scheme_Object *argv[]) +Scheme_Object *scheme_current_future(int argc, Scheme_Object *argv[]) + XFORM_SKIP_PROC +/* Called from any thread (either runtime or future) */ { return scheme_false; } @@ -134,9 +136,9 @@ Scheme_Object *current_future(int argc, Scheme_Object *argv[]) void scheme_init_futures(Scheme_Env *newenv) { FUTURE_PRIM_W_ARITY("future?", future_p, 1, 1, newenv); - FUTURE_PRIM_W_ARITY("future", future, 1, 1, newenv); + FUTURE_PRIM_W_ARITY("future", scheme_future, 1, 1, newenv); FUTURE_PRIM_W_ARITY("processor-count", processor_count, 0, 0, newenv); - FUTURE_PRIM_W_ARITY("current-future", current_future, 0, 0, newenv); + FUTURE_PRIM_W_ARITY("current-future", scheme_current_future, 0, 0, newenv); FUTURE_PRIM_W_ARITY("touch", touch, 1, 1, newenv); scheme_finish_primitive_module(newenv); @@ -151,6 +153,10 @@ void scheme_init_futures_once() { } +void scheme_init_futures_per_place() +{ +} + #else #include "future.h" @@ -311,7 +317,7 @@ void scheme_init_futures(Scheme_Env *newenv) scheme_add_global_constant( "future", scheme_make_prim_w_arity( - future, + scheme_future, "future", 1, 1), @@ -336,7 +342,7 @@ void scheme_init_futures(Scheme_Env *newenv) newenv); p = scheme_make_immed_prim( - current_future, + scheme_current_future, "current-future", 0, 0); @@ -582,7 +588,7 @@ void scheme_future_gc_pause() /* Primitive implementations */ /**********************************************************************/ -Scheme_Object *future(int argc, Scheme_Object *argv[]) +Scheme_Object *scheme_future(int argc, Scheme_Object *argv[]) /* Called in runtime thread */ { Scheme_Future_State *fs = scheme_future_state; @@ -795,7 +801,8 @@ Scheme_Object *processor_count(int argc, Scheme_Object *argv[]) return scheme_make_integer(cpucount); } -Scheme_Object *current_future(int argc, Scheme_Object *argv[]) +Scheme_Object *scheme_current_future(int argc, Scheme_Object *argv[]) + XFORM_SKIP_PROC /* Called from any thread (either runtime or future) */ { Scheme_Future_Thread_State *fts = scheme_future_thread_state; diff --git a/src/racket/src/future.h b/src/racket/src/future.h index d92f905cb6..03da196abe 100644 --- a/src/racket/src/future.h +++ b/src/racket/src/future.h @@ -1,6 +1,8 @@ #ifndef SCHEME_FUTURES_H #define SCHEME_FUTURES_H +#ifdef MZ_USE_FUTURES + #ifndef UNIT_TEST #include "schpriv.h" typedef Scheme_Object*(*prim_t)(int, Scheme_Object**); @@ -141,9 +143,6 @@ void scheme_future_continue_after_gc(); void scheme_check_future_work(); void scheme_future_gc_pause(); -Scheme_Object *future(int argc, Scheme_Object *argv[]); -Scheme_Object *current_future(int argc, Scheme_Object *argv[]); - #ifdef UNIT_TEST //These forwarding decls only need to be here to make //primitives visible to test cases written in C @@ -152,4 +151,10 @@ extern Scheme_Object *touch(int argc, Scheme_Object **argv); extern Scheme_Object *future_touch(int futureid); #endif +#endif /* MZ_USE_FUTURES */ + +/* always defined: */ +Scheme_Object *scheme_future(int argc, Scheme_Object *argv[]); +Scheme_Object *scheme_current_future(int argc, Scheme_Object *argv[]); + #endif diff --git a/src/racket/src/jit.c b/src/racket/src/jit.c index 49fb204eaf..bed4cac536 100644 --- a/src/racket/src/jit.c +++ b/src/racket/src/jit.c @@ -42,9 +42,7 @@ #include "schpriv.h" #include "schmach.h" -#ifdef MZ_USE_FUTURES -# include "future.h" -#endif +#include "future.h" #ifdef MZ_USE_DWARF_LIBUNWIND # include "unwind/libunwind.h" #endif @@ -8267,7 +8265,7 @@ static int generate_inlined_nary(mz_jit_state *jitter, Scheme_App_Rec *app, int mz_rs_sync(); JIT_UPDATE_THREAD_RSPTR_IF_NEEDED(); mz_prepare(0); - mz_finish(current_future); + mz_finish(scheme_current_future); jit_retval(JIT_R0); return 1; } else if (!for_branch) { diff --git a/src/racket/src/module.c b/src/racket/src/module.c index f30677fdf3..7c015c8f2c 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -691,7 +691,8 @@ static int is_builtin_modname(Scheme_Object *modname) { return (SAME_OBJ(modname, kernel_modname) || SAME_OBJ(modname, unsafe_modname) - || SAME_OBJ(modname, flfxnum_modname)); + || SAME_OBJ(modname, flfxnum_modname) + || SAME_OBJ(modname, futures_modname)); } Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env)