Post on 19-Mar-2020
transcript
Swift Memory LayoutMike Ash
GOTO Copenhagen 2016
💤👌🎃🌈🗝📛🔕
About Memikeash.com plausible.coop NSBlog github.com/mikeash @mikeash
PHOTO
• What even is memory?
• Memory dumper program
• How Swift lays out data
Memory
Memory
MemoryVacuum tubes Mercury (or gin) delay line
Magnetic coreDRAM
Memory1 0
1 0 1 0 1 0 1 0
AA 1C 00 F8 ……….
Memory
AA 1C 00 F8 ……….
0 1 2 3 ……
Memory
01AA2C5EFF001101
0000000000000000
00000000000000FF
A0F31C228A177013...
081624…
Memory
01AA2C5EFF001101
0000000000000000
00000000000000FF
A0F31C228A177013...
00000000000000000000000000000008
…
00000000000000100000000000000018
01AA2C5EFF001101
0000000000000000
00000000000000FF
A0F31C228A177013...
00000001000000000000000100000008
…
00000001000000100000000100000018
.
.
.
Memory…
Memory - Big Picture0000000000000000
0000000100000000
00007FFFFFFFFFFF
FFFF800000000000
FFFFFFFFFFFFFFFF
NO
T TO
SC
ALE
01AA2C5EFF001101
0000000000000000
00000000000000FF
00000001000AE780...
00000001000000000000000100000008
…
00000001000000100000000100000018
.
.
.
Memory…
A0F31C228A177013
001101FFAE73800000000001000AE780
01AA2C5EFF001101
0000000000000000
00000000000000FF
00000001000AE780...
00000001000000000000000100000008
…
00000001000000100000000100000018
.
.
.
Memory…
A0F31C228A177013
001101FFAE73800000000001000AE780
01AA2C5EFF001101
0000000000000000
00000000000000FF
80E70A0001000000...
00000001000000000000000100000008
…
00000001000000100000000100000018
.
.
.
Memory…
A0F31C228A177013
001101FFAE73800000000001000AE780
MemoryStack Heap
Global Data
var x = …var y = …var z = x + ylet string = view.textlet text = view.stringlet count = array.count
UIView()NSObject()MyClass()YourClass()TheirClass()
malloc/free
"string constants""more string constants"class MyClass {}struct MyStruct {}protocol MyProtocol {}
Dumping Memoryvar x = ...bytes(of: &x)
func bytes<T>(of value: T) -> [UInt8] { ...}
Dumping Memory
https://github.com/mikeash/memorydumper2
http://tinyurl.com/swmem
http://www.www.reallyhugeurl.com/index.php/freak=no5zyn3o&ego.y=0p0iyjmf&lol=td2g2qxx&oed=gojsz0bh&oed=fheq2iqt&ego.x=g1c2s5daxsjkjhf&ssn=7kegc1kllfo1r0a&eat=qe4zk8hgmzvl827&oedeldritch=9qtni82cz8omnzk1x13twrw1qohhuhkrbuzr06q
8ya1evomdpsaglggcyhde4ksr5
Dumping Memory
Xcode 8
Swift 3
Dumping Memoryvar x = ...bytes(of: &x)
func bytes<T>(of value: T) -> [UInt8] { ...}
Dumping Memoryfunc bytes<T>(of value: T) -> [UInt8] { var value = value let size = MemoryLayout<T>.size return withUnsafePointer(to: &value, { $0.withMemoryRebound( to: UInt8.self, capacity: size, { Array(UnsafeBufferPointer( start: $0, count: size)) }) })}
Dumping Memory
let x = 0x0102030405060708print(bytes(of: x))print(bytes(of: 42))
[8, 7, 6, 5, 4, 3, 2, 1][42, 0, 0, 0, 0, 0, 0, 0]
Dumping Memoryfunc hexString<Seq: Sequence> (bytes: Seq, limit: Int? = nil, separator: String = " ") -> Stringwhere Seq.Iterator.Element == UInt8 { let spacesInterval = 8 var result = "" for (index, byte) in bytes.enumerated() { if let limit = limit, index >= limit { result.append("...") break } if index > 0 && index % spacesInterval == 0 { result.append(separator) } result.append(String(format: "%02x", byte)) } return result}
Dumping Memory
let x = 0x0102030405060708print(hexString(bytes: bytes(of: x)))print(hexString(bytes: bytes(of: 42)))
08070605040302012a00000000000000
Dumping Memorylet x = ...
0102030405060708...
Dumping Memorylet x = ...
0102030405060708...
a80148fbc9a100e0... 0081ff63abccffff...
00001fff78abcfff...
Pointers are Integers
struct Pointer { var address: UInt}
Pointers are Integers
buffer.withUnsafeBufferPointer({ bufferPointer in return bufferPointer.baseAddress?.withMemoryRebound( to: Pointer.self, capacity: bufferPointer.count / MemoryLayout<Pointer>.size, { let castBufferPointer = UnsafeBufferPointer( start: $0, count: bufferPointer.count / MemoryLayout<Pointer>.size) return Array(castBufferPointer) }) ?? [] })
Dumping Memory4200000000000000 900400cce67f0000 800300cce67f0000 400100cce67f0000
0x0000000000000042
0x00007fe6cc000490
0x00007fe6cc000380
0x00007fe6cc000140
Bad Pointers4200000000000000 900400cce67f0000 800300cce67f0000 400100cce67f0000
0x0000000000000042
0x00007fe6cc000490
0x00007fe6cc000380
0x00007fe6cc000140
………… ………… …………💥
Bad Pointersmach_vm_read_overwrite
Copy N bytes from X to Y
Similar to memcpy
Returns an error on invalid pointers
Bad Pointers
public func mach_vm_read_overwrite( _ target_task: vm_map_t, _ address: mach_vm_address_t, _ size: mach_vm_size_t, _ data: mach_vm_address_t, _ outsize: UnsafeMutablePointer<mach_vm_size_t>!) -> kern_return_t
Safe Readsfunc safeRead(ptr: Pointer, into: inout [UInt8]) -> Bool { let result = into.withUnsafeMutableBufferPointer( { bufferPointer -> kern_return_t in var outSize: mach_vm_size_t = 0 return mach_vm_read_overwrite( mach_task_self_, mach_vm_address_t(ptr), mach_vm_size_t(bufferPointer.count), mach_vm_address_t(bufferPointer.baseAddress), &outSize) }) return result == KERN_SUCCESS}
How Much to Read?Initial value: MemoryLayout<T>.size
Heap allocations: malloc_size
Code and Globals: scan with dladdrBonus: dladdr also gives names
Name Mangling_TFCs23_ContiguousArrayStorage32_getNonVerbatimBridgedHeapBufferfT_GVs11_HeapBufferSiPs9AnyObject__
➜ swift-demangle ➜
Swift._ContiguousArrayStorage._getNonVerbatimBridgedHeapBuffer () -> Swift._HeapBuffer<Swift.Int, Swift.AnyObject>
Strings
let lowerBound: UInt8 = 32let upperBound: UInt8 = 126 let pieces = buffer.split(whereSeparator: { !(lowerBound ... upperBound ~= $0) })let sufficientlyLongPieces = pieces.filter( { $0.count >= 4 })return sufficientlyLongPieces.map( { String(bytes: $0, encoding: .utf8)! })
Search for printable ASCII at least 4 characters long
Outputlet x = …
0102030405060708...
a80148fbc9a100e0... 0081ff63abccffff...
00001fff78abcfff...
Graphviz_100c001a0 [label="malloc 0x100c001a0 (16 bytes)404fc00001000000303ec00001000000"]_100c001a0 -> _100c04f40 [label="@0"]_100c001a0 -> _100c03e30 [label="@8"]_100c033f0 [label="malloc 0x100c033f0 (16 bytes)404fc000010000001a000c1000000020"]_100c033f0 -> _100c04f40 [label="@0"]_100c03e30 [label="malloc 0x100c03e30 (16 bytes)536f6d657468696e670048656c6c6f21Strings:SomethingHello!"]
Output
malloc 0x100c001a0 (16 bytes)404fc00001000000303ec00001000000
malloc 0x100c04f40 (16 bytes)4c6561662068657265000c10000000f0
Strings:Leaf here
@0
malloc 0x100c03e30 (16 bytes)536f6d657468696e670048656c6c6f21
Strings:Something
Hello!
@8
malloc 0x100c033f0 (16 bytes)404fc000010000001a000c1000000020
@0
malloc 0x100c02d80 (16 bytes)f033c00001000000a001c00001000000
@8 @0
unknown 0x7fff5fbff260 (8 bytes)802dc00001000000
@0
Memory Layouts
• Arch-specific (these are x86-64)
• Swift stuff depends on the compiler version
• Offsets, sizes, contents, meaning subject to change
• Still useful for debugging, general knowledge of how things work
C structs struct S { long x; long y; long z; }; S s = { 1, 2, 3 };
unknown 0x7fff5fbff2a0 (24 bytes)010000000000000002000000000000000300000000000000
C structs struct WithPadding { char a; char b; char c; short d; char e; int f; char g; long h; }; WithPadding withPadding = { 1, 2, 3, 4, 5, 6, 7, 8 };
unknown 0x7fff5fbff288 (24 bytes)010203000400050006000000070000000800000000000000
C++ classes class SimpleClass { public: long x; virtual void f() {} virtual void g() {} virtual void h() {} }; SimpleClass simpleClass; simpleClass.x = 1;
C++ classes
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
unknown 0x7fff5fbff250 (16 bytes)20d53900010000000100000000000000
vtable for DumpCMemory::SimpleClass 0x10039d520 (24 bytes)f019000001000000001a000001000000101a000001000000
@0
@16
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
C++ classes
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
unknown 0x7fff5fbff250 (16 bytes)20d53900010000000100000000000000
vtable for DumpCMemory::SimpleClass 0x10039d520 (24 bytes)f019000001000000001a000001000000101a000001000000
@0
@16
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
C++ classes class SimpleSubclass: public SimpleClass { public: long y; virtual void i() {} virtual void j() {} }; SimpleSubclass simpleSubclass; simpleSubclass.x = 1; simpleSubclass.y = 2;
C++ classes
DumpCMemory::SimpleSubclass::j() 0x100001a70 (16 bytes)554889e548897df85dc3660f1f440000
unknown 0x7fff5fbff238 (24 bytes)58d539000100000001000000000000000200000000000000
vtable for DumpCMemory::SimpleSubclass 0x10039d558 (40 bytes)f019000001000000001a000001000000101a000001000000601a000001000000701a000001000000
@0
@32
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
@16
DumpCMemory::SimpleSubclass::i() 0x100001a60 (16 bytes)554889e548897df85dc3660f1f440000
@24
C++ classes
DumpCMemory::SimpleSubclass::j() 0x100001a70 (16 bytes)554889e548897df85dc3660f1f440000
unknown 0x7fff5fbff238 (24 bytes)58d539000100000001000000000000000200000000000000
vtable for DumpCMemory::SimpleSubclass 0x10039d558 (40 bytes)f019000001000000001a000001000000101a000001000000601a000001000000701a000001000000
@0
@32
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
@16
DumpCMemory::SimpleSubclass::i() 0x100001a60 (16 bytes)554889e548897df85dc3660f1f440000
@24
C++ classes
class SecondSuperclass { public: long y; virtual void k() {} virtual void l() {} };
C++ classes class MultipleInheritanceSubclass: public SimpleClass, SecondSuperclass { public: long z; }; MultipleInheritanceSubclass multipleInheritanceSubclass; multipleInheritanceSubclass.x = 1; multipleInheritanceSubclass.y = 2; multipleInheritanceSubclass.z = 3;
C++ classes
__cxxabiv1::__vmi_class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const 0x7fff8952c4da (292 bytes)554889e54157415641554154534883ec284589ce448945d448894dc8488955c04889f34989fd488b43104584f67416498b7d08488b7008e8
2e0a000085c0750e...Strings:
AWAVAUATSH([A\A]A^A_]([A\A]A^A_]
typeinfo for DumpCMemory::MultipleInheritanceSubclass 0x10039d5f0 (56 bytes)98bc4778ff7f0000
10ad340001000000000000000200000038d53900010000000200000000000000e0d53900010000000010000000000000
vtable for __cxxabiv1::__vmi_class_type_info 0x7fff7847bc98 (72 bytes)c8b45289ff7f0000ceb45289ff7f0000ceb35289ff7f0000d0b35289ff7f00007ab55289ff7f0000dac45289ff7f0000e2bf5289ff7f0000
74b75289ff7f0000...
@0
typeinfo name for DumpCMemory::MultipleInheritanceSubclass 0x10034ad10 (48 bytes)5a313144756d70434d656d6f72794532374d756c7469706c65496e6865726974616e6365537562636c61737300000000
Strings:Z11DumpCMemoryE27MultipleInheritanceSubclass
@8
typeinfo for DumpCMemory::SimpleClass 0x10039d538 (16 bytes)b8bb4778ff7f0000d0ac340001000000
@24
typeinfo for DumpCMemory::SecondSuperclass 0x10039d5e0 (16 bytes)b8bb4778ff7f0000
40ad340001000000
@40
@40
__cxxabiv1::__class_type_info::can_catch(__cxxabiv1::__shim_type_info const*, void*&) const 0x7fff8952b57a (178 bytes)554889e54156534883ec504989d64889fbb0014839f30f848d0000004889f7e88e0000004885c0747e488945a048c745a80000000048895db048c745b8ffffff...
Strings:AVSHP[A^]
@32
__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() 0x7fff8952b4c8 (6 bytes)e9a517000090
@0
__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() 0x7fff8952b4ce (28 bytes)554889e553504889fbe8961700004889df4883c4085b5de9
76190000
@8
__cxxabiv1::__shim_type_info::noop1() const 0x7fff8952b3ce (2 bytes)c390
@16
__cxxabiv1::__shim_type_info::noop2() const 0x7fff8952b3d0 (2 bytes)c390
@24
__cxxabiv1::__vmi_class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const 0x7fff8952bfe2 (656 bytes)554889e54157415641554154534883ec184589c5894dd44989d74989f64889fb498b46104584ed74304c8b6308488b70084c89e7e8290f00
0085c00f84990000...Strings:
AWAVAUATSHt|I;
M9~ M9~(
[A\A]A^A_]
@48
__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const 0x7fff8952b774 (196 bytes)554889e5415741564155415453504189ce4989d74989f44889fb493b5c2410744d488d7b18448b6b144c89e64c89fa4489f1e88bffffff49
83fd02727849c1e5...Strings:
AWAVAUATSPAI;\$
D$ HD$<A|$ Et$0At$0H
[A\A]A^A_]
@56
vtable for __cxxabiv1::__class_type_info 0x7fff7847bbb8 (72 bytes)78b45289ff7f00007eb45289ff7f0000ceb35289ff7f0000d0b35289ff7f00007ab55289ff7f000082c65289ff7f000032c45289ff7f0000
acb65289ff7f0000...
@0
typeinfo name for DumpCMemory::SimpleClass 0x10034acd0 (32 bytes)5a313144756d70434d656d6f727945313153696d706c65436c61737300000000
Strings:Z11DumpCMemoryE11SimpleClass
@8 @0
typeinfo name for DumpCMemory::SecondSuperclass 0x10034ad40 (112 bytes)5a313144756d70434d656d6f72794531365365636f6e645375706572636c6173730000000000000000000000000000000056534337646c5f
696e666f00000000...Strings:
Z11DumpCMemoryE16SecondSuperclassVSC7dl_info
dli_fnamedli_fbasedli_snamedli_saddr
@8
@32
__cxxabiv1::__class_type_info::~__class_type_info() 0x7fff8952b47e (28 bytes)554889e553504889fbe8e61700004889df4883c4085b5de9
c6190000
@8
__cxxabiv1::__class_type_info::~__class_type_info() 0x7fff8952b478 (6 bytes)e9f517000090
@0
__cxxabiv1::__class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const 0x7fff8952b6ac (62 bytes)483b7e107537488b46204885c074154839d0741fff463cc7
463002000000c6464e01eb1948895620894e30c7463c01000000c3837e300275
04894e30c3c3
@56@16@24
__cxxabiv1::__class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const 0x7fff8952c682 (90 bytes)554889e5415741564154534589c64989cf4989d44889f3488b43104584c97413488b7f08488b7008e89508000085c07507eb0e4839c77409
5b415c415e415f5d...Strings:
AWAVATSE[A\A^A_][A\A^A_]
@40
__cxxabiv1::__class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const 0x7fff8952c432 (168 bytes)554889e5415741564154534189ce4989d74889f3488b43104584c074294c8b6708488b70084c89e7e8e50a000085c0744f488b03488b7008
4c89e7e8d20a0000...Strings:
AWAVATSAt5H;;uOL9{ t<L9{(t6D
[A\A^A_]
@48
unknown 0x7fff5fbff210 (40 bytes)a8d53900010000000100000000000000d0d539000100000030000000000000000200000000000000
vtable for DumpCMemory::MultipleInheritanceSubclass 0x10039d5a8 (56 bytes)f019000001000000001a000001000000101a000001000000
f0fffffffffffffff0d5390001000000001b000001000000101b000001000000
@0
vtable for DumpCMemory::MultipleInheritanceSubclass 0x10039d5d0 (16 bytes)001b000001000000101b000001000000
@16
@32
DumpCMemory::SecondSuperclass::k() 0x100001b00 (16 bytes)554889e548897df85dc3660f1f440000
@40
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SecondSuperclass::l() 0x100001b10 (16 bytes)554889e548897df85dc3909090909090
@48
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
@16@0@8
C++ classes
__cxxabiv1::__vmi_class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const 0x7fff8952c4da (292 bytes)554889e54157415641554154534883ec284589ce448945d448894dc8488955c04889f34989fd488b43104584f67416498b7d08488b7008e8
2e0a000085c0750e...Strings:
AWAVAUATSH([A\A]A^A_]([A\A]A^A_]
typeinfo for DumpCMemory::MultipleInheritanceSubclass 0x10039d5f0 (56 bytes)98bc4778ff7f000010ad340001000000000000000200000038d53900010000000200000000000000e0d53900010000000210000000000000
vtable for __cxxabiv1::__vmi_class_type_info 0x7fff7847bc98 (72 bytes)c8b45289ff7f0000ceb45289ff7f0000ceb35289ff7f0000d0b35289ff7f00007ab55289ff7f0000dac45289ff7f0000e2bf5289ff7f0000
74b75289ff7f0000...
@0
typeinfo name for DumpCMemory::MultipleInheritanceSubclass 0x10034ad10 (48 bytes)5a313144756d70434d656d6f72794532374d756c7469706c65496e6865726974616e6365537562636c61737300000000
Strings:Z11DumpCMemoryE27MultipleInheritanceSubclass
@8
typeinfo for DumpCMemory::SimpleClass 0x10039d538 (16 bytes)b8bb4778ff7f0000d0ac340001000000
@24
typeinfo for DumpCMemory::SecondSuperclass 0x10039d5e0 (16 bytes)b8bb4778ff7f000040ad340001000000
@40
@40
__cxxabiv1::__class_type_info::can_catch(__cxxabiv1::__shim_type_info const*, void*&) const 0x7fff8952b57a (178 bytes)554889e54156534883ec504989d64889fbb0014839f30f848d0000004889f7e88e0000004885c0747e488945a048c745a80000000048895db048c745b8ffffff...
Strings:AVSHP[A^]
@32
__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() 0x7fff8952b4c8 (6 bytes)e9a517000090
@0
__cxxabiv1::__vmi_class_type_info::~__vmi_class_type_info() 0x7fff8952b4ce (28 bytes)554889e553504889fbe8961700004889df4883c4085b5de9
76190000
@8
__cxxabiv1::__shim_type_info::noop1() const 0x7fff8952b3ce (2 bytes)c390
@16
__cxxabiv1::__shim_type_info::noop2() const 0x7fff8952b3d0 (2 bytes)c390
@24
__cxxabiv1::__vmi_class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const 0x7fff8952bfe2 (656 bytes)554889e54157415641554154534883ec184589c5894dd44989d74989f64889fb498b46104584ed74304c8b6308488b70084c89e7e8290f00
0085c00f84990000...Strings:
AWAVAUATSHt|I;
M9~ M9~(
[A\A]A^A_]
@48
__cxxabiv1::__vmi_class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const 0x7fff8952b774 (196 bytes)554889e5415741564155415453504189ce4989d74989f44889fb493b5c2410744d488d7b18448b6b144c89e64c89fa4489f1e88bffffff49
83fd02727849c1e5...Strings:
AWAVAUATSPAI;\$
D$ HD$<A
|$ Et$0At$0H
[A\A]A^A_]
@56
vtable for __cxxabiv1::__class_type_info 0x7fff7847bbb8 (72 bytes)78b45289ff7f00007eb45289ff7f0000ceb35289ff7f0000d0b35289ff7f00007ab55289ff7f000082c65289ff7f000032c45289ff7f0000
acb65289ff7f0000...
@0
typeinfo name for DumpCMemory::SimpleClass 0x10034acd0 (32 bytes)5a313144756d70434d656d6f727945313153696d706c65436c61737300000000
Strings:Z11DumpCMemoryE11SimpleClass
@8 @0
typeinfo name for DumpCMemory::SecondSuperclass 0x10034ad40 (112 bytes)5a313144756d70434d656d6f72794531365365636f6e645375706572636c6173730000000000000000000000000000000056534337646c5f
696e666f00000000...Strings:
Z11DumpCMemoryE16SecondSuperclassVSC7dl_info
dli_fnamedli_fbasedli_snamedli_saddr
@8
@32
__cxxabiv1::__class_type_info::~__class_type_info() 0x7fff8952b47e (28 bytes)554889e553504889fbe8e61700004889df4883c4085b5de9
c6190000
@8
__cxxabiv1::__class_type_info::~__class_type_info() 0x7fff8952b478 (6 bytes)e9f517000090
@0
__cxxabiv1::__class_type_info::has_unambiguous_public_base(__cxxabiv1::__dynamic_cast_info*, void*, int) const 0x7fff8952b6ac (62 bytes)483b7e107537488b46204885c074154839d0741fff463cc7
463002000000c6464e01eb1948895620894e30c7463c01000000c3837e300275
04894e30c3c3
@56@16@24
__cxxabiv1::__class_type_info::search_above_dst(__cxxabiv1::__dynamic_cast_info*, void const*, void const*, int, bool) const 0x7fff8952c682 (90 bytes)554889e5415741564154534589c64989cf4989d44889f3488b43104584c97413488b7f08488b7008e89508000085c07507eb0e4839c77409
5b415c415e415f5d...Strings:
AWAVATSE[A\A^A_][A\A^A_]
@40
__cxxabiv1::__class_type_info::search_below_dst(__cxxabiv1::__dynamic_cast_info*, void const*, int, bool) const 0x7fff8952c432 (168 bytes)554889e5415741564154534189ce4989d74889f3488b43104584c074294c8b6708488b70084c89e7e8e50a000085c0744f488b03488b7008
4c89e7e8d20a0000...Strings:
AWAVATSAt5H;;uOL9{ t<L9{(t6D
[A\A^A_]
@48
unknown 0x7fff5fbff210 (40 bytes)a8d53900010000000100000000000000d0d539000100000002000000000000000300000000000000
vtable for DumpCMemory::MultipleInheritanceSubclass 0x10039d5a8 (56 bytes)f019000001000000001a000001000000101a000001000000
f0fffffffffffffff0d5390001000000001b000001000000101b000001000000
@0
vtable for DumpCMemory::MultipleInheritanceSubclass 0x10039d5d0 (16 bytes)001b000001000000101b000001000000
@16
@32
DumpCMemory::SecondSuperclass::k() 0x100001b00 (16 bytes)554889e548897df85dc3660f1f440000
@40
DumpCMemory::SimpleClass::f() 0x1000019f0 (16 bytes)554889e548897df85dc3660f1f440000
@0
DumpCMemory::SecondSuperclass::l() 0x100001b10 (16 bytes)554889e548897df85dc3909090909090
@48
DumpCMemory::SimpleClass::g() 0x100001a00 (16 bytes)554889e548897df85dc3660f1f440000
@8
DumpCMemory::SimpleClass::h() 0x100001a10 (16 bytes)554889e548897df85dc3660f1f440000
@16@0@8
Swift Typesstruct EmptyStruct {}
unknown 0x7fff5fbff2a0 (0 bytes)
Swift Typesstruct SimpleStruct { var x: Int = 1 var y: Int = 2 var z: Int = 3}
unknown 0x7fff5fbff2a0 (24 bytes)010000000000000002000000000000000300000000000000
Swift Typesstruct StructWithPadding { var a: UInt8 = 1 var b: UInt8 = 2 var c: UInt8 = 3 var d: UInt16 = 4 var e: UInt8 = 5 var f: UInt32 = 6 var g: UInt8 = 7 var h: UInt64 = 8}
unknown 0x7fff5fbff2a0 (24 bytes)0102035f0400050006000000077f00000800000000000000
Swift Types
class SimpleClass { var x: Int = 1 var y: Int = 2 var z: Int = 3}
Swift Types
unknown 0x100d050e5 (128 bytes)000000107c3c0001000000000000000000000000000000000000000000000000000000000000000000000000133d00010000000000000000
0000000000000000...
memorydumper2.SimpleClass.y.setter : Swift.Int 0x10000b910 (32 bytes)554889e548897df8488975f048897e185dc366666666662e0f1f840000000000
Strings:fffff.
memorydumper2.SimpleClass.z.getter : Swift.Int 0x10000b950 (16 bytes)554889e548897df8488b47205dc36690
OBJC_METACLASS_$_SwiftObject 0x1003d0c00 (40 bytes)000c3d0001000000d80b3d00010000006027d000010000000300000001000000c420d00001000000
@0
ObjC class SwiftObject 0x1003d0bd8 (40 bytes)000c3d00010000000000000000000000e00dff8cff7f0000
00000000000000002427d00001000000
@8
malloc 0x100d02760 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033dbb49bff7f0000
b0e2330001000000...
@16
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24
unknown 0x100d020c4 (128 bytes)07000000d8d93c000100000000d53c00010000000000000000000000c0d93c000100000008c28e0001000000000000000000000000000000
0000000000000000...
@32
@0
_objc_empty_cache 0x7fff8cff0de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
unknown 0x100d02724 (128 bytes)0000000010de3c000100000020da3c0001000000c8dd3c0001000000c0d93c000100000098c18e0001000000000000000000000000000000
0000000000000000...
@32
@72
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9bb4db33 (128 bytes)636c6173730069734b696e644f66436c6173733a0073657453656c6563743a00736574433a007365744d3a00736574466163746f723a0073
65744e756d4b6579...Strings:
classisKindOfClass:
setSelect:setC:setM:
setFactor:setNumKey:
setSeeds:setG:
setRankTable:setKeys2:
setKeyLen:setSubShare
@48
+[SwiftObject class] 0x10033e2b0 (16 bytes)4889f8c36666662e0f1f840000000000
Strings:fff.
@56
ObjC class memorydumper2.SimpleClass 0x1003d13b8 (184 bytes)80133d0001000000d80b3d0001000000e00dff8cff7f0000
0000000000000000e550d0000100000003000000000000002800000007000000
c800000010000000...
@32 @112 @128 @8
metaclass for memorydumper2.SimpleClass 0x1003d1380 (40 bytes)000c3d0001000000000c3d00010000002051d0000100000003000000010000008454d00001000000
@0
@16memorydumper2.SimpleClass.x.getter : Swift.Int 0x10000b8b0 (16 bytes)
554889e548897df8488b47105dc36690
@80
memorydumper2.SimpleClass.x.setter : Swift.Int 0x10000b8c0 (32 bytes)554889e548897df8488975f048897e105dc366666666662e0f1f840000000000
Strings:fffff.
@88
memorydumper2.SimpleClass.x.materializeForSet : Swift.Int 0x10000b8e0 (32 bytes)554889e54883c21031c089c14889d04889ca488975f848897df05dc30f1f4000
@96
memorydumper2.SimpleClass.y.getter : Swift.Int 0x10000b900 (16 bytes)554889e548897df8488b47185dc36690
@104
memorydumper2.SimpleClass.y.materializeForSet : Swift.Int 0x10000b930 (32 bytes)554889e54883c21831c089c14889d04889ca488975f848897df05dc30f1f4000
@120
memorydumper2.SimpleClass.z.setter : Swift.Int 0x10000b960 (32 bytes)554889e548897df8488975f048897e205dc366666666662e0f1f840000000000
Strings:fffff.
@136
memorydumper2.SimpleClass.z.materializeForSet : Swift.Int 0x10000b980 (32 bytes)554889e54883c22031c089c14889d04889ca488975f848897df05dc30f1f4000
@144
memorydumper2.SimpleClass.init () -> memorydumper2.SimpleClass 0x10000b9a0 (48 bytes)554889e548c747100100000048c747180200000048c74720030000004889f85dc36666666666662e0f1f840000000000
Strings:ffffff.
@152
@0 @8
@24
unknown 0x100d05484 (128 bytes)07000000607b3c00010000000000000000000000000000000000000000000000000000000000000000000000c8123d000100000000000000
000000005f547447...Strings:
_TtGCs22_NativeSetStorageOwnerSS_
@32
malloc 0x100d05120 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033dbb49bff7f0000
b0e2330001000000...
@16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@120
@48 @56
@72
Instance of memorydumper2.SimpleClass 0x100d05170 (48 bytes)b8133d00010000000400000002000000010000000000000002000000000000000300000000000000
ffffffffffffffff
@0
Swift Types
unknown 0x100d050e5 (128 bytes)000000107c3c0001000000000000000000000000000000000000000000000000000000000000000000000000133d00010000000000000000
0000000000000000...
memorydumper2.SimpleClass.y.setter : Swift.Int 0x10000b910 (32 bytes)554889e548897df8488975f048897e185dc366666666662e0f1f840000000000
Strings:fffff.
memorydumper2.SimpleClass.z.getter : Swift.Int 0x10000b950 (16 bytes)554889e548897df8488b47205dc36690
OBJC_METACLASS_$_SwiftObject 0x1003d0c00 (40 bytes)000c3d0001000000d80b3d00010000006027d000010000000300000001000000c420d00001000000
@0
ObjC class SwiftObject 0x1003d0bd8 (40 bytes)000c3d00010000000000000000000000e00dff8cff7f0000
00000000000000002427d00001000000
@8
malloc 0x100d02760 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033dbb49bff7f0000
b0e2330001000000...
@16
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24
unknown 0x100d020c4 (128 bytes)07000000d8d93c000100000000d53c00010000000000000000000000c0d93c000100000008c28e0001000000000000000000000000000000
0000000000000000...
@32
@0
_objc_empty_cache 0x7fff8cff0de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
unknown 0x100d02724 (128 bytes)0000000010de3c000100000020da3c0001000000c8dd3c0001000000c0d93c000100000098c18e0001000000000000000000000000000000
0000000000000000...
@32
@72
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9bb4db33 (128 bytes)636c6173730069734b696e644f66436c6173733a0073657453656c6563743a00736574433a007365744d3a00736574466163746f723a0073
65744e756d4b6579...Strings:
classisKindOfClass:
setSelect:setC:setM:
setFactor:setNumKey:
setSeeds:setG:
setRankTable:setKeys2:
setKeyLen:setSubShare
@48
+[SwiftObject class] 0x10033e2b0 (16 bytes)4889f8c36666662e0f1f840000000000
Strings:fff.
@56
ObjC class memorydumper2.SimpleClass 0x1003d13b8 (184 bytes)80133d0001000000d80b3d0001000000e00dff8cff7f0000
0000000000000000e550d0000100000003000000000000002800000007000000
c800000010000000...
@32 @112 @128 @8
metaclass for memorydumper2.SimpleClass 0x1003d1380 (40 bytes)000c3d0001000000000c3d00010000002051d0000100000003000000010000008454d00001000000
@0
@16memorydumper2.SimpleClass.x.getter : Swift.Int 0x10000b8b0 (16 bytes)
554889e548897df8488b47105dc36690
@80
memorydumper2.SimpleClass.x.setter : Swift.Int 0x10000b8c0 (32 bytes)554889e548897df8488975f048897e105dc366666666662e0f1f840000000000
Strings:fffff.
@88
memorydumper2.SimpleClass.x.materializeForSet : Swift.Int 0x10000b8e0 (32 bytes)554889e54883c21031c089c14889d04889ca488975f848897df05dc30f1f4000
@96
memorydumper2.SimpleClass.y.getter : Swift.Int 0x10000b900 (16 bytes)554889e548897df8488b47185dc36690
@104
memorydumper2.SimpleClass.y.materializeForSet : Swift.Int 0x10000b930 (32 bytes)554889e54883c21831c089c14889d04889ca488975f848897df05dc30f1f4000
@120
memorydumper2.SimpleClass.z.setter : Swift.Int 0x10000b960 (32 bytes)554889e548897df8488975f048897e205dc366666666662e0f1f840000000000
Strings:fffff.
@136
memorydumper2.SimpleClass.z.materializeForSet : Swift.Int 0x10000b980 (32 bytes)554889e54883c22031c089c14889d04889ca488975f848897df05dc30f1f4000
@144
memorydumper2.SimpleClass.init () -> memorydumper2.SimpleClass 0x10000b9a0 (48 bytes)554889e548c747100100000048c747180200000048c74720030000004889f85dc36666666666662e0f1f840000000000
Strings:ffffff.
@152
@0 @8
@24
unknown 0x100d05484 (128 bytes)07000000607b3c00010000000000000000000000000000000000000000000000000000000000000000000000c8123d000100000000000000
000000005f547447...Strings:
_TtGCs22_NativeSetStorageOwnerSS_
@32
malloc 0x100d05120 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033dbb49bff7f0000
b0e2330001000000...
@16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@120
@48 @56
@72
Instance of memorydumper2.SimpleClass 0x100d05170 (48 bytes)b8133d00010000000400000002000000010000000000000002000000000000000300000000000000
ffffffffffffffff
@0
Swift Types
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659db33 (128 bytes)636c6173730069734b696e644f66436c6173733a0073657453656c6563743a00736574433a007365744d3a00736574466163746f723a0073
65744e756d4b6579...Strings:
classisKindOfClass:
setSelect:setC:setM:
setFactor:setNumKey:
setSeeds:setG:
setRankTable:setKeys2:
setKeyLen:setSubShare
Instance of memorydumper2.ClassWithPadding 0x101700c00 (48 bytes)00063d000100000004000000020000000102030004000500060000000700000008000000000000004f00171000000300
ObjC class memorydumper2.ClassWithPadding 0x1003d0600 (344 bytes)c8053d000100000030fd3c0001000000e02d018aff7f0000
0000000000000000950c70010100000003000000000000002800000007000000
6801000010000000...
@0
memorydumper2.ClassWithPadding.a.setter : Swift.UInt8 0x10000c050 (32 bytes)554889e54088f88845f8488975f08846105dc3666666662e0f1f840000000000
Strings:ffff.
@88
memorydumper2.ClassWithPadding.d.getter : Swift.UInt16 0x10000c130 (16 bytes)554889e548897df8668b47145dc36690
@152
memorydumper2.ClassWithPadding.b.setter : Swift.UInt8 0x10000c0a0 (32 bytes)554889e54088f88845f8488975f08846115dc3666666662e0f1f840000000000
Strings:ffff.
@112
memorydumper2.ClassWithPadding.d.materializeForSet : Swift.UInt16 0x10000c160 (32 bytes)554889e54883c21431c089c14889d04889ca488975f848897df05dc30f1f4000
@168
memorydumper2.ClassWithPadding.f.getter : Swift.UInt32 0x10000c1d0 (16 bytes)554889e548897df88b47185dc30f1f00
@200
memorydumper2.ClassWithPadding.f.setter : Swift.UInt32 0x10000c1e0 (16 bytes)554889e5897df8488975f0897e185dc3
@208
ObjC class SwiftObject 0x1003cfd30 (40 bytes)58fd3c00010000000000000000000000e02d018aff7f0000
00000000000000009427600101000000
@8
memorydumper2.ClassWithPadding.g.setter : Swift.UInt8 0x10000c220 (32 bytes)554889e54088f88845f8488975f088461c5dc3666666662e0f1f840000000000
Strings:ffff.
@232
memorydumper2.ClassWithPadding.h.setter : Swift.UInt64 0x10000c270 (32 bytes)554889e548897df8488975f048897e205dc366666666662e0f1f840000000000
Strings:fffff.
@256
memorydumper2.ClassWithPadding.e.getter : Swift.UInt8 0x10000c180 (16 bytes)554889e548897df88a47165dc30f1f00
@176
memorydumper2.ClassWithPadding.c.getter : Swift.UInt8 0x10000c0e0 (16 bytes)554889e548897df88a47125dc30f1f00
@128
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
unknown 0x101700c95 (128 bytes)000000f86e3c0001000000000000000000000000000000000000000000000000000000000000000000000010053d00010000000000000000
0000000000000000...
@32
memorydumper2.ClassWithPadding.c.setter : Swift.UInt8 0x10000c0f0 (32 bytes)554889e54088f88845f8488975f08846125dc3666666662e0f1f840000000000
Strings:ffff.
@136
metaclass for memorydumper2.ClassWithPadding 0x1003d05c8 (40 bytes)58fd3c000100000058fd3c0001000000d00c7001010000000300000001000000540c700101000000
@0
memorydumper2.ClassWithPadding.a.getter : Swift.UInt8 0x10000c040 (16 bytes)554889e548897df88a47105dc30f1f00
@80
memorydumper2.ClassWithPadding.a.materializeForSet : Swift.UInt8 0x10000c070 (32 bytes)554889e54883c21031c089c14889d04889ca488975f848897df05dc30f1f4000
@96
memorydumper2.ClassWithPadding.b.getter : Swift.UInt8 0x10000c090 (16 bytes)554889e548897df88a47115dc30f1f00
@104
memorydumper2.ClassWithPadding.b.materializeForSet : Swift.UInt8 0x10000c0c0 (32 bytes)554889e54883c21131c089c14889d04889ca488975f848897df05dc30f1f4000
@120
memorydumper2.ClassWithPadding.c.materializeForSet : Swift.UInt8 0x10000c110 (32 bytes)554889e54883c21231c089c14889d04889ca488975f848897df05dc30f1f4000
@144
memorydumper2.ClassWithPadding.d.setter : Swift.UInt16 0x10000c140 (32 bytes)554889e56689f8668945f8488975f0668946145dc366662e0f1f840000000000
@160
memorydumper2.ClassWithPadding.e.setter : Swift.UInt8 0x10000c190 (32 bytes)554889e54088f88845f8488975f08846165dc3666666662e0f1f840000000000
Strings:ffff.
@184
memorydumper2.ClassWithPadding.e.materializeForSet : Swift.UInt8 0x10000c1b0 (32 bytes)554889e54883c21631c089c14889d04889ca488975f848897df05dc30f1f4000
@192
memorydumper2.ClassWithPadding.f.materializeForSet : Swift.UInt32 0x10000c1f0 (32 bytes)554889e54883c21831c089c14889d04889ca488975f848897df05dc30f1f4000
@216
memorydumper2.ClassWithPadding.g.getter : Swift.UInt8 0x10000c210 (16 bytes)554889e548897df88a471c5dc30f1f00
@224
memorydumper2.ClassWithPadding.g.materializeForSet : Swift.UInt8 0x10000c240 (32 bytes)554889e54883c21c31c089c14889d04889ca488975f848897df05dc30f1f4000
@240
memorydumper2.ClassWithPadding.h.getter : Swift.UInt64 0x10000c260 (16 bytes)554889e548897df8488b47205dc36690
@248
memorydumper2.ClassWithPadding.h.materializeForSet : Swift.UInt64 0x10000c290 (32 bytes)554889e54883c22031c089c14889d04889ca488975f848897df05dc30f1f4000
@264
memorydumper2.ClassWithPadding.init () -> memorydumper2.ClassWithPadding 0x10000c2b0 (64 bytes)554889e5c6471001c6471102c647120366c747140400c6471605c7471806000000c6471c0748c74720080000004889f85dc366666666662e0f1f840000000000
Strings:fffff.
@272
unknown 0x101700c54 (128 bytes)07000000a86d3c00010000000000000000000000000000000000000000000000000000000000000000000000d8043d000100000000000000
0000000000000880...
unknown 0x101602754 (128 bytes)0700000028cb3c000100000050c63c0001000000000000000000000010cb3c000100000008d21a0101000000000000000000000000000000
0000000000000880...
OBJC_METACLASS_$_SwiftObject 0x1003cfd58 (40 bytes)58fd3c000100000030fd3c0001000000d02760010100000003000000010000005427600101000000
@32
@0
@8
malloc 0x1016027d0 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@16
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24@0
@16
unknown 0x101602794 (128 bytes)0000000060cf3c000100000070cb3c000100000018cf3c000100000010cb3c000100000098d11a0101000000000000000000000000000000
0000000000000000...
@32 @48
@72
+[SwiftObject class] 0x10033cdc0 (16 bytes)4889f8c36666662e0f1f840000000000
Strings:fff.
@56
malloc 0x101700cd0 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@48
@72
@56
@32@0 @8
@24 @16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@120
class ClassWithPadding { var a: UInt8 = 1 var b: UInt8 = 2 var c: UInt8 = 3 var d: UInt16 = 4 var e: UInt8 = 5 var f: UInt32 = 6 var g: UInt8 = 7 var h: UInt64 = 8}
Swift Types
class (isa)
retain counts
stored properties
stored properties
Object
Swift Types
class (isa)
retain counts
stored properties
stored properties
Object
strong count weak count
Swift Types
class (isa)
retain counts
stored properties
stored properties
Object
class (isa)
Class
Swift Types
11001isa10011
retain counts
stored properties
stored properties
Object
class (isa)
Class
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659db33 (128 bytes)636c6173730069734b696e644f66436c6173733a0073657453656c6563743a00736574433a007365744d3a00736574466163746f723a0073
65744e756d4b6579...Strings:
classisKindOfClass:
setSelect:setC:setM:
setFactor:setNumKey:
setSeeds:setG:
setRankTable:setKeys2:
setKeyLen:setSubShare
Instance of memorydumper2.ClassWithPadding 0x101700c00 (48 bytes)00063d000100000004000000020000000102030004000500060000000700000008000000000000004f00171000000300
ObjC class memorydumper2.ClassWithPadding 0x1003d0600 (344 bytes)c8053d000100000030fd3c0001000000e02d018aff7f0000
0000000000000000950c70010100000003000000000000002800000007000000
6801000010000000...
@0
memorydumper2.ClassWithPadding.a.setter : Swift.UInt8 0x10000c050 (32 bytes)554889e54088f88845f8488975f08846105dc3666666662e0f1f840000000000
Strings:ffff.
@88
memorydumper2.ClassWithPadding.d.getter : Swift.UInt16 0x10000c130 (16 bytes)554889e548897df8668b47145dc36690
@152
memorydumper2.ClassWithPadding.b.setter : Swift.UInt8 0x10000c0a0 (32 bytes)554889e54088f88845f8488975f08846115dc3666666662e0f1f840000000000
Strings:ffff.
@112
memorydumper2.ClassWithPadding.d.materializeForSet : Swift.UInt16 0x10000c160 (32 bytes)554889e54883c21431c089c14889d04889ca488975f848897df05dc30f1f4000
@168
memorydumper2.ClassWithPadding.f.getter : Swift.UInt32 0x10000c1d0 (16 bytes)554889e548897df88b47185dc30f1f00
@200
memorydumper2.ClassWithPadding.f.setter : Swift.UInt32 0x10000c1e0 (16 bytes)554889e5897df8488975f0897e185dc3
@208
ObjC class SwiftObject 0x1003cfd30 (40 bytes)58fd3c00010000000000000000000000e02d018aff7f0000
00000000000000009427600101000000
@8
memorydumper2.ClassWithPadding.g.setter : Swift.UInt8 0x10000c220 (32 bytes)554889e54088f88845f8488975f088461c5dc3666666662e0f1f840000000000
Strings:ffff.
@232
memorydumper2.ClassWithPadding.h.setter : Swift.UInt64 0x10000c270 (32 bytes)554889e548897df8488975f048897e205dc366666666662e0f1f840000000000
Strings:fffff.
@256
memorydumper2.ClassWithPadding.e.getter : Swift.UInt8 0x10000c180 (16 bytes)554889e548897df88a47165dc30f1f00
@176
memorydumper2.ClassWithPadding.c.getter : Swift.UInt8 0x10000c0e0 (16 bytes)554889e548897df88a47125dc30f1f00
@128
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
unknown 0x101700c95 (128 bytes)000000f86e3c0001000000000000000000000000000000000000000000000000000000000000000000000010053d00010000000000000000
0000000000000000...
@32
memorydumper2.ClassWithPadding.c.setter : Swift.UInt8 0x10000c0f0 (32 bytes)554889e54088f88845f8488975f08846125dc3666666662e0f1f840000000000
Strings:ffff.
@136
metaclass for memorydumper2.ClassWithPadding 0x1003d05c8 (40 bytes)58fd3c000100000058fd3c0001000000d00c7001010000000300000001000000540c700101000000
@0
memorydumper2.ClassWithPadding.a.getter : Swift.UInt8 0x10000c040 (16 bytes)554889e548897df88a47105dc30f1f00
@80
memorydumper2.ClassWithPadding.a.materializeForSet : Swift.UInt8 0x10000c070 (32 bytes)554889e54883c21031c089c14889d04889ca488975f848897df05dc30f1f4000
@96
memorydumper2.ClassWithPadding.b.getter : Swift.UInt8 0x10000c090 (16 bytes)554889e548897df88a47115dc30f1f00
@104
memorydumper2.ClassWithPadding.b.materializeForSet : Swift.UInt8 0x10000c0c0 (32 bytes)554889e54883c21131c089c14889d04889ca488975f848897df05dc30f1f4000
@120
memorydumper2.ClassWithPadding.c.materializeForSet : Swift.UInt8 0x10000c110 (32 bytes)554889e54883c21231c089c14889d04889ca488975f848897df05dc30f1f4000
@144
memorydumper2.ClassWithPadding.d.setter : Swift.UInt16 0x10000c140 (32 bytes)554889e56689f8668945f8488975f0668946145dc366662e0f1f840000000000
@160
memorydumper2.ClassWithPadding.e.setter : Swift.UInt8 0x10000c190 (32 bytes)554889e54088f88845f8488975f08846165dc3666666662e0f1f840000000000
Strings:ffff.
@184
memorydumper2.ClassWithPadding.e.materializeForSet : Swift.UInt8 0x10000c1b0 (32 bytes)554889e54883c21631c089c14889d04889ca488975f848897df05dc30f1f4000
@192
memorydumper2.ClassWithPadding.f.materializeForSet : Swift.UInt32 0x10000c1f0 (32 bytes)554889e54883c21831c089c14889d04889ca488975f848897df05dc30f1f4000
@216
memorydumper2.ClassWithPadding.g.getter : Swift.UInt8 0x10000c210 (16 bytes)554889e548897df88a471c5dc30f1f00
@224
memorydumper2.ClassWithPadding.g.materializeForSet : Swift.UInt8 0x10000c240 (32 bytes)554889e54883c21c31c089c14889d04889ca488975f848897df05dc30f1f4000
@240
memorydumper2.ClassWithPadding.h.getter : Swift.UInt64 0x10000c260 (16 bytes)554889e548897df8488b47205dc36690
@248
memorydumper2.ClassWithPadding.h.materializeForSet : Swift.UInt64 0x10000c290 (32 bytes)554889e54883c22031c089c14889d04889ca488975f848897df05dc30f1f4000
@264
memorydumper2.ClassWithPadding.init () -> memorydumper2.ClassWithPadding 0x10000c2b0 (64 bytes)554889e5c6471001c6471102c647120366c747140400c6471605c7471806000000c6471c0748c74720080000004889f85dc366666666662e0f1f840000000000
Strings:fffff.
@272
unknown 0x101700c54 (128 bytes)07000000a86d3c00010000000000000000000000000000000000000000000000000000000000000000000000d8043d000100000000000000
0000000000000880...
unknown 0x101602754 (128 bytes)0700000028cb3c000100000050c63c0001000000000000000000000010cb3c000100000008d21a0101000000000000000000000000000000
0000000000000880...
OBJC_METACLASS_$_SwiftObject 0x1003cfd58 (40 bytes)58fd3c000100000030fd3c0001000000d02760010100000003000000010000005427600101000000
@32
@0
@8
malloc 0x1016027d0 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@16
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24@0
@16
unknown 0x101602794 (128 bytes)0000000060cf3c000100000070cb3c000100000018cf3c000100000010cb3c000100000098d11a0101000000000000000000000000000000
0000000000000000...
@32 @48
@72
+[SwiftObject class] 0x10033cdc0 (16 bytes)4889f8c36666662e0f1f840000000000
Strings:fff.
@56
malloc 0x101700cd0 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@48
@72
@56
@32@0 @8
@24 @16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@120
Objective-C Classeshttp://opensource.apple.com/source/objc4/
runtime.h
Objective-C Classes Class isa Class super_class const char *name long version long info long instance_size struct objc_ivar_list *ivars struct objc_method_list **methodLists struct objc_cache *cache struct objc_protocol_list *protocols
Swift Classes
uint32_t flags; uint32_t instanceAddressOffset; uint32_t instanceSize; uint16_t instanceAlignMask; uint16_t reserved;
uint32_t classSize; uint32_t classAddressOffset; void *description;
Swift Classes
class (isa)
...
...
Method 1
Class
Method 2
Method 3
Method 4
Method Calls
class (isa)
...
...
Method 1
Method 2
Method 3
Method 4
obj.method()
class = obj->isamethodf = class[method_offset]methodf(obj)
Subclassesclass DeepClassSuper1 { var a = 1}class DeepClassSuper2: DeepClassSuper1 { var b = 2}class DeepClassSuper3: DeepClassSuper2 { var c = 3}class DeepClass: DeepClassSuper3 { var d = 4}
Subclasses
memorydumper2.DeepClassSuper1.init () -> memorydumper2.DeepClassSuper1 0x10000c400 (32 bytes)554889e548c74710010000004889f85dc36666666666662e0f1f840000000000
Strings:ffffff.
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659db33 (128 bytes)636c6173730069734b696e644f66436c6173733a0073657453656c6563743a00736574433a007365744d3a00736574466163746f723a0073
65744e756d4b6579...Strings:
classisKindOfClass:
setSelect:setC:setM:
setFactor:setNumKey:
setSeeds:setG:
setRankTable:setKeys2:
setKeyLen:setSubShare
ObjC class memorydumper2.DeepClass 0x1003d0a00 (216 bytes)c8093d000100000010093d0001000000e02d018aff7f0000
0000000000000000651020010100000003000000000000003000000007000000
e800000010000000...
metaclass for memorydumper2.DeepClass 0x1003d09c8 (40 bytes)58fd3c0001000000d8083d000100000060112001010000000300000001000000b40d200101000000
@0
ObjC class memorydumper2.DeepClassSuper3 0x1003d0910 (184 bytes)d8083d000100000040083d0001000000e02d018aff7f0000
0000000000000000a51020010100000003000000000000002800000007000000
c800000010000000...
@8
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
unknown 0x101201065 (128 bytes)000000d8713c0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000088000...
@32
memorydumper2.DeepClassSuper1.a.getter : Swift.Int 0x10000c3b0 (16 bytes)554889e548897df8488b47105dc36690
@80
memorydumper2.DeepClassSuper1.a.setter : Swift.Int 0x10000c3c0 (32 bytes)554889e548897df8488975f048897e105dc366666666662e0f1f840000000000
Strings:fffff.
@88
memorydumper2.DeepClassSuper1.a.materializeForSet : Swift.Int 0x10000c3e0 (32 bytes)554889e54883c21031c089c14889d04889ca488975f848897df05dc30f1f4000
@96
memorydumper2.DeepClass.init () -> memorydumper2.DeepClass 0x10000c720 (48 bytes)554889e54883ec1048897df848c7472804000000e8d7feffff488945f84883c4105dc3666666662e0f1f840000000000
Strings:ffff.
@104
memorydumper2.DeepClassSuper2.b.getter : Swift.Int 0x10000c4b0 (16 bytes)554889e548897df8488b47185dc36690
@120
memorydumper2.DeepClassSuper2.b.setter : Swift.Int 0x10000c4c0 (32 bytes)554889e548897df8488975f048897e185dc366666666662e0f1f840000000000
Strings:fffff.
@128
memorydumper2.DeepClassSuper2.b.materializeForSet : Swift.Int 0x10000c4e0 (32 bytes)554889e54883c21831c089c14889d04889ca488975f848897df05dc30f1f4000
@136
memorydumper2.DeepClassSuper3.c.getter : Swift.Int 0x10000c5c0 (16 bytes)554889e548897df8488b47205dc36690
@152
memorydumper2.DeepClassSuper3.c.setter : Swift.Int 0x10000c5d0 (32 bytes)554889e548897df8488975f048897e205dc366666666662e0f1f840000000000
Strings:fffff.
@160
memorydumper2.DeepClassSuper3.c.materializeForSet : Swift.Int 0x10000c5f0 (32 bytes)554889e54883c22031c089c14889d04889ca488975f848897df05dc30f1f4000
@168memorydumper2.DeepClass.d.getter : Swift.Int 0x10000c6d0 (16 bytes)
554889e548897df8488b47285dc36690
@184
memorydumper2.DeepClass.d.setter : Swift.Int 0x10000c6e0 (32 bytes)554889e548897df8488975f048897e285dc366666666662e0f1f840000000000
Strings:fffff.
@192
memorydumper2.DeepClass.d.materializeForSet : Swift.Int 0x10000c700 (32 bytes)554889e54883c22831c089c14889d04889ca488975f848897df05dc30f1f4000
@200
metaclass for memorydumper2.DeepClassSuper3 0x1003d08d8 (40 bytes)58fd3c000100000008083d0001000000e02d018aff7f0000
0000000000000000f40d200101000000
@8
OBJC_METACLASS_$_SwiftObject 0x1003cfd58 (40 bytes)58fd3c000100000030fd3c0001000000e00670010100000003000000010000006406700101000000
@0
unknown 0x101200db4 (128 bytes)0700000068713c00010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000008a0...
@32
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24
malloc 0x101201160 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@16
@16
@80 @88 @96
@120 @128 @136
@152 @160@168@0
ObjC class memorydumper2.DeepClassSuper2 0x1003d0840 (152 bytes)08083d000100000090073d0001000000e02d018aff7f0000
0000000000000000e51020010100000003000000000000002000000007000000
a800000010000000...
@8
unknown 0x1012010a5 (128 bytes)00000020713c0001000000000000000000000000000000000000000000000000000000000a3d000100000000000000000000000000000000
0000000000088000...
@32
memorydumper2.DeepClassSuper3.init () -> memorydumper2.DeepClassSuper3 0x10000c610 (48 bytes)554889e54883ec1048897df848c7472003000000e8d7feffff488945f84883c4105dc3666666662e0f1f840000000000
Strings:ffff.
@104
malloc 0x1017006e0 (80 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000
c0cd330001000000...
@48
@72
+[SwiftObject class] 0x10033cdc0 (16 bytes)4889f8c36666662e0f1f840000000000
Strings:fff.
@56
@16@0
metaclass for memorydumper2.DeepClassSuper2 0x1003d0808 (40 bytes)58fd3c000100000058073d0001000000e02d018aff7f0000
0000000000000000340e200101000000
@8
unknown 0x101200df4 (128 bytes)07000000b0703c0001000000000000000000000000000000000000000000000000000000c8093d0001000000000000000000000000000000
00000000000008a0...
@32
@16
@80 @88 @96
@120 @128 @136@0
ObjC class memorydumper2.DeepClassSuper1 0x1003d0790 (120 bytes)58073d000100000030fd3c0001000000e02d018aff7f0000
0000000000000000251120010100000003000000000000001800000007000000
8800000010000000...
@8
unknown 0x1012010e5 (128 bytes)00000068703c000100000000000000000000000000000000000000000000000000000010093d000100000000000000000000000000000000
0000000000088000...
@32
memorydumper2.DeepClassSuper2.init () -> memorydumper2.DeepClassSuper2 0x10000c500 (48 bytes)554889e54883ec1048897df848c7471802000000e8e7feffff488945f84883c4105dc3666666662e0f1f840000000000
Strings:ffff.
@104
Instance of memorydumper2.DeepClass 0x101200c90 (48 bytes)000a3d000100000004000000020000000100000000000000020000000000000003000000000000000400000000000000
@0
@16
@0
ObjC class SwiftObject 0x1003cfd30 (40 bytes)58fd3c00010000000000000000000000e02d018aff7f0000
0000000000000000a406700101000000
@8
@24
unknown 0x101700664 (128 bytes)0700000028cb3c000100000050c63c0001000000000000000000000010cb3c000100000008d21a0101000000000000000000000000000000
0000000000000880...
@32
@16@0
metaclass for memorydumper2.DeepClassSuper1 0x1003d0758 (40 bytes)58fd3c000100000058fd3c0001000000e02d018aff7f0000
0000000000000000740e200101000000
@8
unknown 0x101200e34 (128 bytes)07000000f86f3c0001000000000000000000000000000000000000000000000000000000d8083d0001000000000000000000000000000000
00000000000008a0...
@32
@16@0
unknown 0x1017006a4 (128 bytes)0000000060cf3c000100000070cb3c000100000018cf3c000100000010cb3c000100000098d11a0101000000000000000000000000000000
0000000000000000...
@32
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@16@0@8
unknown 0x101200e74 (128 bytes)07000000406f3c000100000000000000000000000000000000000000000000000000000008083d0001000000c8053d000100000000000000
0000000000000000...
@32
unknown 0x101201125 (128 bytes)000000b06f3c000100000000000000000000000000000000000000000000000000000040083d000100000000063d00010000000000000000
0000000000000000...
@104
@16
@80 @88 @96@8@0 @32
@120
@48 @56
@72
Arrays[1, 2, 3, 4, 5]
Arrays[1, 2, 3, 4, 5]
Swift._ContiguousArrayStorage1._withVerbatimBridgedUnsafeBuffer <A> ((Swift.UnsafeBufferPointer<Swift.AnyObject>) throws -> A) throws -> A? 0x1000f7a30 (592 bytes)554889e54157415641554154534883ec784c894d804c898578ffffff4989cd48
8955904889b570ffffff4889fb4c896d
d0488d3dc84a2f00488d75d0e88f790b...
Strings:AWAVAUATSH
T$XIx[A\A]A^A_]
ffffff.
Swift._ContiguousArrayStorageBase.withUnsafeBufferOfObjects <A> ((Swift.UnsafeBufferPointer<Swift.AnyObject>) throws -> A) throws -> A 0x1000f7570 (464 bytes)554889e54157415641554154534883ec584d89cc4d89c748894d984989d64989f548897da048894dd0488d3d904f2f00488d75d0e8577e0b
00488945a8488b48...Strings:
AWAVAUATSHX[A\A]A^A_]
ffff.
Instance of Swift._ContiguousArrayStorage<Swift.Int> 0x101501650 (80 bytes)40c31a0101000000080000000200000005000000000000000a00000000000000010000000000000002000000000000000300000000000000
0400000000000000...
ObjC class Swift._ContiguousArrayStorage<Swift.Int> 0x1011ac340 (128 bytes)e0c31a010100000098f63c0001000000e02d018aff7f0000
0000000000000000d51550010100000003000000000000001000000007000000
a800000010000000...
@0
@96 @88
ObjC class Swift._ContiguousArrayStorage1 0x1003cf698 (144 bytes)386d3e000100000008fc3c0001000000e02d018aff7f0000
0000000000000000a5c920010100000003000000000000001000000007000000
a000000010000000...
@8
swift_deletedMethodError 0x100329c40 (32 bytes)554889e5488d35826a030031ff31c0e84cffffff90909090
9090909090909090
@120
unknown 0x1011ac3e0 (128 bytes)18d1eb79ff7f0000
386d3e0001000000e02d018aff7f0000
0000000000000000141650010100000080000000100000001000000000000000
0000000000000000...
@0
Swift._ContiguousArrayStorage.init () -> Swift._ContiguousArrayStorage<A> 0x1000f88a0 (16 bytes)554889e54889f85dc30f1f8000000000
@80
Swift._ContiguousArrayStorage._getNonVerbatimBridgedHeapBuffer () -> Swift._HeapBuffer<Swift.Int, Swift.AnyObject> 0x1000f8250 (496 bytes)554889e54157415641554154534883ec5848897db0488b07488b5f1048895da84c8ba090000000488b3de2af2f004885ff7555488b05767e
2d004885c0752048...Strings:
AWAVAUATSHX[A\A]A^A_]
@112
unknown 0x1015015d5 (128 bytes)00000008c41a010100000030993c0001000000000000000000000000000000000000000000000000000000b8c11a01010000000000000000
0000000000088007...
@32
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
@16
Swift._ContiguousArrayStorage._getNonVerbatimBridgedCount () -> Swift.Int 0x1000f8240 (16 bytes)554889e5488b47105dc3660f1f440000
@104
unknown 0x7fff5fbff280 (8 bytes)5016500101000000
@0
Protocols
protocol P { func f() func g() func h()}
struct ProtocolHolder { var a: P var b: P var c: P}
Protocols
struct StructSmallP: P { func f() {} func g() {} func h() {} var a = 0x6c6c616d73 // "small"}
Protocolsstruct StructBigP: P { func f() {} func g() {} func h() {} var a = 0x656772616c // "large" var b = 0x1010101010101010 var c = 0x2020202020202020 var d = 0x3030303030303030}
Protocolsstruct ClassP: P { func f() {} func g() {} func h() {} var a = 0x7373616c63 // "class" var b = 0x4040404040404040 var c = 0x5050505050505050 var d = 0x6060606060606060}
Protocols
let holder = ProtocolHolder( a: StructSmallP(), b: StructBigP(), c: ClassP())
Protocols
protocol witness for Swift._ArrayBufferProtocol.requestUniqueMutableBackingBuffer (minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A.Element>? in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073500 (32 bytes)554889e54889f04889d64889c25de90d000000666666662e0f1f840000000000
Strings:ffff.
unknown 0x1011d7028 (128 bytes)10801d010100000028a01d010100000020672f0001000000d0932b000100000010942b0001000000601218000100000050942b0001000000
70942b0001000000...
Swift._ContiguousArrayStorage.__deallocating_deinit 0x1000f7e30 (96 bytes)554889e553504889fb488b03488b7310488b9090000000488b42f8488bb8900000000fb7cf4883c1204881cf0000ffff4881f7ffff000048
21cf4801dfff5068...
protocol witness for Swift._ArrayBufferProtocol.replace <A where A1: Swift.Collection, A.Element == A1.Iterator.Element> (subRange : Swift.Range<Swift.Int>, with : Swift.Int, elementsOf : A1) -> () in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073bd0 (112 bytes)554889e54157415641554154534883ec284d89cd4c8945d04989cf4989d44889f34989fe488b7518488d3d9936360031d2e84a552400488b
4d1048894c24104c...Strings:
AWAVAUATSH([A\A]A^A_]
Swift._ContiguousArrayStorage.init () -> Swift._ContiguousArrayStorage<A> 0x1000f88a0 (16 bytes)554889e54889f85dc30f1f8000000000
protocol witness table for memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10039ca90 (24 bytes)90cf000001000000e0cf00000100000030d0000001000000
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000cf90 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e805fdffff4883c4305d...
Strings:ffffff.
@0
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000cfe0 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8e5fcffff4883c4305d...
Strings:ffffff.
@8
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000d030 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8c5fcffff4883c4305d...
Strings:ffffff.
@16
type metadata accessor for Swift.CountableRange<Swift.Int> 0x100181260 (64 bytes)488b05c11c25004885c0752d554889e5488d3db1b12300488d357acf2200488d15b3d02200488d0de4d02200e88fc21000488905901c25005dc3660f1f440000
Strings:u-UH
unknown 0x1011d0008 (128 bytes)000000000000000020101d010100000028701d0101000000601218000100000030802a0001000000b0702f0001000000c02c070001000000
f02c070001000000...
@96 @16 @120 @24
unknown 0x1011d1020 (128 bytes)18201d010100000038501d010100000010672f000100000030932b000100000060402f0001000000a0402f00010000002040300001000000a0e72f0001000000...
@8
lazy protocol witness table accessor for type Swift.CountableRange<Swift.Int> and conformance <A where A: Swift.Comparable, A: Swift._Strideable, A.Stride: Swift.SignedInteger> Swift.CountableRange<A> : Swift.RandomAccessCollection in Swift 0x1002a8030 (32 bytes)554889e5488d3d5dbb1200488d35866213005de9781701000f1f840000000000
@32
associated type metadata accessor for Element in <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1002f70b0 (16 bytes)554889e55de93681fcff660f1f440000
@40
protocol witness for Swift._ArrayBufferProtocol.init () -> A in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072cc0 (48 bytes)554889e553504889fbe842f2fcff488d
05031038004889034889d84883c4085b5dc366666666662e0f1f840000000000
Strings:fffff.
@48
protocol witness for Swift._ArrayBufferProtocol.init (Swift._ContiguousArrayBuffer<A.Element>, shiftedToStartIndex : Swift.Int) -> A in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072cf0 (32 bytes)554889e553504889fb4889f7e80f0000
004889034889d84883c4085b5dc36690
@56
protocol witness for Swift._ArrayBufferProtocol._copyContents (subRange : Swift.Range<Swift.Int>, initializing : Swift.UnsafeMutablePointer<A.Element>) -> Swift.UnsafeMutablePointer<A.Element> in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072d20 (96 bytes)554889e5415741564155415453504989d64989f74989fc488b194d8b68204889dfe82aa92c004c89e74c89fe4c89f24889d94d89e8e89600
00004989c64889df...Strings:
AWAVAUATSPI[A\A]A^A_]
@64
protocol witness for Swift._ArrayBufferProtocol.subscript.getter : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1000731a0 (80 bytes)554889e5415741564154534989f64989ff488b1a4c8b61204889dfe8b0a42c004c89ff4c89f64889da4c89e1e87ff7fcff4889dfe837a52c
004c89f85b415c41...Strings:
AWAVATSI[A\A^A_]
@72
protocol witness for Swift._ArrayBufferProtocol.subscript.setter : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073450 (80 bytes)554889e5415741564154534989f64989ff488b1a4c8b61204889dfe800a22c004c89ff4c89f64889da4c89e1e8bf31fdff4889df5b415c41
5e415f5de97fa22c...Strings:
AWAVATSI[A\A^A_]
ffffff.
@80
protocol witness for Swift._ArrayBufferProtocol.subscript.materializeForSet : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1000734a0 (96 bytes)554889e5415741564155415453504989d64989f74989fc488b194d8b68204889dfe8aaa12c004c89e74c89fe4c89f24889d94d89e8e8b63bfdff4989c64989d7...
Strings:AWAVAUATSPI
[A\A]A^A_]
@88
protocol witness for Swift._ArrayBufferProtocol.isMutableAndUniquelyReferenced () -> Swift.Bool in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073620 (32 bytes)554889e54889f84889f74889c65de9fd020000666666662e0f1f840000000000
Strings:ffff.
@104
protocol witness for Swift._ArrayBufferProtocol.requestNativeBuffer () -> Swift._ContiguousArrayBuffer<A.Element>? in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073b20 (64 bytes)554889e5415653488b1f4c8b76204889dfe83a9b2c004889df4c89f6e81f0000004989c64889dfe8c49b2c004c89f05b415e5dc36666662e0f1f840000000000
Strings:AVSH[A^]fff.
@112
value witness table for Builtin.UnknownObject 0x1003c5908 (184 bytes)90c3320001000000a0c3320001000000c0c3320001000000d0c3320001000000e0c3320001000000f0c332000100000010c4320001000000
30c4320001000000...
type metadata for memorydumper2.StructBigP 0x10039d318 (56 bytes)0100000000000000
08d2faffffffffff00000000000000000000000000000000080000000000000010000000000000001800000000000000
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c8c0 (32 bytes)554889e54883ec10488b3f488975f8488955f0e838ffffff
4883c4105dc36690
type metadata for memorydumper2.MemoryRegion.Child 0x1003d03f8 (40 bytes)0100000000000000
089af7ffffffffff28033d000100000000000000000000000800000000000000
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cc30 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8e5fcffff4883c4305d...
Strings:ffffff.
type metadata for memorydumper2.ClassP 0x10039d3f8 (56 bytes)0100000000000000
78d1faffffffffff00000000000000000000000000000000080000000000000010000000000000001800000000000000
protocol witness table for memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10039ca78 (24 bytes)e0cb00000100000030cc00000100000080cc000001000000
@8
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cbe0 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e805fdffff4883c4305d...
Strings:ffffff.
@0
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cc80 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8c5fcffff4883c4305d...
Strings:ffffff.
@16
malloc 0x10140c330 (32 bytes)636c617373000000404040404040404050505050505050506060606060606060
Strings:class
@@@@@@@@PPPPPPPP````````
value witness table for Swift._ArrayBuffer 0x1003b95e0 (216 bytes)7058300001000000d0e22f0001000000a0f300000100000080e30000010000005058300001000000b0e22f0001000000d0da2f0001000000
702a300001000000...
unknown 0x1011ac568 (128 bytes)18d1eb79ff7f0000
386d3e0001000000e02d018aff7f0000
0000000000000000c4c840010100000080000000100000001000000000000000
0000000000000000...
unknown 0x10140c885 (128 bytes)00000090c51a010100000030993c000100000000000000000000000000000000000000000000000000000040c31a01010000000000000000
0000000000088007...
unknown 0x1011d00f8 (128 bytes)08001d0101000000a0101d010100000090701d0101000000601218000100000030802a0001000000b0702f0001000000c02c070001000000
f02c070001000000...
generic type metadata pattern for Swift.IteratorOverOne 0x1003f0045 (323 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
unknown 0x1011ac4a0 (128 bytes)18c31a0101000000c8c41a01010000000100000000000000307e0f000100000008593c000100000068c51a010100000098f63c0001000000e02d018aff7f0000...
@24 @120 @32 @56 @40 @72
unknown 0x1011ac318 (128 bytes)90c11a010100000040c31a01010000000100000000000000307e0f000100000008593c0001000000e0c31a010100000098f63c0001000000e02d018aff7f0000...
@0
ObjC class Swift._ContiguousArrayStorage<Swift.UInt8> 0x1011ac4c8 (128 bytes)68c51a010100000098f63c0001000000e02d018aff7f0000
000000000000000085c840010100000003000000000000001000000007000000
a800000010000000...
@8
ObjC class Swift._ContiguousArrayStorage1 0x1003cf698 (144 bytes)386d3e000100000008fc3c0001000000e02d018aff7f0000
0000000000000000b58d40010100000003000000000000001000000007000000
a000000010000000...
@48
unknown 0x10140c3b0 (128 bytes)fe8debdc06c7c5ee
0100000001000000a0c41a010100000020bd3b00010000000000000000000000e06f3001010000008f2376928ecfc543
0100000001740000...Strings:ZTUMZTUM
@64 @16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@8
type metadata for Swift.UInt8 0x1003bbd20 (32 bytes)0100000000000000
f833f9ffffffffff00000000000000000000000000000000
@24
malloc 0x101306fe0 (48 bytes)00000000000000000000000000000000f934ed8b8ecfc5e1
0100000001000000f8001d010100000080f01c0101000000
@40
unknown 0x1011cf028 (128 bytes)0100000000000000
28ef17ffffffffff0000000000000000000000000000000020bd3b00010000000000000000000000f8033d0001000000
08f01c0101000000...
@72
@32@24
unknown 0x1011cf080 (128 bytes)0100000000000000
d0ee17ffffffffff00000000000000000000000000000000f8033d000100000000000000000000000000000000000000
0000000000000000...
@40 @48 @120 @80 @32
unknown 0x1011cf008 (128 bytes)000000000000000028f01c01010000000100000000000000e0953b00010000000100000000000000
28ef17ffffffffff0000000000000000
0000000000000000...
@56@64
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c900 (32 bytes)554889e54883ec10488b3f488975f8488955f0e818ffffff
4883c4105dc36690
type metadata for memorydumper2.StructSmallP 0x10039d250 (32 bytes)0100000000000000
78d2faffffffffff00000000000000000000000000000000
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c8e0 (32 bytes)554889e54883ec10488b3f488975f8488955f0e828ffffff
4883c4105dc36690
malloc 0x10140c310 (32 bytes)6c61726765000000101010101010101020202020202020203030303030303030
Strings:large
00000000
protocol witness table for memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10039ca60 (24 bytes)c0c8000001000000e0c800000100000000c9000001000000
@0 @16 @8
malloc 0x10140c290 (120 bytes)736d616c6c0000000000000000000000470000000000000050d239000100000060ca39000100000010c340010100000045003f0001000000
ffffffffffffffff...Strings:small
@112 @64 @104 @72 @80 @48@88 @24 @40 @32
protocol witness for Swift._ArrayBufferProtocol.requestUniqueMutableBackingBuffer (minimumCapacity : Swift.Int) -> Swift._ContiguousArrayBuffer<A.Element>? in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073500 (32 bytes)554889e54889f04889d64889c25de90d000000666666662e0f1f840000000000
Strings:ffff.
unknown 0x1011d7028 (128 bytes)10801d010100000028a01d010100000020672f0001000000d0932b000100000010942b0001000000601218000100000050942b0001000000
70942b0001000000...
Swift._ContiguousArrayStorage.__deallocating_deinit 0x1000f7e30 (96 bytes)554889e553504889fb488b03488b7310488b9090000000488b42f8488bb8900000000fb7cf4883c1204881cf0000ffff4881f7ffff000048
21cf4801dfff5068...
protocol witness for Swift._ArrayBufferProtocol.replace <A where A1: Swift.Collection, A.Element == A1.Iterator.Element> (subRange : Swift.Range<Swift.Int>, with : Swift.Int, elementsOf : A1) -> () in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073bd0 (112 bytes)554889e54157415641554154534883ec284d89cd4c8945d04989cf4989d44889f34989fe488b7518488d3d9936360031d2e84a552400488b
4d1048894c24104c...Strings:
AWAVAUATSH([A\A]A^A_]
Swift._ContiguousArrayStorage.init () -> Swift._ContiguousArrayStorage<A> 0x1000f88a0 (16 bytes)554889e54889f85dc30f1f8000000000
protocol witness table for memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10039ca90 (24 bytes)90cf000001000000e0cf00000100000030d0000001000000
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000cf90 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e805fdffff4883c4305d...
Strings:ffffff.
@0
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000cfe0 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8e5fcffff4883c4305d...
Strings:ffffff.
@8
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.ClassP : memorydumper2.P in memorydumper2 0x10000d030 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8c5fcffff4883c4305d...
Strings:ffffff.
@16
type metadata accessor for Swift.CountableRange<Swift.Int> 0x100181260 (64 bytes)488b05c11c25004885c0752d554889e5488d3db1b12300488d357acf2200488d15b3d02200488d0de4d02200e88fc21000488905901c25005dc3660f1f440000
Strings:u-UH
unknown 0x1011d0008 (128 bytes)000000000000000020101d010100000028701d0101000000601218000100000030802a0001000000b0702f0001000000c02c070001000000
f02c070001000000...
@96 @16 @120 @24
unknown 0x1011d1020 (128 bytes)18201d010100000038501d010100000010672f000100000030932b000100000060402f0001000000a0402f00010000002040300001000000a0e72f0001000000...
@8
lazy protocol witness table accessor for type Swift.CountableRange<Swift.Int> and conformance <A where A: Swift.Comparable, A: Swift._Strideable, A.Stride: Swift.SignedInteger> Swift.CountableRange<A> : Swift.RandomAccessCollection in Swift 0x1002a8030 (32 bytes)554889e5488d3d5dbb1200488d35866213005de9781701000f1f840000000000
@32
associated type metadata accessor for Element in <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1002f70b0 (16 bytes)554889e55de93681fcff660f1f440000
@40
protocol witness for Swift._ArrayBufferProtocol.init () -> A in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072cc0 (48 bytes)554889e553504889fbe842f2fcff488d
05031038004889034889d84883c4085b5dc366666666662e0f1f840000000000
Strings:fffff.
@48
protocol witness for Swift._ArrayBufferProtocol.init (Swift._ContiguousArrayBuffer<A.Element>, shiftedToStartIndex : Swift.Int) -> A in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072cf0 (32 bytes)554889e553504889fb4889f7e80f0000
004889034889d84883c4085b5dc36690
@56
protocol witness for Swift._ArrayBufferProtocol._copyContents (subRange : Swift.Range<Swift.Int>, initializing : Swift.UnsafeMutablePointer<A.Element>) -> Swift.UnsafeMutablePointer<A.Element> in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100072d20 (96 bytes)554889e5415741564155415453504989d64989f74989fc488b194d8b68204889dfe82aa92c004c89e74c89fe4c89f24889d94d89e8e89600
00004989c64889df...Strings:
AWAVAUATSPI[A\A]A^A_]
@64
protocol witness for Swift._ArrayBufferProtocol.subscript.getter : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1000731a0 (80 bytes)554889e5415741564154534989f64989ff488b1a4c8b61204889dfe8b0a42c004c89ff4c89f64889da4c89e1e87ff7fcff4889dfe837a52c
004c89f85b415c41...Strings:
AWAVATSI[A\A^A_]
@72
protocol witness for Swift._ArrayBufferProtocol.subscript.setter : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073450 (80 bytes)554889e5415741564154534989f64989ff488b1a4c8b61204889dfe800a22c004c89ff4c89f64889da4c89e1e8bf31fdff4889df5b415c41
5e415f5de97fa22c...Strings:
AWAVATSI[A\A^A_]
ffffff.
@80
protocol witness for Swift._ArrayBufferProtocol.subscript.materializeForSet : (Swift.Int) -> A.Element in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x1000734a0 (96 bytes)554889e5415741564155415453504989d64989f74989fc488b194d8b68204889dfe8aaa12c004c89e74c89fe4c89f24889d94d89e8e8b63bfdff4989c64989d7...
Strings:AWAVAUATSPI
[A\A]A^A_]
@88
protocol witness for Swift._ArrayBufferProtocol.isMutableAndUniquelyReferenced () -> Swift.Bool in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073620 (32 bytes)554889e54889f84889f74889c65de9fd020000666666662e0f1f840000000000
Strings:ffff.
@104
protocol witness for Swift._ArrayBufferProtocol.requestNativeBuffer () -> Swift._ContiguousArrayBuffer<A.Element>? in conformance <A> Swift._ArrayBuffer<A> : Swift._ArrayBufferProtocol in Swift 0x100073b20 (64 bytes)554889e5415653488b1f4c8b76204889dfe83a9b2c004889df4c89f6e81f0000004989c64889dfe8c49b2c004c89f05b415e5dc36666662e0f1f840000000000
Strings:AVSH[A^]fff.
@112
value witness table for Builtin.UnknownObject 0x1003c5908 (184 bytes)90c3320001000000a0c3320001000000c0c3320001000000d0c3320001000000e0c3320001000000f0c332000100000010c4320001000000
30c4320001000000...
type metadata for memorydumper2.StructBigP 0x10039d318 (56 bytes)0100000000000000
08d2faffffffffff00000000000000000000000000000000080000000000000010000000000000001800000000000000
_objc_empty_cache 0x7fff8a012de0 (128 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c8c0 (32 bytes)554889e54883ec10488b3f488975f8488955f0e838ffffff
4883c4105dc36690
type metadata for memorydumper2.MemoryRegion.Child 0x1003d03f8 (40 bytes)0100000000000000
089af7ffffffffff28033d000100000000000000000000000800000000000000
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cc30 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8e5fcffff4883c4305d...
Strings:ffffff.
type metadata for memorydumper2.ClassP 0x10039d3f8 (56 bytes)0100000000000000
78d1faffffffffff00000000000000000000000000000000080000000000000010000000000000001800000000000000
protocol witness table for memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10039ca78 (24 bytes)e0cb00000100000030cc00000100000080cc000001000000
@8
protocol witness for memorydumper2.P.f () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cbe0 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e805fdffff4883c4305d...
Strings:ffffff.
@0
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.StructBigP : memorydumper2.P in memorydumper2 0x10000cc80 (80 bytes)554889e54883ec30488d45e0488b0f4c8b47084c8b4f10488b7f1848894de04c8945e84c894df048897df84889c7488975d8488955d0e8c5fcffff4883c4305d...
Strings:ffffff.
@16
malloc 0x10140c330 (32 bytes)636c617373000000404040404040404050505050505050506060606060606060
Strings:class
@@@@@@@@PPPPPPPP````````
value witness table for Swift._ArrayBuffer 0x1003b95e0 (216 bytes)7058300001000000d0e22f0001000000a0f300000100000080e30000010000005058300001000000b0e22f0001000000d0da2f0001000000
702a300001000000...
unknown 0x1011ac568 (128 bytes)18d1eb79ff7f0000
386d3e0001000000e02d018aff7f0000
0000000000000000c4c840010100000080000000100000001000000000000000
0000000000000000...
unknown 0x10140c885 (128 bytes)00000090c51a010100000030993c000100000000000000000000000000000000000000000000000000000040c31a01010000000000000000
0000000000088007...
unknown 0x1011d00f8 (128 bytes)08001d0101000000a0101d010100000090701d0101000000601218000100000030802a0001000000b0702f0001000000c02c070001000000
f02c070001000000...
generic type metadata pattern for Swift.IteratorOverOne 0x1003f0045 (323 bytes)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000...
unknown 0x1011ac4a0 (128 bytes)18c31a0101000000c8c41a01010000000100000000000000307e0f000100000008593c000100000068c51a010100000098f63c0001000000e02d018aff7f0000...
@24 @120 @32 @56 @40 @72
unknown 0x1011ac318 (128 bytes)90c11a010100000040c31a01010000000100000000000000307e0f000100000008593c0001000000e0c31a010100000098f63c0001000000e02d018aff7f0000...
@0
ObjC class Swift._ContiguousArrayStorage<Swift.UInt8> 0x1011ac4c8 (128 bytes)68c51a010100000098f63c0001000000e02d018aff7f0000
000000000000000085c840010100000003000000000000001000000007000000
a800000010000000...
@8
ObjC class Swift._ContiguousArrayStorage1 0x1003cf698 (144 bytes)386d3e000100000008fc3c0001000000e02d018aff7f0000
0000000000000000b58d40010100000003000000000000001000000007000000
a000000010000000...
@48
unknown 0x10140c3b0 (128 bytes)fe8debdc06c7c5ee
0100000001000000a0c41a010100000020bd3b00010000000000000000000000e06f3001010000008f2376928ecfc543
0100000001740000...Strings:ZTUMZTUM
@64 @16
unknown 0x100000001 (128 bytes)faedfe0700000103
000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f00000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@8
type metadata for Swift.UInt8 0x1003bbd20 (32 bytes)0100000000000000
f833f9ffffffffff00000000000000000000000000000000
@24
malloc 0x101306fe0 (48 bytes)00000000000000000000000000000000f934ed8b8ecfc5e1
0100000001000000f8001d010100000080f01c0101000000
@40
unknown 0x1011cf028 (128 bytes)0100000000000000
28ef17ffffffffff0000000000000000000000000000000020bd3b00010000000000000000000000f8033d0001000000
08f01c0101000000...
@72
@32@24
unknown 0x1011cf080 (128 bytes)0100000000000000
d0ee17ffffffffff00000000000000000000000000000000f8033d000100000000000000000000000000000000000000
0000000000000000...
@40 @48 @120 @80 @32
unknown 0x1011cf008 (128 bytes)000000000000000028f01c01010000000100000000000000e0953b00010000000100000000000000
28ef17ffffffffff0000000000000000
0000000000000000...
@56@64
protocol witness for memorydumper2.P.h () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c900 (32 bytes)554889e54883ec10488b3f488975f8488955f0e818ffffff
4883c4105dc36690
type metadata for memorydumper2.StructSmallP 0x10039d250 (32 bytes)0100000000000000
78d2faffffffffff00000000000000000000000000000000
protocol witness for memorydumper2.P.g () -> () in conformance memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10000c8e0 (32 bytes)554889e54883ec10488b3f488975f8488955f0e828ffffff
4883c4105dc36690
malloc 0x10140c310 (32 bytes)6c61726765000000101010101010101020202020202020203030303030303030
Strings:large
00000000
protocol witness table for memorydumper2.StructSmallP : memorydumper2.P in memorydumper2 0x10039ca60 (24 bytes)c0c8000001000000e0c800000100000000c9000001000000
@0 @16 @8
malloc 0x10140c290 (120 bytes)736d616c6c0000000000000000000000470000000000000050d239000100000060ca39000100000010c340010100000045003f0001000000
ffffffffffffffff...Strings:small
@112 @64 @104 @72 @80 @48@88 @24 @40 @32
Protocols
Protocols
data 1
data 2
data 3
type metadata
witness table
Protocols
data 1
data 2
data 3
type metadata
witness table
method f
method g
method h
Protocol Method Call
method f
method g
method h
let p: Protocol = …p.g()
table = p[4]methodf = table[offset]methodf(p)
Protocols
box pointer
type metadata
witness table
method f
method g
method h
data 1
data 2
data 3
data 4
data 5
Enumsenum SimpleEnum { case A, B, C, D, E}struct SimpleEnumHolder { var a: SimpleEnum var b: SimpleEnum var c: SimpleEnum var d: SimpleEnum var e: SimpleEnum}SimpleEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
Enumsenum SimpleEnum { case A, B, C, D, E}struct SimpleEnumHolder { var a: SimpleEnum var b: SimpleEnum var c: SimpleEnum var d: SimpleEnum var e: SimpleEnum}SimpleEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
unknown 0x7fff5fbff250 (5 bytes)0001020304
Enumsenum IntRawValueEnum: Int { case A = 1, B, C, D, E}struct IntRawValueEnumHolder { var a: IntRawValueEnum var b: IntRawValueEnum var c: IntRawValueEnum var d: IntRawValueEnum var e: IntRawValueEnum}IntRawValueEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
Enumsenum IntRawValueEnum: Int { case A = 1, B, C, D, E}struct IntRawValueEnumHolder { var a: IntRawValueEnum var b: IntRawValueEnum var c: IntRawValueEnum var d: IntRawValueEnum var e: IntRawValueEnum}IntRawValueEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
unknown 0x7fff5fbff210 (5 bytes)0001020304
Enumsenum StringRawValueEnum: String { case A = "whatever", B, C, D, E}struct StringRawValueEnumHolder { var a: StringRawValueEnum var b: StringRawValueEnum var c: StringRawValueEnum var d: StringRawValueEnum var e: StringRawValueEnum}StringRawValueEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
Enumsenum StringRawValueEnum: String { case A = "whatever", B, C, D, E}struct StringRawValueEnumHolder { var a: StringRawValueEnum var b: StringRawValueEnum var c: StringRawValueEnum var d: StringRawValueEnum var e: StringRawValueEnum}StringRawValueEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
unknown 0x7fff5fbff1f0 (5 bytes)0001020304
Enumsenum OneAssociatedObjectEnum { case A(AnyObject) case B, C, D, E}struct OneAssociatedObjectEnumHolder { var a: OneAssociatedObjectEnum var b: OneAssociatedObjectEnum var c: OneAssociatedObjectEnum var d: OneAssociatedObjectEnum var e: OneAssociatedObjectEnum}OneAssociatedObjectEnumHolder( a: .A(NSObject()), b: .B, c: .C, d: .D, e: .E)
Enums
malloc 0x1015069d0 (80 bytes)0000000000000000000000000000000000000000000000000000000000000000ead95996ff7f0000f09bff89ff7f0000
00000000000000000000000000000000...
@72
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659d9ea (128 bytes)696e697400616c6c6f63576974685a6f6e653a00657863657074696f6e576974684e616d653a726561736f6e3a75736572496e666f3a005f
616c6c6f63005f69...Strings:
initallocWithZone:
exceptionWithName:reason:userInfo:_alloc_initcopy
copyWithZone:retainCount
retainautorelease
countobje
@32
-[NSObject init] 0x7fff89ff9bf0 (16 bytes)554889e54889f85dc390909090909090
@40
ObjC class NSObject 0x7fff79ebd0f0 (40 bytes)18d1eb79ff7f0000
0000000000000000d06950010100000003000000010000005603200101000000
@16
OBJC_METACLASS_$_NSObject 0x7fff79ebd118 (40 bytes)18d1eb79ff7f0000f0d0eb79ff7f0000
900e40010100000007000000020000009403200101000000
@0
unknown 0x100000003 (128 bytes)fe0700000103000080020000001900000058120000850021000000000019000000480000005f5f504147455a45524f000000000000000000
0000000000000000...Strings:
__PAGEZERO__TEXT
@24
unknown 0x101200356 (128 bytes)000018cbeb79ff7f0000f147200101000000213b200101000000f8c6eb79ff7f00009847397bff7f
00000000000000000000000000000000
0000000009a00700...
@32@8
@0
malloc 0x101400e90 (144 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000dba0ff89ff7f0000...
@16
unknown 0x101200394 (128 bytes)0700000010c7eb79ff7f0000a1382001
010000000000000000000000f8c6eb79ff7f0000c047397bff7f000000000000
000000000000000000000000f0032001...
@32
Instance of NSObject 0x101400440 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
malloc 0x1014013c0 (40 bytes)40044001010000000000000000000000020000000000000004000000000000000600000000000000
@0
Enumsenum ManyAssociatedObjectsEnum { case A(AnyObject) case B(AnyObject) case C(AnyObject) case D(AnyObject) case E(AnyObject)}struct ManyAssociatedObjectsEnumHolder { var a: ManyAssociatedObjectsEnum var b: ManyAssociatedObjectsEnum var c: ManyAssociatedObjectsEnum var d: ManyAssociatedObjectsEnum var e: ManyAssociatedObjectsEnum}ManyAssociatedObjectsEnumHolder( a: .A(NSObject()), b: .B(NSObject()), c: .C(NSObject()), d: .D(NSObject()), e: .E(NSObject()))
Enums
Instance of NSObject 0x101305160 (16 bytes)f0d0eb79ff7f0000
0000000000000000
ObjC class NSObject 0x7fff79ebd0f0 (40 bytes)18d1eb79ff7f0000
000000000000000030a720010100000003000000020000005603200101000000
@0
OBJC_METACLASS_$_NSObject 0x7fff79ebd118 (40 bytes)18d1eb79ff7f0000f0d0eb79ff7f0000
305330010100000007000000020000009403200101000000
@0
unknown 0x101200356 (128 bytes)000018cbeb79ff7f
0000d148200101000000013c200101000000f8c6eb79ff7f00009847397bff7f
00000000000000000000000000000000
0000000009a00700...
@32
malloc 0x10120a730 (80 bytes)00000000000000000000000000000000d1d95996ff7f0000af7cff89ff7f0000ead95996ff7f0000f09bff89ff7f0000
00000000000000000000000000000000...
@16
malloc 0x101305330 (144 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000dba0ff89ff7f0000...
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659d9d1 (128 bytes)6465616c6c6f630066696e616c697a650072656c6561736500696e697400616c6c6f63576974685a6f6e653a00657863657074696f6e5769
74684e616d653a72...Strings:deallocfinalizerelease
initallocWithZone:
exceptionWithName:reason:userInfo:_alloc_initcopy
copyWithZone:retainCount
reta
-[NSObject dealloc] 0x7fff89ff7caf (10 bytes)554889e55de92b90
0000
Instance of NSObject 0x1013046d0 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
Instance of NSObject 0x1013058e0 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
Instance of NSObject 0x101302790 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
@8
@16
@0
unknown 0x101200394 (128 bytes)0700000010c7eb79ff7f000081392001
010000000000000000000000f8c6eb79ff7f0000c047397bff7f000000000000
000000000000000000000000f0032001...
@32
Instance of NSObject 0x101303470 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
malloc 0x1013053c0 (73 bytes)e058300101000000000000000000000060513001010000000100000000000000902730010100000002303030303002007034300101000000
0300000000000000...Strings:00000
@16 @64 @0 @32 @48
@16 @24
@72
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659d9ea (128 bytes)696e697400616c6c6f63576974685a6f6e653a00657863657074696f6e576974684e616d653a726561736f6e3a75736572496e666f3a005f
616c6c6f63005f69...Strings:
initallocWithZone:
exceptionWithName:reason:userInfo:_alloc_initcopy
copyWithZone:retainCount
retainautorelease
countobje
@32
-[NSObject init] 0x7fff89ff9bf0 (16 bytes)554889e54889f85dc390909090909090
@40
Wrapping Up
Wrapping Up
01AA2C5EFF001101
0000000000000000
00000000000000FF
A0F31C228A177013...
00000001000000000000000100000008
…
00000001000000100000000100000018
.
.
.…
Wrapping Up
Wrapping Up4200000000000000 900400cce67f0000 800300cce67f0000 400100cce67f0000
0x0000000000000042
0x00007fe6cc000490
0x00007fe6cc000380
0x00007fe6cc000140
………… ………… …………💥
Wrapping Up struct WithPadding { char a; char b; char c; short d; char e; int f; char g; long h; }; WithPadding withPadding = { 1, 2, 3, 4, 5, 6, 7, 8 };
unknown 0x7fff5fbff288 (24 bytes)010203000400050006000000070000000800000000000000
Wrapping Up
class (isa)
retain counts
stored properties
stored properties
Object
class (isa)
Class
Wrapping Up
box pointer
type metadata
witness table
method f
method g
method h
data 1
data 2
data 3
data 4
data 5
Wrapping Upenum SimpleEnum { case A, B, C, D, E}struct SimpleEnumHolder { var a: SimpleEnum var b: SimpleEnum var c: SimpleEnum var d: SimpleEnum var e: SimpleEnum}SimpleEnumHolder(a: .A, b: .B, c: .C, d: .D, e: .E)
unknown 0x7fff5fbff250 (5 bytes)0001020304
Wrapping Up
Instance of NSObject 0x101305160 (16 bytes)f0d0eb79ff7f0000
0000000000000000
ObjC class NSObject 0x7fff79ebd0f0 (40 bytes)18d1eb79ff7f0000
000000000000000030a720010100000003000000020000005603200101000000
@0
OBJC_METACLASS_$_NSObject 0x7fff79ebd118 (40 bytes)18d1eb79ff7f0000f0d0eb79ff7f0000
305330010100000007000000020000009403200101000000
@0
unknown 0x101200356 (128 bytes)000018cbeb79ff7f
0000d148200101000000013c200101000000f8c6eb79ff7f00009847397bff7f
00000000000000000000000000000000
0000000009a00700...
@32
malloc 0x10120a730 (80 bytes)00000000000000000000000000000000d1d95996ff7f0000af7cff89ff7f0000ead95996ff7f0000f09bff89ff7f0000
00000000000000000000000000000000...
@16
malloc 0x101305330 (144 bytes)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033db5996ff7f0000dba0ff89ff7f0000...
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659d9d1 (128 bytes)6465616c6c6f630066696e616c697a650072656c6561736500696e697400616c6c6f63576974685a6f6e653a00657863657074696f6e5769
74684e616d653a72...Strings:deallocfinalizerelease
initallocWithZone:
exceptionWithName:reason:userInfo:_alloc_initcopy
copyWithZone:retainCount
reta
-[NSObject dealloc] 0x7fff89ff7caf (10 bytes)554889e55de92b90
0000
Instance of NSObject 0x1013046d0 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
Instance of NSObject 0x1013058e0 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
Instance of NSObject 0x101302790 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
@8
@16
@0
unknown 0x101200394 (128 bytes)0700000010c7eb79ff7f000081392001
010000000000000000000000f8c6eb79ff7f0000c047397bff7f000000000000
000000000000000000000000f0032001...
@32
Instance of NSObject 0x101303470 (16 bytes)f0d0eb79ff7f0000
0000000000000000
@0
malloc 0x1013053c0 (73 bytes)e058300101000000000000000000000060513001010000000100000000000000902730010100000002303030303002007034300101000000
0300000000000000...Strings:00000
@16 @64 @0 @32 @48
@16 @24
@72
CreateStringFromFileSystemRepresentationByAddingPercentEscapes.hexchars 0x7fff9659d9ea (128 bytes)696e697400616c6c6f63576974685a6f6e653a00657863657074696f6e576974684e616d653a726561736f6e3a75736572496e666f3a005f
616c6c6f63005f69...Strings:
initallocWithZone:
exceptionWithName:reason:userInfo:_alloc_initcopy
copyWithZone:retainCount
retainautorelease
countobje
@32
-[NSObject init] 0x7fff89ff9bf0 (16 bytes)554889e54889f85dc390909090909090
@40
Wrapping Up• Data laid out linearly • Padded for alignment • Class instances have isa and refcounts first • Protocol values have 3 words of inline data • Larger data is boxed • Dynamic method dispatch uses vtables • Swift is powerful: all C-ish evil stuff available • Can learn a lot by poking around
Wrapping Up
👍