summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/include/lldb/Expression/ClangExpressionDeclMap.h2
-rw-r--r--lldb/source/Expression/ClangExpressionDeclMap.cpp57
2 files changed, 10 insertions, 49 deletions
diff --git a/lldb/include/lldb/Expression/ClangExpressionDeclMap.h b/lldb/include/lldb/Expression/ClangExpressionDeclMap.h
index e7e96515e10..bc7c4a3d8f1 100644
--- a/lldb/include/lldb/Expression/ClangExpressionDeclMap.h
+++ b/lldb/include/lldb/Expression/ClangExpressionDeclMap.h
@@ -969,7 +969,7 @@ private:
//------------------------------------------------------------------
Value *
GetVariableValue (ExecutionContext &exe_ctx,
- lldb::VariableSP var,
+ lldb::VariableSP &var,
clang::ASTContext *parser_ast_context,
TypeFromUser *found_type = NULL,
TypeFromParser *parser_type = NULL);
diff --git a/lldb/source/Expression/ClangExpressionDeclMap.cpp b/lldb/source/Expression/ClangExpressionDeclMap.cpp
index f82f5ae2e7e..81416c26869 100644
--- a/lldb/source/Expression/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Expression/ClangExpressionDeclMap.cpp
@@ -938,45 +938,10 @@ ClangExpressionDeclMap::LookupDecl (clang::NamedDecl *decl)
if (expr_var_sp)
{
- if (!expr_var_sp->m_parser_vars.get())
+ if (!expr_var_sp->m_parser_vars.get() || !expr_var_sp->m_parser_vars->m_lldb_var)
return Value();
- const ConstString &name(expr_var_sp->GetName());
- TypeFromUser type(expr_var_sp->GetTypeFromUser());
-
- StackFrame *frame = m_parser_vars->m_exe_ctx->GetFramePtr();
- if (frame)
- {
- VariableSP var(FindVariableInScope (*frame, name, &type));
-
- if (var)
- return *GetVariableValue(exe_ctx, var, NULL);
- }
-
- Target *target = m_parser_vars->m_exe_ctx->GetTargetPtr();
-
- if (target)
- {
- lldb::ModuleSP module;
-
- VariableSP global(FindGlobalVariable (*target, module, name, NULL, &type));
-
- if (global)
- return *GetVariableValue(exe_ctx, global, NULL);
-
- lldb::addr_t location_load_addr = GetSymbolAddress(*target, name);
-
- if (location_load_addr != LLDB_INVALID_ADDRESS)
- {
- lldb_private::Value ret;
- ret.SetValueType(Value::eValueTypeLoadAddress);
- ret.SetContext(Value::eContextTypeInvalid, NULL);
- ret.GetScalar() = location_load_addr;
- return ret;
- }
- }
-
- return Value();
+ return *GetVariableValue(exe_ctx, expr_var_sp->m_parser_vars->m_lldb_var, NULL);
}
else if (persistent_var_sp)
{
@@ -1637,14 +1602,11 @@ ClangExpressionDeclMap::DoMaterializeOneVariable
const ConstString &name(expr_var->GetName());
TypeFromUser type(expr_var->GetTypeFromUser());
- VariableSP var = FindVariableInScope (*frame, name, &type);
-
- ModuleSP module;
-
- Symbol *sym = FindGlobalDataSymbol(*target, module, name, NULL);
+ VariableSP &var(expr_var->m_parser_vars->m_lldb_var);
+ lldb_private::Symbol *sym(expr_var->m_parser_vars->m_lldb_sym);
std::auto_ptr<lldb_private::Value> location_value;
-
+
if (var)
{
location_value.reset(GetVariableValue(exe_ctx,
@@ -1652,9 +1614,7 @@ ClangExpressionDeclMap::DoMaterializeOneVariable
NULL));
}
else if (sym)
- {
- location_value.reset(new Value);
-
+ {
addr_t location_load_addr = GetSymbolAddress(*target, name);
if (location_load_addr == LLDB_INVALID_ADDRESS)
@@ -1664,6 +1624,8 @@ ClangExpressionDeclMap::DoMaterializeOneVariable
name.GetCString());
}
+ location_value.reset(new Value);
+
location_value->SetValueType(Value::eValueTypeLoadAddress);
location_value->GetScalar() = location_load_addr;
}
@@ -2044,7 +2006,6 @@ ClangExpressionDeclMap::FindGlobalVariable
)
{
VariableList vars;
- ValueObjectList valobjs;
if (module && namespace_decl)
module->FindGlobalVariables (name, namespace_decl, true, -1, vars);
@@ -2644,7 +2605,7 @@ Value *
ClangExpressionDeclMap::GetVariableValue
(
ExecutionContext &exe_ctx,
- VariableSP var,
+ VariableSP &var,
ASTContext *parser_ast_context,
TypeFromUser *user_type,
TypeFromParser *parser_type
OpenPOWER on IntegriCloud