diff options
author | Greg Clayton <gclayton@apple.com> | 2011-09-17 06:21:20 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-09-17 06:21:20 +0000 |
commit | 747bcb03d25144951e24d957fc667bb497c88ed9 (patch) | |
tree | 95d335a5a28374feb2cd58cf629384d25287afe5 /lldb/source/Utility/SharingPtr.cpp | |
parent | 5631ebce5e09cec5c1b6929f70847d3d2554728d (diff) | |
download | bcm5719-llvm-747bcb03d25144951e24d957fc667bb497c88ed9.tar.gz bcm5719-llvm-747bcb03d25144951e24d957fc667bb497c88ed9.zip |
Convert lldb::ModuleSP to use an instrusive ref counted pointer.
We had some cases where getting the shared pointer for a module from
the global module list was causing a performance issue when debugging
with DWARF in .o files. Now that the module uses intrusive ref counts,
we can easily convert any pointer to a shared pointer.
llvm-svn: 139983
Diffstat (limited to 'lldb/source/Utility/SharingPtr.cpp')
-rw-r--r-- | lldb/source/Utility/SharingPtr.cpp | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/lldb/source/Utility/SharingPtr.cpp b/lldb/source/Utility/SharingPtr.cpp index 88c103ac9e2..3ee01285a3b 100644 --- a/lldb/source/Utility/SharingPtr.cpp +++ b/lldb/source/Utility/SharingPtr.cpp @@ -14,40 +14,42 @@ namespace lldb_private { namespace imp { -template <class T> -inline T -increment(T& t) -{ - return __sync_add_and_fetch(&t, 1); -} + 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); -} + template <class T> + inline T + decrement(T& t) + { + return __sync_add_and_fetch(&t, -1); + } -shared_count::~shared_count() -{ -} + shared_count::~shared_count() + { + } -void -shared_count::add_shared() -{ - increment(shared_owners_); -} + void + shared_count::add_shared() + { + increment(shared_owners_); + } -void -shared_count::release_shared() -{ - if (decrement(shared_owners_) == -1) + void + shared_count::release_shared() { - on_zero_shared(); - delete this; + if (decrement(shared_owners_) == -1) + { + on_zero_shared(); + delete this; + } } -} } // imp + } // namespace lldb + |