06:16
<Aapo Alasuutari>
Anyone have any idea regarding the wait(Async)/notify thing above? I'm planning on just writing my implementation as a Futex syscall wrapper, and thus doing the "fail-fast" path outside of the critical section. Of course, the syscall will also perform the same read inside its critical section (presumably) so rather than moving anything, I'm just adding an extra read of the SAB to check if a syscall should be made or not.
20:54
<Aapo Alasuutari>

Uhh, am I crazy or is the DoWait's timeout handling text just plain wrong? This is the text:

  1. Let q be ? ToNumber(timeout).
  2. If q is either NaN or +∞𝔽, let t be +∞; else if q is -∞𝔽, let t be 0; else let t be max(ℝ(q), 0).

But then there's a bunch of tests testing that passing undefined as timeout coerces to 0. ToNumber(undefined) returns NaN so we should go into the first branch and set t as +∞.

20:55
<Aapo Alasuutari>
But presumably the tests are the correct source here.
20:59
<Aapo Alasuutari>
https://github.com/tc39/test262/blob/main/test/built-ins/Atomics/waitAsync/bigint/undefined-for-timeout.js https://github.com/tc39/test262/blob/main/test/built-ins/Atomics/waitAsync/undefined-for-timeout.js https://github.com/tc39/test262/blob/main/test/built-ins/Atomics/wait/undefined-for-timeout.js
21:00
<Aapo Alasuutari>
I guess it's just the few tests that are wrong after all.
22:31
<bakkot>
shu is the atomics person
23:19
<iain>
Aapo Alasuutari: It looks to me like the tests are correct except for the description comment. Note that the text you quote is also summarized in the tests (eg here). If the last argument is undefined, the intended behaviour is to not set a timeout; that's what's being tested.
23:20
<iain>
So basically I think the only problem is that this line should say "Undefined timeout arg coerced to +∞", or maybe "Undefined timeout arg should not set timeout"