From 50e431472ec1589884f2de2007a10718cb3d4176 Mon Sep 17 00:00:00 2001 From: "deanm@google.com" Date: Thu, 7 Aug 2008 14:12:34 +0000 Subject: Remove the old atomic operations interface. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@511 0039d316-1c4b-4281-b951-d872f2087c98 --- base/SConscript | 1 - base/atomic.h | 111 --------------------------------------- base/atomic_unittest.cc | 63 ---------------------- base/build/base.vcproj | 4 -- base/build/base_unittests.vcproj | 4 -- 5 files changed, 183 deletions(-) delete mode 100644 base/atomic.h delete mode 100644 base/atomic_unittest.cc (limited to 'base') diff --git a/base/SConscript b/base/SConscript index 26493a7..39ccdda 100644 --- a/base/SConscript +++ b/base/SConscript @@ -215,7 +215,6 @@ env_tests.ChromeTestProgram(['debug_message.exe', test_files = [ 'at_exit_unittest.cc', - 'atomic_unittest.cc', 'check_handler_unittest.cc', 'clipboard_unittest.cc', 'command_line_unittest.cc', diff --git a/base/atomic.h b/base/atomic.h deleted file mode 100644 index becbcc3..0000000 --- a/base/atomic.h +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef BASE_ATOMIC_H__ -#define BASE_ATOMIC_H__ - -#if defined(WIN32) -#include -#elif defined(__APPLE__) -#include -#else -#error Implement atomic support on your platform -#endif - -#include "base/basictypes.h" - -namespace base { - -/////////////////////////////////////////////////////////////////////////// -// -// Forward declarations and descriptions of the functions -// -/////////////////////////////////////////////////////////////////////////// - -// Atomically increments *value and returns the resulting incremented value. -// This function implies no memory barriers. -int32 AtomicIncrement(volatile int32* value); - -// Atomically decrements *value and returns the resulting decremented value. -// This function implies no memory barriers. -int32 AtomicDecrement(volatile int32* value); - -// Atomically sets *target to new_value and returns the old value of *target. -// This function implies no memory barriers. -int32 AtomicSwap(volatile int32* target, int32 new_value); - -/////////////////////////////////////////////////////////////////////////// -// -// Implementations for various platforms -// -/////////////////////////////////////////////////////////////////////////// - -#if defined(WIN32) - -inline int32 AtomicIncrement(volatile int32* value) { - return InterlockedIncrement(reinterpret_cast(value)); -} - -inline int32 AtomicDecrement(volatile int32* value) { - return InterlockedDecrement(reinterpret_cast(value)); -} - -inline int32 AtomicSwap(volatile int32* target, int32 new_value) { - return InterlockedExchange(reinterpret_cast(target), - new_value); -} - -#elif defined(__APPLE__) - -inline int32 AtomicIncrement(volatile int32* value) { - return OSAtomicIncrement32(reinterpret_cast(value)); -} - -inline int32 AtomicDecrement(volatile int32* value) { - return OSAtomicDecrement32(reinterpret_cast(value)); -} - -inline int32 AtomicSwap(volatile int32* target, int32 new_value) { - int32 old_value; - do { - old_value = *target; - } while (!OSAtomicCompareAndSwap32(old_value, new_value, - reinterpret_cast(target))); - return old_value; -} - -#else - -#error Implement atomic support on your platform - -#endif - -} // namespace base - -#endif // BASE_ATOMIC_H__ diff --git a/base/atomic_unittest.cc b/base/atomic_unittest.cc deleted file mode 100644 index 770a520..0000000 --- a/base/atomic_unittest.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "base/atomic.h" - -#include "base/lock.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(AtomicTest, Increment) { - int32 value = 38; - int32 new_value = base::AtomicIncrement(&value); - EXPECT_EQ(39, value); - EXPECT_EQ(39, new_value); -} - -TEST(AtomicTest, Decrement) { - int32 value = 49; - int32 new_value = base::AtomicDecrement(&value); - EXPECT_EQ(48, value); - EXPECT_EQ(48, new_value); -} - -TEST(AtomicTest, Swap) { - int32 value = 38; - int32 old_value = base::AtomicSwap(&value, 49); - EXPECT_EQ(49, value); - EXPECT_EQ(38, old_value); - - // Now do another test. - value = 0; - old_value = base::AtomicSwap(&value, 1); - EXPECT_EQ(0, old_value); - old_value = base::AtomicSwap(&value, 1); - EXPECT_EQ(1, old_value); - old_value = base::AtomicSwap(&value, 1); - EXPECT_EQ(1, old_value); -} diff --git a/base/build/base.vcproj b/base/build/base.vcproj index 60c759c..c76886f 100644 --- a/base/build/base.vcproj +++ b/base/build/base.vcproj @@ -130,10 +130,6 @@ > - - diff --git a/base/build/base_unittests.vcproj b/base/build/base_unittests.vcproj index 7ffc029..27a4ad8 100644 --- a/base/build/base_unittests.vcproj +++ b/base/build/base_unittests.vcproj @@ -172,10 +172,6 @@ > - - -- cgit v1.1