Skip to content

Commit 4cee83c

Browse files
d-nettoKristofferC
authored andcommitted
refactor GC scanning code to reflect jl_binding_t are now first class (#51035)
Removes some redundant code. Credits to Eduardo for pointing this out in the GC meeting. (cherry picked from commit 5bc558c)
1 parent 9fd9746 commit 4cee83c

File tree

1 file changed

+3
-17
lines changed

1 file changed

+3
-17
lines changed

src/gc.c

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,19 +2278,10 @@ STATIC_INLINE void gc_mark_excstack(jl_ptls_t ptls, jl_excstack_t *excstack, siz
22782278
}
22792279

22802280
// Mark module binding
2281-
STATIC_INLINE void gc_mark_module_binding(jl_ptls_t ptls, jl_module_t *mb_parent, jl_binding_t **mb_begin,
2282-
jl_binding_t **mb_end, uintptr_t nptr,
2281+
STATIC_INLINE void gc_mark_module_binding(jl_ptls_t ptls, jl_module_t *mb_parent, uintptr_t nptr,
22832282
uint8_t bits) JL_NOTSAFEPOINT
22842283
{
22852284
jl_gc_markqueue_t *mq = &ptls->mark_queue;
2286-
for (; mb_begin < mb_end; mb_begin++) {
2287-
jl_binding_t *b = *mb_begin;
2288-
if (b == (jl_binding_t *)jl_nothing)
2289-
continue;
2290-
verify_parent1("module", mb_parent, mb_begin, "binding_buff");
2291-
gc_assert_parent_validity((jl_value_t *)mb_parent, (jl_value_t *)b);
2292-
gc_try_claim_and_push(mq, b, &nptr);
2293-
}
22942285
jl_value_t *bindings = (jl_value_t *)jl_atomic_load_relaxed(&mb_parent->bindings);
22952286
gc_assert_parent_validity((jl_value_t *)mb_parent, bindings);
22962287
gc_try_claim_and_push(mq, bindings, &nptr);
@@ -2422,13 +2413,8 @@ FORCE_INLINE void gc_mark_outrefs(jl_ptls_t ptls, jl_gc_markqueue_t *mq, void *_
24222413
else if (foreign_alloc)
24232414
objprofile_count(jl_module_type, bits == GC_OLD_MARKED, sizeof(jl_module_t));
24242415
jl_module_t *mb_parent = (jl_module_t *)new_obj;
2425-
jl_svec_t *bindings = jl_atomic_load_relaxed(&mb_parent->bindings);
2426-
jl_binding_t **table = (jl_binding_t**)jl_svec_data(bindings);
2427-
size_t bsize = jl_svec_len(bindings);
2428-
uintptr_t nptr = ((bsize + mb_parent->usings.len + 1) << 2) | (bits & GC_OLD);
2429-
jl_binding_t **mb_begin = table + 1;
2430-
jl_binding_t **mb_end = table + bsize;
2431-
gc_mark_module_binding(ptls, mb_parent, mb_begin, mb_end, nptr, bits);
2416+
uintptr_t nptr = ((mb_parent->usings.len + 1) << 2) | (bits & GC_OLD);
2417+
gc_mark_module_binding(ptls, mb_parent, nptr, bits);
24322418
}
24332419
else if (vtag == jl_task_tag << 4) {
24342420
if (update_meta)

0 commit comments

Comments
 (0)