[Lldb-commits] [PATCH] Introduce a new UnwindAssemblySP shared pointer type and use it to fix a memory leak. We are never deleting UnwindAssembly.
Jean-Daniel Dupas
devlists at shadowlab.org
Sun Feb 2 06:00:41 PST 2014
Add enable_shared_from_this to UnwindAssembly for consistency with other sharable classes.
http://llvm-reviews.chandlerc.com/D2491
CHANGE SINCE LAST DIFF
http://llvm-reviews.chandlerc.com/D2491?vs=6308&id=6821#toc
Files:
include/lldb/Symbol/FuncUnwinders.h
include/lldb/Symbol/UnwindTable.h
include/lldb/Target/UnwindAssembly.h
include/lldb/lldb-forward.h
source/Symbol/FuncUnwinders.cpp
source/Symbol/UnwindTable.cpp
Index: include/lldb/Symbol/FuncUnwinders.h
===================================================================
--- include/lldb/Symbol/FuncUnwinders.h
+++ include/lldb/Symbol/FuncUnwinders.h
@@ -31,7 +31,7 @@
// instructions are finished for migrating breakpoints past the
// stack frame setup instructions when we don't have line table information.
- FuncUnwinders (lldb_private::UnwindTable& unwind_table, lldb_private::UnwindAssembly *assembly_profiler, AddressRange range);
+ FuncUnwinders (lldb_private::UnwindTable& unwind_table, const lldb::UnwindAssemblySP& assembly_profiler, AddressRange range);
~FuncUnwinders ();
@@ -77,7 +77,7 @@
private:
UnwindTable& m_unwind_table;
- UnwindAssembly *m_assembly_profiler;
+ lldb::UnwindAssemblySP m_assembly_profiler;
AddressRange m_range;
Mutex m_mutex;
Index: include/lldb/Symbol/UnwindTable.h
===================================================================
--- include/lldb/Symbol/UnwindTable.h
+++ include/lldb/Symbol/UnwindTable.h
@@ -57,7 +57,7 @@
bool m_initialized; // delay some initialization until ObjectFile is set up
- UnwindAssembly* m_assembly_profiler;
+ lldb::UnwindAssemblySP m_assembly_profiler;
DWARFCallFrameInfo* m_eh_frame;
Index: include/lldb/Target/UnwindAssembly.h
===================================================================
--- include/lldb/Target/UnwindAssembly.h
+++ include/lldb/Target/UnwindAssembly.h
@@ -17,6 +17,7 @@
namespace lldb_private {
class UnwindAssembly :
+ public std::enable_shared_from_this<UnwindAssembly>,
public PluginInterface
{
public:
Index: include/lldb/lldb-forward.h
===================================================================
--- include/lldb/lldb-forward.h
+++ include/lldb/lldb-forward.h
@@ -384,6 +384,7 @@
#ifndef LLDB_DISABLE_PYTHON
typedef std::shared_ptr<lldb_private::ScriptedSyntheticChildren> ScriptedSyntheticChildrenSP;
#endif
+ typedef std::shared_ptr<lldb_private::UnwindAssembly> UnwindAssemblySP;
typedef std::shared_ptr<lldb_private::UnwindPlan> UnwindPlanSP;
typedef lldb_private::SharingPtr<lldb_private::ValueObject> ValueObjectSP;
typedef std::shared_ptr<lldb_private::Value> ValueSP;
Index: source/Symbol/FuncUnwinders.cpp
===================================================================
--- source/Symbol/FuncUnwinders.cpp
+++ source/Symbol/FuncUnwinders.cpp
@@ -28,7 +28,7 @@
FuncUnwinders::FuncUnwinders
(
UnwindTable& unwind_table,
- UnwindAssembly *assembly_profiler,
+ const lldb::UnwindAssemblySP& assembly_profiler,
AddressRange range
) :
m_unwind_table(unwind_table),
Index: source/Symbol/UnwindTable.cpp
===================================================================
--- source/Symbol/UnwindTable.cpp
+++ source/Symbol/UnwindTable.cpp
@@ -57,7 +57,7 @@
ArchSpec arch;
if (m_object_file.GetArchitecture (arch))
{
- m_assembly_profiler = UnwindAssembly::FindPlugin (arch);
+ m_assembly_profiler.reset(UnwindAssembly::FindPlugin (arch));
m_initialized = true;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2491.2.patch
Type: text/x-patch
Size: 3132 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140202/0ba5a776/attachment.bin>
More information about the lldb-commits
mailing list