summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
diff options
context:
space:
mode:
authorPete Cooper <peter_cooper@apple.com>2016-03-22 17:15:50 +0000
committerPete Cooper <peter_cooper@apple.com>2016-03-22 17:15:50 +0000
commit8ad55fb2d0f6cda53415c09ceb59dd06da16b21a (patch)
tree4d64d9d572254cdb97399c666d3e37c7da3eef23 /lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp
parent7c31434ec3d41bb6198df89d3a902cd60be74b2e (diff)
downloadbcm5719-llvm-8ad55fb2d0f6cda53415c09ceb59dd06da16b21a.tar.gz
bcm5719-llvm-8ad55fb2d0f6cda53415c09ceb59dd06da16b21a.zip
Use owning pointers instead of raw pointers for Atom's to fix leaks.
This is a re-commit of r264022 with a fix for MSVC. The issue there was that the code was running DefinedAtom::~Atom() for some value and instead needed to cast to Atom before running ~Atom. Original commit message follows. Currently each File contains an BumpPtrAllocator in which Atom's are allocated. Some Atom's contain data structures like std::vector which leak as we don't run ~Atom when they are BumpPtrAllocate'd. Now each File actually owns its Atom's using an OwningAtomPtr. This is analygous to std::unique_ptr and may be replaced by it if possible. An Atom can therefore only be owned by a single File, so the Resolver now moves them from one File to another. The MachOLinkingContext owns the File's and so clears all the Atom's in ~MachOLinkingContext, then delete's all the File's. This makes sure all Atom's have been destructed before any of the BumpPtrAllocator's in which they run have gone away. Should hopefully fix the remaining leaks. Will keep an eye on the bots to make sure. llvm-svn: 264067
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud