17 ALWAYS_INLINE 
void AtomicAdjustWin32Impl::
    18 inc(TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
    19   assert((((
size_t)&var) & (
sizeof(Integer) - 1)) == 0);
    21   InterlockedIncrement64(&var);
    23   InterlockedIncrement(&var);
    31 ALWAYS_INLINE 
bool AtomicAdjustWin32Impl::
    32 dec(TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
    33   assert((((
size_t)&var) & (
sizeof(Integer) - 1)) == 0);
    35   return (InterlockedDecrement64(&var) != 0);
    37   return (InterlockedDecrement(&var) != 0);
    45 INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
    46 add(TVOLATILE AtomicAdjustWin32Impl::Integer &var, AtomicAdjustWin32Impl::Integer delta) {
    47   assert((((
size_t)&var) & (
sizeof(Integer) - 1)) == 0);
    49   return InterlockedAdd64(&var, delta);
    51   Integer orig_value = var;
    52   Integer new_value = orig_value + delta;
    53   while (compare_and_exchange(var, orig_value, new_value) != orig_value) {
    55     new_value = orig_value + delta;
    64 ALWAYS_INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
    65 set(TVOLATILE AtomicAdjustWin32Impl::Integer &var,
    66     AtomicAdjustWin32Impl::Integer new_value) {
    67   assert((((
size_t)&var) & (
sizeof(Integer) - 1)) == 0);
    69   return InterlockedExchange64(&var, new_value);
    71   return InterlockedExchange(&var, new_value);
    81 ALWAYS_INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
    82 get(
const TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
    87   assert((((
size_t)&var) & (
sizeof(Integer) - 1)) == 0);
    94 ALWAYS_INLINE AtomicAdjustWin32Impl::Pointer AtomicAdjustWin32Impl::
    95 set_ptr(TVOLATILE AtomicAdjustWin32Impl::Pointer &var,
    96         AtomicAdjustWin32Impl::Pointer new_value) {
    97   assert((((
size_t)&var) & (
sizeof(Pointer) - 1)) == 0);
    98   return InterlockedExchangePointer(&var, new_value);
   107 ALWAYS_INLINE AtomicAdjustWin32Impl::Pointer AtomicAdjustWin32Impl::
   108 get_ptr(
const TVOLATILE AtomicAdjustWin32Impl::Pointer &var) {
   110   assert((((
size_t)&var) & (
sizeof(Pointer) - 1)) == 0);
   127 INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
   128 compare_and_exchange(TVOLATILE AtomicAdjustWin32Impl::Integer &mem,
   129                      AtomicAdjustWin32Impl::Integer old_value,
   130                      AtomicAdjustWin32Impl::Integer new_value) {
   131   assert((((
size_t)&mem) & (
sizeof(Integer) - 1)) == 0);
   135   return InterlockedCompareExchange64((TVOLATILE LONGLONG *)&mem, new_value, old_value);
   137   return InterlockedCompareExchange((TVOLATILE LONG *)&mem, new_value, old_value);
   146 INLINE AtomicAdjustWin32Impl::Pointer AtomicAdjustWin32Impl::
   147 compare_and_exchange_ptr(TVOLATILE AtomicAdjustWin32Impl::Pointer &mem,
   148                          AtomicAdjustWin32Impl::Pointer old_value,
   149                          AtomicAdjustWin32Impl::Pointer new_value) {
   150   assert((((
size_t)&mem) & (
sizeof(Pointer) - 1)) == 0);
   153   return InterlockedCompareExchangePointer(&mem, new_value, old_value);