typedef struct HeapObject { uintptr_t M; /* Metadata */ } HeapObject; typedef struct NominalTypeDescriptor { uintptr_t Zero; uintptr_t Name; } NominalTypeDescriptor; typedef struct ClassMetadata { uintptr_t Kind; struct ClassMetadata *super; void *data[2]; uintptr_t data2; uint32_t InstanceAddressPoint; uint32_t InstanceSize; uint16_t InstanceAlignMask; uint16_t Reserved; uint32_t ClassSize; uint32_t ClassAddressPoint; NominalTypeDescriptor *Descriptor; } ClassMetadata; pid$target:libswiftCore:swift_retain:entry / arg0 != 0 / { this->ptr = (HeapObject *)copyin(arg0, sizeof(HeapObject)); this->metadata = (ClassMetadata *)copyin(this->ptr->M, sizeof(ClassMetadata)); this->descriptor = (NominalTypeDescriptor *)copyin((uintptr_t)this->metadata->Descriptor, sizeof(NominalTypeDescriptor)); this->clsname = copyinstr(this->descriptor->Name); @type_count["swift_retain", this->clsname] = count(); @counts["swift_retain", "global"] = count(); } pid$target:libswiftCore:swift_release:entry / arg0 != 0 / { this->ptr = (HeapObject *)copyin(arg0, sizeof(HeapObject)); this->metadata = (ClassMetadata *)copyin(this->ptr->M, sizeof(ClassMetadata)); this->descriptor = (NominalTypeDescriptor *)copyin((uintptr_t)this->metadata->Descriptor, sizeof(NominalTypeDescriptor)); this->clsname = copyinstr(this->descriptor->Name); @type_count["swift_release", this->clsname] = count(); @counts["swift_release", "global"] = count(); } pid$target:libobjc:objc_retain:entry { @counts["objc_retain", "global"] = count(); } pid$target:libobjc:objc_release:entry { @counts["objc_release", "global"] = count(); }