/*
- * sgen-bridge.c: Simple generational GC.
+ * sgen-tarjan-bridge.c: Tarjan-based bridge implementation.
*
* Copyright 2011 Novell, Inc (http://www.novell.com)
- * Copyright 2011 Xamarin Inc (http://www.xamarin.com)
+ * Copyright 2014 Xamarin Inc (http://www.xamarin.com)
*
* THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
* OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
/* private */
-static void
-dyn_array_init (DynArray *da)
-{
- da->size = 0;
- da->capacity = 0;
- da->data = NULL;
-}
-
static void
dyn_array_uninit (DynArray *da, int elem_size)
{
/* ptr */
-static void
-dyn_array_ptr_init (DynPtrArray *da)
-{
- dyn_array_init (&da->array);
-}
-
static void
dyn_array_ptr_uninit (DynPtrArray *da)
{
static void
free_color_buckets (void)
{
- color_data_count = 0;
-
ColorBucket *cur, *tmp;
+ color_data_count = 0;
+
for (cur = root_color_bucket; cur; cur = tmp) {
ColorData *cd;
for (cd = &cur->data [0]; cd < cur->next_data; ++cd) {
return fwd ? fwd : obj;
}
+#ifdef DUMP_GRAPH
static const char*
safe_name_bridge (MonoObject *obj)
{
entry = create_data (obj);
return entry;
}
-
+#endif
//----------
typedef struct {
static int
mix_hash (size_t hash)
{
- return ((hash * 215497) >> 16) ^ (hash * 1823231) + hash;
+ return (int)(((hash * 215497) >> 16) ^ ((hash * 1823231) + hash));
}
static void
num_colors_with_bridges = 0;
}
+#ifdef DUMP_GRAPH
static void
dump_color_table (const char *why, gboolean do_index)
{
}
}
+#endif
static gint64
step_timer (gint64 *timer)
}
}
-static mono_bool
-is_bridge_object_alive (MonoObject *obj, void *data)
-{
- SgenHashTable *table = data;
- unsigned char *value = sgen_hash_table_lookup (table, obj);
- if (!value)
- return TRUE;
- return *value;
-}
-
static void
processing_build_callback_data (int generation)
{