@@ -63,9 +63,11 @@ Globals
63
63
global ::= context 'MXX' // anonymous context descriptor
64
64
global ::= context identifier 'MXY' // anonymous context descriptor
65
65
global ::= type assoc_type_path 'MXA' // generic parameter ref
66
- global ::= nominal-type 'Mo' // class metadata immediate member base offset
67
66
global ::= protocol 'Mp' // protocol descriptor
68
- global ::= protocol-conformance 'Mc' // protocol conformance descriptor
67
+ global ::= protocol 'WR' // protocol requirement table
68
+
69
+ global ::= nominal-type 'Mo' // class metadata immediate member base offset
70
+
69
71
global ::= type 'MF' // metadata for remote mirrors: field descriptor
70
72
global ::= type 'MB' // metadata for remote mirrors: builtin type descriptor
71
73
global ::= protocol-conformance 'MA' // metadata for remote mirrors: associated type descriptor
@@ -76,35 +78,27 @@ Globals
76
78
global ::= mangled-name 'Ta' // ObjC partial application forwarder
77
79
78
80
global ::= type 'w' VALUE-WITNESS-KIND // value witness
81
+
82
+ global ::= protocol-conformance 'Mc' // protocol conformance descriptor
83
+ global ::= protocol-conformance 'WP' // protocol witness table
79
84
global ::= protocol-conformance 'Wa' // protocol witness table accessor
85
+
80
86
global ::= protocol-conformance 'WG' // generic protocol witness table
87
+ global ::= protocol-conformance 'Wp' // protocol witness table pattern
88
+ global ::= protocol-conformance 'Wr' // resilient witness table
81
89
global ::= protocol-conformance 'WI' // generic protocol witness table instantiation function
82
90
global ::= type protocol-conformance 'WL' // lazy protocol witness table cache variable
83
- global ::= entity 'Wo' // witness table offset
84
- global ::= protocol-conformance 'WP' // protocol witness table
85
91
86
92
global ::= protocol-conformance identifier 'Wt' // associated type metadata accessor
87
93
global ::= protocol-conformance assoc_type_path nominal-type 'WT' // associated type witness table accessor
88
94
global ::= type protocol-conformance 'Wl' // lazy protocol witness table accessor
95
+
89
96
global ::= type 'WV' // value witness table
90
- global ::= entity 'Wv' DIRECTNESS // field offset
91
- global ::= entity 'WC' // resilient enum tag index
92
-
93
- global ::= type 'Wy' // Outlined Copy Function Type
94
- global ::= type 'We' // Outlined Consume Function Type
95
- global ::= type 'Wr' // Outlined Retain Function Type
96
- global ::= type 'Ws' // Outlined Release Function Type
97
- global ::= type 'Wb' INDEX // Outlined InitializeWithTake Function Type
98
- global ::= type 'Wc' INDEX // Outlined InitializeWithCopy Function Type
99
- global ::= type 'Wd' INDEX // Outlined AssignWithTake Function Type
100
- global ::= type 'Wf' INDEX // Outlined AssignWithCopy Function Type
101
- global ::= type 'Wh' INDEX // Outlined Destroy Function Type
97
+ global ::= entity 'Wvd' // field offset
98
+ global ::= entity 'WC' // resilient enum tag index
102
99
103
100
assoc_type_path ::= identifier '_' identifier*
104
101
105
- DIRECTNESS ::= 'd' // direct
106
- DIRECTNESS ::= 'i' // indirect
107
-
108
102
A direct symbol resolves directly to the address of an object. An
109
103
indirect symbol resolves to the address of a pointer to the object.
110
104
They are distinct manglings to make a certain class of bugs
@@ -175,6 +169,18 @@ The types in a reabstraction thunk helper function are always non-polymorphic
175
169
``<VALUE-WITNESS-KIND> `` differentiates the kinds of value
176
170
witness functions for a type.
177
171
172
+ ::
173
+
174
+ global ::= generic-signature? type 'WOy' // Outlined copy
175
+ global ::= generic-signature? type 'WOe' // Outlined consume
176
+ global ::= generic-signature? type 'WOr' // Outlined retain
177
+ global ::= generic-signature? type 'WOs' // Outlined release
178
+ global ::= generic-signature? type 'WOb' // Outlined initializeWithTake
179
+ global ::= generic-signature? type 'WOc' // Outlined initializeWithCopy
180
+ global ::= generic-signature? type 'WOd' // Outlined assignWithTake
181
+ global ::= generic-signature? type 'WOf' // Outlined assignWithCopy
182
+ global ::= generic-signature? type 'WOh' // Outlined destroy
183
+
178
184
Entities
179
185
~~~~~~~~
180
186
0 commit comments