Skip to content

incr.comp.: Move Metadata-hash loading to DepGraph. #44702

@michaelwoerister

Description

@michaelwoerister
Member

As of #44696, the DepGraph already has a fingerprint_of() method which allows to query the fingerprint associated with a given DepNode in the current compilation session. However, this method does not yet support retrieving the fingerprints of DepKind::MetaData dep-nodes. As opposed to the fingerprints for other kinds of dep-nodes, these are not computed during the current compilation session; they are rather already computed during the previous compilation session and stored in the metadata.bin file in the exporting crate's incr.comp. session directory.

Currently, this loading of these hashes from metadata.bin happens in rustc_incremental::persist::hash::HashContext. To resolve this issue and gain copious amounts of ❤️s and 🎉s, move this loading logic to DepGraph::fingerprint_of().

The loading should still happen as semi-lazily as it does now (although doing it more lazily via memory mapped files should be implemented at some point in the future) and for that the DepGraph will need to have access to the incr.comp. session directory. It would still be preferable if the DepGraph did not keep a permanent reference to the whole Session, I think.

There's some preliminary work for this task already done in https://github.com/michaelwoerister/rust/tree/metadata-hashes-in-dep-graph (note: this branch is based on top of #44696 and only the latest commit adds something new to that).

cc @alexcrichton @nikomatsakis

Activity

added
C-cleanupCategory: PRs that clean code up or issues documenting cleanup.
on Sep 19, 2017
alexcrichton

alexcrichton commented on Sep 20, 2017

@alexcrichton
Member

I've got a commit at alexcrichton@cb48804 which does this, but I'll wait for #44696 to land before sending a PR

michaelwoerister

michaelwoerister commented on Sep 21, 2017

@michaelwoerister
MemberAuthor

Awesome, thank you!

michaelwoerister

michaelwoerister commented on Sep 21, 2017

@michaelwoerister
MemberAuthor

@alexcrichton Do you mind if I pull your changes into a local branch of mine?
(EDIT: ...and then submit them as part of a larger PR)

alexcrichton

alexcrichton commented on Sep 21, 2017

@alexcrichton
Member

Certainly!

michaelwoerister

michaelwoerister commented on Oct 23, 2017

@michaelwoerister
MemberAuthor

This is implemented as part of #44901.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-incr-compArea: Incremental compilationC-cleanupCategory: PRs that clean code up or issues documenting cleanup.WG-incr-compWorking group: Incremental compilation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @alexcrichton@aidanhs@michaelwoerister

        Issue actions

          incr.comp.: Move Metadata-hash loading to DepGraph. · Issue #44702 · rust-lang/rust