[Lldb-commits] [lldb] r142561 - in /lldb/trunk: include/lldb/Expression/ASTDumper.h source/Expression/ASTDumper.cpp source/Expression/ClangExpressionDeclMap.cpp
Greg Clayton
gclayton at apple.com
Wed Oct 19 17:47:21 PDT 2011
Author: gclayton
Date: Wed Oct 19 19:47:21 2011
New Revision: 142561
URL: http://llvm.org/viewvc/llvm-project?rev=142561&view=rev
Log:
Modified the ASTDumper to return a "const char *" instead of a copy of the
std::string and modified all places that used the std::string it returned
to use the "const char *".
Also modified the expression parser to not crash when a function type fails
to copy into the expression AST context.
Modified:
lldb/trunk/include/lldb/Expression/ASTDumper.h
lldb/trunk/source/Expression/ASTDumper.cpp
lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp
Modified: lldb/trunk/include/lldb/Expression/ASTDumper.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ASTDumper.h?rev=142561&r1=142560&r2=142561&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ASTDumper.h (original)
+++ lldb/trunk/include/lldb/Expression/ASTDumper.h Wed Oct 19 19:47:21 2011
@@ -26,7 +26,7 @@
ASTDumper (clang::QualType type);
ASTDumper (lldb::clang_type_t type);
- std::string AsString();
+ const char *GetCString();
void ToSTDERR();
void ToLog(lldb::LogSP &log, const char *prefix);
void ToStream(lldb::StreamSP &stream);
Modified: lldb/trunk/source/Expression/ASTDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ASTDumper.cpp?rev=142561&r1=142560&r2=142561&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ASTDumper.cpp (original)
+++ lldb/trunk/source/Expression/ASTDumper.cpp Wed Oct 19 19:47:21 2011
@@ -78,9 +78,10 @@
m_dump = clang::QualType::getFromOpaquePtr(type).getAsString();
}
-std::string ASTDumper::AsString()
+const char *
+ASTDumper::GetCString()
{
- return m_dump;
+ return m_dump.c_str();
}
void ASTDumper::ToSTDERR()
Modified: lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp?rev=142561&r1=142560&r2=142561&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp Wed Oct 19 19:47:21 2011
@@ -2180,8 +2180,8 @@
if (log)
{
- std::string type_string = ASTDumper(pointer_target_qual_type).AsString();
- log->Printf(" FEVD[%u] Adding type for $__lldb_class: %s", current_id, type_string.c_str());
+ ASTDumper ast_dumper(pointer_target_qual_type);
+ log->Printf(" FEVD[%u] Adding type for $__lldb_class: %s", current_id, ast_dumper.GetCString());
}
AddOneType(context, class_user_type, current_id, true);
@@ -2231,8 +2231,8 @@
if (log)
{
- std::string type_string = ASTDumper(pointer_target_type).AsString();
- log->Printf(" FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, type_string.c_str());
+ ASTDumper ast_dumper(pointer_target_type);
+ log->Printf(" FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, ast_dumper.GetCString());
}
AddOneType(context, class_user_type, current_id, false);
@@ -2591,12 +2591,11 @@
{
if (log)
{
- std::string decl_print_string = ASTDumper(decl).AsString();
-
+ ASTDumper ast_dumper(decl);
if (const NamedDecl *context_named_decl = dyn_cast<NamedDecl>(context_decl))
- log->Printf(" FELD[%d] Adding [to %s] lexical decl %s", current_id, context_named_decl->getNameAsString().c_str(), decl_print_string.c_str());
+ log->Printf(" FELD[%d] Adding [to %s] lexical decl %s", current_id, context_named_decl->getNameAsString().c_str(), ast_dumper.GetCString());
else
- log->Printf(" FELD[%d] Adding lexical decl %s", current_id, decl_print_string.c_str());
+ log->Printf(" FELD[%d] Adding lexical decl %s", current_id, ast_dumper.GetCString());
}
Decl *copied_decl = ast_importer->CopyDecl(original_ctx, decl);
@@ -2776,9 +2775,8 @@
if (log)
{
- std::string var_decl_print_string = ASTDumper(var_decl).AsString();
-
- log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), var_decl_print_string.c_str());
+ ASTDumper ast_dumper(var_decl);
+ log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
}
}
@@ -2806,9 +2804,8 @@
if (log)
{
- std::string var_decl_print_string = ASTDumper(var_decl).AsString();
-
- log->Printf(" FEVD[%u] Added pvar %s, returned %s", current_id, pvar_sp->GetName().GetCString(), var_decl_print_string.c_str());
+ ASTDumper ast_dumper(var_decl);
+ log->Printf(" FEVD[%u] Added pvar %s, returned %s", current_id, pvar_sp->GetName().GetCString(), ast_dumper.GetCString());
}
}
@@ -2865,9 +2862,9 @@
if (log)
{
- std::string var_decl_print_string = ASTDumper(var_decl).AsString();
+ ASTDumper ast_dumper(var_decl);
- log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), var_decl_print_string.c_str());
+ log->Printf(" FEVD[%u] Found variable %s, returned %s", current_id, decl_name.c_str(), ast_dumper.GetCString());
}
}
@@ -2899,9 +2896,8 @@
if (log)
{
- std::string var_decl_print_string = ASTDumper((clang::Decl*)var_decl).AsString();
-
- log->Printf("Variable of unknown type now has Decl %s", var_decl_print_string.c_str());
+ ASTDumper ast_dumper(const_cast<VarDecl*>(var_decl));
+ log->Printf("Variable of unknown type now has Decl %s", ast_dumper.GetCString());
}
QualType var_type = var_decl->getType();
@@ -2962,9 +2958,8 @@
if (log && log->GetVerbose())
{
- std::string var_decl_print_string = ASTDumper(var_decl).AsString();
-
- log->Printf(" FEVD[%d] Added register %s, returned %s", current_id, context.m_decl_name.getAsString().c_str(), var_decl_print_string.c_str());
+ ASTDumper ast_dumper(var_decl);
+ log->Printf(" FEVD[%d] Added register %s, returned %s", current_id, context.m_decl_name.getAsString().c_str(), ast_dumper.GetCString());
}
}
@@ -3032,8 +3027,20 @@
fun_ast_context = fun_type->GetClangASTContext().getASTContext();
void *copied_type = GuardedCopyType(context.GetASTContext(), fun_ast_context, fun_opaque_type);
-
- fun_decl = context.AddFunDecl(copied_type);
+ if (copied_type)
+ {
+ fun_decl = context.AddFunDecl(copied_type);
+ }
+ else
+ {
+ // We failed to copy the type we found
+ if (log)
+ {
+ log->Printf (" Failed to import the function type '%s' {0x%8.8llx} into the expression parser AST contenxt",
+ fun_type->GetName().GetCString(),
+ fun_type->GetID());
+ }
+ }
}
else if (symbol)
{
@@ -3070,13 +3077,13 @@
if (log)
{
- std::string fun_decl_print_string = ASTDumper(fun_decl).AsString();
+ ASTDumper ast_dumper(fun_decl);
log->Printf(" FEVD[%u] Found %s function %s, returned %s",
current_id,
(fun ? "specific" : "generic"),
decl_name.c_str(),
- fun_decl_print_string.c_str());
+ ast_dumper.GetCString());
}
}
More information about the lldb-commits
mailing list