summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Expression/ExpressionVariable.h4
-rw-r--r--lldb/include/lldb/Target/Target.h6
-rw-r--r--lldb/source/Expression/ExpressionVariable.cpp10
-rw-r--r--lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h10
4 files changed, 18 insertions, 12 deletions
diff --git a/lldb/include/lldb/Expression/ExpressionVariable.h b/lldb/include/lldb/Expression/ExpressionVariable.h
index d5a744c46af..08c987270bf 100644
--- a/lldb/include/lldb/Expression/ExpressionVariable.h
+++ b/lldb/include/lldb/Expression/ExpressionVariable.h
@@ -223,8 +223,8 @@ public:
uint32_t addr_byte_size) = 0;
/// Return a new persistent variable name with the specified prefix.
- virtual ConstString GetNextPersistentVariableName(Target &target,
- llvm::StringRef prefix) = 0;
+ ConstString GetNextPersistentVariableName(Target &target,
+ llvm::StringRef prefix);
virtual llvm::StringRef
GetPersistentVariablePrefix(bool is_error = false) const = 0;
diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h
index e365c72737f..fc76f580fc8 100644
--- a/lldb/include/lldb/Target/Target.h
+++ b/lldb/include/lldb/Target/Target.h
@@ -1106,6 +1106,11 @@ public:
lldb::ExpressionVariableSP GetPersistentVariable(ConstString name);
+ /// Return the next available number for numbered persistent variables.
+ unsigned GetNextPersistentVariableIndex() {
+ return m_next_persistent_variable_index++;
+ }
+
lldb::addr_t GetPersistentSymbol(ConstString name);
/// This method will return the address of the starting function for
@@ -1315,6 +1320,7 @@ protected:
bool m_valid;
bool m_suppress_stop_hooks;
bool m_is_dummy_target;
+ unsigned m_next_persistent_variable_index = 0;
static void ImageSearchPathsChanged(const PathMappingList &path_list,
void *baton);
diff --git a/lldb/source/Expression/ExpressionVariable.cpp b/lldb/source/Expression/ExpressionVariable.cpp
index 61df940b2ad..ed8da0ad867 100644
--- a/lldb/source/Expression/ExpressionVariable.cpp
+++ b/lldb/source/Expression/ExpressionVariable.cpp
@@ -76,3 +76,13 @@ void PersistentExpressionState::RegisterExecutionUnit(
}
}
}
+
+ConstString PersistentExpressionState::GetNextPersistentVariableName(
+ Target &target, llvm::StringRef Prefix) {
+ llvm::SmallString<64> name;
+ {
+ llvm::raw_svector_ostream os(name);
+ os << Prefix << target.GetNextPersistentVariableIndex();
+ }
+ return ConstString(name);
+}
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
index 052f09cc117..a53d3b985ec 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h
@@ -46,16 +46,6 @@ public:
void RemovePersistentVariable(lldb::ExpressionVariableSP variable) override;
- ConstString GetNextPersistentVariableName(Target &target,
- llvm::StringRef prefix) override {
- llvm::SmallString<64> name;
- {
- llvm::raw_svector_ostream os(name);
- os << prefix << m_next_persistent_variable_id++;
- }
- return ConstString(name);
- }
-
llvm::StringRef GetPersistentVariablePrefix(bool is_error) const override {
return "$";
}
OpenPOWER on IntegriCloud