Skip to content
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

precompile: serialize the full edges graph #46920

Merged
merged 1 commit into from
Oct 5, 2022
Merged

Conversation

vtjnash
Copy link
Sponsor Member

@vtjnash vtjnash commented Sep 27, 2022

Previously, we would flatten the edges graph during serialization, to simplify the deserialization codes, but that now was adding complexity and confusion and uncertainty to the code paths. Clean that all up, so that we do not do that.

This uses the same algorithm now as #46749 for cycle convergence.

@timholy Sorry that I have probably broken a bit of SnoopCompile here. I didn't quite know what needed to be kept. But jl_insert_backedges is much smaller now, and handles everything, so I think it should be easy to figure out. Thanks for adding all of the excellent tests, as they were quite good at finding places I had shifted some array or where I hadn't completed the algorithm rewrite.

Copy link
Sponsor Member

@timholy timholy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few suggestions for the logging part

src/dump.c Outdated Show resolved Hide resolved
src/dump.c Outdated Show resolved Hide resolved
src/dump.c Outdated Show resolved Hide resolved
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. This also avoids needing to interact with
backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.
@timholy timholy merged commit fbd5a72 into master Oct 5, 2022
@timholy timholy deleted the jn/dump-ci-graph branch October 5, 2022 16:00
timholy added a commit to timholy/SnoopCompile.jl that referenced this pull request Oct 15, 2022
This updates to the logging format used by the most recent nightly build
of Julia (1.9). While there has been a lot of churn in this area, there
are reasons to hope that we're entering a period of stability: there are
no known "holes" in our coverage after resolving the `invoke` issues
(JuliaLang/julia#46010 and fixup PRs that came
later), and the subsequent major rewrite of the invalidation logic
(JuliaLang/julia#46920) suggests this format may
have some durability.
timholy added a commit to timholy/SnoopCompile.jl that referenced this pull request Oct 15, 2022
This updates to the logging format used by the most recent nightly build
of Julia (1.9). While there has been a lot of churn in this area, there
are reasons to hope that we're entering a period of stability: there are
no known "holes" in our coverage after resolving the `invoke` issues
(JuliaLang/julia#46010 and fixup PRs that came
later), and the subsequent major rewrite of the invalidation logic
(JuliaLang/julia#46920) suggests this format may
have some durability.

Co-authored-by: Rik Huijzer <rikhuijzer@pm.me>
timholy added a commit to timholy/SnoopCompile.jl that referenced this pull request Oct 15, 2022
This updates to the logging format used by the most recent nightly build
of Julia (1.9). While there has been a lot of churn in this area, there
are reasons to hope that we're entering a period of stability: there are
no known "holes" in our coverage after resolving the `invoke` issues
(JuliaLang/julia#46010 and fixup PRs that came
later), and the subsequent major rewrite of the invalidation logic
during deserialization (JuliaLang/julia#46920)
suggests this format may have some durability.

Co-authored-by: Rik Huijzer <rikhuijzer@pm.me>
vtjnash added a commit that referenced this pull request Nov 29, 2022
Previously, we would flatten the edges graph during serialization, to
simplify the deserialization codes, but that now was adding complexity
and confusion and uncertainty to the code paths. Clean that all up, so
that we do not do that. Validation is performed while they are represented
as forward edges, so avoids needing to interact with backedges at all.

This uses the same algorithm now as #46749 for cycle convergence.

(cherry picked from commit fbd5a72)
KristofferC added a commit that referenced this pull request Dec 14, 2022
[release 1.8] backport of precompile: serialize the full edges graph (#46920)
KristofferC added a commit that referenced this pull request Dec 14, 2022
[release 1.8] backport of precompile: serialize the full edges graph (#46920)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants