Skip to content

Commit e5f26c5

Browse files
committed
Directly call GC_dirty instead of GC_end_stubborn_change
1 parent defc6bc commit e5f26c5

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

mono/metadata/boehm-gc.c

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040

4141
#if HAVE_BOEHM_GC
4242

43+
#if !HAVE_BDWGC_GC
44+
#define GC_dirty(x)
45+
#endif
46+
4347
#undef TRUE
4448
#undef FALSE
4549
#define THREAD_LOCAL_ALLOC 1
@@ -643,7 +647,7 @@ mono_gc_weak_link_add (void **link_addr, MonoObject *obj, gboolean track)
643647
{
644648
/* libgc requires that we use HIDE_POINTER... */
645649
*link_addr = (void*)HIDE_POINTER (obj);
646-
GC_end_stubborn_change(link_addr);
650+
GC_dirty(link_addr);
647651
if (track)
648652
GC_REGISTER_LONG_LINK (link_addr, obj);
649653
else
@@ -888,48 +892,48 @@ void
888892
mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
889893
{
890894
*(void**)field_ptr = value;
891-
GC_end_stubborn_change(field_ptr);
895+
GC_dirty(field_ptr);
892896
}
893897

894898
void
895899
mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
896900
{
897901
*(void**)slot_ptr = value;
898-
GC_end_stubborn_change(slot_ptr);
902+
GC_dirty(slot_ptr);
899903
}
900904

901905
void
902906
mono_gc_wbarrier_arrayref_copy (gpointer dest_ptr, gpointer src_ptr, int count)
903907
{
904908
mono_gc_memmove_aligned (dest_ptr, src_ptr, count * sizeof (gpointer));
905-
GC_end_stubborn_change(dest_ptr);
909+
GC_dirty(dest_ptr);
906910
}
907911

908912
void
909913
mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
910914
{
911915
*(void**)ptr = value;
912-
GC_end_stubborn_change(ptr);
916+
GC_dirty(ptr);
913917
}
914918

915919
void
916920
mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
917921
{
918922
mono_atomic_store_ptr ((volatile gpointer *)ptr, value);
919-
GC_end_stubborn_change(ptr);
923+
GC_dirty(ptr);
920924
}
921925

922926
void
923927
mono_gc_wbarrier_generic_nostore (gpointer ptr)
924928
{
925-
GC_end_stubborn_change(ptr);
929+
GC_dirty(ptr);
926930
}
927931

928932
void
929933
mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
930934
{
931935
mono_gc_memmove_atomic (dest, src, count * mono_class_value_size (klass, NULL));
932-
GC_end_stubborn_change(dest);
936+
GC_dirty(dest);
933937
}
934938

935939
void
@@ -938,7 +942,7 @@ mono_gc_wbarrier_object_copy (MonoObject* obj, MonoObject *src)
938942
/* do not copy the sync state */
939943
mono_gc_memmove_aligned ((char*)obj + sizeof (MonoObject), (char*)src + sizeof (MonoObject),
940944
mono_object_class (obj)->instance_size - sizeof (MonoObject));
941-
GC_end_stubborn_change(obj);
945+
GC_dirty(obj);
942946
}
943947

944948
void
@@ -1510,7 +1514,7 @@ void
15101514
mono_gc_wbarrier_range_copy (gpointer _dest, gpointer _src, int size)
15111515
{
15121516
memcpy(_dest, _src, size);
1513-
GC_end_stubborn_change(_dest);
1517+
GC_dirty(_dest);
15141518
}
15151519

15161520
void*
@@ -1871,7 +1875,7 @@ handle_data_grow (HandleData *handles, gboolean track)
18711875
gpointer *entries;
18721876
entries = (void **)mono_gc_alloc_fixed (sizeof (*handles->entries) * new_size, NULL, MONO_ROOT_SOURCE_GC_HANDLE, NULL, "GC Handle Table (Boehm)");
18731877
mono_gc_memmove_aligned (entries, handles->entries, sizeof (*handles->entries) * handles->size);
1874-
GC_end_stubborn_change(entries);
1878+
GC_dirty(entries);
18751879
mono_gc_free_fixed (handles->entries);
18761880
handles->entries = entries;
18771881
}
@@ -1904,7 +1908,7 @@ alloc_handle (HandleData *handles, MonoObject *obj, gboolean track)
19041908
mono_gc_weak_link_add (&(handles->entries [slot]), obj, track);
19051909
} else {
19061910
handles->entries [slot] = obj;
1907-
GC_end_stubborn_change(handles->entries + slot);
1911+
GC_dirty(handles->entries + slot);
19081912
}
19091913

19101914
#ifndef DISABLE_PERFCOUNTERS
@@ -2022,7 +2026,7 @@ mono_gchandle_set_target (guint32 gchandle, MonoObject *obj)
20222026
handles->domain_ids [slot] = (obj ? mono_object_get_domain (obj) : mono_domain_get ())->domain_id;
20232027
} else {
20242028
handles->entries [slot] = obj;
2025-
GC_end_stubborn_change(handles->entries + slot);
2029+
GC_dirty(handles->entries + slot);
20262030
}
20272031
} else {
20282032
/* print a warning? */
@@ -2101,7 +2105,7 @@ mono_gchandle_free (guint32 gchandle)
21012105
mono_gc_weak_link_remove (&handles->entries [slot], handles->type == HANDLE_WEAK_TRACK);
21022106
} else {
21032107
handles->entries [slot] = NULL;
2104-
GC_end_stubborn_change(handles->entries + slot);
2108+
GC_dirty(handles->entries + slot);
21052109
}
21062110
vacate_slot (handles, slot);
21072111
} else {
@@ -2144,7 +2148,7 @@ mono_gchandle_free_domain (MonoDomain *domain)
21442148
if (handles->entries [slot] && mono_object_domain (handles->entries [slot]) == domain) {
21452149
vacate_slot (handles, slot);
21462150
handles->entries [slot] = NULL;
2147-
GC_end_stubborn_change(handles->entries + slot);
2151+
GC_dirty(handles->entries + slot);
21482152
}
21492153
}
21502154
}

0 commit comments

Comments
 (0)