Revert "Add a method to atomic add."
authorscroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 16 Jul 2012 13:22:56 +0000 (13:22 +0000)
committerscroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 16 Jul 2012 13:22:56 +0000 (13:22 +0000)
This reverts commit eb539cf92f487daf9567ffbbba6b6653406d43ae.

BUG=
TEST=

Review URL: https://codereview.appspot.com/6395051

git-svn-id: http://skia.googlecode.com/svn/trunk@4615 2bbb7eff-a529-9590-31e7-b0007b416f81

gyp/tests.gyp
include/core/SkThread.h
include/core/SkThread_platform.h
src/ports/SkThread_none.cpp
src/ports/SkThread_pthread.cpp
src/ports/SkThread_win.cpp
tests/AtomicTest.cpp [deleted file]

index 8ea4ee8..c6e2786 100644 (file)
@@ -18,7 +18,6 @@
       'sources': [
         '../tests/AAClipTest.cpp',
         '../tests/AnnotationTest.cpp',
-        '../tests/AtomicTest.cpp',
         '../tests/BitmapCopyTest.cpp',
         '../tests/BitmapGetColorTest.cpp',
         '../tests/BitSetTest.cpp',
index 5b1fc1c..2fd5052 100644 (file)
@@ -16,7 +16,6 @@
 /****** SkThread_platform needs to define the following...
 
 int32_t sk_atomic_inc(int32_t*);
-int32_t sk_atomic_add(int32_t*, int32_t);
 int32_t sk_atomic_dec(int32_t*);
 int32_t sk_atomic_conditional_inc(int32_t*);
 
index 19fcd4a..cb05c50 100644 (file)
@@ -23,10 +23,6 @@ static inline __attribute__((always_inline)) int32_t sk_atomic_inc(int32_t *addr
     return __sync_fetch_and_add(addr, 1);
 }
 
-static inline __attribute__((always_inline)) int32_t sk_atomic_add(int32_t *addr, int32_t value) {
-    return __sync_fetch_and_add(addr, value);
-}
-
 static inline __attribute__((always_inline)) int32_t sk_atomic_dec(int32_t *addr) {
     return __sync_fetch_and_add(addr, -1);
 }
@@ -58,9 +54,8 @@ static inline __attribute__((always_inline)) void sk_membar_aquire__after_atomic
  */
 #include <utils/Atomic.h>
 
-#define sk_atomic_inc(addr)         android_atomic_inc(addr)
-#define sk_atomic_add(addr, value)  android_atomic_add(value, addr)
-#define sk_atomic_dec(addr)         android_atomic_dec(addr)
+#define sk_atomic_inc(addr)     android_atomic_inc(addr)
+#define sk_atomic_dec(addr)     android_atomic_dec(addr)
 void sk_membar_aquire__after_atomic_dec() {
     //HACK: Android is actually using full memory barriers.
     //      Should this change, uncomment below.
@@ -97,14 +92,6 @@ void sk_membar_aquire__after_atomic_conditional_inc() {
 */
 SK_API int32_t sk_atomic_inc(int32_t* addr);
 
-/** Implemented by the porting layer, this function adds value to the int
- specified by the address (in a thread-safe manner), and returns the
- previous value.
- No additional memory barrier is required.
- This must act as a compiler barrier.
- */
-SK_API int32_t sk_atomic_add(int32_t* addr, int32_t value);
-
 /** Implemented by the porting layer, this function subtracts one from the int
     specified by the address (in a thread-safe manner), and returns the
     previous value.
index 1122c95..56bbbae 100644 (file)
@@ -16,12 +16,6 @@ int32_t sk_atomic_inc(int32_t* addr) {
     return value;
 }
 
-int32_t sk_atomic_add(int32_t* addr, int32_t inc) {
-    int32_t value = *addr;
-    *addr = value + inc;
-    return value;
-}
-
 int32_t sk_atomic_dec(int32_t* addr) {
     int32_t value = *addr;
     *addr = value - 1;
index a1c7b24..d0bb3ac 100644 (file)
@@ -35,11 +35,6 @@ int32_t sk_atomic_inc(int32_t* addr)
     return __sync_fetch_and_add(addr, 1);
 }
 
-int32_t sk_atomic_add(int32_t* addr, int32_t value)
-{
-    return __sync_fetch_and_add(addr, value);
-}
-
 int32_t sk_atomic_dec(int32_t* addr)
 {
     return __sync_fetch_and_add(addr, -1);
@@ -79,15 +74,6 @@ int32_t sk_atomic_inc(int32_t* addr)
     return value;
 }
 
-int32_t sk_atomic_add(int32_t* addr, int32_t inc)
-{
-    SkAutoMutexAcquire ac(gAtomicMutex);
-    
-    int32_t value = *addr;
-    *addr = value + inc;
-    return value;
-}
-
 int32_t sk_atomic_dec(int32_t* addr)
 {
     SkAutoMutexAcquire ac(gAtomicMutex);
index 7d091d2..e833314 100644 (file)
@@ -16,7 +16,7 @@
 //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, _InterlockedAdd, _InterlockedDecrement)
+#pragma intrinsic(_InterlockedIncrement, _InterlockedDecrement)
 #pragma intrinsic(_InterlockedCompareExchange)
 
 int32_t sk_atomic_inc(int32_t* addr) {
@@ -24,12 +24,6 @@ int32_t sk_atomic_inc(int32_t* addr) {
     return _InterlockedIncrement(reinterpret_cast<LONG*>(addr)) - 1;
 }
 
-int32_t sk_atomic_add(int32_t* addr, int32_t inc) {
-    // InterlockedAdd returns the new value, we want to return the old.
-    LONG value = reinterpret_cast<LONG>(inc);
-    return _InterlockedAdd(reinterpret_cast<LONG*>(addr), value) - value;
-}
-
 int32_t sk_atomic_dec(int32_t* addr) {
     return _InterlockedDecrement(reinterpret_cast<LONG*>(addr)) + 1;
 }
diff --git a/tests/AtomicTest.cpp b/tests/AtomicTest.cpp
deleted file mode 100644 (file)
index a9ab8d2..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "SkThread.h"
-#include "SkThreadUtils.h"
-#include "SkTypes.h"
-#include "Test.h"
-
-struct AddInfo {
-    int32_t valueToAdd;
-    int timesToAdd;
-    unsigned int processorAffinity;
-};
-
-static int32_t base = 0;
-
-static AddInfo gAdds[] = {
-    { 3, 100, 23 },
-    { 2, 200, 2 },
-    { 7, 150, 17 },
-};
-
-static void addABunchOfTimes(void* data) {
-    AddInfo* addInfo = static_cast<AddInfo*>(data);
-    for (int i = 0; i < addInfo->timesToAdd; i++) {
-        sk_atomic_add(&base, addInfo->valueToAdd);
-    }
-}
-
-static void test_atomicAddTests(skiatest::Reporter* reporter) {
-    int32_t total = base;
-    SkThread* threads[SK_ARRAY_COUNT(gAdds)];
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gAdds); i++) {
-        total += gAdds[i].valueToAdd * gAdds[i].timesToAdd;
-    }
-    // Start the threads
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gAdds); i++) {
-        threads[i] = new SkThread(addABunchOfTimes, &gAdds[i]);
-        threads[i]->setProcessorAffinity(gAdds[i].processorAffinity);
-        threads[i]->start();
-    }
-
-    // Now end the threads
-    for (size_t i = 0; i < SK_ARRAY_COUNT(gAdds); i++) {
-        threads[i]->join();
-        delete threads[i];
-    }
-    REPORTER_ASSERT(reporter, total == base);
-    // Ensure that the returned value from sk_atomic_add is correct.
-    int32_t valueToModify = 3;
-    const int32_t originalValue = valueToModify;
-    REPORTER_ASSERT(reporter, originalValue == sk_atomic_add(&valueToModify, 7));
-}
-
-#include "TestClassDef.h"
-DEFINE_TESTCLASS("AtomicAdd", AtomicAddTestClass, test_atomicAddTests)