Skip to content

Instantly share code, notes, and snippets.

@kumpera
Created December 13, 2012 22:51
Show Gist options
  • Select an option

  • Save kumpera/4280842 to your computer and use it in GitHub Desktop.

Select an option

Save kumpera/4280842 to your computer and use it in GitHub Desktop.
diff --git a/mono/metadata/sgen-alloc.c b/mono/metadata/sgen-alloc.c
index a1ac53d..ce4b1b0 100644
--- a/mono/metadata/sgen-alloc.c
+++ b/mono/metadata/sgen-alloc.c
@@ -339,6 +339,24 @@ mono_gc_alloc_obj_nolock (MonoVTable *vtable, size_t size)
return p;
}
+
+void
+sgen_dump_tlab_objects (char *end)
+{
+ TLAB_ACCESS_INIT;
+
+ char *ptr = (char*)TLAB_START;
+ printf ("dumping objects in the [%p %p] range\n", ptr, end);
+ while (ptr < end) {
+ MonoObject *o = (MonoObject*)ptr;
+ size_t size = ALIGN_UP (sgen_safe_object_get_size ((MonoObject*)ptr));
+
+ printf ("--object [%p] size %d of type %s:%s\n", ptr, (int)size, o->vtable->klass->name_space, o->vtable->klass->name);
+ ptr += size;
+ }
+}
+
+
static void*
mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
{
@@ -421,6 +439,15 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
binary_protocol_alloc (p, vtable, size);
if (G_UNLIKELY (MONO_GC_NURSERY_OBJ_ALLOC_ENABLED ()))
MONO_GC_NURSERY_OBJ_ALLOC ((mword)p, size, vtable->klass->name_space, vtable->klass->name);
+
+ {
+ void **pp = p;
+ void **ee = TLAB_REAL_END;
+ while (pp < ee) {
+ g_assert (*pp == NULL);
+ ++pp;
+ }
+ }
g_assert (*p == NULL); /* FIXME disable this in non debug builds */
mono_atomic_store_seq (p, vtable);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment