9#ifndef LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCCLASSDESCRIPTORV2_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGERUNTIME_OBJC_APPLEOBJCRUNTIME_APPLEOBJCCLASSDESCRIPTORV2_H
39 uint64_t *value_bits =
nullptr,
40 uint64_t *payload =
nullptr)
override {
45 int64_t *value_bits =
nullptr,
46 uint64_t *payload =
nullptr)
override {
56 std::function<
bool(
const char *,
const char *)>
const
57 &instance_method_func,
58 std::function<
bool(
const char *,
const char *)>
const &class_method_func,
59 std::function<
bool(
const char *,
const char *,
lldb::addr_t,
60 uint64_t)>
const &ivar_func)
const override;
170 lldb::addr_t relative_method_lists_base_addr,
bool,
bool);
229 std::unique_ptr<objc_class_t> &objc_class)
const;
232 std::unique_ptr<class_ro_t> &class_ro,
233 std::unique_ptr<class_rw_t> &class_rw)
const;
261 uint64_t u_payload, int64_t s_payload) {
262 if (!actual_class_sp) {
266 m_name = actual_class_sp->GetClassName();
306 uint64_t *value_bits =
nullptr,
307 uint64_t *payload =
nullptr)
override {
318 int64_t *value_bits =
nullptr,
319 uint64_t *payload =
nullptr)
override {
bool GetTaggedPointerInfoSigned(uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
~ClassDescriptorV2Tagged() override=default
ObjCLanguageRuntime::ClassDescriptorSP GetSuperclass() override
ObjCLanguageRuntime::ObjCISA GetISA() override
int64_t m_value_bits_signed
virtual uint64_t GetValueBits()
ClassDescriptorV2Tagged(ConstString class_name, uint64_t payload)
virtual uint64_t GetInfoBits()
virtual uint64_t GetPayload()
bool GetTaggedPointerInfo(uint64_t *info_bits=nullptr, uint64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from...
uint64_t GetInstanceSize() override
ObjCLanguageRuntime::ClassDescriptorSP GetMetaclass() const override
ClassDescriptorV2Tagged(ObjCLanguageRuntime::ClassDescriptorSP actual_class_sp, uint64_t u_payload, int64_t s_payload)
ConstString GetClassName() override
virtual int64_t GetValueBitsSigned()
ObjCLanguageRuntime::ClassDescriptorSP GetSuperclass() override
iVarsStorage m_ivars_storage
lldb::addr_t m_objc_class_ptr
AppleObjCRuntimeV2 & m_runtime
ObjCLanguageRuntime::ObjCISA GetISA() override
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
bool Read_class_row(Process *process, const objc_class_t &objc_class, std::unique_ptr< class_ro_t > &class_ro, std::unique_ptr< class_rw_t > &class_rw) const
~ClassDescriptorV2() override=default
ClassDescriptorV2(AppleObjCRuntimeV2 &runtime, ObjCLanguageRuntime::ObjCISA isa, const char *name)
ConstString GetClassName() override
static const uint32_t RW_REALIZED
bool Read_objc_class(Process *process, std::unique_ptr< objc_class_t > &objc_class) const
iVarDescriptor GetIVarAtIndex(size_t idx) override
void GetIVarInformation()
uint64_t GetInstanceSize() override
bool GetTaggedPointerInfoSigned(uint64_t *info_bits=nullptr, int64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
ObjCLanguageRuntime::ClassDescriptorSP GetMetaclass() const override
bool GetTaggedPointerInfo(uint64_t *info_bits=nullptr, uint64_t *value_bits=nullptr, uint64_t *payload=nullptr) override
There are two routines in the ObjC runtime that tagged pointer clients can call to get the value from...
size_t GetNumIVars() override
A uniqued constant string class.
std::shared_ptr< ClassDescriptor > ClassDescriptorSP
A plug-in interface definition class for debugging a process.
uint32_t GetAddressByteSize() const
A class that represents a running process on the host machine.
lldb::addr_t m_weakIvarLayout_ptr
lldb::addr_t m_ivarLayout_ptr
bool Read(Process *process, lldb::addr_t addr)
lldb::addr_t m_baseProtocols_ptr
lldb::addr_t m_baseMethods_ptr
lldb::addr_t m_baseProperties_ptr
lldb::addr_t m_properties_ptr
ObjCLanguageRuntime::ObjCISA m_nextSiblingClass
lldb::addr_t m_protocols_ptr
ObjCLanguageRuntime::ObjCISA m_firstSubclass
lldb::addr_t m_method_lists_ptr
lldb::addr_t m_method_list_ptr
bool Read(Process *process, lldb::addr_t addr)
bool Read(Process *process, lldb::addr_t addr)
static size_t GetSize(Process *process)
bool Read(Process *process, lldb::addr_t addr)
lldb::addr_t m_offset_ptr
bool m_has_direct_selector
bool Read(Process *process, lldb::addr_t addr)
bool Read(Process *process, lldb::addr_t addr, lldb::addr_t relative_method_lists_base_addr, bool, bool)
static size_t GetSize(Process *process, bool is_small)
bool Read(Process *process, lldb::addr_t addr)
lldb::addr_t m_vtable_ptr
ObjCLanguageRuntime::ObjCISA m_isa
ObjCLanguageRuntime::ObjCISA m_superclass