Skip to content

Commit

Permalink
jl_insert_method_instances: also remove codeinst
Browse files Browse the repository at this point in the history
  • Loading branch information
timholy committed Jul 13, 2022
1 parent e8801cb commit de8b202
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
7 changes: 6 additions & 1 deletion src/dump.c
Original file line number Diff line number Diff line change
Expand Up @@ -2346,13 +2346,18 @@ static void jl_insert_method_instances(jl_array_t *list)
}
}
invalidate_backedges(&remove_code_instance_from_validation, caller, world, "jl_insert_method_instance");
// The codeinst of this mi haven't yet been removed
jl_code_instance_t *codeinst = caller->cache;
while (codeinst) {
remove_code_instance_from_validation(codeinst);
codeinst = codeinst->next;
}
}
jl_array_del_end(mi->backedges, j - jins);
if (jins == 0) {
// None of the callers were valid, so invalidate `mi` too
jl_array_uint8_set(valids, i, 0);
invalidate_backedges(&remove_code_instance_from_validation, mi, world, "jl_insert_method_instance");
// The codeinst of this mi haven't yet been removed
jl_code_instance_t *codeinst = mi->cache;
while (codeinst) {
remove_code_instance_from_validation(codeinst);
Expand Down
4 changes: 1 addition & 3 deletions test/precompile.jl
Original file line number Diff line number Diff line change
Expand Up @@ -938,9 +938,7 @@ precompile_test_harness("invoke") do dir
end

m = get_real_method(M.h)
mi = m.specializations[1]
@test !isdefined(mi, :backedges)
@test !isdefined(mi, :cache)
@test isempty(m.specializations)
end

# test --compiled-modules=no command line option
Expand Down

0 comments on commit de8b202

Please sign in to comment.