diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h | |
parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
download | src-14f1b3e8826ce43b978db93a62d1166055db5394.tar.gz src-14f1b3e8826ce43b978db93a62d1166055db5394.zip |
Vendor import of lldb trunk r290819:vendor/lldb/lldb-trunk-r290819
Notes
Notes:
svn path=/vendor/lldb/dist/; revision=311128
svn path=/vendor/lldb/lldb-trunk-r290819/; revision=311129; tag=vendor/lldb/lldb-trunk-r290819
Diffstat (limited to 'source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h')
-rw-r--r-- | source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h | 308 |
1 files changed, 131 insertions, 177 deletions
diff --git a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h index 9f9fcc69b682..3dddf1b094e1 100644 --- a/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h +++ b/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h @@ -14,194 +14,148 @@ // C++ Includes // Other libraries and framework includes // Project includes -#include "lldb/lldb-private.h" -#include "lldb/Target/ObjCLanguageRuntime.h" #include "AppleObjCRuntime.h" +#include "lldb/Target/ObjCLanguageRuntime.h" +#include "lldb/lldb-private.h" namespace lldb_private { - -class AppleObjCRuntimeV1 : - public AppleObjCRuntime -{ + +class AppleObjCRuntimeV1 : public AppleObjCRuntime { public: - ~AppleObjCRuntimeV1() override = default; - - //------------------------------------------------------------------ - // Static Functions - //------------------------------------------------------------------ - static void - Initialize(); - - static void - Terminate(); - - static lldb_private::LanguageRuntime * - CreateInstance(Process *process, lldb::LanguageType language); - - static lldb_private::ConstString - GetPluginNameStatic(); - - static bool classof(const ObjCLanguageRuntime* runtime) - { - switch (runtime->GetRuntimeVersion()) - { - case ObjCRuntimeVersions::eAppleObjC_V1: - return true; - default: - return false; - } + ~AppleObjCRuntimeV1() override = default; + + //------------------------------------------------------------------ + // Static Functions + //------------------------------------------------------------------ + static void Initialize(); + + static void Terminate(); + + static lldb_private::LanguageRuntime * + CreateInstance(Process *process, lldb::LanguageType language); + + static lldb_private::ConstString GetPluginNameStatic(); + + static bool classof(const ObjCLanguageRuntime *runtime) { + switch (runtime->GetRuntimeVersion()) { + case ObjCRuntimeVersions::eAppleObjC_V1: + return true; + default: + return false; } - - class ClassDescriptorV1 : public ObjCLanguageRuntime::ClassDescriptor - { - public: - ClassDescriptorV1 (ValueObject &isa_pointer); - ClassDescriptorV1 (ObjCISA isa, lldb::ProcessSP process_sp); - - ~ClassDescriptorV1() override = default; - - ConstString - GetClassName() override - { - return m_name; - } - - ClassDescriptorSP - GetSuperclass() override; - - ClassDescriptorSP - GetMetaclass() const override; - - bool - IsValid() override - { - return m_valid; - } - - // v1 does not support tagged pointers - bool - GetTaggedPointerInfo(uint64_t* info_bits = nullptr, - uint64_t* value_bits = nullptr, - uint64_t* payload = nullptr) override - { - return false; - } - - uint64_t - GetInstanceSize() override - { - return m_instance_size; - } - - ObjCISA - GetISA() override - { - return m_isa; - } - - bool - Describe(std::function <void (ObjCLanguageRuntime::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 override; - - protected: - void - Initialize (ObjCISA isa, lldb::ProcessSP process_sp); - - private: - ConstString m_name; - ObjCISA m_isa; - ObjCISA m_parent_isa; - bool m_valid; - lldb::ProcessWP m_process_wp; - uint64_t m_instance_size; - }; - - // These are generic runtime functions: - bool - GetDynamicTypeAndAddress(ValueObject &in_value, - lldb::DynamicValueType use_dynamic, - TypeAndOrName &class_type_or_name, - Address &address, - Value::ValueType &value_type) override; - - UtilityFunction * - CreateObjectChecker(const char *) override; - - //------------------------------------------------------------------ - // PluginInterface protocol - //------------------------------------------------------------------ - ConstString - GetPluginName() override; - - uint32_t - GetPluginVersion() override; - - ObjCRuntimeVersions - GetRuntimeVersion() const override - { - return ObjCRuntimeVersions::eAppleObjC_V1; + } + + class ClassDescriptorV1 : public ObjCLanguageRuntime::ClassDescriptor { + public: + ClassDescriptorV1(ValueObject &isa_pointer); + ClassDescriptorV1(ObjCISA isa, lldb::ProcessSP process_sp); + + ~ClassDescriptorV1() override = default; + + ConstString GetClassName() override { return m_name; } + + ClassDescriptorSP GetSuperclass() override; + + ClassDescriptorSP GetMetaclass() const override; + + bool IsValid() override { return m_valid; } + + // v1 does not support tagged pointers + bool GetTaggedPointerInfo(uint64_t *info_bits = nullptr, + uint64_t *value_bits = nullptr, + uint64_t *payload = nullptr) override { + return false; } - - void - UpdateISAToDescriptorMapIfNeeded() override; - - DeclVendor * - GetDeclVendor() override; + + uint64_t GetInstanceSize() override { return m_instance_size; } + + ObjCISA GetISA() override { return m_isa; } + + bool + Describe(std::function<void(ObjCLanguageRuntime::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 override; + + protected: + void Initialize(ObjCISA isa, lldb::ProcessSP process_sp); + + private: + ConstString m_name; + ObjCISA m_isa; + ObjCISA m_parent_isa; + bool m_valid; + lldb::ProcessWP m_process_wp; + uint64_t m_instance_size; + }; + + // These are generic runtime functions: + bool GetDynamicTypeAndAddress(ValueObject &in_value, + lldb::DynamicValueType use_dynamic, + TypeAndOrName &class_type_or_name, + Address &address, + Value::ValueType &value_type) override; + + UtilityFunction *CreateObjectChecker(const char *) override; + + //------------------------------------------------------------------ + // PluginInterface protocol + //------------------------------------------------------------------ + ConstString GetPluginName() override; + + uint32_t GetPluginVersion() override; + + ObjCRuntimeVersions GetRuntimeVersion() const override { + return ObjCRuntimeVersions::eAppleObjC_V1; + } + + void UpdateISAToDescriptorMapIfNeeded() override; + + DeclVendor *GetDeclVendor() override; protected: - lldb::BreakpointResolverSP - CreateExceptionResolver(Breakpoint *bkpt, bool catch_bp, bool throw_bp) override; - - class HashTableSignature - { - public: - HashTableSignature () : - m_count (0), - m_num_buckets (0), - m_buckets_ptr (LLDB_INVALID_ADDRESS) - { - } - - bool - NeedsUpdate (uint32_t count, - uint32_t num_buckets, - lldb::addr_t buckets_ptr) - { - return m_count != count || - m_num_buckets != num_buckets || - m_buckets_ptr != buckets_ptr ; - } - - void - UpdateSignature (uint32_t count, - uint32_t num_buckets, - lldb::addr_t buckets_ptr) - { - m_count = count; - m_num_buckets = num_buckets; - m_buckets_ptr = buckets_ptr; - } - - protected: - uint32_t m_count; - uint32_t m_num_buckets; - lldb::addr_t m_buckets_ptr; - }; - - lldb::addr_t - GetISAHashTablePointer (); - - HashTableSignature m_hash_signature; - lldb::addr_t m_isa_hash_table_ptr; - std::unique_ptr<DeclVendor> m_decl_vendor_ap; + lldb::BreakpointResolverSP CreateExceptionResolver(Breakpoint *bkpt, + bool catch_bp, + bool throw_bp) override; + + class HashTableSignature { + public: + HashTableSignature() + : m_count(0), m_num_buckets(0), m_buckets_ptr(LLDB_INVALID_ADDRESS) {} + + bool NeedsUpdate(uint32_t count, uint32_t num_buckets, + lldb::addr_t buckets_ptr) { + return m_count != count || m_num_buckets != num_buckets || + m_buckets_ptr != buckets_ptr; + } + + void UpdateSignature(uint32_t count, uint32_t num_buckets, + lldb::addr_t buckets_ptr) { + m_count = count; + m_num_buckets = num_buckets; + m_buckets_ptr = buckets_ptr; + } + + protected: + uint32_t m_count; + uint32_t m_num_buckets; + lldb::addr_t m_buckets_ptr; + }; + + lldb::addr_t GetISAHashTablePointer(); + + HashTableSignature m_hash_signature; + lldb::addr_t m_isa_hash_table_ptr; + std::unique_ptr<DeclVendor> m_decl_vendor_ap; private: - AppleObjCRuntimeV1(Process *process); + AppleObjCRuntimeV1(Process *process); }; - + } // namespace lldb_private #endif // liblldb_AppleObjCRuntimeV1_h_ |