From 51422d2450b08413630ae278ba04dff339744595 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 1 Dec 2021 15:04:14 +0100 Subject: [PATCH] Use internal mutation instead of re-parameterization --- syndicate/actor.rkt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/syndicate/actor.rkt b/syndicate/actor.rkt index b67c8ee..1d892f2 100644 --- a/syndicate/actor.rkt +++ b/syndicate/actor.rkt @@ -78,7 +78,7 @@ (struct outbound-assertion (handle peer [established? #:mutable])) (struct turn (id - active-facet + [active-facet #:mutable] [queues #:mutable]) #:methods gen:custom-write [(define (write-proc t port mode) @@ -317,9 +317,11 @@ (log-syndicate/actor-debug "end turn ~v\n" f))) (define (with-active-facet f action) - (let ((inner-turn (turn (generate-turn-id) f (turn-queues (current-turn))))) - (parameterize ((current-turn inner-turn)) (action)) - (set-turn-queues! inner-turn #f))) + (let* ((t (current-turn)) + (saved-f (turn-active-facet t))) + (set-turn-active-facet! t f) + (action) + (set-turn-active-facet! t saved-f))) (define (turn-enqueue! turn f action) (define qs (turn-queues turn))