diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/src/ports/SkAtomics_none.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/src/ports/SkAtomics_none.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,49 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAtomics_none_DEFINED +#define SkAtomics_none_DEFINED + +/** Non-atomic atomics for uniprocessor systems. */ + +#include + +static inline int32_t sk_atomic_inc(int32_t* addr) { + int32_t value = *addr; + *addr = value + 1; + return value; +} + +static inline int32_t sk_atomic_add(int32_t* addr, int32_t inc) { + int32_t value = *addr; + *addr = value + inc; + return value; +} + +static inline int32_t sk_atomic_dec(int32_t* addr) { + int32_t value = *addr; + *addr = value - 1; + return value; +} + +static inline void sk_membar_acquire__after_atomic_dec() { } + +static inline int32_t sk_atomic_conditional_inc(int32_t* addr) { + int32_t value = *addr; + if (value != 0) ++*addr; + return value; +} + +static inline bool sk_atomic_cas(int32_t* addr, int32_t before, int32_t after) { + if (*addr != before) return false; + *addr = after; + return true; +} + +static inline void sk_membar_acquire__after_atomic_conditional_inc() { } + +#endif