From 5d5e18266ca7538c6642ba4d4f8fee99536a7535 Mon Sep 17 00:00:00 2001 From: Mark Probst Date: Sat, 22 Sep 2012 12:53:41 +0200 Subject: [PATCH] [dtrace] Probe for nursery fragment creation aka nursery sweep. --- data/mono.d | 2 ++ mono/metadata/sgen-nursery-allocator.c | 1 + 2 files changed, 3 insertions(+) diff --git a/data/mono.d b/data/mono.d index efd3a6cb055..8479088c732 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 c681a1f5a02..fef74c4826a 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 */ -- 2.25.1