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