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);
+ probe gc__nursery__obj__alloc (void *addr, uintptr_t size, char *ns_name, char *class_name);
- probe gc__major__obj__alloc__large (void *addr, uintptr_t size, char *class_name);
- probe gc__major__obj__alloc__pinned (void *addr, uintptr_t size, char *class_name);
- 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__major__obj__alloc__large (void *addr, uintptr_t size, char *ns_name, char *class_name);
+ probe gc__major__obj__alloc__pinned (void *addr, uintptr_t size, char *ns_name, char *class_name);
+ probe gc__major__obj__alloc__degraded (void *addr, uintptr_t size, char *ns_name, char *class_name);
+ probe gc__major__obj__alloc__mature (void *addr, uintptr_t size, char *ns_name, char *class_name);
probe gc__nursery__sweeped (void *addr, uintptr_t len);
probe gc__major__sweeped (void *addr, uintptr_t len);
- probe gc__obj__pinned (void *addr, uintptr_t size, char *class_name, int generation);
+ probe gc__obj__pinned (void *addr, uintptr_t size, char *ns_name, char *class_name, int generation);
};
#pragma D attributes Evolving/Evolving/Common provider mono provider
p = major_collector.alloc_degraded (vtable, size);
if (for_mature) {
- MONO_GC_MAJOR_OBJ_ALLOC_MATURE (p, size, NULL);
+ MONO_GC_MAJOR_OBJ_ALLOC_MATURE (p, size, vtable->klass->name_space, vtable->klass->name);
} else {
binary_protocol_alloc_degraded (p, vtable, size);
- MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED (p, size, NULL);
+ MONO_GC_MAJOR_OBJ_ALLOC_DEGRADED (p, size, vtable->klass->name_space, vtable->klass->name);
}
return p;
DEBUG (6, fprintf (gc_debug_file, "Allocated object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
binary_protocol_alloc (p , vtable, size);
- MONO_GC_NURSERY_OBJ_ALLOC (p, size, NULL);
+ if (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ())
+ MONO_GC_NURSERY_OBJ_ALLOC (p, size, vtable->klass->name_space, vtable->klass->name);
g_assert (*p == NULL);
mono_atomic_store_seq (p, vtable);
binary_protocol_alloc (p, vtable, size);
if (MONO_GC_MAJOR_OBJ_ALLOC_LARGE_ENABLED () || MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ()) {
if (size > SGEN_MAX_SMALL_OBJ_SIZE)
- MONO_GC_MAJOR_OBJ_ALLOC_LARGE (p, size, NULL);
+ MONO_GC_MAJOR_OBJ_ALLOC_LARGE (p, size, vtable->klass->name_space, vtable->klass->name);
else
- MONO_GC_NURSERY_OBJ_ALLOC (p, size, NULL);
+ MONO_GC_NURSERY_OBJ_ALLOC (p, size, vtable->klass->name_space, vtable->klass->name);
}
mono_atomic_store_seq (p, vtable);
}
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. */
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);
DEBUG (6, fprintf (gc_debug_file, "Allocated object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
binary_protocol_alloc (p, vtable, size);
+ if (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ())
+ MONO_GC_NURSERY_OBJ_ALLOC (p, size, vtable->klass->name_space, vtable->klass->name);
g_assert (*p == NULL); /* FIXME disable this in non debug builds */
mono_atomic_store_seq (p, vtable);
if (G_LIKELY (p)) {
DEBUG (6, fprintf (gc_debug_file, "Allocated pinned object %p, vtable: %p (%s), size: %zd\n", p, vtable, vtable->klass->name, size));
if (size > SGEN_MAX_SMALL_OBJ_SIZE)
- MONO_GC_MAJOR_OBJ_ALLOC_LARGE (p, size, NULL);
+ MONO_GC_MAJOR_OBJ_ALLOC_LARGE (p, size, vtable->klass->name_space, vtable->klass->name);
else
- MONO_GC_MAJOR_OBJ_ALLOC_PINNED (p, size, NULL);
+ MONO_GC_MAJOR_OBJ_ALLOC_PINNED (p, size, vtable->klass->name_space, vtable->klass->name);
binary_protocol_alloc_pinned (p, vtable, size);
mono_atomic_store_seq (p, vtable);
}
binary_protocol_pin (search_start, (gpointer)LOAD_VTABLE (search_start), safe_object_get_size (search_start));
if (MONO_GC_OBJ_PINNED_ENABLED ()) {
int gen = sgen_ptr_in_nursery (search_start) ? GENERATION_NURSERY : GENERATION_OLD;
- MONO_GC_OBJ_PINNED (search_start, sgen_safe_object_get_size (search_start), NULL, gen);
+ MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (search_start);
+ MONO_GC_OBJ_PINNED (search_start, sgen_safe_object_get_size (search_start), vt->klass->name_space, vt->klass->name, gen);
}
pin_object (search_start);
GRAY_OBJECT_ENQUEUE (queue, search_start);
binary_protocol_pin (object, (gpointer)LOAD_VTABLE (object), safe_object_get_size (object));
if (MONO_GC_OBJ_PINNED_ENABLED ()) {
int gen = sgen_ptr_in_nursery (object) ? GENERATION_NURSERY : GENERATION_OLD;
- MONO_GC_OBJ_PINNED (object, sgen_safe_object_get_size (object), NULL, gen);
+ MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (object);
+ MONO_GC_OBJ_PINNED (object, sgen_safe_object_get_size (object), vt->klass->name_space, vt->klass->name, gen);
}
}
if (sgen_find_optimized_pin_queue_area (bigobj->data, (char*)bigobj->data + bigobj->size, &dummy)) {
binary_protocol_pin (bigobj->data, (gpointer)LOAD_VTABLE (bigobj->data), safe_object_get_size (bigobj->data));
if (MONO_GC_OBJ_PINNED_ENABLED ()) {
- MONO_GC_OBJ_PINNED (bigobj->data, sgen_safe_object_get_size ((MonoObject*)bigobj->data), NULL, GENERATION_OLD);
+ MonoVTable *vt = (MonoVTable*)LOAD_VTABLE (bigobj->data);
+ MONO_GC_OBJ_PINNED (bigobj->data, sgen_safe_object_get_size ((MonoObject*)bigobj->data), vt->klass->name_space, vt->klass->name, GENERATION_OLD);
}
pin_object (bigobj->data);
/* FIXME: only enqueue if object has references */
return;
binary_protocol_pin (obj, (gpointer)SGEN_LOAD_VTABLE (obj), sgen_safe_object_get_size ((MonoObject*)obj));
if (MONO_GC_OBJ_PINNED_ENABLED ()) {
- MONO_GC_OBJ_PINNED (obj, sgen_safe_object_get_size (obj), NULL, GENERATION_OLD);
+ MonoVTable *vt = (MonoVTable*)SGEN_LOAD_VTABLE (obj);
+ MONO_GC_OBJ_PINNED (obj, sgen_safe_object_get_size (obj), vt->klass->name_space, vt->klass->name, GENERATION_OLD);
}
SGEN_PIN_OBJECT (obj);
/* FIXME: only enqueue if object has references */
#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(addr,size,ns_name,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(addr,size,ns_name,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(addr,size,ns_name,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(addr,size,ns_name,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(addr,size,ns_name,class_name)
#define MONO_GC_MAJOR_OBJ_ALLOC_MATURE_ENABLED() (0)
+#define MONO_GC_OBJ_MOVED(dest,src,dest_gen,src_gen,size,ns_name,class_name)
+#define MONO_GC_OBJ_MOVED_ENABLED() (0)
+
+
#define MONO_GC_NURSERY_SWEEPED(addr,len)
#define MONO_GC_NURSERY_SWEEPED_ENABLED() (0)
#define MONO_GC_MAJOR_SWEEPED_ENABLED() (0)
-#define MONO_GC_OBJ_PINNED(addr,size,class_name,generation)
+#define MONO_GC_OBJ_PINNED(addr,size,ns_name,class_name,generation)
#define MONO_GC_OBJ_PINNED_ENABLED() (0)
#endif