[Lldb-commits] [lldb] r366148 - [LanguageRuntime] Move ObjCLanguageRuntime into a plugin
Alex Langford via lldb-commits
lldb-commits at lists.llvm.org
Mon Jul 15 15:56:12 PDT 2019
Author: xiaobai
Date: Mon Jul 15 15:56:12 2019
New Revision: 366148
URL: http://llvm.org/viewvc/llvm-project?rev=366148&view=rev
Log:
[LanguageRuntime] Move ObjCLanguageRuntime into a plugin
Summary:
Following up to my CPPLanguageRuntime change, I'm moving
ObjCLanguageRuntime into a plugin as well.
Reviewers: JDevlieghere, compnerd, jingham, clayborg
Subscribers: mgorny, arphaman, lldb-commits
Differential Revision: https://reviews.llvm.org/D64763
Added:
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp
- copied, changed from r365991, lldb/trunk/source/Target/ObjCLanguageRuntime.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h
- copied, changed from r365991, lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h
Removed:
lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h
lldb/trunk/source/Target/ObjCLanguageRuntime.cpp
Modified:
lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
lldb/trunk/source/Plugins/ExpressionParser/Clang/IRDynamicChecks.cpp
lldb/trunk/source/Plugins/Language/ObjC/CF.cpp
lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp
lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h
lldb/trunk/source/Plugins/Language/ObjC/NSArray.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSError.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSException.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSSet.cpp
lldb/trunk/source/Plugins/Language/ObjC/NSString.h
lldb/trunk/source/Plugins/Language/ObjC/ObjCLanguage.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.h
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
lldb/trunk/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt
lldb/trunk/source/Symbol/CMakeLists.txt
lldb/trunk/source/Symbol/ClangASTContext.cpp
lldb/trunk/source/Target/CMakeLists.txt
Removed: lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h?rev=366147&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h (original)
+++ lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h (removed)
@@ -1,429 +0,0 @@
-//===-- ObjCLanguageRuntime.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_ObjCLanguageRuntime_h_
-#define liblldb_ObjCLanguageRuntime_h_
-
-#include <functional>
-#include <map>
-#include <memory>
-#include <unordered_set>
-
-#include "llvm/Support/Casting.h"
-
-#include "lldb/Breakpoint/BreakpointPrecondition.h"
-#include "lldb/Core/PluginInterface.h"
-#include "lldb/Core/ThreadSafeDenseMap.h"
-#include "lldb/Symbol/CompilerType.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Target/LanguageRuntime.h"
-#include "lldb/lldb-private.h"
-
-class CommandObjectObjC_ClassTable_Dump;
-
-namespace lldb_private {
-
-class UtilityFunction;
-
-class ObjCLanguageRuntime : public LanguageRuntime {
-public:
- enum class ObjCRuntimeVersions {
- eObjC_VersionUnknown = 0,
- eAppleObjC_V1 = 1,
- eAppleObjC_V2 = 2
- };
-
- typedef lldb::addr_t ObjCISA;
-
- class ClassDescriptor;
- typedef std::shared_ptr<ClassDescriptor> ClassDescriptorSP;
-
- // the information that we want to support retrieving from an ObjC class this
- // needs to be pure virtual since there are at least 2 different
- // implementations of the runtime, and more might come
- class ClassDescriptor {
- public:
- ClassDescriptor()
- : m_is_kvo(eLazyBoolCalculate), m_is_cf(eLazyBoolCalculate),
- m_type_wp() {}
-
- virtual ~ClassDescriptor() = default;
-
- virtual ConstString GetClassName() = 0;
-
- virtual ClassDescriptorSP GetSuperclass() = 0;
-
- virtual ClassDescriptorSP GetMetaclass() const = 0;
-
- // virtual if any implementation has some other version-specific rules but
- // for the known v1/v2 this is all that needs to be done
- virtual bool IsKVO() {
- if (m_is_kvo == eLazyBoolCalculate) {
- const char *class_name = GetClassName().AsCString();
- if (class_name && *class_name)
- m_is_kvo =
- (LazyBool)(strstr(class_name, "NSKVONotifying_") == class_name);
- }
- return (m_is_kvo == eLazyBoolYes);
- }
-
- // virtual if any implementation has some other version-specific rules but
- // for the known v1/v2 this is all that needs to be done
- virtual bool IsCFType() {
- if (m_is_cf == eLazyBoolCalculate) {
- const char *class_name = GetClassName().AsCString();
- if (class_name && *class_name)
- m_is_cf = (LazyBool)(strcmp(class_name, "__NSCFType") == 0 ||
- strcmp(class_name, "NSCFType") == 0);
- }
- return (m_is_cf == eLazyBoolYes);
- }
-
- virtual bool IsValid() = 0;
-
- virtual bool GetTaggedPointerInfo(uint64_t *info_bits = nullptr,
- uint64_t *value_bits = nullptr,
- uint64_t *payload = nullptr) = 0;
-
- virtual uint64_t GetInstanceSize() = 0;
-
- // use to implement version-specific additional constraints on pointers
- virtual bool CheckPointer(lldb::addr_t value, uint32_t ptr_size) const {
- return true;
- }
-
- virtual ObjCISA GetISA() = 0;
-
- // This should return true iff the interface could be completed
- virtual bool
- Describe(std::function<void(ObjCISA)> const &superclass_func,
- std::function<bool(const char *, const char *)> const
- &instance_method_func,
- std::function<bool(const char *, const char *)> const
- &class_method_func,
- std::function<bool(const char *, const char *, lldb::addr_t,
- uint64_t)> const &ivar_func) const {
- return false;
- }
-
- lldb::TypeSP GetType() { return m_type_wp.lock(); }
-
- void SetType(const lldb::TypeSP &type_sp) { m_type_wp = type_sp; }
-
- struct iVarDescriptor {
- ConstString m_name;
- CompilerType m_type;
- uint64_t m_size;
- int32_t m_offset;
- };
-
- virtual size_t GetNumIVars() { return 0; }
-
- virtual iVarDescriptor GetIVarAtIndex(size_t idx) {
- return iVarDescriptor();
- }
-
- protected:
- bool IsPointerValid(lldb::addr_t value, uint32_t ptr_size,
- bool allow_NULLs = false, bool allow_tagged = false,
- bool check_version_specific = false) const;
-
- private:
- LazyBool m_is_kvo;
- LazyBool m_is_cf;
- lldb::TypeWP m_type_wp;
- };
-
- class EncodingToType {
- public:
- virtual ~EncodingToType();
-
- virtual CompilerType RealizeType(ClangASTContext &ast_ctx, const char *name,
- bool for_expression);
- virtual CompilerType RealizeType(const char *name, bool for_expression);
-
- virtual CompilerType RealizeType(clang::ASTContext &ast_ctx,
- const char *name, bool for_expression) = 0;
-
- protected:
- std::unique_ptr<ClangASTContext> m_scratch_ast_ctx_up;
- };
-
- class ObjCExceptionPrecondition : public BreakpointPrecondition {
- public:
- ObjCExceptionPrecondition();
-
- ~ObjCExceptionPrecondition() override = default;
-
- bool EvaluatePrecondition(StoppointCallbackContext &context) override;
- void GetDescription(Stream &stream, lldb::DescriptionLevel level) override;
- Status ConfigurePrecondition(Args &args) override;
-
- protected:
- void AddClassName(const char *class_name);
-
- private:
- std::unordered_set<std::string> m_class_names;
- };
-
- static lldb::BreakpointPreconditionSP
- GetBreakpointExceptionPrecondition(lldb::LanguageType language,
- bool throw_bp);
-
- class TaggedPointerVendor {
- public:
- virtual ~TaggedPointerVendor() = default;
-
- virtual bool IsPossibleTaggedPointer(lldb::addr_t ptr) = 0;
-
- virtual ObjCLanguageRuntime::ClassDescriptorSP
- GetClassDescriptor(lldb::addr_t ptr) = 0;
-
- protected:
- TaggedPointerVendor() = default;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(TaggedPointerVendor);
- };
-
- ~ObjCLanguageRuntime() override;
-
- static char ID;
-
- bool isA(const void *ClassID) const override {
- return ClassID == &ID || LanguageRuntime::isA(ClassID);
- }
-
- static bool classof(const LanguageRuntime *runtime) {
- return runtime->isA(&ID);
- }
-
- static ObjCLanguageRuntime *Get(Process &process) {
- return llvm::cast_or_null<ObjCLanguageRuntime>(
- process.GetLanguageRuntime(lldb::eLanguageTypeObjC));
- }
-
- virtual TaggedPointerVendor *GetTaggedPointerVendor() { return nullptr; }
-
- typedef std::shared_ptr<EncodingToType> EncodingToTypeSP;
-
- virtual EncodingToTypeSP GetEncodingToType();
-
- virtual ClassDescriptorSP GetClassDescriptor(ValueObject &in_value);
-
- ClassDescriptorSP GetNonKVOClassDescriptor(ValueObject &in_value);
-
- virtual ClassDescriptorSP
- GetClassDescriptorFromClassName(ConstString class_name);
-
- virtual ClassDescriptorSP GetClassDescriptorFromISA(ObjCISA isa);
-
- ClassDescriptorSP GetNonKVOClassDescriptor(ObjCISA isa);
-
- lldb::LanguageType GetLanguageType() const override {
- return lldb::eLanguageTypeObjC;
- }
-
- virtual bool IsModuleObjCLibrary(const lldb::ModuleSP &module_sp) = 0;
-
- virtual bool ReadObjCLibrary(const lldb::ModuleSP &module_sp) = 0;
-
- virtual bool HasReadObjCLibrary() = 0;
-
- lldb::addr_t LookupInMethodCache(lldb::addr_t class_addr, lldb::addr_t sel);
-
- void AddToMethodCache(lldb::addr_t class_addr, lldb::addr_t sel,
- lldb::addr_t impl_addr);
-
- TypeAndOrName LookupInClassNameCache(lldb::addr_t class_addr);
-
- void AddToClassNameCache(lldb::addr_t class_addr, const char *name,
- lldb::TypeSP type_sp);
-
- void AddToClassNameCache(lldb::addr_t class_addr,
- const TypeAndOrName &class_or_type_name);
-
- lldb::TypeSP LookupInCompleteClassCache(ConstString &name);
-
- llvm::Optional<CompilerType> GetRuntimeType(CompilerType base_type) override;
-
- virtual UtilityFunction *CreateObjectChecker(const char *) = 0;
-
- virtual ObjCRuntimeVersions GetRuntimeVersion() const {
- return ObjCRuntimeVersions::eObjC_VersionUnknown;
- }
-
- bool IsValidISA(ObjCISA isa) {
- UpdateISAToDescriptorMap();
- return m_isa_to_descriptor.count(isa) > 0;
- }
-
- virtual void UpdateISAToDescriptorMapIfNeeded() = 0;
-
- void UpdateISAToDescriptorMap() {
- if (m_process && m_process->GetStopID() != m_isa_to_descriptor_stop_id) {
- UpdateISAToDescriptorMapIfNeeded();
- }
- }
-
- virtual ObjCISA GetISA(ConstString name);
-
- virtual ConstString GetActualTypeName(ObjCISA isa);
-
- virtual ObjCISA GetParentClass(ObjCISA isa);
-
- // Finds the byte offset of the child_type ivar in parent_type. If it can't
- // find the offset, returns LLDB_INVALID_IVAR_OFFSET.
-
- virtual size_t GetByteOffsetForIvar(CompilerType &parent_qual_type,
- const char *ivar_name);
-
- bool HasNewLiteralsAndIndexing() {
- if (m_has_new_literals_and_indexing == eLazyBoolCalculate) {
- if (CalculateHasNewLiteralsAndIndexing())
- m_has_new_literals_and_indexing = eLazyBoolYes;
- else
- m_has_new_literals_and_indexing = eLazyBoolNo;
- }
-
- return (m_has_new_literals_and_indexing == eLazyBoolYes);
- }
-
- void SymbolsDidLoad(const ModuleList &module_list) override {
- m_negative_complete_class_cache.clear();
- }
-
- bool GetTypeBitSize(const CompilerType &compiler_type,
- uint64_t &size) override;
-
- /// Check whether the name is "self" or "_cmd" and should show up in
- /// "frame variable".
- bool IsWhitelistedRuntimeValue(ConstString name) override;
-
-protected:
- // Classes that inherit from ObjCLanguageRuntime can see and modify these
- ObjCLanguageRuntime(Process *process);
-
- virtual bool CalculateHasNewLiteralsAndIndexing() { return false; }
-
- bool ISAIsCached(ObjCISA isa) const {
- return m_isa_to_descriptor.find(isa) != m_isa_to_descriptor.end();
- }
-
- bool AddClass(ObjCISA isa, const ClassDescriptorSP &descriptor_sp) {
- if (isa != 0) {
- m_isa_to_descriptor[isa] = descriptor_sp;
- return true;
- }
- return false;
- }
-
- bool AddClass(ObjCISA isa, const ClassDescriptorSP &descriptor_sp,
- const char *class_name);
-
- bool AddClass(ObjCISA isa, const ClassDescriptorSP &descriptor_sp,
- uint32_t class_name_hash) {
- if (isa != 0) {
- m_isa_to_descriptor[isa] = descriptor_sp;
- m_hash_to_isa_map.insert(std::make_pair(class_name_hash, isa));
- return true;
- }
- return false;
- }
-
-private:
- // We keep a map of <Class,Selector>->Implementation so we don't have to call
- // the resolver function over and over.
-
- // FIXME: We need to watch for the loading of Protocols, and flush the cache
- // for any
- // class that we see so changed.
-
- struct ClassAndSel {
- ClassAndSel() {
- sel_addr = LLDB_INVALID_ADDRESS;
- class_addr = LLDB_INVALID_ADDRESS;
- }
-
- ClassAndSel(lldb::addr_t in_sel_addr, lldb::addr_t in_class_addr)
- : class_addr(in_class_addr), sel_addr(in_sel_addr) {}
-
- bool operator==(const ClassAndSel &rhs) {
- if (class_addr == rhs.class_addr && sel_addr == rhs.sel_addr)
- return true;
- else
- return false;
- }
-
- bool operator<(const ClassAndSel &rhs) const {
- if (class_addr < rhs.class_addr)
- return true;
- else if (class_addr > rhs.class_addr)
- return false;
- else {
- if (sel_addr < rhs.sel_addr)
- return true;
- else
- return false;
- }
- }
-
- lldb::addr_t class_addr;
- lldb::addr_t sel_addr;
- };
-
- typedef std::map<ClassAndSel, lldb::addr_t> MsgImplMap;
- typedef std::map<ObjCISA, ClassDescriptorSP> ISAToDescriptorMap;
- typedef std::multimap<uint32_t, ObjCISA> HashToISAMap;
- typedef ISAToDescriptorMap::iterator ISAToDescriptorIterator;
- typedef HashToISAMap::iterator HashToISAIterator;
- typedef ThreadSafeDenseMap<void *, uint64_t> TypeSizeCache;
-
- MsgImplMap m_impl_cache;
- LazyBool m_has_new_literals_and_indexing;
- ISAToDescriptorMap m_isa_to_descriptor;
- HashToISAMap m_hash_to_isa_map;
- TypeSizeCache m_type_size_cache;
-
-protected:
- uint32_t m_isa_to_descriptor_stop_id;
-
- typedef std::map<ConstString, lldb::TypeWP> CompleteClassMap;
- CompleteClassMap m_complete_class_cache;
-
- struct ConstStringSetHelpers {
- size_t operator()(ConstString arg) const // for hashing
- {
- return (size_t)arg.GetCString();
- }
- bool operator()(ConstString arg1,
- ConstString arg2) const // for equality
- {
- return arg1.operator==(arg2);
- }
- };
- typedef std::unordered_set<ConstString, ConstStringSetHelpers,
- ConstStringSetHelpers>
- CompleteClassSet;
- CompleteClassSet m_negative_complete_class_cache;
-
- ISAToDescriptorIterator GetDescriptorIterator(ConstString name);
-
- friend class ::CommandObjectObjC_ClassTable_Dump;
-
- std::pair<ISAToDescriptorIterator, ISAToDescriptorIterator>
- GetDescriptorIteratorPair(bool update_if_needed = true);
-
- void ReadObjCLibraryIfNeeded(const ModuleList &module_list);
-
- DISALLOW_COPY_AND_ASSIGN(ObjCLanguageRuntime);
-};
-
-} // namespace lldb_private
-
-#endif // liblldb_ObjCLanguageRuntime_h_
Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp Mon Jul 15 15:56:12 2019
@@ -20,7 +20,6 @@
#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Target/ABI.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
@@ -32,6 +31,8 @@
#include "lldb/Utility/Log.h"
#include "lldb/Utility/State.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
//#define ENABLE_DEBUG_PRINTF // COMMENT THIS LINE OUT PRIOR TO CHECKIN
#ifdef ENABLE_DEBUG_PRINTF
#include <stdio.h>
Modified: lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp (original)
+++ lldb/trunk/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp Mon Jul 15 15:56:12 2019
@@ -16,7 +16,6 @@
#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Target/ABI.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
@@ -30,6 +29,8 @@
#include "DynamicLoaderDarwin.h"
#include "DynamicLoaderMacOSXDYLD.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
//#define ENABLE_DEBUG_PRINTF // COMMENT THIS LINE OUT PRIOR TO CHECKIN
#ifdef ENABLE_DEBUG_PRINTF
#include <stdio.h>
Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp Mon Jul 15 15:56:12 2019
@@ -20,12 +20,13 @@
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Symbol/TaggedASTType.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/Log.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/RecordLayout.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include <memory>
#include <vector>
Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp Mon Jul 15 15:56:12 2019
@@ -33,7 +33,6 @@
#include "lldb/Symbol/Variable.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/StackFrame.h"
@@ -53,6 +52,7 @@
#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
#include "Plugins/LanguageRuntime/CPlusPlus/CPPLanguageRuntime.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
using namespace lldb;
using namespace lldb_private;
Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp Mon Jul 15 15:56:12 2019
@@ -78,7 +78,6 @@
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/ThreadPlanCallFunction.h"
@@ -90,6 +89,8 @@
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/StringList.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include <cctype>
#include <memory>
Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/IRDynamicChecks.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/IRDynamicChecks.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ExpressionParser/Clang/IRDynamicChecks.cpp (original)
+++ lldb/trunk/source/Plugins/ExpressionParser/Clang/IRDynamicChecks.cpp Mon Jul 15 15:56:12 2019
@@ -18,13 +18,14 @@
#include "lldb/Expression/UtilityFunction.h"
#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Log.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
using namespace llvm;
using namespace lldb_private;
Modified: lldb/trunk/source/Plugins/Language/ObjC/CF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/CF.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/CF.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/CF.cpp Mon Jul 15 15:56:12 2019
@@ -14,7 +14,6 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
@@ -22,6 +21,8 @@
#include "lldb/Utility/Status.h"
#include "lldb/Utility/Stream.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
using namespace lldb;
using namespace lldb_private;
using namespace lldb_private::formatters;
Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp Mon Jul 15 15:56:12 2019
@@ -17,7 +17,6 @@
#include "lldb/Host/Time.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/ProcessStructReader.h"
#include "lldb/Target/Target.h"
Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h Mon Jul 15 15:56:12 2019
@@ -13,9 +13,10 @@
#include "lldb/Core/ValueObject.h"
#include "lldb/DataFormatters/TypeSummary.h"
#include "lldb/DataFormatters/TypeSynthetic.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Utility/Stream.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
namespace formatters {
bool NSIndexSetSummaryProvider(ValueObject &valobj, Stream &stream,
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSArray.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSArray.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSArray.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSArray.cpp Mon Jul 15 15:56:12 2019
@@ -11,13 +11,13 @@
#include "Cocoa.h"
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h"
+
#include "lldb/Core/ValueObject.h"
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Expression/FunctionCaller.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
#include "lldb/Utility/Endian.h"
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp Mon Jul 15 15:56:12 2019
@@ -19,7 +19,6 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSError.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSError.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSError.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSError.cpp Mon Jul 15 15:56:12 2019
@@ -14,7 +14,6 @@
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/ProcessStructReader.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
@@ -23,6 +22,7 @@
#include "lldb/Utility/Stream.h"
#include "Plugins/Language/ObjC/NSString.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
using namespace lldb;
using namespace lldb_private;
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSException.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSException.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSException.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSException.cpp Mon Jul 15 15:56:12 2019
@@ -14,7 +14,6 @@
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/ProcessStructReader.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
@@ -23,6 +22,7 @@
#include "lldb/Utility/Stream.h"
#include "Plugins/Language/ObjC/NSString.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
using namespace lldb;
using namespace lldb_private;
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSIndexPath.cpp Mon Jul 15 15:56:12 2019
@@ -13,10 +13,10 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/DataFormatters/TypeSynthetic.h"
#include "lldb/Symbol/ClangASTContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
using namespace lldb;
using namespace lldb_private;
using namespace lldb_private::formatters;
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSSet.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSSet.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSSet.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSSet.cpp Mon Jul 15 15:56:12 2019
@@ -14,7 +14,6 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataBufferHeap.h"
#include "lldb/Utility/Endian.h"
Modified: lldb/trunk/source/Plugins/Language/ObjC/NSString.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSString.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/NSString.h (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/NSString.h Mon Jul 15 15:56:12 2019
@@ -12,9 +12,10 @@
#include "lldb/Core/ValueObject.h"
#include "lldb/DataFormatters/TypeSummary.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Utility/Stream.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
namespace formatters {
bool NSStringSummaryProvider(ValueObject &valobj, Stream &stream,
Modified: lldb/trunk/source/Plugins/Language/ObjC/ObjCLanguage.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/ObjCLanguage.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/ObjC/ObjCLanguage.cpp (original)
+++ lldb/trunk/source/Plugins/Language/ObjC/ObjCLanguage.cpp Mon Jul 15 15:56:12 2019
@@ -16,13 +16,14 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Symbol/CompilerType.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/StreamString.h"
#include "llvm/Support/Threading.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include "CF.h"
#include "Cocoa.h"
#include "CoreMedia.h"
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCClassDescriptorV2.h Mon Jul 15 15:56:12 2019
@@ -12,9 +12,10 @@
#include <mutex>
#include "AppleObjCRuntimeV2.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
class ClassDescriptorV2 : public ObjCLanguageRuntime::ClassDescriptor {
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp Mon Jul 15 15:56:12 2019
@@ -9,10 +9,10 @@
#include "AppleObjCDeclVendor.h"
#include "Plugins/ExpressionParser/Clang/ASTDumper.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
#include "lldb/Core/Module.h"
#include "lldb/Symbol/ClangExternalASTSourceCommon.h"
#include "lldb/Symbol/ClangUtil.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/Log.h"
@@ -20,6 +20,7 @@
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
+
using namespace lldb_private;
class lldb_private::AppleObjCExternalASTSource
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.h Mon Jul 15 15:56:12 2019
@@ -11,9 +11,10 @@
#include "lldb/Symbol/ClangASTContext.h"
#include "lldb/Symbol/DeclVendor.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
class AppleObjCExternalASTSource;
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h Mon Jul 15 15:56:12 2019
@@ -14,9 +14,10 @@
#include "AppleObjCTrampolineHandler.h"
#include "AppleThreadPlanStepThroughObjCTrampoline.h"
#include "lldb/Target/LanguageRuntime.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
class AppleObjCRuntime : public lldb_private::ObjCLanguageRuntime {
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h Mon Jul 15 15:56:12 2019
@@ -10,9 +10,10 @@
#define liblldb_AppleObjCRuntimeV1_h_
#include "AppleObjCRuntime.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_private {
class AppleObjCRuntimeV1 : public AppleObjCRuntime {
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Mon Jul 15 15:56:12 2019
@@ -42,7 +42,6 @@
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/ABI.h"
#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Platform.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/RegisterContext.h"
@@ -66,6 +65,8 @@
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include <vector>
using namespace lldb;
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h Mon Jul 15 15:56:12 2019
@@ -14,9 +14,10 @@
#include <mutex>
#include "AppleObjCRuntime.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
class RemoteNXMapTable;
namespace lldb_private {
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTrampolineHandler.cpp Mon Jul 15 15:56:12 2019
@@ -23,7 +23,6 @@
#include "lldb/Symbol/Symbol.h"
#include "lldb/Target/ABI.h"
#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/RegisterContext.h"
#include "lldb/Target/Target.h"
@@ -35,6 +34,8 @@
#include "llvm/ADT/STLExtras.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include <memory>
using namespace lldb;
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.h?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.h (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.h Mon Jul 15 15:56:12 2019
@@ -11,9 +11,10 @@
#include "clang/AST/ASTContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/lldb-private.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
namespace lldb_utility {
class StringLexer;
}
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleThreadPlanStepThroughObjCTrampoline.cpp Mon Jul 15 15:56:12 2019
@@ -13,13 +13,14 @@
#include "lldb/Expression/FunctionCaller.h"
#include "lldb/Expression/UtilityFunction.h"
#include "lldb/Target/ExecutionContext.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Thread.h"
#include "lldb/Target/ThreadPlanRunToAddress.h"
#include "lldb/Target/ThreadPlanStepOut.h"
#include "lldb/Utility/Log.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
+
#include <memory>
using namespace lldb;
Modified: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/CMakeLists.txt Mon Jul 15 15:56:12 2019
@@ -1 +1,10 @@
+add_lldb_library(lldbPluginObjCRuntime PLUGIN
+ ObjCLanguageRuntime.cpp
+
+ LINK_LIBS
+ lldbCore
+ lldbSymbol
+ lldbTarget
+ lldbUtility
+)
add_subdirectory(AppleObjCRuntime)
Copied: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp (from r365991, lldb/trunk/source/Target/ObjCLanguageRuntime.cpp)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp?p2=lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp&p1=lldb/trunk/source/Target/ObjCLanguageRuntime.cpp&r1=365991&r2=366148&rev=366148&view=diff
==============================================================================
--- lldb/trunk/source/Target/ObjCLanguageRuntime.cpp (original)
+++ lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.cpp Mon Jul 15 15:56:12 2019
@@ -7,6 +7,8 @@
//===----------------------------------------------------------------------===//
#include "clang/AST/Type.h"
+#include "ObjCLanguageRuntime.h"
+
#include "lldb/Core/MappedHash.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/PluginManager.h"
@@ -17,7 +19,6 @@
#include "lldb/Symbol/Type.h"
#include "lldb/Symbol/TypeList.h"
#include "lldb/Symbol/Variable.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/Timer.h"
Copied: lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h (from r365991, lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h?p2=lldb/trunk/source/Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h&p1=lldb/trunk/include/lldb/Target/ObjCLanguageRuntime.h&r1=365991&r2=366148&rev=366148&view=diff
==============================================================================
(empty)
Modified: lldb/trunk/source/Symbol/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CMakeLists.txt?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/CMakeLists.txt (original)
+++ lldb/trunk/source/Symbol/CMakeLists.txt Mon Jul 15 15:56:12 2019
@@ -59,6 +59,7 @@ add_lldb_library(lldbSymbol
lldbPluginSymbolFileDWARF
lldbPluginSymbolFilePDB
lldbPluginObjCLanguage
+ lldbPluginObjCRuntime
LINK_COMPONENTS
Support
Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Mon Jul 15 15:56:12 2019
@@ -86,7 +86,6 @@
#include "lldb/Symbol/VerifyDecl.h"
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/Language.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/DataExtractor.h"
@@ -95,6 +94,7 @@
#include "lldb/Utility/RegularExpression.h"
#include "lldb/Utility/Scalar.h"
+#include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h"
#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h"
#include "Plugins/SymbolFile/PDB/PDBASTParser.h"
Modified: lldb/trunk/source/Target/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/CMakeLists.txt?rev=366148&r1=366147&r2=366148&view=diff
==============================================================================
--- lldb/trunk/source/Target/CMakeLists.txt (original)
+++ lldb/trunk/source/Target/CMakeLists.txt Mon Jul 15 15:56:12 2019
@@ -10,7 +10,6 @@ add_lldb_library(lldbTarget
Memory.cpp
MemoryHistory.cpp
ModuleCache.cpp
- ObjCLanguageRuntime.cpp
OperatingSystem.cpp
PathMappingList.cpp
Platform.cpp
Removed: lldb/trunk/source/Target/ObjCLanguageRuntime.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/ObjCLanguageRuntime.cpp?rev=366147&view=auto
==============================================================================
--- lldb/trunk/source/Target/ObjCLanguageRuntime.cpp (original)
+++ lldb/trunk/source/Target/ObjCLanguageRuntime.cpp (removed)
@@ -1,435 +0,0 @@
-//===-- ObjCLanguageRuntime.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 "clang/AST/Type.h"
-
-#include "lldb/Core/MappedHash.h"
-#include "lldb/Core/Module.h"
-#include "lldb/Core/PluginManager.h"
-#include "lldb/Core/ValueObject.h"
-#include "lldb/Symbol/ClangASTContext.h"
-#include "lldb/Symbol/SymbolContext.h"
-#include "lldb/Symbol/SymbolFile.h"
-#include "lldb/Symbol/Type.h"
-#include "lldb/Symbol/TypeList.h"
-#include "lldb/Symbol/Variable.h"
-#include "lldb/Target/ObjCLanguageRuntime.h"
-#include "lldb/Target/Target.h"
-#include "lldb/Utility/Log.h"
-#include "lldb/Utility/Timer.h"
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/DJB.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-char ObjCLanguageRuntime::ID = 0;
-
-// Destructor
-ObjCLanguageRuntime::~ObjCLanguageRuntime() {}
-
-ObjCLanguageRuntime::ObjCLanguageRuntime(Process *process)
- : LanguageRuntime(process), m_impl_cache(),
- m_has_new_literals_and_indexing(eLazyBoolCalculate),
- m_isa_to_descriptor(), m_hash_to_isa_map(), m_type_size_cache(),
- m_isa_to_descriptor_stop_id(UINT32_MAX), m_complete_class_cache(),
- m_negative_complete_class_cache() {}
-
-bool ObjCLanguageRuntime::IsWhitelistedRuntimeValue(ConstString name) {
- static ConstString g_self = ConstString("self");
- static ConstString g_cmd = ConstString("_cmd");
- return name == g_self || name == g_cmd;
-}
-
-bool ObjCLanguageRuntime::AddClass(ObjCISA isa,
- const ClassDescriptorSP &descriptor_sp,
- const char *class_name) {
- if (isa != 0) {
- m_isa_to_descriptor[isa] = descriptor_sp;
- // class_name is assumed to be valid
- m_hash_to_isa_map.insert(std::make_pair(llvm::djbHash(class_name), isa));
- return true;
- }
- return false;
-}
-
-void ObjCLanguageRuntime::AddToMethodCache(lldb::addr_t class_addr,
- lldb::addr_t selector,
- lldb::addr_t impl_addr) {
- Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_STEP));
- if (log) {
- log->Printf("Caching: class 0x%" PRIx64 " selector 0x%" PRIx64
- " implementation 0x%" PRIx64 ".",
- class_addr, selector, impl_addr);
- }
- m_impl_cache.insert(std::pair<ClassAndSel, lldb::addr_t>(
- ClassAndSel(class_addr, selector), impl_addr));
-}
-
-lldb::addr_t ObjCLanguageRuntime::LookupInMethodCache(lldb::addr_t class_addr,
- lldb::addr_t selector) {
- MsgImplMap::iterator pos, end = m_impl_cache.end();
- pos = m_impl_cache.find(ClassAndSel(class_addr, selector));
- if (pos != end)
- return (*pos).second;
- return LLDB_INVALID_ADDRESS;
-}
-
-lldb::TypeSP
-ObjCLanguageRuntime::LookupInCompleteClassCache(ConstString &name) {
- CompleteClassMap::iterator complete_class_iter =
- m_complete_class_cache.find(name);
-
- if (complete_class_iter != m_complete_class_cache.end()) {
- // Check the weak pointer to make sure the type hasn't been unloaded
- TypeSP complete_type_sp(complete_class_iter->second.lock());
-
- if (complete_type_sp)
- return complete_type_sp;
- else
- m_complete_class_cache.erase(name);
- }
-
- if (m_negative_complete_class_cache.count(name) > 0)
- return TypeSP();
-
- const ModuleList &modules = m_process->GetTarget().GetImages();
-
- SymbolContextList sc_list;
- const size_t matching_symbols =
- modules.FindSymbolsWithNameAndType(name, eSymbolTypeObjCClass, sc_list);
-
- if (matching_symbols) {
- SymbolContext sc;
-
- sc_list.GetContextAtIndex(0, sc);
-
- ModuleSP module_sp(sc.module_sp);
-
- if (!module_sp)
- return TypeSP();
-
- const bool exact_match = true;
- const uint32_t max_matches = UINT32_MAX;
- TypeList types;
-
- llvm::DenseSet<SymbolFile *> searched_symbol_files;
- const uint32_t num_types = module_sp->FindTypes(
- name, exact_match, max_matches, searched_symbol_files, types);
-
- if (num_types) {
- uint32_t i;
- for (i = 0; i < num_types; ++i) {
- TypeSP type_sp(types.GetTypeAtIndex(i));
-
- if (ClangASTContext::IsObjCObjectOrInterfaceType(
- type_sp->GetForwardCompilerType())) {
- if (type_sp->IsCompleteObjCClass()) {
- m_complete_class_cache[name] = type_sp;
- return type_sp;
- }
- }
- }
- }
- }
- m_negative_complete_class_cache.insert(name);
- return TypeSP();
-}
-
-size_t ObjCLanguageRuntime::GetByteOffsetForIvar(CompilerType &parent_qual_type,
- const char *ivar_name) {
- return LLDB_INVALID_IVAR_OFFSET;
-}
-
-bool ObjCLanguageRuntime::ClassDescriptor::IsPointerValid(
- lldb::addr_t value, uint32_t ptr_size, bool allow_NULLs, bool allow_tagged,
- bool check_version_specific) const {
- if (!value)
- return allow_NULLs;
- if ((value % 2) == 1 && allow_tagged)
- return true;
- if ((value % ptr_size) == 0)
- return (check_version_specific ? CheckPointer(value, ptr_size) : true);
- else
- return false;
-}
-
-ObjCLanguageRuntime::ObjCISA
-ObjCLanguageRuntime::GetISA(ConstString name) {
- ISAToDescriptorIterator pos = GetDescriptorIterator(name);
- if (pos != m_isa_to_descriptor.end())
- return pos->first;
- return 0;
-}
-
-ObjCLanguageRuntime::ISAToDescriptorIterator
-ObjCLanguageRuntime::GetDescriptorIterator(ConstString name) {
- ISAToDescriptorIterator end = m_isa_to_descriptor.end();
-
- if (name) {
- UpdateISAToDescriptorMap();
- if (m_hash_to_isa_map.empty()) {
- // No name hashes were provided, we need to just linearly power through
- // the names and find a match
- for (ISAToDescriptorIterator pos = m_isa_to_descriptor.begin();
- pos != end; ++pos) {
- if (pos->second->GetClassName() == name)
- return pos;
- }
- } else {
- // Name hashes were provided, so use them to efficiently lookup name to
- // isa/descriptor
- const uint32_t name_hash = llvm::djbHash(name.GetStringRef());
- std::pair<HashToISAIterator, HashToISAIterator> range =
- m_hash_to_isa_map.equal_range(name_hash);
- for (HashToISAIterator range_pos = range.first; range_pos != range.second;
- ++range_pos) {
- ISAToDescriptorIterator pos =
- m_isa_to_descriptor.find(range_pos->second);
- if (pos != m_isa_to_descriptor.end()) {
- if (pos->second->GetClassName() == name)
- return pos;
- }
- }
- }
- }
- return end;
-}
-
-std::pair<ObjCLanguageRuntime::ISAToDescriptorIterator,
- ObjCLanguageRuntime::ISAToDescriptorIterator>
-ObjCLanguageRuntime::GetDescriptorIteratorPair(bool update_if_needed) {
- if (update_if_needed)
- UpdateISAToDescriptorMapIfNeeded();
-
- return std::pair<ObjCLanguageRuntime::ISAToDescriptorIterator,
- ObjCLanguageRuntime::ISAToDescriptorIterator>(
- m_isa_to_descriptor.begin(), m_isa_to_descriptor.end());
-}
-
-ObjCLanguageRuntime::ObjCISA
-ObjCLanguageRuntime::GetParentClass(ObjCLanguageRuntime::ObjCISA isa) {
- ClassDescriptorSP objc_class_sp(GetClassDescriptorFromISA(isa));
- if (objc_class_sp) {
- ClassDescriptorSP objc_super_class_sp(objc_class_sp->GetSuperclass());
- if (objc_super_class_sp)
- return objc_super_class_sp->GetISA();
- }
- return 0;
-}
-
-ConstString
-ObjCLanguageRuntime::GetActualTypeName(ObjCLanguageRuntime::ObjCISA isa) {
- ClassDescriptorSP objc_class_sp(GetNonKVOClassDescriptor(isa));
- if (objc_class_sp)
- return objc_class_sp->GetClassName();
- return ConstString();
-}
-
-ObjCLanguageRuntime::ClassDescriptorSP
-ObjCLanguageRuntime::GetClassDescriptorFromClassName(
- ConstString class_name) {
- ISAToDescriptorIterator pos = GetDescriptorIterator(class_name);
- if (pos != m_isa_to_descriptor.end())
- return pos->second;
- return ClassDescriptorSP();
-}
-
-ObjCLanguageRuntime::ClassDescriptorSP
-ObjCLanguageRuntime::GetClassDescriptor(ValueObject &valobj) {
- ClassDescriptorSP objc_class_sp;
- // if we get an invalid VO (which might still happen when playing around with
- // pointers returned by the expression parser, don't consider this a valid
- // ObjC object)
- if (valobj.GetCompilerType().IsValid()) {
- addr_t isa_pointer = valobj.GetPointerValue();
- if (isa_pointer != LLDB_INVALID_ADDRESS) {
- ExecutionContext exe_ctx(valobj.GetExecutionContextRef());
-
- Process *process = exe_ctx.GetProcessPtr();
- if (process) {
- Status error;
- ObjCISA isa = process->ReadPointerFromMemory(isa_pointer, error);
- if (isa != LLDB_INVALID_ADDRESS)
- objc_class_sp = GetClassDescriptorFromISA(isa);
- }
- }
- }
- return objc_class_sp;
-}
-
-ObjCLanguageRuntime::ClassDescriptorSP
-ObjCLanguageRuntime::GetNonKVOClassDescriptor(ValueObject &valobj) {
- ObjCLanguageRuntime::ClassDescriptorSP objc_class_sp(
- GetClassDescriptor(valobj));
- if (objc_class_sp) {
- if (!objc_class_sp->IsKVO())
- return objc_class_sp;
-
- ClassDescriptorSP non_kvo_objc_class_sp(objc_class_sp->GetSuperclass());
- if (non_kvo_objc_class_sp && non_kvo_objc_class_sp->IsValid())
- return non_kvo_objc_class_sp;
- }
- return ClassDescriptorSP();
-}
-
-ObjCLanguageRuntime::ClassDescriptorSP
-ObjCLanguageRuntime::GetClassDescriptorFromISA(ObjCISA isa) {
- if (isa) {
- UpdateISAToDescriptorMap();
- ObjCLanguageRuntime::ISAToDescriptorIterator pos =
- m_isa_to_descriptor.find(isa);
- if (pos != m_isa_to_descriptor.end())
- return pos->second;
- }
- return ClassDescriptorSP();
-}
-
-ObjCLanguageRuntime::ClassDescriptorSP
-ObjCLanguageRuntime::GetNonKVOClassDescriptor(ObjCISA isa) {
- if (isa) {
- ClassDescriptorSP objc_class_sp = GetClassDescriptorFromISA(isa);
- if (objc_class_sp && objc_class_sp->IsValid()) {
- if (!objc_class_sp->IsKVO())
- return objc_class_sp;
-
- ClassDescriptorSP non_kvo_objc_class_sp(objc_class_sp->GetSuperclass());
- if (non_kvo_objc_class_sp && non_kvo_objc_class_sp->IsValid())
- return non_kvo_objc_class_sp;
- }
- }
- return ClassDescriptorSP();
-}
-
-CompilerType
-ObjCLanguageRuntime::EncodingToType::RealizeType(const char *name,
- bool for_expression) {
- if (m_scratch_ast_ctx_up)
- return RealizeType(*m_scratch_ast_ctx_up, name, for_expression);
- return CompilerType();
-}
-
-CompilerType ObjCLanguageRuntime::EncodingToType::RealizeType(
- ClangASTContext &ast_ctx, const char *name, bool for_expression) {
- clang::ASTContext *clang_ast = ast_ctx.getASTContext();
- if (!clang_ast)
- return CompilerType();
- return RealizeType(*clang_ast, name, for_expression);
-}
-
-ObjCLanguageRuntime::EncodingToType::~EncodingToType() {}
-
-ObjCLanguageRuntime::EncodingToTypeSP ObjCLanguageRuntime::GetEncodingToType() {
- return nullptr;
-}
-
-bool ObjCLanguageRuntime::GetTypeBitSize(const CompilerType &compiler_type,
- uint64_t &size) {
- void *opaque_ptr = compiler_type.GetOpaqueQualType();
- size = m_type_size_cache.Lookup(opaque_ptr);
- // an ObjC object will at least have an ISA, so 0 is definitely not OK
- if (size > 0)
- return true;
-
- ClassDescriptorSP class_descriptor_sp =
- GetClassDescriptorFromClassName(compiler_type.GetTypeName());
- if (!class_descriptor_sp)
- return false;
-
- int32_t max_offset = INT32_MIN;
- uint64_t sizeof_max = 0;
- bool found = false;
-
- for (size_t idx = 0; idx < class_descriptor_sp->GetNumIVars(); idx++) {
- const auto &ivar = class_descriptor_sp->GetIVarAtIndex(idx);
- int32_t cur_offset = ivar.m_offset;
- if (cur_offset > max_offset) {
- max_offset = cur_offset;
- sizeof_max = ivar.m_size;
- found = true;
- }
- }
-
- size = 8 * (max_offset + sizeof_max);
- if (found)
- m_type_size_cache.Insert(opaque_ptr, size);
-
- return found;
-}
-
-lldb::BreakpointPreconditionSP
-ObjCLanguageRuntime::GetBreakpointExceptionPrecondition(LanguageType language,
- bool throw_bp) {
- if (language != eLanguageTypeObjC)
- return lldb::BreakpointPreconditionSP();
- if (!throw_bp)
- return lldb::BreakpointPreconditionSP();
- BreakpointPreconditionSP precondition_sp(
- new ObjCLanguageRuntime::ObjCExceptionPrecondition());
- return precondition_sp;
-}
-
-// Exception breakpoint Precondition class for ObjC:
-void ObjCLanguageRuntime::ObjCExceptionPrecondition::AddClassName(
- const char *class_name) {
- m_class_names.insert(class_name);
-}
-
-ObjCLanguageRuntime::ObjCExceptionPrecondition::ObjCExceptionPrecondition() {}
-
-bool ObjCLanguageRuntime::ObjCExceptionPrecondition::EvaluatePrecondition(
- StoppointCallbackContext &context) {
- return true;
-}
-
-void ObjCLanguageRuntime::ObjCExceptionPrecondition::GetDescription(
- Stream &stream, lldb::DescriptionLevel level) {}
-
-Status ObjCLanguageRuntime::ObjCExceptionPrecondition::ConfigurePrecondition(
- Args &args) {
- Status error;
- if (args.GetArgumentCount() > 0)
- error.SetErrorString(
- "The ObjC Exception breakpoint doesn't support extra options.");
- return error;
-}
-
-llvm::Optional<CompilerType>
-ObjCLanguageRuntime::GetRuntimeType(CompilerType base_type) {
- CompilerType class_type;
- bool is_pointer_type = false;
-
- if (ClangASTContext::IsObjCObjectPointerType(base_type, &class_type))
- is_pointer_type = true;
- else if (ClangASTContext::IsObjCObjectOrInterfaceType(base_type))
- class_type = base_type;
- else
- return llvm::None;
-
- if (!class_type)
- return llvm::None;
-
- ConstString class_name(class_type.GetConstTypeName());
- if (!class_name)
- return llvm::None;
-
- TypeSP complete_objc_class_type_sp = LookupInCompleteClassCache(class_name);
- if (!complete_objc_class_type_sp)
- return llvm::None;
-
- CompilerType complete_class(
- complete_objc_class_type_sp->GetFullCompilerType());
- if (complete_class.GetCompleteType()) {
- if (is_pointer_type)
- return complete_class.GetPointerType();
- else
- return complete_class;
- }
-
- return llvm::None;
-}
More information about the lldb-commits
mailing list