forked from OSchip/llvm-project
[lldb][NFC] Refactor our option generation out of EvaluateExpression
This commit is contained in:
parent
eb61ab1bd9
commit
8f7c911b58
|
@ -362,29 +362,13 @@ CanBeUsedForElementCountPrinting(ValueObject &valobj) {
|
|||
return Status();
|
||||
}
|
||||
|
||||
bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
|
||||
Stream *output_stream,
|
||||
Stream *error_stream,
|
||||
CommandReturnObject *result) {
|
||||
// Don't use m_exe_ctx as this might be called asynchronously after the
|
||||
// command object DoExecute has finished when doing multi-line expression
|
||||
// that use an input reader...
|
||||
ExecutionContext exe_ctx(m_interpreter.GetExecutionContext());
|
||||
|
||||
Target *target = exe_ctx.GetTargetPtr();
|
||||
|
||||
if (!target)
|
||||
target = &GetDummyTarget();
|
||||
|
||||
lldb::ValueObjectSP result_valobj_sp;
|
||||
bool keep_in_memory = true;
|
||||
StackFrame *frame = exe_ctx.GetFramePtr();
|
||||
|
||||
EvaluateExpressionOptions
|
||||
CommandObjectExpression::GetEvalOptions(const Target &target) {
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(m_varobj_options.use_objc);
|
||||
options.SetUnwindOnError(m_command_options.unwind_on_error);
|
||||
options.SetIgnoreBreakpoints(m_command_options.ignore_breakpoints);
|
||||
options.SetKeepInMemory(keep_in_memory);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(m_varobj_options.use_dynamic);
|
||||
options.SetTryAllThreads(m_command_options.try_all_threads);
|
||||
options.SetDebug(m_command_options.debug);
|
||||
|
@ -396,7 +380,7 @@ bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
|
|||
|
||||
bool auto_apply_fixits;
|
||||
if (m_command_options.auto_apply_fixits == eLazyBoolCalculate)
|
||||
auto_apply_fixits = target->GetEnableAutoApplyFixIts();
|
||||
auto_apply_fixits = target.GetEnableAutoApplyFixIts();
|
||||
else
|
||||
auto_apply_fixits = m_command_options.auto_apply_fixits == eLazyBoolYes;
|
||||
|
||||
|
@ -415,7 +399,27 @@ bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
|
|||
options.SetTimeout(std::chrono::microseconds(m_command_options.timeout));
|
||||
else
|
||||
options.SetTimeout(llvm::None);
|
||||
return options;
|
||||
}
|
||||
|
||||
bool CommandObjectExpression::EvaluateExpression(llvm::StringRef expr,
|
||||
Stream *output_stream,
|
||||
Stream *error_stream,
|
||||
CommandReturnObject *result) {
|
||||
// Don't use m_exe_ctx as this might be called asynchronously after the
|
||||
// command object DoExecute has finished when doing multi-line expression
|
||||
// that use an input reader...
|
||||
ExecutionContext exe_ctx(m_interpreter.GetExecutionContext());
|
||||
|
||||
Target *target = exe_ctx.GetTargetPtr();
|
||||
|
||||
if (!target)
|
||||
target = &GetDummyTarget();
|
||||
|
||||
lldb::ValueObjectSP result_valobj_sp;
|
||||
StackFrame *frame = exe_ctx.GetFramePtr();
|
||||
|
||||
const EvaluateExpressionOptions options = GetEvalOptions(*target);
|
||||
ExpressionResults success = target->EvaluateExpression(
|
||||
expr, frame, result_valobj_sp, options, &m_fixed_expression);
|
||||
|
||||
|
|
|
@ -14,7 +14,9 @@
|
|||
#include "lldb/Interpreter/OptionGroupBoolean.h"
|
||||
#include "lldb/Interpreter/OptionGroupFormat.h"
|
||||
#include "lldb/Interpreter/OptionGroupValueObjectDisplay.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
#include "lldb/lldb-private-enumerations.h"
|
||||
|
||||
namespace lldb_private {
|
||||
|
||||
class CommandObjectExpression : public CommandObjectRaw,
|
||||
|
@ -65,6 +67,10 @@ protected:
|
|||
|
||||
bool DoExecute(llvm::StringRef command, CommandReturnObject &result) override;
|
||||
|
||||
/// Return the appropriate expression options used for evaluating the
|
||||
/// expression in the given target.
|
||||
EvaluateExpressionOptions GetEvalOptions(const Target &target);
|
||||
|
||||
bool EvaluateExpression(llvm::StringRef expr, Stream *output_stream,
|
||||
Stream *error_stream,
|
||||
CommandReturnObject *result = nullptr);
|
||||
|
|
Loading…
Reference in New Issue