diff options
-rw-r--r-- | lldb/include/lldb/Expression/ExpressionVariable.h | 4 | ||||
-rw-r--r-- | lldb/include/lldb/Target/Target.h | 6 | ||||
-rw-r--r-- | lldb/source/Expression/ExpressionVariable.cpp | 10 | ||||
-rw-r--r-- | lldb/source/Plugins/ExpressionParser/Clang/ClangPersistentVariables.h | 10 |
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 "$"; } |