diff --git a/src/racket/src/future.c b/src/racket/src/future.c index bed84c934a..6f791c3f37 100644 --- a/src/racket/src/future.c +++ b/src/racket/src/future.c @@ -1104,7 +1104,6 @@ Scheme_Object *scheme_fsemaphore_try_wait(int argc, Scheme_Object **argv) XFORM_SKIP_PROC { fsemaphore_t *sema; - future_t *cf; Scheme_Object *ret; if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_fsemaphore_type)) { diff --git a/src/racket/src/future.h b/src/racket/src/future.h index 4e89ad6263..0eda415f05 100644 --- a/src/racket/src/future.h +++ b/src/racket/src/future.h @@ -164,6 +164,8 @@ extern uintptr_t scheme_rtcall_alloc(const char *who, int src_type); extern void scheme_rtcall_new_mark_segment(Scheme_Thread *p); extern void scheme_rtcall_allocate_values(const char *who, int src_type, int count, Scheme_Thread *t, prim_allocate_values_t f); +extern Scheme_Object *scheme_rtcall_make_fsemaphore(const char *who, int src_type, + int argc, Scheme_Object *ready); #else #define IS_WORKER_THREAD 0 diff --git a/src/racket/src/mzmark.c b/src/racket/src/mzmark.c index df2949a724..f32609b521 100644 --- a/src/racket/src/mzmark.c +++ b/src/racket/src/mzmark.c @@ -5754,30 +5754,32 @@ static int future_FIXUP(void *p, struct NewGC *gc) { #define future_IS_ATOMIC 0 #define future_IS_CONST_SIZE 1 -static int fsemaphore_SIZE(void *p, struct NewGC *gc) { - return - gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); + +static int fsemaphore_SIZE(void *p, struct NewGC *gc) { + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); } -static int fsemaphore_MARK(void *p, struct NewGC *gc) { - fsemaphore_t *s = (fsemaphore_t*)p; - gcMARK2(s->queue_front, gc); - gcMARK2(s->queue_end, gc); - return - gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); -} - -static int fsemaphore_FIXUP(void *p, struct NewGC *gc) { - fsemaphore_t *s = (fsemaphore_t*)p; - gcFIXUP2(s->queue_front, gc); - gcFIXUP2(s->queue_end, gc); - return - gcBYTES_TO_WORDS(sizeof(future_t)); +static int fsemaphore_MARK(void *p, struct NewGC *gc) { + fsemaphore_t *s = (fsemaphore_t*)p; + gcMARK2(s->queue_front, gc); + gcMARK2(s->queue_end, gc); + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); } -#define fsemaphore_IS_ATOMIC 0 +static int fsemaphore_FIXUP(void *p, struct NewGC *gc) { + fsemaphore_t *s = (fsemaphore_t*)p; + gcFIXUP2(s->queue_front, gc); + gcFIXUP2(s->queue_end, gc); + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); +} + +#define fsemaphore_IS_ATOMIC 0 #define fsemaphore_IS_CONST_SIZE 1 + #else static int sequential_future_SIZE(void *p, struct NewGC *gc) { @@ -5808,28 +5810,30 @@ static int sequential_future_FIXUP(void *p, struct NewGC *gc) { #define sequential_future_IS_ATOMIC 0 #define sequential_future_IS_CONST_SIZE 1 -static int sequential_fsemaphore_SIZE(void *p, struct NewGC *gc) { - return - gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); + +static int sequential_fsemaphore_SIZE(void *p, struct NewGC *gc) { + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); } -static int sequential_fsemaphore_MARK(void *p, struct NewGC *gc) { - fsemaphore_t *s = (fsemaphore_t*)p; - return - gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); -} - -static int sequential_fsemaphore_FIXUP(void *p, struct NewGC *gc) { - fsemaphore_t *s = (fsemaphore_t*)p; - return - gcBYTES_TO_WORDS(sizeof(future_t)); +static int sequential_fsemaphore_MARK(void *p, struct NewGC *gc) { + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); } -#define sequential_fsemaphore_IS_ATOMIC 0 +static int sequential_fsemaphore_FIXUP(void *p, struct NewGC *gc) { + return + gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); +} + +#define sequential_fsemaphore_IS_ATOMIC 1 #define sequential_fsemaphore_IS_CONST_SIZE 1 + #endif + + #endif /* FUTURE */ /**********************************************************************/ diff --git a/src/racket/src/mzmarksrc.c b/src/racket/src/mzmarksrc.c index 56aba2b927..1fd7bb4a12 100644 --- a/src/racket/src/mzmarksrc.c +++ b/src/racket/src/mzmarksrc.c @@ -2362,11 +2362,11 @@ future { } fsemaphore { - mark: + mark: fsemaphore_t *s = (fsemaphore_t*)p; gcMARK2(s->queue_front, gc); gcMARK2(s->queue_end, gc); - size: + size: gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); } @@ -2384,9 +2384,8 @@ sequential_future { } sequential_fsemaphore { - mark: - fsemaphore_t *fsema = (fsemaphore_t*)p; - size: + mark: + size: gcBYTES_TO_WORDS(sizeof(fsemaphore_t)); }