Skip to content

Commit

Permalink
Auto merge of #40927 - stjepang:docs-atomic-overflow-note, r=alexcric…
Browse files Browse the repository at this point in the history
…hton

Add a note about overflow for fetch_add/fetch_sub

Fixes #40916
Fixes #34618

r? @steveklabnik
  • Loading branch information
bors committed Apr 2, 2017
2 parents 5e122f5 + 2946c41 commit f6cc11b
Showing 1 changed file with 29 additions and 10 deletions.
39 changes: 29 additions & 10 deletions src/libcore/sync/atomic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ impl AtomicBool {
}
}

/// Stores a value into the bool, returning the old value.
/// Stores a value into the bool, returning the previous value.
///
/// `swap` takes an [`Ordering`] argument which describes the memory ordering
/// of this operation.
Expand Down Expand Up @@ -732,7 +732,7 @@ impl<T> AtomicPtr<T> {
}
}

/// Stores a value into the pointer, returning the old value.
/// Stores a value into the pointer, returning the previous value.
///
/// `swap` takes an [`Ordering`] argument which describes the memory ordering
/// of this operation.
Expand Down Expand Up @@ -1047,7 +1047,7 @@ macro_rules! atomic_int {
unsafe { atomic_store(self.v.get(), val, order); }
}

/// Stores a value into the atomic integer, returning the old value.
/// Stores a value into the atomic integer, returning the previous value.
///
/// `swap` takes an [`Ordering`] argument which describes the memory ordering of this
/// operation.
Expand Down Expand Up @@ -1201,7 +1201,9 @@ macro_rules! atomic_int {
}
}

/// Add to the current value, returning the previous value.
/// Adds to the current value, returning the previous value.
///
/// This operation wraps around on overflow.
///
/// # Examples
///
Expand All @@ -1218,7 +1220,9 @@ macro_rules! atomic_int {
unsafe { atomic_add(self.v.get(), val, order) }
}

/// Subtract from the current value, returning the previous value.
/// Subtracts from the current value, returning the previous value.
///
/// This operation wraps around on overflow.
///
/// # Examples
///
Expand All @@ -1235,7 +1239,12 @@ macro_rules! atomic_int {
unsafe { atomic_sub(self.v.get(), val, order) }
}

/// Bitwise and with the current value, returning the previous value.
/// Bitwise "and" with the current value.
///
/// Performs a bitwise "and" operation on the current value and the argument `val`, and
/// sets the new value to the result.
///
/// Returns the previous value.
///
/// # Examples
///
Expand All @@ -1251,7 +1260,12 @@ macro_rules! atomic_int {
unsafe { atomic_and(self.v.get(), val, order) }
}

/// Bitwise or with the current value, returning the previous value.
/// Bitwise "or" with the current value.
///
/// Performs a bitwise "or" operation on the current value and the argument `val`, and
/// sets the new value to the result.
///
/// Returns the previous value.
///
/// # Examples
///
Expand All @@ -1267,7 +1281,12 @@ macro_rules! atomic_int {
unsafe { atomic_or(self.v.get(), val, order) }
}

/// Bitwise xor with the current value, returning the previous value.
/// Bitwise "xor" with the current value.
///
/// Performs a bitwise "xor" operation on the current value and the argument `val`, and
/// sets the new value to the result.
///
/// Returns the previous value.
///
/// # Examples
///
Expand Down Expand Up @@ -1415,7 +1434,7 @@ unsafe fn atomic_swap<T>(dst: *mut T, val: T, order: Ordering) -> T {
}
}

/// Returns the old value (like __sync_fetch_and_add).
/// Returns the previous value (like __sync_fetch_and_add).
#[inline]
unsafe fn atomic_add<T>(dst: *mut T, val: T, order: Ordering) -> T {
match order {
Expand All @@ -1428,7 +1447,7 @@ unsafe fn atomic_add<T>(dst: *mut T, val: T, order: Ordering) -> T {
}
}

/// Returns the old value (like __sync_fetch_and_sub).
/// Returns the previous value (like __sync_fetch_and_sub).
#[inline]
unsafe fn atomic_sub<T>(dst: *mut T, val: T, order: Ordering) -> T {
match order {
Expand Down

0 comments on commit f6cc11b

Please sign in to comment.