From a309efef399d342a364d051581b5f3738deba370 Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Wed, 28 Oct 2015 22:23:17 +0000 Subject: [PATCH] Change Target::EvaluateExpression to take an ExecutionContextScope * rather than a StackFrame * (StackFrame is an ExecutionContextScope.) That allows you to call an expression on a particular Thread, but not using the context of any particular frame. That in turn is useful for injecting utility functions that don't actually depend on locals/self/etc of the current frame. I also had to include StackFrame.h in a couple of places so the compiler knew how to downcast StackFrame to ExecutionContextScope. llvm-svn: 251564 --- lldb/include/lldb/Target/Target.h | 2 +- lldb/source/Plugins/Language/ObjC/CF.cpp | 1 + lldb/source/Plugins/Language/ObjC/NSDictionary.cpp | 1 + lldb/source/Target/Target.cpp | 6 +++--- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index 58536d853c0b..be595d6d79cf 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -1381,7 +1381,7 @@ public: // in in th execution context. lldb::ExpressionResults EvaluateExpression (const char *expression, - StackFrame *frame, + ExecutionContextScope *exe_scope, lldb::ValueObjectSP &result_valobj_sp, const EvaluateExpressionOptions& options = EvaluateExpressionOptions()); diff --git a/lldb/source/Plugins/Language/ObjC/CF.cpp b/lldb/source/Plugins/Language/ObjC/CF.cpp index 0dc0c662fe96..614eb29a0f7a 100644 --- a/lldb/source/Plugins/Language/ObjC/CF.cpp +++ b/lldb/source/Plugins/Language/ObjC/CF.cpp @@ -19,6 +19,7 @@ #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Target/Language.h" #include "lldb/Target/ObjCLanguageRuntime.h" +#include "lldb/Target/StackFrame.h" #include "lldb/Target/Target.h" using namespace lldb; diff --git a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp index 77350246e2b8..e4a7425329f5 100644 --- a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp @@ -27,6 +27,7 @@ #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Target/Language.h" #include "lldb/Target/ObjCLanguageRuntime.h" +#include "lldb/Target/StackFrame.h" #include "lldb/Target/Target.h" using namespace lldb; diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp index 46c8c17eee8c..d3377bef8718 100644 --- a/lldb/source/Target/Target.cpp +++ b/lldb/source/Target/Target.cpp @@ -2165,7 +2165,7 @@ Target::GetTargetFromContexts (const ExecutionContext *exe_ctx_ptr, const Symbol ExpressionResults Target::EvaluateExpression(const char *expr_cstr, - StackFrame *frame, + ExecutionContextScope *exe_scope, lldb::ValueObjectSP &result_valobj_sp, const EvaluateExpressionOptions& options) { @@ -2183,9 +2183,9 @@ Target::EvaluateExpression(const char *expr_cstr, ExecutionContext exe_ctx; - if (frame) + if (exe_scope) { - frame->CalculateExecutionContext(exe_ctx); + exe_scope->CalculateExecutionContext(exe_ctx); } else if (m_process_sp) {