Swift Memory Layout - GOTO Conference · Memory Vacuum tubes Mercury (or gin) delay line Magnetic...

Post on 19-Mar-2020

12 views 0 download

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

👍