Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/mono.d3
-rw-r--r--mono/metadata/sgen-alloc.c8
-rw-r--r--mono/utils/dtrace.h31
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