X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fsgen%2Fsgen-debug.c;h=b519a1ec58eb17750a9407ea4269317c22f57e95;hb=a9b5b501fd36a4b488e2295196a52778b2b94d1f;hp=04de0ac5876ea17087fb04e4cdf546437044444a;hpb=25e0b3971549af535528315399bbda380d287679;p=mono.git diff --git a/mono/sgen/sgen-debug.c b/mono/sgen/sgen-debug.c index 04de0ac5876..b519a1ec58e 100644 --- a/mono/sgen/sgen-debug.c +++ b/mono/sgen/sgen-debug.c @@ -1,5 +1,6 @@ -/* - * sgen-debug.c: Collector debugging +/** + * \file + * Collector debugging * * Author: * Paolo Molaro (lupus@ximian.com) @@ -804,6 +805,15 @@ scan_roots_for_specific_ref (GCObject *key, int root_type) } break; } + case ROOT_DESC_VECTOR: { + void **p; + + for (p = start_root; p < (void**)root->end_root; p++) { + if (*p) + check_root_obj_specific_ref (root, key, (GCObject *)*p); + } + break; + } case ROOT_DESC_USER: { SgenUserRootMarkFunc marker = sgen_get_user_descriptor_func (desc); marker (start_root, check_root_obj_specific_ref_from_marker, NULL); @@ -908,6 +918,15 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type) } break; } + case ROOT_DESC_VECTOR: { + void **p; + + for (p = start_root; p < (void**)root->end_root; p++) { + if (*p) + check_obj_not_in_domain ((MonoObject **)*p); + } + break; + } case ROOT_DESC_USER: { SgenUserRootMarkFunc marker = sgen_get_user_descriptor_func (desc); marker (start_root, check_obj_not_in_domain_callback, NULL); @@ -940,12 +959,6 @@ is_xdomain_ref_allowed (GCObject **ptr, GCObject *obj, MonoDomain *domain) offset == G_STRUCT_OFFSET (MonoRealProxy, unwrapped_server)) return TRUE; #endif - /* Thread.cached_culture_info */ - if (!strcmp (ref->vtable->klass->name_space, "System.Globalization") && - !strcmp (ref->vtable->klass->name, "CultureInfo") && - !strcmp(o->vtable->klass->name_space, "System") && - !strcmp(o->vtable->klass->name, "Object[]")) - return TRUE; /* * at System.IO.MemoryStream.InternalConstructor (byte[],int,int,bool,bool) [0x0004d] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:121 * at System.IO.MemoryStream..ctor (byte[]) [0x00017] in /home/schani/Work/novell/trunk/mcs/class/corlib/System.IO/MemoryStream.cs:81 @@ -983,7 +996,8 @@ check_reference_for_xdomain (GCObject **ptr, GCObject *obj, MonoDomain *domain) for (klass = obj->vtable->klass; klass; klass = klass->parent) { int i; - for (i = 0; i < klass->field.count; ++i) { + int fcount = mono_class_get_field_count (klass); + for (i = 0; i < fcount; ++i) { if (klass->fields[i].offset == offset) { field = &klass->fields[i]; break;