Atomics overhaul.
authormtklein <mtklein@chromium.org>
Mon, 2 Feb 2015 20:22:07 +0000 (12:22 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 2 Feb 2015 20:22:07 +0000 (12:22 -0800)
commita669bc7a7ae7580c5cd92067aeb95d09e64ea720
tree2ab6086a84d997e7dd01b858a5d9f6bbc43f57c9
parent465206af184f58e8097e7f4f414b791232627c31
Atomics overhaul.

This merges and refactors SkAtomics.h and SkBarriers.h into SkAtomics.h and
some ports/ implementations. The major new feature is that we can express
memory orders explicitly rather than only through comments.

The porting layer is reduced to four template functions:
  - sk_atomic_load
  - sk_atomic_store
  - sk_atomic_fetch_add
  - sk_atomic_compare_exchange
From those four we can reconstruct all our previous sk_atomic_foo.

There are three ports:
  - SkAtomics_std:    uses C++11 <atomic>,             used with MSVC
  - SkAtomics_atomic: uses newer GCC/Clang intrinsics, used on not-MSVC where possible
  - SkAtomics_sync:   uses older GCC/Clang intrinsics, used where SkAtomics_atomic not supported

No public API changes.
TBR=reed@google.com

BUG=skia:

Review URL: https://codereview.chromium.org/896553002
13 files changed:
gyp/tools.gyp
include/core/SkAtomics.h
include/core/SkBarriers.h [deleted file]
include/core/SkMutex.h
include/core/SkThread.h
include/core/SkThreadPriv.h
include/ports/SkAtomics_atomic.h [new file with mode: 0644]
include/ports/SkAtomics_std.h [new file with mode: 0644]
include/ports/SkAtomics_sync.h
include/ports/SkAtomics_win.h [deleted file]
include/ports/SkBarriers_arm.h [deleted file]
include/ports/SkBarriers_tsan.h [deleted file]
include/ports/SkBarriers_x86.h [deleted file]