Now persistent expression data no longer lives with the Target, but rather with
the corresponding TypeSystem.  This makes sense because what kind of data there
is -- and how it can be looked up -- depends on the language.

Functionality that is common to all type systems is factored out into
PersistentExpressionState.

llvm-svn: 248934
diff --git a/lldb/source/Target/ABI.cpp b/lldb/source/Target/ABI.cpp
index aab4bd3..6bee1c4 100644
--- a/lldb/source/Target/ABI.cpp
+++ b/lldb/source/Target/ABI.cpp
@@ -13,6 +13,7 @@
 #include "lldb/Core/ValueObjectConstResult.h"
 #include "Plugins/ExpressionParser/Clang/ClangPersistentVariables.h"
 #include "lldb/Symbol/CompilerType.h"
+#include "lldb/Symbol/TypeSystem.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
@@ -123,8 +124,8 @@
     
     if (persistent)
     {
-        ClangPersistentVariables& persistent_variables = thread.CalculateTarget()->GetPersistentVariables();
-        ConstString persistent_variable_name (persistent_variables.GetNextPersistentVariableName());
+        PersistentExpressionState *persistent_expression_state = thread.CalculateTarget()->GetScratchTypeSystemForLanguage(ast_type.GetMinimumLanguage())->GetPersistentExpressionState();
+        ConstString persistent_variable_name (persistent_expression_state->GetNextPersistentVariableName());
 
         lldb::ValueObjectSP const_valobj_sp;
         
@@ -141,7 +142,7 @@
         
         return_valobj_sp = const_valobj_sp;
 
-        ExpressionVariableSP clang_expr_variable_sp(persistent_variables.CreatePersistentVariable(return_valobj_sp));
+        ExpressionVariableSP clang_expr_variable_sp(ClangExpressionVariable::CreateVariableInList(*persistent_expression_state, return_valobj_sp)->shared_from_this());
                
         assert (clang_expr_variable_sp.get());