diff options
author | Greg Clayton <gclayton@apple.com> | 2010-06-12 17:45:57 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2010-06-12 17:45:57 +0000 |
commit | ef59f829e4501db5f2215f8654f879c03fedd0e6 (patch) | |
tree | 78bc77475c6f591ed9e75c9893fcd452fb2978cb /lldb/source/Utility/SharingPtr.cpp | |
parent | 250a21b79b14ad2757d665bef623fa11faa1c128 (diff) | |
download | bcm5719-llvm-ef59f829e4501db5f2215f8654f879c03fedd0e6.tar.gz bcm5719-llvm-ef59f829e4501db5f2215f8654f879c03fedd0e6.zip |
Switched over to using the new lldb::SharingPtr from Howard Hinnant.
We need to put this in LLDB since we need to vend this in our API
because our public API uses shared pointers to our private objects.
Removed a deprecated file: include/lldb/Host/Types.h
Added the new SharingPtr.cpp/.h files into source/Utility.
Added a shell script build phase that fixes up all headers in the
LLDB.framework.
llvm-svn: 105895
Diffstat (limited to 'lldb/source/Utility/SharingPtr.cpp')
-rw-r--r-- | lldb/source/Utility/SharingPtr.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lldb/source/Utility/SharingPtr.cpp b/lldb/source/Utility/SharingPtr.cpp new file mode 100644 index 00000000000..431fdc1b900 --- /dev/null +++ b/lldb/source/Utility/SharingPtr.cpp @@ -0,0 +1,53 @@ +//===---------------------SharingPtr.cpp ------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "SharingPtr.h" + +namespace lldb { + +namespace imp +{ + +template <class T> +inline T +increment(T& t) +{ + return __sync_add_and_fetch(&t, 1); +} + +template <class T> +inline T +decrement(T& t) +{ + return __sync_add_and_fetch(&t, -1); +} + +shared_count::~shared_count() +{ +} + +void +shared_count::add_shared() +{ + increment(shared_owners_); +} + +void +shared_count::release_shared() +{ + if (decrement(shared_owners_) == -1) + { + on_zero_shared(); + delete this; + } +} + +} // imp + +} // namespace lldb |