Author: jingham Date: Mon Nov 2 20:11:24 2015 New Revision: 251887 URL: http://llvm.org/viewvc/llvm-project?rev=251887&view=rev Log: Add the ability to pass an EvaluateExpressionOptions when you make a UserExpression. This isn't used in this commit but will be in a future commit.
Modified: lldb/trunk/include/lldb/Expression/Expression.h lldb/trunk/include/lldb/Expression/LLVMUserExpression.h lldb/trunk/include/lldb/Expression/UserExpression.h lldb/trunk/include/lldb/Symbol/ClangASTContext.h lldb/trunk/include/lldb/Symbol/GoASTContext.h lldb/trunk/include/lldb/Symbol/TypeSystem.h lldb/trunk/include/lldb/Target/Target.h lldb/trunk/source/Breakpoint/BreakpointLocation.cpp lldb/trunk/source/Breakpoint/Watchpoint.cpp lldb/trunk/source/Expression/LLVMUserExpression.cpp lldb/trunk/source/Expression/UserExpression.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.h lldb/trunk/source/Symbol/ClangASTContext.cpp lldb/trunk/source/Symbol/GoASTContext.cpp lldb/trunk/source/Target/Target.cpp Modified: lldb/trunk/include/lldb/Expression/Expression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/Expression.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/Expression.h (original) +++ lldb/trunk/include/lldb/Expression/Expression.h Mon Nov 2 20:11:24 2015 @@ -109,6 +109,8 @@ public: virtual bool NeedsVariableResolution () = 0; + virtual EvaluateExpressionOptions *GetOptions() { return nullptr; }; + //------------------------------------------------------------------ /// Return the address of the function's JIT-compiled code, or /// LLDB_INVALID_ADDRESS if the function is not JIT compiled Modified: lldb/trunk/include/lldb/Expression/LLVMUserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/LLVMUserExpression.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/LLVMUserExpression.h (original) +++ lldb/trunk/include/lldb/Expression/LLVMUserExpression.h Mon Nov 2 20:11:24 2015 @@ -35,15 +35,23 @@ namespace lldb_private class LLVMUserExpression : public UserExpression { public: - LLVMUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type); + LLVMUserExpression(ExecutionContextScope &exe_scope, + const char *expr, + const char *expr_prefix, + lldb::LanguageType language, + ResultType desired_type, + const EvaluateExpressionOptions &options); ~LLVMUserExpression() override; - lldb::ExpressionResults Execute(Stream &error_stream, ExecutionContext &exe_ctx, - const EvaluateExpressionOptions &options, lldb::UserExpressionSP &shared_ptr_to_me, + lldb::ExpressionResults Execute(Stream &error_stream, + ExecutionContext &exe_ctx, + const EvaluateExpressionOptions &options, + lldb::UserExpressionSP &shared_ptr_to_me, lldb::ExpressionVariableSP &result) override; - bool FinalizeJITExecution(Stream &error_stream, ExecutionContext &exe_ctx, lldb::ExpressionVariableSP &result, + bool FinalizeJITExecution(Stream &error_stream, + ExecutionContext &exe_ctx, + lldb::ExpressionVariableSP &result, lldb::addr_t function_stack_bottom = LLDB_INVALID_ADDRESS, lldb::addr_t function_stack_top = LLDB_INVALID_ADDRESS) override; Modified: lldb/trunk/include/lldb/Expression/UserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/UserExpression.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Expression/UserExpression.h (original) +++ lldb/trunk/include/lldb/Expression/UserExpression.h Mon Nov 2 20:11:24 2015 @@ -24,6 +24,7 @@ #include "lldb/Expression/Expression.h" #include "lldb/Expression/Materializer.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/Target.h" namespace lldb_private { @@ -67,7 +68,8 @@ public: const char *expr, const char *expr_prefix, lldb::LanguageType language, - ResultType desired_type); + ResultType desired_type, + const EvaluateExpressionOptions &options); //------------------------------------------------------------------ /// Destructor @@ -236,6 +238,12 @@ public: return true; } + EvaluateExpressionOptions * + GetOptions() override + { + return &m_options; + } + virtual lldb::ExpressionVariableSP GetResultAfterDematerialization(ExecutionContextScope *exe_scope) { @@ -319,7 +327,7 @@ protected: std::string m_expr_prefix; ///< The text of the translation-level definitions, as provided by the user lldb::LanguageType m_language; ///< The language to use when parsing (eLanguageTypeUnknown means use defaults) ResultType m_desired_type; ///< The type to coerce the expression's result to. If eResultTypeAny, inferred from the expression. - + EvaluateExpressionOptions m_options; ///< Additional options provided by the user. }; } // namespace lldb_private Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original) +++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Mon Nov 2 20:11:24 2015 @@ -1184,7 +1184,8 @@ public: GetUserExpression (const char *expr, const char *expr_prefix, lldb::LanguageType language, - Expression::ResultType desired_type) override; + Expression::ResultType desired_type, + const EvaluateExpressionOptions &options) override; FunctionCaller * GetFunctionCaller (const CompilerType &return_type, Modified: lldb/trunk/include/lldb/Symbol/GoASTContext.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/GoASTContext.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/GoASTContext.h (original) +++ lldb/trunk/include/lldb/Symbol/GoASTContext.h Mon Nov 2 20:11:24 2015 @@ -398,7 +398,8 @@ class GoASTContextForExpr : public GoAST public: GoASTContextForExpr(lldb::TargetSP target) : m_target_wp(target) {} UserExpression *GetUserExpression(const char *expr, const char *expr_prefix, lldb::LanguageType language, - Expression::ResultType desired_type) override; + Expression::ResultType desired_type, + const EvaluateExpressionOptions &options) override; private: lldb::TargetWP m_target_wp; Modified: lldb/trunk/include/lldb/Symbol/TypeSystem.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Symbol/TypeSystem.h (original) +++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Mon Nov 2 20:11:24 2015 @@ -496,7 +496,8 @@ public: GetUserExpression (const char *expr, const char *expr_prefix, lldb::LanguageType language, - Expression::ResultType desired_type) + Expression::ResultType desired_type, + const EvaluateExpressionOptions &options) { return nullptr; } Modified: lldb/trunk/include/lldb/Target/Target.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Target.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Target.h (original) +++ lldb/trunk/include/lldb/Target/Target.h Mon Nov 2 20:11:24 2015 @@ -1256,6 +1256,7 @@ public: const char *expr_prefix, lldb::LanguageType language, Expression::ResultType desired_type, + const EvaluateExpressionOptions &options, Error &error); // Creates a FunctionCaller for the given language, the rest of the parameters have the Modified: lldb/trunk/source/Breakpoint/BreakpointLocation.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointLocation.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/BreakpointLocation.cpp (original) +++ lldb/trunk/source/Breakpoint/BreakpointLocation.cpp Mon Nov 2 20:11:24 2015 @@ -293,6 +293,7 @@ BreakpointLocation::ConditionSaysStop (E nullptr, language, Expression::eResultTypeAny, + EvaluateExpressionOptions(), error)); if (error.Fail()) { Modified: lldb/trunk/source/Breakpoint/Watchpoint.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/Watchpoint.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/Watchpoint.cpp (original) +++ lldb/trunk/source/Breakpoint/Watchpoint.cpp Mon Nov 2 20:11:24 2015 @@ -387,6 +387,7 @@ Watchpoint::SetCondition (const char *co nullptr, lldb::eLanguageTypeUnknown, UserExpression::eResultTypeAny, + EvaluateExpressionOptions(), error)); if (error.Fail()) { Modified: lldb/trunk/source/Expression/LLVMUserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/LLVMUserExpression.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Expression/LLVMUserExpression.cpp (original) +++ lldb/trunk/source/Expression/LLVMUserExpression.cpp Mon Nov 2 20:11:24 2015 @@ -40,9 +40,13 @@ using namespace lldb_private; -LLVMUserExpression::LLVMUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type) - : UserExpression(exe_scope, expr, expr_prefix, language, desired_type), +LLVMUserExpression::LLVMUserExpression(ExecutionContextScope &exe_scope, + const char *expr, + const char *expr_prefix, + lldb::LanguageType language, + ResultType desired_type, + const EvaluateExpressionOptions &options) + : UserExpression(exe_scope, expr, expr_prefix, language, desired_type, options), m_stack_frame_bottom(LLDB_INVALID_ADDRESS), m_stack_frame_top(LLDB_INVALID_ADDRESS), m_transformed_text(), Modified: lldb/trunk/source/Expression/UserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/UserExpression.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Expression/UserExpression.cpp (original) +++ lldb/trunk/source/Expression/UserExpression.cpp Mon Nov 2 20:11:24 2015 @@ -45,13 +45,18 @@ using namespace lldb_private; -UserExpression::UserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type) - : Expression(exe_scope), +UserExpression::UserExpression (ExecutionContextScope &exe_scope, + const char *expr, + const char *expr_prefix, + lldb::LanguageType language, + ResultType desired_type, + const EvaluateExpressionOptions &options) : + Expression(exe_scope), m_expr_text(expr), m_expr_prefix(expr_prefix ? expr_prefix : ""), m_language(language), - m_desired_type(desired_type) + m_desired_type(desired_type), + m_options (options) { } @@ -219,6 +224,7 @@ UserExpression::Evaluate (ExecutionConte full_prefix, language, desired_type, + options, error)); if (error.Fail()) { Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp Mon Nov 2 20:11:24 2015 @@ -55,10 +55,14 @@ using namespace lldb_private; -ClangUserExpression::ClangUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type) - : LLVMUserExpression(exe_scope, expr, expr_prefix, language, desired_type), - m_type_system_helper(*m_target_wp.lock().get()) +ClangUserExpression::ClangUserExpression (ExecutionContextScope &exe_scope, + const char *expr, + const char *expr_prefix, + lldb::LanguageType language, + ResultType desired_type, + const EvaluateExpressionOptions &options) : + LLVMUserExpression (exe_scope, expr, expr_prefix, language, desired_type, options), + m_type_system_helper(*m_target_wp.lock().get()) { switch (m_language) { Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangUserExpression.h Mon Nov 2 20:11:24 2015 @@ -118,7 +118,8 @@ public: const char *expr, const char *expr_prefix, lldb::LanguageType language, - ResultType desired_type); + ResultType desired_type, + const EvaluateExpressionOptions &options); ~ClangUserExpression() override; Modified: lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.cpp Mon Nov 2 20:11:24 2015 @@ -218,8 +218,9 @@ LookupType(TargetSP target, ConstString return CompilerType(); } GoUserExpression::GoUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type) - : UserExpression(exe_scope, expr, expr_prefix, language, desired_type) + lldb::LanguageType language, ResultType desired_type, + const EvaluateExpressionOptions &options) + : UserExpression(exe_scope, expr, expr_prefix, language, desired_type, options) { } Modified: lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.h?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.h (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Go/GoUserExpression.h Mon Nov 2 20:11:24 2015 @@ -66,7 +66,7 @@ class GoUserExpression : public UserExpr { public: GoUserExpression(ExecutionContextScope &exe_scope, const char *expr, const char *expr_prefix, - lldb::LanguageType language, ResultType desired_type); + lldb::LanguageType language, ResultType desired_type, const EvaluateExpressionOptions &options); virtual bool Parse(Stream &error_stream, ExecutionContext &exe_ctx, lldb_private::ExecutionPolicy execution_policy, bool keep_result_in_memory, bool generate_debug_info) override; Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Symbol/ClangASTContext.cpp (original) +++ lldb/trunk/source/Symbol/ClangASTContext.cpp Mon Nov 2 20:11:24 2015 @@ -9227,13 +9227,14 @@ UserExpression * ClangASTContextForExpressions::GetUserExpression (const char *expr, const char *expr_prefix, lldb::LanguageType language, - Expression::ResultType desired_type) + Expression::ResultType desired_type, + const EvaluateExpressionOptions &options) { TargetSP target_sp = m_target_wp.lock(); if (!target_sp) return nullptr; - return new ClangUserExpression(*target_sp.get(), expr, expr_prefix, language, desired_type); + return new ClangUserExpression(*target_sp.get(), expr, expr_prefix, language, desired_type, options); } FunctionCaller * Modified: lldb/trunk/source/Symbol/GoASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/GoASTContext.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Symbol/GoASTContext.cpp (original) +++ lldb/trunk/source/Symbol/GoASTContext.cpp Mon Nov 2 20:11:24 2015 @@ -1509,10 +1509,10 @@ GoASTContext::GetDWARFParser() UserExpression * GoASTContextForExpr::GetUserExpression(const char *expr, const char *expr_prefix, lldb::LanguageType language, - Expression::ResultType desired_type) + Expression::ResultType desired_type, const EvaluateExpressionOptions &options) { TargetSP target = m_target_wp.lock(); if (target) - return new GoUserExpression(*target, expr, expr_prefix, language, desired_type); + return new GoUserExpression(*target, expr, expr_prefix, language, desired_type, options); return nullptr; } Modified: lldb/trunk/source/Target/Target.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=251887&r1=251886&r2=251887&view=diff ============================================================================== --- lldb/trunk/source/Target/Target.cpp (original) +++ lldb/trunk/source/Target/Target.cpp Mon Nov 2 20:11:24 2015 @@ -1993,6 +1993,7 @@ Target::GetUserExpressionForLanguage(con const char *expr_prefix, lldb::LanguageType language, Expression::ResultType desired_type, + const EvaluateExpressionOptions &options, Error &error) { Error type_system_error; @@ -2006,7 +2007,7 @@ Target::GetUserExpressionForLanguage(con return nullptr; } - user_expr = type_system->GetUserExpression(expr, expr_prefix, language, desired_type); + user_expr = type_system->GetUserExpression(expr, expr_prefix, language, desired_type, options); if (!user_expr) error.SetErrorStringWithFormat("Could not create an expression for language %s", Language::GetNameForLanguageType(language)); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits