@@ -419,7 +419,7 @@ let[@tail_mod_cons] rec remove_first x' removed = function
419419 []
420420 | x :: xs -> if x == x' then xs else x :: remove_first x' removed xs
421421
422- let rec remove_awaiter loc before awaiter =
422+ let rec remove_awaiter backoff loc before awaiter =
423423 (* Fenceless is safe as we have fence after. *)
424424 let state_old = fenceless_get (as_atomic loc) in
425425 if before == eval state_old then
@@ -430,15 +430,15 @@ let rec remove_awaiter loc before awaiter =
430430 { before = Obj. magic () ; after = before; which = W After ; awaiters }
431431 in
432432 if not (Atomic. compare_and_set (as_atomic loc) state_old state_new) then
433- remove_awaiter loc before awaiter
433+ remove_awaiter ( Backoff. once backoff) loc before awaiter
434434
435435let block timeout loc before =
436436 let t = Domain_local_await. prepare_for_await () in
437437 let alive = Timeout. await timeout t.release in
438438 if add_awaiter loc before t.release then begin
439439 try t.await ()
440440 with cancellation_exn ->
441- remove_awaiter loc before t.release;
441+ remove_awaiter Backoff. default loc before t.release;
442442 Timeout. cancel_alive alive;
443443 raise cancellation_exn
444444 end ;
@@ -862,7 +862,7 @@ module Xt = struct
862862 | T (Node node_r ) as current ->
863863 if is_node node_r.lt then remove_awaiters awaiter which stop node_r.lt;
864864 if current != stop then begin
865- remove_awaiter node_r.loc
865+ remove_awaiter Backoff. default node_r.loc
866866 (let state = node_r.state in
867867 if is_cmp which state then eval state else state.before)
868868 awaiter;
0 commit comments