-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handle 4-element insert_backedges_callee
#304
Handle 4-element insert_backedges_callee
#304
Conversation
Codecov ReportBase: 86.14% // Head: 85.31% // Decreases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## master #304 +/- ##
==========================================
- Coverage 86.14% 85.31% -0.83%
==========================================
Files 17 17
Lines 2129 2132 +3
==========================================
- Hits 1834 1819 -15
- Misses 295 313 +18
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
Ugh this parsing logic is very tricky especially with all the different cases for different Julia versions. The failure is around the following (
into
However, after JuliaLang/julia#46920, the output is a vector of 124 elements starting with (first 20):
Now all the required info is in just the first sets of elements, namely the 4 elements around "insert_backedges_callee" ( EDIT: It might be the following change in JuliaLang/julia#46920 since it looks like SnoopCompile.jl was counting the elements between "insert_backedges_callee" and "insert backedges": - invalidate_backedges(&remove_code_instance_from_validation, caller, world, "insert_backedges");
- if (_jl_debug_method_invalidation) {
- targetidx = jl_box_int32((int32_t)idxbad);
- jl_array_ptr_1d_push(_jl_debug_method_invalidation, targetidx);
- targetidx = jl_box_uint64(jl_worklist_key(serializer_worklist));
- jl_array_ptr_1d_push(_jl_debug_method_invalidation, targetidx);
- } |
Oh, sorry I failed to notice this! I tackled this in #306, I made you a co-author. |
This PR should go a long way towards fixing
SnoopCompile
on nightly. I have to admit that I don't really understand most of the code, I just compared the output ofinvalidations
intest/snoopi_deep.jl
of Julia 1.8.2 withnightly
and tried to match them based ondump.c
after JuliaLang/julia#46920.Note that some data which is passed by
dump.c
, such ascallee
,target_idx
, andcallee_idx
are not used. I still annotated them with types to make it easier to use them in case that's necessary.@timholy Feel free to modify this PR directly if you want to make changes.
Appendix
For comparison, these are the outputs of
invalidations
intest/snoopi_deep.jl
around line 868 with some of my notes:Julia 1.8.2
Julia
nightly