diff options
| author | Miguel Ojeda <ojeda@kernel.org> | 2021-01-29 20:09:07 +0100 |
|---|---|---|
| committer | Miguel Ojeda <ojeda@kernel.org> | 2021-01-29 20:25:23 +0100 |
| commit | c7f4154c6a839d31abcbb74be4c9b2404ae3a2ec (patch) | |
| tree | 696e9f0405ec5be8897c12f6e3b1f2ef522630d6 | |
| parent | c4e33b51c1a2d5e599b949fa3006467b88df253a (diff) | |
| download | rust-c7f4154c6a839d31abcbb74be4c9b2404ae3a2ec.tar.gz rust-c7f4154c6a839d31abcbb74be4c9b2404ae3a2ec.zip | |
sys: use `process::abort()` instead of `arch::wasm32::unreachable()`
Rationale:
- `abort()` lowers to `wasm32::unreachable()` anyway.
- `abort()` isn't `unsafe`.
- `abort()` matches the comment better.
- `abort()` avoids confusion by future readers (e.g.
https://github.com/rust-lang/rust/pull/81527): the naming of wasm's
`unreachable' instruction is a bit unfortunate because it is not
related to the `unreachable()` intrinsic (intended to trigger UB).
Codegen is likely to be different since `unreachable()` is `inline`
while `abort()` is `cold`. Since it doesn't look like we are expecting
here to trigger this case, the latter seems better anyway.
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
| -rw-r--r-- | library/std/src/sys/wasm/thread.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/library/std/src/sys/wasm/thread.rs b/library/std/src/sys/wasm/thread.rs index 95a9230aa78..5eafb77da1d 100644 --- a/library/std/src/sys/wasm/thread.rs +++ b/library/std/src/sys/wasm/thread.rs @@ -86,7 +86,7 @@ pub fn my_id() -> u32 { if MY_ID == 0 { let mut cur = NEXT_ID.load(SeqCst); MY_ID = loop { - let next = cur.checked_add(1).unwrap_or_else(|| crate::arch::wasm32::unreachable()); + let next = cur.checked_add(1).unwrap_or_else(|| crate::process::abort()); match NEXT_ID.compare_exchange(cur, next, SeqCst, SeqCst) { Ok(_) => break next, Err(i) => cur = i, |
