#ifdef HAVE_SGEN_GC
static void *table_hash_descr = NULL;
-static void mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func);
+static void mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func, void *gc_data);
static Slot*
new_slot (MonoGHashTable *hash)
{
int diff = ABS (hash->last_rehash - hash->in_use);
RehashData data;
- void *old_table;
+ void *old_table G_GNUC_UNUSED; /* unused on Boehm */
/* These are the factors to play with to change the rehashing strategy */
/* I played with them with a large range, and could not really get */
/* GC marker function */
static void
-mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func)
+mono_g_hash_mark (void *addr, MonoGCMarkFunc mark_func, void *gc_data)
{
MonoGHashTable *table = (MonoGHashTable*)addr;
Slot *node;
for (i = 0; i < table->table_size; i++) {
for (node = table->table [i]; node; node = node->next) {
if (node->key)
- mark_func (&node->key);
+ mark_func (&node->key, gc_data);
}
}
} else if (table->gc_type == MONO_HASH_VALUE_GC) {
for (i = 0; i < table->table_size; i++) {
for (node = table->table [i]; node; node = node->next) {
if (node->value)
- mark_func (&node->value);
+ mark_func (&node->value, gc_data);
}
}
} else if (table->gc_type == MONO_HASH_KEY_VALUE_GC) {
for (i = 0; i < table->table_size; i++) {
for (node = table->table [i]; node; node = node->next) {
if (node->key)
- mark_func (&node->key);
+ mark_func (&node->key, gc_data);
if (node->value)
- mark_func (&node->value);
+ mark_func (&node->value, gc_data);
}
}
}