lli/RecordingMemoryManager: Free allocated sections in the destructor to satisfy...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Thu, 24 Jan 2013 14:12:12 +0000 (14:12 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Thu, 24 Jan 2013 14:12:12 +0000 (14:12 +0000)
FIXME: It could be generalized in MemoryManager.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173349 91177308-0d34-0410-b5e6-96231b3b80d8

tools/lli/RecordingMemoryManager.cpp
tools/lli/RecordingMemoryManager.h

index 75cb978130629afc18e9d070398690c7f1f5742a..d9715e1a038c8b5aa4d0d6b8bcf1d5e72550bf27 100644 (file)
 #include "RecordingMemoryManager.h"
 using namespace llvm;
 
+RecordingMemoryManager::~RecordingMemoryManager() {
+  for (SmallVectorImpl<Allocation>::iterator
+         I = AllocatedCodeMem.begin(), E = AllocatedCodeMem.end();
+       I != E; ++I)
+    free(I->first.base());
+  for (SmallVectorImpl<Allocation>::iterator
+         I = AllocatedDataMem.begin(), E = AllocatedDataMem.end();
+       I != E; ++I)
+    free(I->first.base());
+}
+
 uint8_t *RecordingMemoryManager::
 allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
   // The recording memory manager is just a local copy of the remote target.
index 20fd0c2e6ed79a2fbc6cd9e309b12dcdc174e6c4..85bf4e14436300aab1e3f2d243b2693e32376e59 100644 (file)
@@ -33,7 +33,7 @@ private:
 
 public:
   RecordingMemoryManager() {}
-  virtual ~RecordingMemoryManager() {}
+  virtual ~RecordingMemoryManager();
 
   typedef SmallVectorImpl<Allocation>::const_iterator const_data_iterator;
   typedef SmallVectorImpl<Allocation>::const_iterator const_code_iterator;