fix compilation when futures are disabled

and other misc futures-related fixes
This commit is contained in:
Matthew Flatt 2010-08-19 12:08:49 -06:00
parent f90c2c9b92
commit 8ba46ccc82
4 changed files with 27 additions and 16 deletions

View File

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

View File

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

View File

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

View File

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