summaryrefslogtreecommitdiffstats
path: root/lldb/source/Expression/ClangUserExpression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Expression/ClangUserExpression.cpp')
-rw-r--r--lldb/source/Expression/ClangUserExpression.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/lldb/source/Expression/ClangUserExpression.cpp b/lldb/source/Expression/ClangUserExpression.cpp
index 5a92cac7e3f..f1dd49f64dd 100644
--- a/lldb/source/Expression/ClangUserExpression.cpp
+++ b/lldb/source/Expression/ClangUserExpression.cpp
@@ -49,7 +49,8 @@ ClangUserExpression::ClangUserExpression (const char *expr,
m_cplusplus (false),
m_objectivec (false),
m_needs_object_ptr (false),
- m_const_object (false)
+ m_const_object (false),
+ m_const_result ()
{
}
@@ -147,8 +148,7 @@ bool
ClangUserExpression::Parse (Stream &error_stream,
ExecutionContext &exe_ctx,
TypeFromUser desired_type,
- bool keep_result_in_memory,
- lldb::ClangExpressionVariableSP *const_result)
+ bool keep_result_in_memory)
{
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
@@ -284,7 +284,7 @@ ClangUserExpression::Parse (Stream &error_stream,
m_dwarf_opcodes.reset();
- Error jit_error = parser.MakeJIT (m_jit_alloc, m_jit_start_addr, m_jit_end_addr, exe_ctx, const_result);
+ Error jit_error = parser.MakeJIT (m_jit_alloc, m_jit_start_addr, m_jit_end_addr, exe_ctx, m_const_result, true);
m_expr_decl_map->DidParse();
@@ -457,7 +457,6 @@ ExecutionResults
ClangUserExpression::Execute (Stream &error_stream,
ExecutionContext &exe_ctx,
bool discard_on_error,
- bool keep_in_memory,
ClangUserExpression::ClangUserExpressionSP &shared_ptr_to_me,
lldb::ClangExpressionVariableSP &result)
{
@@ -556,7 +555,6 @@ ClangUserExpression::DwarfOpcodeStream ()
ExecutionResults
ClangUserExpression::Evaluate (ExecutionContext &exe_ctx,
bool discard_on_error,
- bool keep_in_memory,
const char *expr_cstr,
const char *expr_prefix,
lldb::ValueObjectSP &result_valobj_sp)
@@ -603,13 +601,11 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx,
ClangUserExpressionSP user_expression_sp (new ClangUserExpression (expr_cstr, expr_prefix));
StreamString error_stream;
-
- lldb::ClangExpressionVariableSP const_result;
-
+
if (log)
log->Printf("== [ClangUserExpression::Evaluate] Parsing expression %s ==", expr_cstr);
- if (!user_expression_sp->Parse (error_stream, exe_ctx, TypeFromUser(NULL, NULL), &const_result))
+ if (!user_expression_sp->Parse (error_stream, exe_ctx, TypeFromUser(NULL, NULL), true))
{
if (error_stream.GetString().empty())
error.SetErrorString ("expression failed to parse, unknown error");
@@ -620,12 +616,12 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx,
{
lldb::ClangExpressionVariableSP expr_result;
- if (const_result.get() && !keep_in_memory)
+ if (user_expression_sp->m_const_result.get())
{
if (log)
log->Printf("== [ClangUserExpression::Evaluate] Expression evaluated as a constant ==");
- result_valobj_sp = const_result->GetValueObject();
+ result_valobj_sp = user_expression_sp->m_const_result->GetValueObject();
}
else
{
@@ -637,7 +633,6 @@ ClangUserExpression::Evaluate (ExecutionContext &exe_ctx,
execution_results = user_expression_sp->Execute (error_stream,
exe_ctx,
discard_on_error,
- keep_in_memory,
user_expression_sp,
expr_result);
OpenPOWER on IntegriCloud