-
Couldn't load subscription status.
- Fork 13.9k
Optimize ptr::replace
#122601
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize ptr::replace
#122601
Conversation
|
rustbot has assigned @workingjubilee. Use r? to explicitly pick a reviewer |
|
@joboet Do you expect running perf to be useful? |
|
I don't really think so, most places will use |
|
Yeah, that's what I expect too. @bors r+ |
Rollup of 9 pull requests Successful merges: - rust-lang#117918 (Add `wasm_c_abi` `future-incompat` lint) - rust-lang#121545 (fix attribute validation on associated items in traits) - rust-lang#121720 (Split refining_impl_trait lint into _reachable, _internal variants) - rust-lang#122270 (fix `long-linker-command-lines` failure caused by `rust.rpath=false`) - rust-lang#122564 (Delegation: fix ICE on duplicated associative items) - rust-lang#122577 (Remove obsolete parameter `speculative` from `instantiate_poly_trait_ref`) - rust-lang#122601 (Optimize `ptr::replace`) - rust-lang#122604 (Mention jieyouxu for changes to compiletest, run-make tests and the run-make-support library) - rust-lang#122605 (rustc-metadata: Store crate name in self-profile of metadata_register_crate) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#122601 - joboet:ptr_replace, r=workingjubilee Optimize `ptr::replace` rust-lang#83022 optimized `mem::replace` to reduce the number of `memcpy`s. `ptr::replace`, which is [documented to behave just like `mem::replace`](https://doc.rust-lang.org/nightly/std/ptr/fn.replace.html), was not optimized however, leading to [worse code](https://godbolt.org/z/T3hdEEdfe) and missed optimizations. This PR simply forwards `ptr::replace` to `mem::replace` to take advantage of the better implementation.
#83022 optimized
mem::replaceto reduce the number ofmemcpys.ptr::replace, which is documented to behave just likemem::replace, was not optimized however, leading to worse code and missed optimizations. This PR simply forwardsptr::replacetomem::replaceto take advantage of the better implementation.