diff --git a/data/mono.d b/data/mono.d index efd3a6cb0552..8479088c7329 100644 --- a/data/mono.d +++ b/data/mono.d @@ -30,6 +30,8 @@ provider mono { probe gc__major__obj__alloc__degraded (void *addr, uintptr_t size, char *class_name); probe gc__major__obj__alloc__mature (void *addr, uintptr_t size, char *class_name); + + probe gc__nursery__sweeped (void *addr, uintptr_t len); }; #pragma D attributes Evolving/Evolving/Common provider mono provider diff --git a/mono/metadata/sgen-nursery-allocator.c b/mono/metadata/sgen-nursery-allocator.c index c681a1f5a02c..fef74c4826aa 100644 --- a/mono/metadata/sgen-nursery-allocator.c +++ b/mono/metadata/sgen-nursery-allocator.c @@ -712,6 +712,7 @@ add_nursery_frag (SgenFragmentAllocator *allocator, size_t frag_size, char* frag { DEBUG (4, fprintf (gc_debug_file, "Found empty fragment: %p-%p, size: %zd\n", frag_start, frag_end, frag_size)); binary_protocol_empty (frag_start, frag_size); + MONO_GC_NURSERY_SWEEPED (frag_start, frag_end - frag_start); /* Not worth dealing with smaller fragments: need to tune */ if (frag_size >= SGEN_MAX_NURSERY_WASTE) { /* memsetting just the first chunk start is bound to provide better cache locality */