diff options
-rw-r--r-- | data/mono.d | 3 | ||||
-rw-r--r-- | mono/metadata/sgen-alloc.c | 8 | ||||
-rw-r--r-- | mono/utils/dtrace.h | 31 |
3 files changed, 42 insertions, 0 deletions
diff --git a/data/mono.d b/data/mono.d index a042a4a4fb3..e18d4eb12e9 100644 --- a/data/mono.d +++ b/data/mono.d @@ -24,6 +24,9 @@ provider mono { probe gc__locked (); probe gc__unlocked (); + + probe gc__nursery__tlab__alloc (void *addr, uintptr_t len); + probe gc__nursery__obj__alloc (void *addr, uintptr_t size, char *class_name); }; #pragma D attributes Evolving/Evolving/Common provider mono provider diff --git a/mono/metadata/sgen-alloc.c b/mono/metadata/sgen-alloc.c index 86095e5d042..eec749e7c8b 100644 --- a/mono/metadata/sgen-alloc.c +++ b/mono/metadata/sgen-alloc.c @@ -265,6 +265,8 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size) // no space left g_assert (0); } + if (p) + MONO_GC_NURSERY_OBJ_ALLOC (p, size, NULL); if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) { memset (p, 0, size); @@ -304,6 +306,8 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size) memset (TLAB_START, 0, alloc_size); } + MONO_GC_NURSERY_TLAB_ALLOC (p, alloc_size); + /* Allocate from the TLAB */ p = (void*)TLAB_NEXT; TLAB_NEXT += size; @@ -347,6 +351,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size) p = sgen_nursery_alloc (size); if (!p) return NULL; + MONO_GC_NURSERY_OBJ_ALLOC (p, size, NULL); sgen_set_nursery_scan_start ((char*)p); /*FIXME we should use weak memory ops here. Should help specially on x86. */ @@ -379,6 +384,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size) p = sgen_nursery_alloc (size); if (!p) return NULL; + MONO_GC_NURSERY_OBJ_ALLOC (p, size, NULL); if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) memset (p, 0, size); @@ -399,6 +405,8 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size) if (nursery_clear_policy == CLEAR_AT_TLAB_CREATION) memset (new_next, 0, alloc_size); + + MONO_GC_NURSERY_TLAB_ALLOC (new_next, alloc_size); } } diff --git a/mono/utils/dtrace.h b/mono/utils/dtrace.h index e2a543725bf..55c7e70adf7 100644 --- a/mono/utils/dtrace.h +++ b/mono/utils/dtrace.h @@ -61,6 +61,37 @@ #define MONO_GC_HEAP_ALLOC(addr,size) #define MONO_GC_HEAP_FREE(addr,size) + +#define MONO_GC_NURSERY_TLAB_ALLOC(addr,len) +#define MONO_GC_NURSERY_TLAB_ALLOC_ENABLED() (0) + +#define MONO_GC_NURSERY_OBJ_ALLOC(addr,size,class_name) +#define MONO_GC_NURSERY_OBJ_ALLOC_ENABLED() (0) + + +#define MONO_GC_MAJOR_OBJ_ALLOC_LARGE(addr,size,class_name) +#define MONO_GC_MAJOR_OBJ_ALLOC_LARGE_ENABLED() (0) + +#define MONO_GC_MAJOR_OBJ_ALLOC_PINNED(addr,size,class_name) +#define MONO_GC_MAJOR_OBJ_ALLOC_PINNED_ENABLED() (0) + +#define MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED(addr,size,class_name) +#define MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED_ENABLED() (0) + +#define MONO_GC_MAJOR_OBJ_ALLOC_MATURE(addr,size,class_name) +#define MONO_GC_MAJOR_OBJ_ALLOC_MATURE_ENABLED() (0) + + +#define MONO_GC_NURSERY_SWEEPED(addr,len) +#define MONO_GC_NURSERY_SWEEPED_ENABLED() (0) + +#define MONO_GC_MAJOR_SWEEPED(addr,len) +#define MONO_GC_MAJOR_SWEEPED_ENABLED() (0) + + +#define MONO_GC_OBJ_PINNED(addr,size,class_name,generation) +#define MONO_GC_OBJ_PINNED_ENABLED() (0) + #endif #endif |