[runtime] Compile cleanly with -Wc++-compat.
[mono.git] / mono / sgen / sgen-protocol-def.h
1 /*
2  * All binary protocol entries are defined here.  To keep compatibility with past binary
3  * protocol files, new protocol entries need to be defined at the end of the file so that
4  * the sequential numbering is preserved.  We also can't change the types or numbers of
5  * arguments of existing entries.  Instead, a new entry has to be added and the old entry
6  * retired - add a comment to make clear it's not used anymore, but it needs to stay in the
7  * definition file, both to preserve the numbering as well as for the benefit of
8  * `sgen-grep-binprot`, which will still want to read the old entries.
9  *
10  * It might become necessary to add a header protocol entry that includes version
11  * information.  If/when we do that, we should also include word length and endianness.  As
12  * of right now, binary protocol files don't identify themselves as 32 vs 64 bits or big- vs
13  * little-endian.  At that point, `sgen-grep-binprot` should also be made able to read all
14  * combinations of files, regardless of the host.
15  */
16
17 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_collection_requested, TYPE_INT, generation, TYPE_SIZE, requested_size, TYPE_BOOL, force)
18 DEFAULT_PRINT ()
19 IS_ALWAYS_MATCH (TRUE)
20 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
21 IS_VTABLE_MATCH (FALSE)
22 END_PROTOCOL_ENTRY
23
24 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_collection_begin, TYPE_INT, index, TYPE_INT, generation)
25 DEFAULT_PRINT ()
26 IS_ALWAYS_MATCH (TRUE)
27 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
28 IS_VTABLE_MATCH (FALSE)
29 END_PROTOCOL_ENTRY_FLUSH
30
31 BEGIN_PROTOCOL_ENTRY4 (binary_protocol_collection_end, TYPE_INT, index, TYPE_INT, generation, TYPE_LONGLONG, num_scanned_objects, TYPE_LONGLONG, num_unique_scanned_objects)
32 CUSTOM_PRINT (printf ("%d generation %d scanned %lld unique %lld %0.2f%%", entry->index, entry->generation, entry->num_scanned_objects, entry->num_unique_scanned_objects, entry->num_unique_scanned_objects ? (100.0 * (double) entry->num_scanned_objects / (double) entry->num_unique_scanned_objects) : 0.0))
33 IS_ALWAYS_MATCH (TRUE)
34 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
35 IS_VTABLE_MATCH (FALSE)
36 END_PROTOCOL_ENTRY_FLUSH
37
38 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_start)
39 DEFAULT_PRINT ()
40 IS_ALWAYS_MATCH (TRUE)
41 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
42 IS_VTABLE_MATCH (FALSE)
43 END_PROTOCOL_ENTRY
44
45 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_update)
46 DEFAULT_PRINT ()
47 IS_ALWAYS_MATCH (TRUE)
48 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
49 IS_VTABLE_MATCH (FALSE)
50 END_PROTOCOL_ENTRY
51
52 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_finish)
53 DEFAULT_PRINT ()
54 IS_ALWAYS_MATCH (TRUE)
55 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
56 IS_VTABLE_MATCH (FALSE)
57 END_PROTOCOL_ENTRY
58
59 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_begin, TYPE_INT, generation, TYPE_BOOL, full_sweep)
60 DEFAULT_PRINT ()
61 IS_ALWAYS_MATCH (TRUE)
62 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
63 IS_VTABLE_MATCH (FALSE)
64 END_PROTOCOL_ENTRY
65
66 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_end, TYPE_INT, generation, TYPE_BOOL, full_sweep)
67 DEFAULT_PRINT ()
68 IS_ALWAYS_MATCH (TRUE)
69 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
70 IS_VTABLE_MATCH (FALSE)
71 END_PROTOCOL_ENTRY
72
73 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_world_stopping, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_POINTER, thread)
74 DEFAULT_PRINT ()
75 IS_ALWAYS_MATCH (TRUE)
76 MATCH_INDEX (ptr == entry->thread ? 2 : BINARY_PROTOCOL_MATCH)
77 IS_VTABLE_MATCH (FALSE)
78 END_PROTOCOL_ENTRY
79
80 BEGIN_PROTOCOL_ENTRY6 (binary_protocol_world_stopped, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
81 CUSTOM_PRINT (printf ("generation %d timestamp %lld total %lld marked %lld %0.2f%%", entry->generation, entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
82 IS_ALWAYS_MATCH (TRUE)
83 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
84 IS_VTABLE_MATCH (FALSE)
85 END_PROTOCOL_ENTRY
86
87 BEGIN_PROTOCOL_ENTRY6 (binary_protocol_world_restarting, TYPE_INT, generation, TYPE_LONGLONG, timestamp, TYPE_LONGLONG, total_major_cards, TYPE_LONGLONG, marked_major_cards, TYPE_LONGLONG, total_los_cards, TYPE_LONGLONG, marked_los_cards)
88 CUSTOM_PRINT (printf ("generation %d timestamp %lld total %lld marked %lld %0.2f%%", entry->generation, entry->timestamp, entry->total_major_cards + entry->total_los_cards, entry->marked_major_cards + entry->marked_los_cards, 100.0 * (double) (entry->marked_major_cards + entry->marked_los_cards) / (double) (entry->total_major_cards + entry->total_los_cards)))
89 IS_ALWAYS_MATCH (TRUE)
90 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
91 IS_VTABLE_MATCH (FALSE)
92 END_PROTOCOL_ENTRY
93
94 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_world_restarted, TYPE_INT, generation, TYPE_LONGLONG, timestamp)
95 DEFAULT_PRINT ()
96 IS_ALWAYS_MATCH (TRUE)
97 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
98 IS_VTABLE_MATCH (FALSE)
99 END_PROTOCOL_ENTRY
100
101 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_alloc, TYPE_POINTER, addr, TYPE_SIZE, size)
102 DEFAULT_PRINT ()
103 IS_ALWAYS_MATCH (FALSE)
104 MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
105 IS_VTABLE_MATCH (FALSE)
106 END_PROTOCOL_ENTRY_HEAVY
107
108 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_free, TYPE_POINTER, addr, TYPE_SIZE, size)
109 DEFAULT_PRINT ()
110 IS_ALWAYS_MATCH (FALSE)
111 MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
112 IS_VTABLE_MATCH (FALSE)
113 END_PROTOCOL_ENTRY_HEAVY
114
115 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state, TYPE_POINTER, addr, TYPE_SIZE, size, TYPE_INT, old, TYPE_INT, new_)
116 DEFAULT_PRINT ()
117 IS_ALWAYS_MATCH (FALSE)
118 MATCH_INDEX (matches_interval (ptr, entry->addr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
119 IS_VTABLE_MATCH (FALSE)
120 END_PROTOCOL_ENTRY_HEAVY
121
122 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_start, TYPE_INT, generation)
123 DEFAULT_PRINT ()
124 IS_ALWAYS_MATCH (TRUE)
125 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
126 IS_VTABLE_MATCH (FALSE)
127 END_PROTOCOL_ENTRY
128
129 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_end, TYPE_INT, generation)
130 DEFAULT_PRINT ()
131 IS_ALWAYS_MATCH (TRUE)
132 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
133 IS_VTABLE_MATCH (FALSE)
134 END_PROTOCOL_ENTRY
135
136 /* FIXME: unify sweep and reclaim */
137 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_start, TYPE_INT, generation)
138 DEFAULT_PRINT ()
139 IS_ALWAYS_MATCH (TRUE)
140 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
141 IS_VTABLE_MATCH (FALSE)
142 END_PROTOCOL_ENTRY
143
144 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_end, TYPE_INT, generation)
145 DEFAULT_PRINT ()
146 IS_ALWAYS_MATCH (TRUE)
147 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
148 IS_VTABLE_MATCH (FALSE)
149 END_PROTOCOL_ENTRY
150
151 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
152 DEFAULT_PRINT ()
153 IS_ALWAYS_MATCH (FALSE)
154 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
155 IS_VTABLE_MATCH (ptr == entry->vtable)
156 END_PROTOCOL_ENTRY_HEAVY
157
158 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_copy, TYPE_POINTER, from, TYPE_POINTER, to, TYPE_POINTER, vtable, TYPE_SIZE, size)
159 DEFAULT_PRINT ()
160 IS_ALWAYS_MATCH (FALSE)
161 MATCH_INDEX (matches_interval (ptr, entry->from, entry->size) ? 0 : matches_interval (ptr, entry->to, entry->size) ? 1 : BINARY_PROTOCOL_NO_MATCH)
162 IS_VTABLE_MATCH (ptr == entry->vtable)
163 END_PROTOCOL_ENTRY_HEAVY
164
165 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_pin_stage, TYPE_POINTER, addr_ptr, TYPE_POINTER, addr)
166 DEFAULT_PRINT ()
167 IS_ALWAYS_MATCH (FALSE)
168 MATCH_INDEX (ptr == entry->addr_ptr ? 0 : ptr == entry->addr ? 1 : BINARY_PROTOCOL_NO_MATCH)
169 IS_VTABLE_MATCH (FALSE)
170 END_PROTOCOL_ENTRY_HEAVY
171
172 BEGIN_PROTOCOL_ENTRY_HEAVY1 (binary_protocol_cement_stage, TYPE_POINTER, addr)
173 DEFAULT_PRINT ()
174 IS_ALWAYS_MATCH (FALSE)
175 MATCH_INDEX (ptr == entry->addr ? 0 : BINARY_PROTOCOL_NO_MATCH)
176 IS_VTABLE_MATCH (FALSE)
177 END_PROTOCOL_ENTRY_HEAVY
178
179 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_pin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
180 DEFAULT_PRINT ()
181 IS_ALWAYS_MATCH (FALSE)
182 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
183 IS_VTABLE_MATCH (ptr == entry->vtable)
184 END_PROTOCOL_ENTRY_HEAVY
185
186 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_mark, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
187 DEFAULT_PRINT ()
188 IS_ALWAYS_MATCH (FALSE)
189 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
190 IS_VTABLE_MATCH (FALSE)
191 END_PROTOCOL_ENTRY_HEAVY
192
193 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_begin, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
194 DEFAULT_PRINT ()
195 IS_ALWAYS_MATCH (FALSE)
196 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
197 IS_VTABLE_MATCH (ptr == entry->vtable)
198 END_PROTOCOL_ENTRY_HEAVY
199
200 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_scan_vtype_begin, TYPE_POINTER, obj, TYPE_SIZE, size)
201 DEFAULT_PRINT ()
202 IS_ALWAYS_MATCH (FALSE)
203 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
204 IS_VTABLE_MATCH (FALSE)
205 END_PROTOCOL_ENTRY_HEAVY
206
207 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_process_reference, TYPE_POINTER, obj, TYPE_POINTER, ptr, TYPE_POINTER, value)
208 DEFAULT_PRINT ()
209 IS_ALWAYS_MATCH (FALSE)
210 MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->ptr ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
211 IS_VTABLE_MATCH (FALSE)
212 END_PROTOCOL_ENTRY_HEAVY
213
214 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_scan_stack, TYPE_POINTER, thread, TYPE_POINTER, stack_start, TYPE_POINTER, stack_end, TYPE_INT, skip_reason)
215 DEFAULT_PRINT ()
216 IS_ALWAYS_MATCH (FALSE)
217 MATCH_INDEX (ptr == entry->thread ? 0 : (ptr >= entry->stack_start && ptr < entry->stack_end) ? 1 : BINARY_PROTOCOL_NO_MATCH)
218 IS_VTABLE_MATCH (FALSE)
219 END_PROTOCOL_ENTRY_HEAVY
220
221 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_wbarrier, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
222 DEFAULT_PRINT ()
223 IS_ALWAYS_MATCH (FALSE)
224 MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
225 IS_VTABLE_MATCH (ptr == entry->value_vtable)
226 END_PROTOCOL_ENTRY_HEAVY
227
228 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_global_remset, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
229 DEFAULT_PRINT ()
230 IS_ALWAYS_MATCH (FALSE)
231 MATCH_INDEX (ptr == entry->ptr ? 0 : ptr == entry->value ? 1 : BINARY_PROTOCOL_NO_MATCH)
232 IS_VTABLE_MATCH (ptr == entry->value_vtable)
233 END_PROTOCOL_ENTRY_HEAVY
234
235 BEGIN_PROTOCOL_ENTRY_HEAVY5 (binary_protocol_ptr_update, TYPE_POINTER, ptr, TYPE_POINTER, old_value, TYPE_POINTER, new_value, TYPE_POINTER, vtable, TYPE_SIZE, size)
236 DEFAULT_PRINT ()
237 IS_ALWAYS_MATCH (FALSE)
238 MATCH_INDEX (ptr == entry->ptr ? 0 : matches_interval (ptr, entry->old_value, entry->size) ? 1 : matches_interval (ptr, entry->new_value, entry->size) ? 2 : BINARY_PROTOCOL_NO_MATCH)
239 IS_VTABLE_MATCH (ptr == entry->vtable)
240 END_PROTOCOL_ENTRY_HEAVY
241
242 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_cleanup, TYPE_POINTER, ptr, TYPE_POINTER, vtable, TYPE_SIZE, size)
243 DEFAULT_PRINT ()
244 IS_ALWAYS_MATCH (FALSE)
245 MATCH_INDEX (matches_interval (ptr, entry->ptr, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
246 IS_VTABLE_MATCH (ptr == entry->vtable)
247 END_PROTOCOL_ENTRY_HEAVY
248
249 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_empty, TYPE_POINTER, start, TYPE_SIZE, size)
250 DEFAULT_PRINT ()
251 IS_ALWAYS_MATCH (FALSE)
252 MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
253 IS_VTABLE_MATCH (FALSE)
254 END_PROTOCOL_ENTRY_HEAVY
255
256 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_thread_suspend, TYPE_POINTER, thread, TYPE_POINTER, stopped_ip)
257 DEFAULT_PRINT ()
258 IS_ALWAYS_MATCH (TRUE)
259 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
260 IS_VTABLE_MATCH (FALSE)
261 END_PROTOCOL_ENTRY
262
263 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_restart, TYPE_POINTER, thread)
264 DEFAULT_PRINT ()
265 IS_ALWAYS_MATCH (TRUE)
266 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
267 IS_VTABLE_MATCH (FALSE)
268 END_PROTOCOL_ENTRY
269
270 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_register, TYPE_POINTER, thread)
271 DEFAULT_PRINT ()
272 IS_ALWAYS_MATCH (TRUE)
273 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
274 IS_VTABLE_MATCH (FALSE)
275 END_PROTOCOL_ENTRY
276
277 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_unregister, TYPE_POINTER, thread)
278 DEFAULT_PRINT ()
279 IS_ALWAYS_MATCH (TRUE)
280 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
281 IS_VTABLE_MATCH (FALSE)
282 END_PROTOCOL_ENTRY
283
284 BEGIN_PROTOCOL_ENTRY6 (binary_protocol_missing_remset, TYPE_POINTER, obj, TYPE_POINTER, obj_vtable, TYPE_INT, offset, TYPE_POINTER, value, TYPE_POINTER, value_vtable, TYPE_BOOL, value_pinned)
285 DEFAULT_PRINT ()
286 IS_ALWAYS_MATCH (FALSE)
287 MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->value ? 3 : ptr == (char*)entry->obj + entry->offset ? BINARY_PROTOCOL_MATCH : BINARY_PROTOCOL_NO_MATCH)
288 IS_VTABLE_MATCH (ptr == entry->obj_vtable || ptr == entry->value_vtable)
289 END_PROTOCOL_ENTRY
290
291 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_pinned, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
292 DEFAULT_PRINT ()
293 IS_ALWAYS_MATCH (FALSE)
294 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
295 IS_VTABLE_MATCH (ptr == entry->vtable)
296 END_PROTOCOL_ENTRY_HEAVY
297
298 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_degraded, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size, TYPE_POINTER, provenance)
299 DEFAULT_PRINT ()
300 IS_ALWAYS_MATCH (FALSE)
301 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
302 IS_VTABLE_MATCH (ptr == entry->vtable)
303 END_PROTOCOL_ENTRY_HEAVY
304
305 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_card_scan, TYPE_POINTER, start, TYPE_SIZE, size)
306 DEFAULT_PRINT ()
307 IS_ALWAYS_MATCH (FALSE)
308 MATCH_INDEX (matches_interval (ptr, entry->start, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
309 IS_VTABLE_MATCH (FALSE)
310 END_PROTOCOL_ENTRY_HEAVY
311
312 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_cement, TYPE_POINTER, obj, TYPE_POINTER, vtable, TYPE_SIZE, size)
313 DEFAULT_PRINT ()
314 IS_ALWAYS_MATCH (FALSE)
315 MATCH_INDEX (matches_interval (ptr, entry->obj, entry->size) ? 0 : BINARY_PROTOCOL_NO_MATCH)
316 IS_VTABLE_MATCH (ptr == entry->vtable)
317 END_PROTOCOL_ENTRY
318
319 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_cement_reset)
320 DEFAULT_PRINT ()
321 IS_ALWAYS_MATCH (TRUE)
322 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
323 IS_VTABLE_MATCH (FALSE)
324 END_PROTOCOL_ENTRY
325
326 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_dislink_add, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_BOOL, track)
327 DEFAULT_PRINT ()
328 IS_ALWAYS_MATCH (FALSE)
329 MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
330 IS_VTABLE_MATCH (FALSE)
331 END_PROTOCOL_ENTRY_HEAVY
332
333 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_dislink_update, TYPE_POINTER, link, TYPE_POINTER, obj, TYPE_BOOL, track)
334 CUSTOM_PRINT(entry->obj ? printf ("link %p obj %p track %d", entry->link, entry->obj, entry->track) : printf ("link %p obj %p", entry->link, entry->obj))
335 IS_ALWAYS_MATCH (FALSE)
336 MATCH_INDEX (ptr == entry->link ? 0 : ptr == entry->obj ? 1 : BINARY_PROTOCOL_NO_MATCH)
337 IS_VTABLE_MATCH (FALSE)
338 END_PROTOCOL_ENTRY_HEAVY
339
340 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_dislink_remove, TYPE_POINTER, link, TYPE_BOOL, track)
341 DEFAULT_PRINT ()
342 IS_ALWAYS_MATCH (FALSE)
343 MATCH_INDEX (ptr == entry->link ? 0 : BINARY_PROTOCOL_NO_MATCH)
344 IS_VTABLE_MATCH (FALSE)
345 END_PROTOCOL_ENTRY_HEAVY
346
347 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_begin, TYPE_POINTER, domain)
348 DEFAULT_PRINT ()
349 IS_ALWAYS_MATCH (TRUE)
350 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
351 IS_VTABLE_MATCH (FALSE)
352 END_PROTOCOL_ENTRY
353
354 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_end, TYPE_POINTER, domain)
355 DEFAULT_PRINT ()
356 IS_ALWAYS_MATCH (TRUE)
357 MATCH_INDEX (BINARY_PROTOCOL_MATCH)
358 IS_VTABLE_MATCH (FALSE)
359 END_PROTOCOL_ENTRY
360
361 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_enqueue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
362 DEFAULT_PRINT ()
363 IS_ALWAYS_MATCH (FALSE)
364 MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
365 IS_VTABLE_MATCH (FALSE)
366 END_PROTOCOL_ENTRY_HEAVY
367
368 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_dequeue, TYPE_POINTER, queue, TYPE_POINTER, cursor, TYPE_POINTER, value)
369 DEFAULT_PRINT ()
370 IS_ALWAYS_MATCH (FALSE)
371 MATCH_INDEX (ptr == entry->cursor ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
372 IS_VTABLE_MATCH (FALSE)
373 END_PROTOCOL_ENTRY_HEAVY
374
375 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_mod_union_remset, TYPE_POINTER, obj, TYPE_POINTER, ptr, TYPE_POINTER, value, TYPE_POINTER, value_vtable)
376 DEFAULT_PRINT ()
377 IS_ALWAYS_MATCH (FALSE)
378 MATCH_INDEX (ptr == entry->obj ? 0 : ptr == entry->ptr ? 1 : ptr == entry->value ? 2 : BINARY_PROTOCOL_NO_MATCH)
379 IS_VTABLE_MATCH (ptr == entry->value_vtable)
380 END_PROTOCOL_ENTRY_HEAVY
381
382 #undef BEGIN_PROTOCOL_ENTRY0
383 #undef BEGIN_PROTOCOL_ENTRY1
384 #undef BEGIN_PROTOCOL_ENTRY2
385 #undef BEGIN_PROTOCOL_ENTRY3
386 #undef BEGIN_PROTOCOL_ENTRY4
387 #undef BEGIN_PROTOCOL_ENTRY5
388 #undef BEGIN_PROTOCOL_ENTRY6
389 #undef BEGIN_PROTOCOL_ENTRY_HEAVY0
390 #undef BEGIN_PROTOCOL_ENTRY_HEAVY1
391 #undef BEGIN_PROTOCOL_ENTRY_HEAVY2
392 #undef BEGIN_PROTOCOL_ENTRY_HEAVY3
393 #undef BEGIN_PROTOCOL_ENTRY_HEAVY4
394 #undef BEGIN_PROTOCOL_ENTRY_HEAVY5
395 #undef BEGIN_PROTOCOL_ENTRY_HEAVY6
396
397 #undef DEFAULT_PRINT
398 #undef CUSTOM_PRINT
399
400 #undef IS_ALWAYS_MATCH
401 #undef MATCH_INDEX
402 #undef IS_VTABLE_MATCH
403
404 #undef END_PROTOCOL_ENTRY
405 #undef END_PROTOCOL_ENTRY_FLUSH
406 #undef END_PROTOCOL_ENTRY_HEAVY