Skip to content

[pull] main from WebAssembly:main#274

Merged
pull[bot] merged 2 commits intokkpan11:mainfrom
WebAssembly:main
Feb 7, 2025
Merged

[pull] main from WebAssembly:main#274
pull[bot] merged 2 commits intokkpan11:mainfrom
WebAssembly:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull bot commented Feb 7, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.1)

Can you help keep this open source service alive? 💖 Please sponsor : )

We previously reasoned that RMWs that do not change in-memory values
could be optimized to just atomic gets because they did not necessarily
synchronize with subsequent atomic reads of the same location. This is
not correct for seqcst RMWs, though, since subsequent seqcst reads in
the total order of seqcst operations are _required_ to read from and
synchronize with these RMWs, even though they do not change the
in-memory values. Fix the optimization to only work on acquire-release
RMWs and RMWs to unshared memory.
We previously reasoned that we had to emit fences when optimizing
sequentially consistent RMWs to unshared memory to preserve the RMWs'
effect on the total order of sequentially consistent operations.
However, that total order alone is insufficient to force any read event
to observe some other write event; that requires a synchronization edge
to be formed via an atomic write and read pair. RMWs to unshared memory
can never be part of such a synchronization edge, so removing them
cannot introduce new behaviors. Improve our optimization to stop
emitting the unnecessary fences.
@pull pull bot added the ⤵️ pull label Feb 7, 2025
@pull pull bot merged commit 1de13c3 into kkpan11:main Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant