Skip to content

Commit 394a7e1

Browse files
timholyvtjnash
authored andcommitted
Ensure accurate invalidation logging data (JuliaLang#48982)
* Ensure accurate invalidation logging data This modifies JuliaLang#48841 to restore the required logging data. By collecting at least one additional match, we retain the possibility of identifying at least one trigger of invalidation. * Bump number of invalidation causes * Update src/staticdata_utils.c Co-authored-by: Jameson Nash <[email protected]> --------- Co-authored-by: Jameson Nash <[email protected]>
1 parent 75e6cb1 commit 394a7e1

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/staticdata_utils.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,8 +869,10 @@ static jl_array_t *jl_verify_edges(jl_array_t *targets, size_t minworld)
869869
assert(jl_is_array(expected));
870870
int ambig = 0;
871871
// TODO: possibly need to included ambiguities too (for the optimizer correctness)?
872+
// len + 1 is to allow us to log causes of invalidation (SnoopCompile's @snoopr)
872873
matches = jl_matching_methods((jl_tupletype_t*)sig, jl_nothing,
873-
jl_array_len(expected), 0, minworld, &min_valid, &max_valid, &ambig);
874+
_jl_debug_method_invalidation ? INT32_MAX : jl_array_len(expected),
875+
0, minworld, &min_valid, &max_valid, &ambig);
874876
if (matches == jl_nothing) {
875877
max_valid = 0;
876878
}

test/precompile.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -915,7 +915,7 @@ precompile_test_harness("code caching") do dir
915915
mi = m.specializations[1]
916916
@test hasvalid(mi, world) # was compiled with the new method
917917

918-
# Reporting test
918+
# Reporting test (ensure SnoopCompile works)
919919
@test all(i -> isassigned(invalidations, i), eachindex(invalidations))
920920
m = only(methods(MB.call_nbits))
921921
for mi in m.specializations
@@ -936,7 +936,7 @@ precompile_test_harness("code caching") do dir
936936
j = findfirst(==(tagbad), invalidations)
937937
@test invalidations[j-1] == "insert_backedges_callee"
938938
@test isa(invalidations[j-2], Type)
939-
@test invalidations[j+1] === nothing || isa(invalidations[j+1], Vector{Any}) # [nbits(::UInt8)]
939+
@test isa(invalidations[j+1], Vector{Any}) # [nbits(::UInt8)]
940940

941941
m = only(methods(MB.map_nbits))
942942
@test !hasvalid(m.specializations[1], world+1) # insert_backedges invalidations also trigger their backedges

0 commit comments

Comments
 (0)