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.
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.
18 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_collection_requested
, TYPE_INT
, generation
, TYPE_SIZE
, requested_size
, TYPE_BOOL
, force
)
20 IS_ALWAYS_MATCH (TRUE
)
21 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
22 IS_VTABLE_MATCH (FALSE
)
25 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_collection_begin
, TYPE_INT
, index
, TYPE_INT
, generation
)
27 IS_ALWAYS_MATCH (TRUE
)
28 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
29 IS_VTABLE_MATCH (FALSE
)
30 END_PROTOCOL_ENTRY_FLUSH
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
39 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_start
)
41 IS_ALWAYS_MATCH (TRUE
)
42 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
43 IS_VTABLE_MATCH (FALSE
)
46 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_update
)
48 IS_ALWAYS_MATCH (TRUE
)
49 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
50 IS_VTABLE_MATCH (FALSE
)
53 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_concurrent_finish
)
55 IS_ALWAYS_MATCH (TRUE
)
56 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
57 IS_VTABLE_MATCH (FALSE
)
60 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_begin
, TYPE_INT
, generation
, TYPE_BOOL
, full_sweep
)
62 IS_ALWAYS_MATCH (TRUE
)
63 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
64 IS_VTABLE_MATCH (FALSE
)
67 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_sweep_end
, TYPE_INT
, generation
, TYPE_BOOL
, full_sweep
)
69 IS_ALWAYS_MATCH (TRUE
)
70 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
71 IS_VTABLE_MATCH (FALSE
)
74 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_world_stopping
, TYPE_INT
, generation
, TYPE_LONGLONG
, timestamp
, TYPE_POINTER
, thread
)
76 IS_ALWAYS_MATCH (TRUE
)
77 MATCH_INDEX (ptr
== entry
->thread
? 2 : BINARY_PROTOCOL_MATCH
)
78 IS_VTABLE_MATCH (FALSE
)
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
)
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
)
95 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_world_restarted
, TYPE_INT
, generation
, TYPE_LONGLONG
, timestamp
)
97 IS_ALWAYS_MATCH (TRUE
)
98 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
99 IS_VTABLE_MATCH (FALSE
)
102 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_alloc
, TYPE_POINTER
, addr
, TYPE_SIZE
, size
)
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
109 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_block_free
, TYPE_POINTER
, addr
, TYPE_SIZE
, size
)
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
116 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_block_set_state
, TYPE_POINTER
, addr
, TYPE_SIZE
, size
, TYPE_INT
, old
, TYPE_INT
, new_
)
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
123 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_start
, TYPE_INT
, generation
)
125 IS_ALWAYS_MATCH (TRUE
)
126 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
127 IS_VTABLE_MATCH (FALSE
)
130 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_mark_end
, TYPE_INT
, generation
)
132 IS_ALWAYS_MATCH (TRUE
)
133 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
134 IS_VTABLE_MATCH (FALSE
)
137 /* FIXME: unify sweep and reclaim */
138 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_start
, TYPE_INT
, generation
)
140 IS_ALWAYS_MATCH (TRUE
)
141 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
142 IS_VTABLE_MATCH (FALSE
)
145 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_reclaim_end
, TYPE_INT
, generation
)
147 IS_ALWAYS_MATCH (TRUE
)
148 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
149 IS_VTABLE_MATCH (FALSE
)
152 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
, TYPE_POINTER
, provenance
)
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
159 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_copy
, TYPE_POINTER
, from
, TYPE_POINTER
, to
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
166 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_pin_stage
, TYPE_POINTER
, addr_ptr
, TYPE_POINTER
, addr
)
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
173 BEGIN_PROTOCOL_ENTRY_HEAVY1 (binary_protocol_cement_stage
, TYPE_POINTER
, addr
)
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
180 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_pin
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
187 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_mark
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
194 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_begin
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
201 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_scan_vtype_begin
, TYPE_POINTER
, obj
, TYPE_SIZE
, size
)
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
208 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_scan_process_reference
, TYPE_POINTER
, obj
, TYPE_POINTER
, ptr
, TYPE_POINTER
, value
)
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
215 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_scan_stack
, TYPE_POINTER
, thread
, TYPE_POINTER
, stack_start
, TYPE_POINTER
, stack_end
, TYPE_INT
, skip_reason
)
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
222 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_wbarrier
, TYPE_POINTER
, ptr
, TYPE_POINTER
, value
, TYPE_POINTER
, value_vtable
)
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
229 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_global_remset
, TYPE_POINTER
, ptr
, TYPE_POINTER
, value
, TYPE_POINTER
, value_vtable
)
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
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
)
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
243 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_cleanup
, TYPE_POINTER
, ptr
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
250 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_empty
, TYPE_POINTER
, start
, TYPE_SIZE
, size
)
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
257 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_thread_suspend
, TYPE_POINTER
, thread
, TYPE_POINTER
, stopped_ip
)
259 IS_ALWAYS_MATCH (TRUE
)
260 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
261 IS_VTABLE_MATCH (FALSE
)
264 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_restart
, TYPE_POINTER
, thread
)
266 IS_ALWAYS_MATCH (TRUE
)
267 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
268 IS_VTABLE_MATCH (FALSE
)
271 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_register
, TYPE_POINTER
, thread
)
273 IS_ALWAYS_MATCH (TRUE
)
274 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
275 IS_VTABLE_MATCH (FALSE
)
278 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_thread_unregister
, TYPE_POINTER
, thread
)
280 IS_ALWAYS_MATCH (TRUE
)
281 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
282 IS_VTABLE_MATCH (FALSE
)
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
)
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
)
292 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_pinned
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
, TYPE_POINTER
, provenance
)
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
299 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_alloc_degraded
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
, TYPE_POINTER
, provenance
)
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
306 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_card_scan
, TYPE_POINTER
, start
, TYPE_SIZE
, size
)
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
313 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_cement
, TYPE_POINTER
, obj
, TYPE_POINTER
, vtable
, TYPE_SIZE
, size
)
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
)
320 BEGIN_PROTOCOL_ENTRY0 (binary_protocol_cement_reset
)
322 IS_ALWAYS_MATCH (TRUE
)
323 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
324 IS_VTABLE_MATCH (FALSE
)
327 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_dislink_add
, TYPE_POINTER
, link
, TYPE_POINTER
, obj
, TYPE_BOOL
, track
)
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
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
341 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_dislink_remove
, TYPE_POINTER
, link
, TYPE_BOOL
, track
)
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
348 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_begin
, TYPE_POINTER
, domain
)
350 IS_ALWAYS_MATCH (TRUE
)
351 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
352 IS_VTABLE_MATCH (FALSE
)
355 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_domain_unload_end
, TYPE_POINTER
, domain
)
357 IS_ALWAYS_MATCH (TRUE
)
358 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
359 IS_VTABLE_MATCH (FALSE
)
362 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_enqueue
, TYPE_POINTER
, queue
, TYPE_POINTER
, cursor
, TYPE_POINTER
, value
)
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
369 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_gray_dequeue
, TYPE_POINTER
, queue
, TYPE_POINTER
, cursor
, TYPE_POINTER
, value
)
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
376 BEGIN_PROTOCOL_ENTRY_HEAVY4 (binary_protocol_mod_union_remset
, TYPE_POINTER
, obj
, TYPE_POINTER
, ptr
, TYPE_POINTER
, value
, TYPE_POINTER
, value_vtable
)
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
383 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_major_card_table_scan_start
, TYPE_LONGLONG
, timestamp
, TYPE_BOOL
, mod_union
)
385 IS_ALWAYS_MATCH (TRUE
)
386 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
387 IS_VTABLE_MATCH (FALSE
)
388 END_PROTOCOL_ENTRY_HEAVY
390 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_major_card_table_scan_end
, TYPE_LONGLONG
, timestamp
, TYPE_BOOL
, mod_union
)
392 IS_ALWAYS_MATCH (TRUE
)
393 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
394 IS_VTABLE_MATCH (FALSE
)
395 END_PROTOCOL_ENTRY_HEAVY
397 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_los_card_table_scan_start
, TYPE_LONGLONG
, timestamp
, TYPE_BOOL
, mod_union
)
399 IS_ALWAYS_MATCH (TRUE
)
400 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
401 IS_VTABLE_MATCH (FALSE
)
402 END_PROTOCOL_ENTRY_HEAVY
404 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_los_card_table_scan_end
, TYPE_LONGLONG
, timestamp
, TYPE_BOOL
, mod_union
)
406 IS_ALWAYS_MATCH (TRUE
)
407 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
408 IS_VTABLE_MATCH (FALSE
)
409 END_PROTOCOL_ENTRY_HEAVY
411 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_finish_gray_stack_start
, TYPE_LONGLONG
, timestamp
, TYPE_INT
, generation
)
413 IS_ALWAYS_MATCH (TRUE
)
414 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
415 IS_VTABLE_MATCH (FALSE
)
416 END_PROTOCOL_ENTRY_HEAVY
418 BEGIN_PROTOCOL_ENTRY_HEAVY2 (binary_protocol_finish_gray_stack_end
, TYPE_LONGLONG
, timestamp
, TYPE_INT
, generation
)
420 IS_ALWAYS_MATCH (TRUE
)
421 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
422 IS_VTABLE_MATCH (FALSE
)
423 END_PROTOCOL_ENTRY_HEAVY
425 BEGIN_PROTOCOL_ENTRY2 (binary_protocol_worker_finish
, TYPE_LONGLONG
, timestamp
, TYPE_BOOL
, forced
)
427 IS_ALWAYS_MATCH (TRUE
)
428 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
429 IS_VTABLE_MATCH (FALSE
)
432 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_evacuating_blocks
, TYPE_SIZE
, block_size
)
434 IS_ALWAYS_MATCH (TRUE
)
435 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
436 IS_VTABLE_MATCH (FALSE
)
439 BEGIN_PROTOCOL_ENTRY1 (binary_protocol_concurrent_sweep_end
, TYPE_LONGLONG
, timestamp
)
441 IS_ALWAYS_MATCH (TRUE
)
442 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
443 IS_VTABLE_MATCH (FALSE
)
446 BEGIN_PROTOCOL_ENTRY4 (binary_protocol_header
, TYPE_LONGLONG
, check
, TYPE_INT
, version
, TYPE_INT
, ptr_size
, TYPE_BOOL
, little_endian
)
448 IS_ALWAYS_MATCH (TRUE
)
449 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
450 IS_VTABLE_MATCH (FALSE
)
451 END_PROTOCOL_ENTRY_FLUSH
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
)
455 IS_ALWAYS_MATCH (TRUE
)
456 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
457 IS_VTABLE_MATCH (FALSE
)
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
)
462 IS_ALWAYS_MATCH (TRUE
)
463 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
464 IS_VTABLE_MATCH (FALSE
)
467 BEGIN_PROTOCOL_ENTRY3 (binary_protocol_collection_end_stats
, TYPE_LONGLONG
, major_scan
, TYPE_LONGLONG
, los_scan
, TYPE_LONGLONG
, finish_stack
)
469 IS_ALWAYS_MATCH (TRUE
)
470 MATCH_INDEX (BINARY_PROTOCOL_MATCH
)
471 IS_VTABLE_MATCH (FALSE
)
474 BEGIN_PROTOCOL_ENTRY_HEAVY3 (binary_protocol_ephemeron_ref
, TYPE_POINTER
, list
, TYPE_POINTER
, key
, TYPE_POINTER
, value
)
476 IS_ALWAYS_MATCH (FALSE
)
477 MATCH_INDEX (ptr
== entry
->list
? 0 : ptr
== entry
->key
? 1 : ptr
== entry
->value
? 2 : BINARY_PROTOCOL_NO_MATCH
)
478 IS_VTABLE_MATCH (FALSE
)
479 END_PROTOCOL_ENTRY_HEAVY
481 #undef BEGIN_PROTOCOL_ENTRY0
482 #undef BEGIN_PROTOCOL_ENTRY1
483 #undef BEGIN_PROTOCOL_ENTRY2
484 #undef BEGIN_PROTOCOL_ENTRY3
485 #undef BEGIN_PROTOCOL_ENTRY4
486 #undef BEGIN_PROTOCOL_ENTRY5
487 #undef BEGIN_PROTOCOL_ENTRY6
488 #undef BEGIN_PROTOCOL_ENTRY_HEAVY0
489 #undef BEGIN_PROTOCOL_ENTRY_HEAVY1
490 #undef BEGIN_PROTOCOL_ENTRY_HEAVY2
491 #undef BEGIN_PROTOCOL_ENTRY_HEAVY3
492 #undef BEGIN_PROTOCOL_ENTRY_HEAVY4
493 #undef BEGIN_PROTOCOL_ENTRY_HEAVY5
494 #undef BEGIN_PROTOCOL_ENTRY_HEAVY6
499 #undef IS_ALWAYS_MATCH
501 #undef IS_VTABLE_MATCH
503 #undef END_PROTOCOL_ENTRY
504 #undef END_PROTOCOL_ENTRY_FLUSH
505 #undef END_PROTOCOL_ENTRY_HEAVY