@@ -286,20 +286,20 @@ static _Atomic(jl_value_t*) *mtcache_hash_lookup_bp(jl_genericmemory_t *cache JL
286
286
return pml ;
287
287
}
288
288
289
- static void mtcache_hash_insert (_Atomic (jl_genericmemory_t * ) * cache , jl_value_t * parent , jl_value_t * key , jl_typemap_t * val )
289
+ static void mtcache_hash_insert (_Atomic (jl_genericmemory_t * ) * pcache , jl_value_t * parent , jl_value_t * key , jl_typemap_t * val )
290
290
{
291
291
int inserted = 0 ;
292
- jl_genericmemory_t * a = jl_atomic_load_relaxed (cache );
292
+ jl_genericmemory_t * a = jl_atomic_load_relaxed (pcache );
293
293
if (a == (jl_genericmemory_t * )jl_an_empty_memory_any ) {
294
294
a = jl_alloc_memory_any (16 );
295
- jl_atomic_store_release (cache , a );
295
+ jl_atomic_store_release (pcache , a );
296
296
if (parent )
297
297
jl_gc_wb (parent , a );
298
298
}
299
299
a = jl_eqtable_put (a , key , val , & inserted );
300
300
assert (inserted );
301
- if (a != jl_atomic_load_relaxed (cache )) {
302
- jl_atomic_store_release (cache , a );
301
+ if (a != jl_atomic_load_relaxed (pcache )) {
302
+ jl_atomic_store_release (pcache , a );
303
303
if (parent )
304
304
jl_gc_wb (parent , a );
305
305
}
@@ -1293,9 +1293,10 @@ static void jl_typemap_memory_insert_(
1293
1293
static jl_value_t * jl_method_convert_list_to_cache (
1294
1294
jl_typemap_t * map , jl_typemap_entry_t * ml , int8_t tparam , int8_t offs , int8_t doublesplit )
1295
1295
{
1296
- jl_value_t * cache = doublesplit ? jl_an_empty_memory_any : (jl_value_t * )jl_new_typemap_level ();
1296
+ _Atomic(jl_genericmemory_t * ) dblcache = (jl_genericmemory_t * )jl_an_empty_memory_any ;
1297
+ jl_typemap_level_t * cache = doublesplit ? NULL : jl_new_typemap_level ();
1297
1298
jl_typemap_entry_t * next = NULL ;
1298
- JL_GC_PUSH3 (& cache , & next , & ml );
1299
+ JL_GC_PUSH4 (& cache , & dblcache , & next , & ml );
1299
1300
while (ml != (void * )jl_nothing ) {
1300
1301
next = jl_atomic_load_relaxed (& ml -> next );
1301
1302
jl_atomic_store_relaxed (& ml -> next , (jl_typemap_entry_t * )jl_nothing );
@@ -1316,14 +1317,14 @@ static jl_value_t *jl_method_convert_list_to_cache(
1316
1317
assert (jl_is_type_type (key ));
1317
1318
key = jl_tparam0 (key );
1318
1319
}
1319
- jl_typemap_memory_insert_ (map , (_Atomic ( jl_genericmemory_t * ) * ) & cache , key , ml , NULL , 0 , offs , NULL );
1320
+ jl_typemap_memory_insert_ (map , & dblcache , key , ml , NULL , 0 , offs , NULL );
1320
1321
}
1321
1322
else
1322
- jl_typemap_level_insert_ (map , ( jl_typemap_level_t * ) cache , ml , offs );
1323
+ jl_typemap_level_insert_ (map , cache , ml , offs );
1323
1324
ml = next ;
1324
1325
}
1325
1326
JL_GC_POP ();
1326
- return cache ;
1327
+ return doublesplit ? ( jl_value_t * ) jl_atomic_load_relaxed ( & dblcache ) : ( jl_value_t * ) cache ;
1327
1328
}
1328
1329
1329
1330
static void jl_typemap_list_insert_ (
0 commit comments