Author: Raphael Isemann Date: 2019-12-16T10:52:31+01:00 New Revision: f49d15b3f8ccd7737a62d40adfe5ff1e710788d4
URL: https://github.com/llvm/llvm-project/commit/f49d15b3f8ccd7737a62d40adfe5ff1e710788d4 DIFF: https://github.com/llvm/llvm-project/commit/f49d15b3f8ccd7737a62d40adfe5ff1e710788d4.diff LOG: [lldb][NFC] Move definition of ClangASTMetadata out of ClangExternalASTSourceCommon.h Changing metadata of a ClangASTContext currently requires to include the unrelated ClangExternalASTSourceCommon.h header because it actually defines the ClangASTMetadata class. This also removes the dependency from ClangASTImporter to ClangExternalASTSourceCommon. Added: lldb/include/lldb/Symbol/ClangASTMetadata.h lldb/source/Symbol/ClangASTMetadata.cpp Modified: lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h lldb/source/Symbol/CMakeLists.txt lldb/source/Symbol/ClangASTImporter.cpp lldb/source/Symbol/ClangExternalASTSourceCommon.cpp Removed: ################################################################################ diff --git a/lldb/include/lldb/Symbol/ClangASTMetadata.h b/lldb/include/lldb/Symbol/ClangASTMetadata.h new file mode 100644 index 000000000000..fdf4388f0847 --- /dev/null +++ b/lldb/include/lldb/Symbol/ClangASTMetadata.h @@ -0,0 +1,100 @@ +//===-- ClangASTMetadata.h --------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_ClangASTMetadata_h +#define liblldb_ClangASTMetadata_h + +#include "lldb/Core/dwarf.h" +#include "lldb/lldb-defines.h" +#include "lldb/lldb-enumerations.h" + +namespace lldb_private { + +class ClangASTMetadata { +public: + ClangASTMetadata() + : m_user_id(0), m_union_is_user_id(false), m_union_is_isa_ptr(false), + m_has_object_ptr(false), m_is_self(false), m_is_dynamic_cxx(true) {} + + bool GetIsDynamicCXXType() const { return m_is_dynamic_cxx; } + + void SetIsDynamicCXXType(bool b) { m_is_dynamic_cxx = b; } + + void SetUserID(lldb::user_id_t user_id) { + m_user_id = user_id; + m_union_is_user_id = true; + m_union_is_isa_ptr = false; + } + + lldb::user_id_t GetUserID() const { + if (m_union_is_user_id) + return m_user_id; + else + return LLDB_INVALID_UID; + } + + void SetISAPtr(uint64_t isa_ptr) { + m_isa_ptr = isa_ptr; + m_union_is_user_id = false; + m_union_is_isa_ptr = true; + } + + uint64_t GetISAPtr() const { + if (m_union_is_isa_ptr) + return m_isa_ptr; + else + return 0; + } + + void SetObjectPtrName(const char *name) { + m_has_object_ptr = true; + if (strcmp(name, "self") == 0) + m_is_self = true; + else if (strcmp(name, "this") == 0) + m_is_self = false; + else + m_has_object_ptr = false; + } + + lldb::LanguageType GetObjectPtrLanguage() const { + if (m_has_object_ptr) { + if (m_is_self) + return lldb::eLanguageTypeObjC; + else + return lldb::eLanguageTypeC_plus_plus; + } + return lldb::eLanguageTypeUnknown; + } + + const char *GetObjectPtrName() const { + if (m_has_object_ptr) { + if (m_is_self) + return "self"; + else + return "this"; + } else + return nullptr; + } + + bool HasObjectPtr() const { return m_has_object_ptr; } + + void Dump(Stream *s); + +private: + union { + lldb::user_id_t m_user_id; + uint64_t m_isa_ptr; + }; + + bool m_union_is_user_id : 1, m_union_is_isa_ptr : 1, m_has_object_ptr : 1, + m_is_self : 1, m_is_dynamic_cxx : 1; +}; + +} // namespace lldb_private + +#endif // liblldb_ClangASTMetadata_h diff --git a/lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h b/lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h index 5da486540bb9..dada61d7d026 100644 --- a/lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h +++ b/lldb/include/lldb/Symbol/ClangExternalASTSourceCommon.h @@ -36,91 +36,12 @@ #include "clang/AST/ExternalASTSource.h" #include "lldb/Core/dwarf.h" +#include "lldb/Symbol/ClangASTMetadata.h" #include "lldb/lldb-defines.h" #include "lldb/lldb-enumerations.h" namespace lldb_private { -class ClangASTMetadata { -public: - ClangASTMetadata() - : m_user_id(0), m_union_is_user_id(false), m_union_is_isa_ptr(false), - m_has_object_ptr(false), m_is_self(false), m_is_dynamic_cxx(true) {} - - bool GetIsDynamicCXXType() const { return m_is_dynamic_cxx; } - - void SetIsDynamicCXXType(bool b) { m_is_dynamic_cxx = b; } - - void SetUserID(lldb::user_id_t user_id) { - m_user_id = user_id; - m_union_is_user_id = true; - m_union_is_isa_ptr = false; - } - - lldb::user_id_t GetUserID() const { - if (m_union_is_user_id) - return m_user_id; - else - return LLDB_INVALID_UID; - } - - void SetISAPtr(uint64_t isa_ptr) { - m_isa_ptr = isa_ptr; - m_union_is_user_id = false; - m_union_is_isa_ptr = true; - } - - uint64_t GetISAPtr() const { - if (m_union_is_isa_ptr) - return m_isa_ptr; - else - return 0; - } - - void SetObjectPtrName(const char *name) { - m_has_object_ptr = true; - if (strcmp(name, "self") == 0) - m_is_self = true; - else if (strcmp(name, "this") == 0) - m_is_self = false; - else - m_has_object_ptr = false; - } - - lldb::LanguageType GetObjectPtrLanguage() const { - if (m_has_object_ptr) { - if (m_is_self) - return lldb::eLanguageTypeObjC; - else - return lldb::eLanguageTypeC_plus_plus; - } - return lldb::eLanguageTypeUnknown; - } - - const char *GetObjectPtrName() const { - if (m_has_object_ptr) { - if (m_is_self) - return "self"; - else - return "this"; - } else - return nullptr; - } - - bool HasObjectPtr() const { return m_has_object_ptr; } - - void Dump(Stream *s); - -private: - union { - lldb::user_id_t m_user_id; - uint64_t m_isa_ptr; - }; - - bool m_union_is_user_id : 1, m_union_is_isa_ptr : 1, m_has_object_ptr : 1, - m_is_self : 1, m_is_dynamic_cxx : 1; -}; - class ClangExternalASTSourceCommon : public clang::ExternalASTSource { /// LLVM-style RTTI. diff --git a/lldb/source/Symbol/CMakeLists.txt b/lldb/source/Symbol/CMakeLists.txt index ead43accda18..7b305604ed78 100644 --- a/lldb/source/Symbol/CMakeLists.txt +++ b/lldb/source/Symbol/CMakeLists.txt @@ -9,6 +9,7 @@ add_lldb_library(lldbSymbol Block.cpp ClangASTContext.cpp ClangASTImporter.cpp + ClangASTMetadata.cpp ClangExternalASTSourceCallbacks.cpp ClangExternalASTSourceCommon.cpp ClangUtil.cpp diff --git a/lldb/source/Symbol/ClangASTImporter.cpp b/lldb/source/Symbol/ClangASTImporter.cpp index 9b5319605150..a6125ce24f86 100644 --- a/lldb/source/Symbol/ClangASTImporter.cpp +++ b/lldb/source/Symbol/ClangASTImporter.cpp @@ -9,7 +9,7 @@ #include "lldb/Symbol/ClangASTImporter.h" #include "lldb/Core/Module.h" #include "lldb/Symbol/ClangASTContext.h" -#include "lldb/Symbol/ClangExternalASTSourceCommon.h" +#include "lldb/Symbol/ClangASTMetadata.h" #include "lldb/Symbol/ClangUtil.h" #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/Log.h" diff --git a/lldb/source/Symbol/ClangASTMetadata.cpp b/lldb/source/Symbol/ClangASTMetadata.cpp new file mode 100644 index 000000000000..31b012f553fa --- /dev/null +++ b/lldb/source/Symbol/ClangASTMetadata.cpp @@ -0,0 +1,35 @@ +//===-- ClangASTMetadata.cpp ------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "lldb/Symbol/ClangASTMetadata.h" +#include "lldb/Utility/Stream.h" + +using namespace lldb_private; + +void ClangASTMetadata::Dump(Stream *s) { + lldb::user_id_t uid = GetUserID(); + + if (uid != LLDB_INVALID_UID) { + s->Printf("uid=0x%" PRIx64, uid); + } + + uint64_t isa_ptr = GetISAPtr(); + if (isa_ptr != 0) { + s->Printf("isa_ptr=0x%" PRIx64, isa_ptr); + } + + const char *obj_ptr_name = GetObjectPtrName(); + if (obj_ptr_name) { + s->Printf("obj_ptr_name=\"%s\" ", obj_ptr_name); + } + + if (m_is_dynamic_cxx) { + s->Printf("is_dynamic_cxx=%i ", m_is_dynamic_cxx); + } + s->EOL(); +} diff --git a/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp b/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp index be015da872d0..ed3e9f24005e 100644 --- a/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp +++ b/lldb/source/Symbol/ClangExternalASTSourceCommon.cpp @@ -32,26 +32,3 @@ ClangExternalASTSourceCommon::GetMetadata(const clang::Type *object) { return &It->second; return nullptr; } - -void ClangASTMetadata::Dump(Stream *s) { - lldb::user_id_t uid = GetUserID(); - - if (uid != LLDB_INVALID_UID) { - s->Printf("uid=0x%" PRIx64, uid); - } - - uint64_t isa_ptr = GetISAPtr(); - if (isa_ptr != 0) { - s->Printf("isa_ptr=0x%" PRIx64, isa_ptr); - } - - const char *obj_ptr_name = GetObjectPtrName(); - if (obj_ptr_name) { - s->Printf("obj_ptr_name=\"%s\" ", obj_ptr_name); - } - - if (m_is_dynamic_cxx) { - s->Printf("is_dynamic_cxx=%i ", m_is_dynamic_cxx); - } - s->EOL(); -} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits