Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
cb4519e
os current_exe using same approach as linux to get always the full ab…
devnexen Jul 30, 2021
ce450f8
Use the 64b inner:monotonize() implementation not the 128b one for aa…
AGSaidi Sep 4, 2021
f83853e
refactor: VecDeques PairSlices fields to private
DeveloperC286 Sep 25, 2021
e18a8ef
Don't ignore impls for primitive types
hkmatsumoto Aug 28, 2021
e46fc9d
Encode json files with UTF-8
hkmatsumoto Sep 29, 2021
98dde56
haiku thread affinity build fix
devnexen Oct 2, 2021
e552c0d
bootstrap: add config option for nix patching
davidtwco Oct 1, 2021
8cbcc89
Fix ICE caused by non_exaustive_omitted_patterns struct lint
DevinR528 Oct 1, 2021
f7a8980
Reorder etc check for non_exhaustive_omitted_patterns
DevinR528 Oct 2, 2021
3d83ff6
Add ui test for empty fields for omitted_patterns lint
DevinR528 Oct 2, 2021
b06409e
Rename etc -> has_rest_pat
DevinR528 Oct 2, 2021
fb0b1a5
Follow the diagnostic output style guide
hkmatsumoto Oct 3, 2021
a0cc9bb
Add a test to detect overlapping entries in overview tables
dns2utf8 Sep 10, 2021
677fb6b
Show how many tests are running in parallel
dns2utf8 Sep 11, 2021
e599e2d
Move from grid layout to table based layout because of browser limits…
dns2utf8 Sep 11, 2021
fdd8a0d
Don't suggest replacing region with 'static in NLL
Aaron1011 Oct 3, 2021
ccd2be5
fix busted JavaScript in error index generator
notriddle Oct 4, 2021
0fb0122
Rollup merge of #87631 - :solarish_upd_fs, r=joshtriplett
Manishearth Oct 5, 2021
7a09755
Rollup merge of #88234 - hkmatsumoto:rustdoc-impls-for-primitive, r=j…
Manishearth Oct 5, 2021
dd223d5
Rollup merge of #88651 - AGSaidi:monotonize-inner-64b-aarch64, r=dtolnay
Manishearth Oct 5, 2021
52d3afa
Rollup merge of #88816 - dns2utf8:rustdoc_test_gui_2k_constants, r=Gu…
Manishearth Oct 5, 2021
eeadc9d
Rollup merge of #89244 - DeveloperC286:pair_slices_fields_to_private,…
Manishearth Oct 5, 2021
27b84a9
Rollup merge of #89364 - hkmatsumoto:encode-json-with-utf-8, r=Mark-S…
Manishearth Oct 5, 2021
87f782e
Rollup merge of #89423 - DevinR528:reachable-fields, r=Nadrieril
Manishearth Oct 5, 2021
94b72f4
Rollup merge of #89426 - davidtwco:bootstrap-nix-toolchain-env-var, r…
Manishearth Oct 5, 2021
a23d7f0
Rollup merge of #89462 - devnexen:haiku_thread_aff_build_fix, r=nagisa
Manishearth Oct 5, 2021
04314a6
Rollup merge of #89482 - hkmatsumoto:patch-diagnostics, r=joshtriplett
Manishearth Oct 5, 2021
bf62c6d
Rollup merge of #89504 - Aaron1011:rpit-nll-static, r=nikomatsakis
Manishearth Oct 5, 2021
068683b
Rollup merge of #89535 - notriddle:notriddle/error-index-generator-js…
Manishearth Oct 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use the 64b inner:monotonize() implementation not the 128b one for aa…
…rch64

aarch64 prior to v8.4 (FEAT_LSE2) doesn't have an instruction that guarantees
untorn 128b reads except for completing a 128b load/store exclusive pair
(ldxp/stxp) or compare-and-swap (casp) successfully. The requirement to
complete a 128b read+write atomic is actually more expensive and more unfair
than the previous implementation of monotonize() which used a Mutex on aarch64,
especially at large core counts.  For aarch64 switch to the 64b atomic
implementation which is about 13x faster for a benchmark that involves many
calls to Instant::now().
  • Loading branch information
AGSaidi committed Sep 4, 2021
commit ce450f893d551e25123e0bdb27acc9a85d15cb7f
4 changes: 2 additions & 2 deletions library/std/src/time/monotonic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ pub(super) fn monotonize(raw: time::Instant) -> time::Instant {
inner::monotonize(raw)
}

#[cfg(all(target_has_atomic = "64", not(target_has_atomic = "128")))]
#[cfg(any(all(target_has_atomic = "64", not(target_has_atomic = "128")), target_arch = "aarch64"))]
pub mod inner {
use crate::sync::atomic::AtomicU64;
use crate::sync::atomic::Ordering::*;
Expand Down Expand Up @@ -70,7 +70,7 @@ pub mod inner {
}
}

#[cfg(target_has_atomic = "128")]
#[cfg(all(target_has_atomic = "128", not(target_arch = "aarch64")))]
pub mod inner {
use crate::sync::atomic::AtomicU128;
use crate::sync::atomic::Ordering::*;
Expand Down