[lldb][NFC] Remove most GetASTContext calls in AST metadata code

This commit is contained in:
Raphael Isemann 2019-12-28 23:37:53 +01:00
parent bee973f4df
commit 0460a6bdf2
3 changed files with 21 additions and 38 deletions

View file

@ -132,20 +132,10 @@ public:
void SetMetadataAsUserID(const clang::Type *type, lldb::user_id_t user_id); void SetMetadataAsUserID(const clang::Type *type, lldb::user_id_t user_id);
void SetMetadata(const clang::Decl *object, ClangASTMetadata &meta_data); void SetMetadata(const clang::Decl *object, ClangASTMetadata &meta_data);
void SetMetadata(const clang::Type *object, ClangASTMetadata &meta_data); void SetMetadata(const clang::Type *object, ClangASTMetadata &meta_data);
ClangASTMetadata *GetMetadata(const clang::Decl *object) { ClangASTMetadata *GetMetadata(const clang::Decl *object);
return GetMetadata(&getASTContext(), object); ClangASTMetadata *GetMetadata(const clang::Type *object);
}
static ClangASTMetadata *GetMetadata(clang::ASTContext *ast,
const clang::Decl *object);
ClangASTMetadata *GetMetadata(const clang::Type *object) {
return GetMetadata(&getASTContext(), object);
}
static ClangASTMetadata *GetMetadata(clang::ASTContext *ast,
const clang::Type *object);
// Basic Types // Basic Types
CompilerType GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding, CompilerType GetBuiltinTypeForEncodingAndBitSize(lldb::Encoding encoding,

View file

@ -2335,20 +2335,16 @@ void ClangASTContext::SetMetadata(const clang::Type *object,
m_type_metadata[object] = metadata; m_type_metadata[object] = metadata;
} }
ClangASTMetadata *ClangASTContext::GetMetadata(clang::ASTContext *ast, ClangASTMetadata *ClangASTContext::GetMetadata(const clang::Decl *object) {
const clang::Decl *object) { auto It = m_decl_metadata.find(object);
ClangASTContext *self = GetASTContext(ast); if (It != m_decl_metadata.end())
auto It = self->m_decl_metadata.find(object);
if (It != self->m_decl_metadata.end())
return &It->second; return &It->second;
return nullptr; return nullptr;
} }
ClangASTMetadata *ClangASTContext::GetMetadata(clang::ASTContext *ast, ClangASTMetadata *ClangASTContext::GetMetadata(const clang::Type *object) {
const clang::Type *object) { auto It = m_type_metadata.find(object);
ClangASTContext *self = GetASTContext(ast); if (It != m_type_metadata.end())
auto It = self->m_type_metadata.find(object);
if (It != self->m_type_metadata.end())
return &It->second; return &It->second;
return nullptr; return nullptr;
} }
@ -2746,8 +2742,7 @@ bool ClangASTContext::IsRuntimeGeneratedType(
clang::ObjCInterfaceDecl *result_iface_decl = clang::ObjCInterfaceDecl *result_iface_decl =
llvm::dyn_cast<clang::ObjCInterfaceDecl>(decl_ctx); llvm::dyn_cast<clang::ObjCInterfaceDecl>(decl_ctx);
ClangASTMetadata *ast_metadata = ClangASTMetadata *ast_metadata = GetMetadata(result_iface_decl);
ClangASTContext::GetMetadata(&getASTContext(), result_iface_decl);
if (!ast_metadata) if (!ast_metadata)
return false; return false;
return (ast_metadata->GetISAPtr() != 0); return (ast_metadata->GetISAPtr() != 0);
@ -3398,8 +3393,7 @@ bool ClangASTContext::IsPossibleDynamicType(lldb::opaque_compiler_type_t type,
if (is_complete) if (is_complete)
success = cxx_record_decl->isDynamicClass(); success = cxx_record_decl->isDynamicClass();
else { else {
ClangASTMetadata *metadata = ClangASTContext::GetMetadata( ClangASTMetadata *metadata = GetMetadata(cxx_record_decl);
&getASTContext(), cxx_record_decl);
if (metadata) if (metadata)
success = metadata->GetIsDynamicCXXType(); success = metadata->GetIsDynamicCXXType();
else { else {
@ -8729,8 +8723,7 @@ void ClangASTContext::DumpTypeDescription(lldb::opaque_compiler_type_t type) {
CompilerType ct(this, type); CompilerType ct(this, type);
const clang::Type *clang_type = ClangUtil::GetQualType(ct).getTypePtr(); const clang::Type *clang_type = ClangUtil::GetQualType(ct).getTypePtr();
ClangASTMetadata *metadata = ClangASTMetadata *metadata = GetMetadata(clang_type);
ClangASTContext::GetMetadata(&getASTContext(), clang_type);
if (metadata) { if (metadata) {
metadata->Dump(&s); metadata->Dump(&s);
} }
@ -9268,8 +9261,7 @@ bool ClangASTContext::DeclContextIsClassMethod(
return true; return true;
} else if (clang::FunctionDecl *function_decl = } else if (clang::FunctionDecl *function_decl =
llvm::dyn_cast<clang::FunctionDecl>(decl_ctx)) { llvm::dyn_cast<clang::FunctionDecl>(decl_ctx)) {
ClangASTMetadata *metadata = ClangASTMetadata *metadata = GetMetadata(function_decl);
GetMetadata(&decl_ctx->getParentASTContext(), function_decl);
if (metadata && metadata->HasObjectPtr()) { if (metadata && metadata->HasObjectPtr()) {
if (is_instance_method_ptr) if (is_instance_method_ptr)
*is_instance_method_ptr = true; *is_instance_method_ptr = true;
@ -9347,10 +9339,8 @@ ClangASTContext::DeclContextGetAsNamespaceDecl(const CompilerDeclContext &dc) {
ClangASTMetadata * ClangASTMetadata *
ClangASTContext::DeclContextGetMetaData(const CompilerDeclContext &dc, ClangASTContext::DeclContextGetMetaData(const CompilerDeclContext &dc,
const Decl *object) { const Decl *object) {
clang::ASTContext *ast = DeclContextGetClangASTContext(dc); ClangASTContext *ast = llvm::cast<ClangASTContext>(dc.GetTypeSystem());
if (ast) return ast->GetMetadata(object);
return ClangASTContext::GetMetadata(ast, object);
return nullptr;
} }
clang::ASTContext * clang::ASTContext *

View file

@ -737,9 +737,12 @@ bool ClangASTImporter::RequireCompleteType(clang::QualType type) {
ClangASTMetadata *ClangASTImporter::GetDeclMetadata(const clang::Decl *decl) { ClangASTMetadata *ClangASTImporter::GetDeclMetadata(const clang::Decl *decl) {
DeclOrigin decl_origin = GetDeclOrigin(decl); DeclOrigin decl_origin = GetDeclOrigin(decl);
if (decl_origin.Valid()) if (decl_origin.Valid()) {
return ClangASTContext::GetMetadata(decl_origin.ctx, decl_origin.decl); ClangASTContext *ast = ClangASTContext::GetASTContext(decl_origin.ctx);
return ClangASTContext::GetMetadata(&decl->getASTContext(), decl); return ast->GetMetadata(decl_origin.decl);
}
ClangASTContext *ast = ClangASTContext::GetASTContext(&decl->getASTContext());
return ast->GetMetadata(decl);
} }
ClangASTImporter::DeclOrigin ClangASTImporter::DeclOrigin