MonoGHashGCType gc_type;
};
-static const int prime_tbl[] = {
- 11, 19, 37, 73, 109, 163, 251, 367, 557, 823, 1237,
- 1861, 2777, 4177, 6247, 9371, 14057, 21089, 31627,
- 47431, 71143, 106721, 160073, 240101, 360163,
- 540217, 810343, 1215497, 1823231, 2734867, 4102283,
- 6153409, 9230113, 13845163
-};
-
#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);
}
}
}