Skip to content

Commit

Permalink
Change compare_exchange to return a Result<T, T>
Browse files Browse the repository at this point in the history
  • Loading branch information
Amanieu committed Mar 19, 2016
1 parent 235d774 commit 421fed1
Show file tree
Hide file tree
Showing 6 changed files with 174 additions and 134 deletions.
24 changes: 20 additions & 4 deletions src/libcore/intrinsics.rs
Expand Up @@ -53,19 +53,35 @@ extern "rust-intrinsic" {
// NB: These intrinsics take raw pointers because they mutate aliased
// memory, which is not valid for either `&` or `&mut`.

#[cfg(stage0)]
pub fn atomic_cxchg<T>(dst: *mut T, old: T, src: T) -> T;
#[cfg(stage0)]
pub fn atomic_cxchg_acq<T>(dst: *mut T, old: T, src: T) -> T;
#[cfg(stage0)]
pub fn atomic_cxchg_rel<T>(dst: *mut T, old: T, src: T) -> T;
#[cfg(stage0)]
pub fn atomic_cxchg_acqrel<T>(dst: *mut T, old: T, src: T) -> T;
#[cfg(stage0)]
pub fn atomic_cxchg_relaxed<T>(dst: *mut T, old: T, src: T) -> T;

#[cfg(not(stage0))]
pub fn atomic_cxchg<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_acq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_rel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_acqrel<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_relaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_failrelaxed<T>(dst: *mut T, old: T, src: T) -> T;
pub fn atomic_cxchg_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_failacq<T>(dst: *mut T, old: T, src: T) -> T;
pub fn atomic_cxchg_failacq<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_acq_failrelaxed<T>(dst: *mut T, old: T, src: T) -> T;
pub fn atomic_cxchg_acq_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);
#[cfg(not(stage0))]
pub fn atomic_cxchg_acqrel_failrelaxed<T>(dst: *mut T, old: T, src: T) -> T;
pub fn atomic_cxchg_acqrel_failrelaxed<T>(dst: *mut T, old: T, src: T) -> (T, bool);

#[cfg(not(stage0))]
pub fn atomic_cxchgweak<T>(dst: *mut T, old: T, src: T) -> (T, bool);
Expand Down

0 comments on commit 421fed1

Please sign in to comment.