about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorkennytm <kennytm@gmail.com>2018-07-14 02:56:52 +0800
committerGitHub <noreply@github.com>2018-07-14 02:56:52 +0800
commit591accf7b25847164f53b60fc02431ec536a61f2 (patch)
tree86d3519925a5e16d176d053b6bd534cf5a5d1307 /src/rustllvm/RustWrapper.cpp
parent2fa00da26f37a13398b03e51f1f98c778076a274 (diff)
parent4f4e91a69d75b5de66d53399027cc1835387a423 (diff)
downloadrust-591accf7b25847164f53b60fc02431ec536a61f2.tar.gz
rust-591accf7b25847164f53b60fc02431ec536a61f2.zip
Rollup merge of #52316 - seanmonstar:waker-unsafety, r=cramertj
task: remove wrong comments about non-existent LocalWake trait

~~A `LocalWaker` is specifically `!Send `, and the unsafety comment around
`LocalWaker::new` only specifies that it be safe to call `wake_local`.
One could then accidentally promote a `LocalWaker` into a `Waker`, which
is universally `Send`, simply via `Waker::from(local_waker)`. A
`LocalWaker` the was built expecting to not be `Send`, such as using
`Rc`, could be sent to other threads safely.~~

~~Separately, though somewhat related, `Context` holds a `&LocalWaker`
internally, and exposes a `waker() -> &Waker` method. This simply
transmutes the `&LocalWaker` to `&Waker`, which would be unsound, except
that you can't "send" a `&Waker`, you'd need to clone it first. Since
`UnsafeWake::clone_raw` requires that it return a `Waker`, the transmute
is not unsound. The transmuted `LocalWaker` will be promoted to a
`Waker` correctly.~~

~~That would mean that if `UnsafeWake::clone_raw` were to be changed, such
as returning `Self` instead of `Waker`, this would no longer be sound.
Thus, this also adds a comment to `clone_raw` to remember this.~~

r? @cramertj
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions