Index: src/ports/SkThread_win.cpp |
=================================================================== |
--- src/ports/SkThread_win.cpp (revision 12696) |
+++ src/ports/SkThread_win.cpp (working copy) |
@@ -1,65 +0,0 @@ |
-/* |
- * Copyright 2008 The Android Open Source Project |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include <windows.h> |
-#include <intrin.h> |
-#include "SkThread.h" |
- |
-//MSDN says in order to declare an interlocked function for use as an |
-//intrinsic, include intrin.h and put the function in a #pragma intrinsic |
-//directive. |
-//The pragma appears to be unnecessary, but doesn't hurt. |
-#pragma intrinsic(_InterlockedIncrement, _InterlockedExchangeAdd, _InterlockedDecrement) |
-#pragma intrinsic(_InterlockedCompareExchange) |
- |
-int32_t sk_atomic_inc(int32_t* addr) { |
- // InterlockedIncrement returns the new value, we want to return the old. |
- return _InterlockedIncrement(reinterpret_cast<LONG*>(addr)) - 1; |
-} |
- |
-int32_t sk_atomic_add(int32_t* addr, int32_t inc) { |
- return _InterlockedExchangeAdd(reinterpret_cast<LONG*>(addr), |
- static_cast<LONG>(inc)); |
-} |
- |
-int32_t sk_atomic_dec(int32_t* addr) { |
- return _InterlockedDecrement(reinterpret_cast<LONG*>(addr)) + 1; |
-} |
-void sk_membar_aquire__after_atomic_dec() { } |
- |
-int32_t sk_atomic_conditional_inc(int32_t* addr) { |
- while (true) { |
- LONG value = static_cast<int32_t const volatile&>(*addr); |
- if (value == 0) { |
- return 0; |
- } |
- if (_InterlockedCompareExchange(reinterpret_cast<LONG*>(addr), |
- value + 1, |
- value) == value) { |
- return value; |
- } |
- } |
-} |
-void sk_membar_aquire__after_atomic_conditional_inc() { } |
- |
-SkMutex::SkMutex() { |
- SK_COMPILE_ASSERT(sizeof(fStorage) > sizeof(CRITICAL_SECTION), |
- NotEnoughSizeForCriticalSection); |
- InitializeCriticalSection(reinterpret_cast<CRITICAL_SECTION*>(&fStorage)); |
-} |
- |
-SkMutex::~SkMutex() { |
- DeleteCriticalSection(reinterpret_cast<CRITICAL_SECTION*>(&fStorage)); |
-} |
- |
-void SkMutex::acquire() { |
- EnterCriticalSection(reinterpret_cast<CRITICAL_SECTION*>(&fStorage)); |
-} |
- |
-void SkMutex::release() { |
- LeaveCriticalSection(reinterpret_cast<CRITICAL_SECTION*>(&fStorage)); |
-} |