Changed ClangASTImporter to allow finer-grained
management of what allocations remain after an
expression finishes executing.  This saves around
2.5KiB per expression for simple expressions.

llvm-svn: 145342
diff --git a/lldb/source/Symbol/ClangASTImporter.cpp b/lldb/source/Symbol/ClangASTImporter.cpp
index a854852..43a7532 100644
--- a/lldb/source/Symbol/ClangASTImporter.cpp
+++ b/lldb/source/Symbol/ClangASTImporter.cpp
@@ -179,11 +179,32 @@
 }
 
 void 
-ClangASTImporter::PurgeMaps (clang::ASTContext *dst_ast)
+ClangASTImporter::ForgetDestination (clang::ASTContext *dst_ast)
 {
     m_metadata_map.erase(dst_ast);
 }
 
+void
+ClangASTImporter::ForgetSource (clang::ASTContext *dst_ast, clang::ASTContext *src_ast)
+{
+    ASTContextMetadataSP md = MaybeGetContextMetadata (dst_ast);
+    
+    if (!md)
+        return;
+ 
+    md->m_minions.erase(src_ast);
+    
+    for (OriginMap::iterator iter = md->m_origins.begin();
+         iter != md->m_origins.end();
+         )
+    {
+        if (iter->second.ctx == src_ast)
+            md->m_origins.erase(iter++);
+        else
+            ++iter;
+    }
+}
+
 ClangASTImporter::NamespaceMapCompleter::~NamespaceMapCompleter ()
 {
     return;