From 18435e3a082fbcfdd09d76f06f3b1349a386bab6 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 23 Feb 2021 12:56:46 -0700 Subject: [PATCH] cs: fix interactio of unsafe capture and barriers Fix `unsafe-call-with-composable-continuation/no-wind` so that it's not blocked by a barrier, since it's supposed to have thread-like capturing ability. Closes #3696 --- .../racket-test-core/tests/racket/try-atomic.rkt | 16 ++++++++++++++++ racket/src/cs/rumble/control.ss | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/try-atomic.rkt b/pkgs/racket-test-core/tests/racket/try-atomic.rkt index a7d90acb75..c476c94879 100644 --- a/pkgs/racket-test-core/tests/racket/try-atomic.rkt +++ b/pkgs/racket-test-core/tests/racket/try-atomic.rkt @@ -19,3 +19,19 @@ 'no) (check done? #t) + +(set! done? #f) + +(check + (call-as-nonatomic-retry-point + (lambda () + (try-atomic + (lambda () + (call-with-continuation-barrier + (lambda () + (sync/timeout 0.25 ch))) + (set! done? #t)) + 'barrier))) + 'barrier) + +(check done? #t) diff --git a/racket/src/cs/rumble/control.ss b/racket/src/cs/rumble/control.ss index 2fe83b286e..68b172f4cc 100644 --- a/racket/src/cs/rumble/control.ss +++ b/racket/src/cs/rumble/control.ss @@ -526,7 +526,7 @@ (|#%app| p (make-composable-continuation - (extract-metacontinuation 'call-with-composable-continuation (strip-impersonator tag) #f) + (extract-metacontinuation 'call-with-composable-continuation (strip-impersonator tag) (not wind?)) k (current-winders) (current-mark-stack)