Module rustc_query_system::dep_graph
source · Modules
- Code for debugging the dep-graph.
- dep_node 🔒This module defines the
DepNode
type which the compiler uses to represent nodes in the dependency graph. ADepNode
consists of aDepKind
(which specifies the kind of thing it represents, like a piece of HIR, MIR, etc) and aFingerprint
, a 128 bit hash value the exact meaning of which depends on the node’sDepKind
. Together, the kind and the fingerprint fully identify a dependency node, even across multiple compilation sessions. In other words, the value of the fingerprint does not depend on anything that is specific to a given compilation session, like an unpredictable interning key (e.g., NodeId, DefId, Symbol) or the numeric value of a pointer. The concept behind this could be compared to how git commit hashes uniquely identify a given commit and has a few advantages: - graph 🔒
- query 🔒
- The data that we will serialize and deserialize.
Structs
- This struct stores metadata about each DepKind.
- Data for use when recompiling the current crate.
- A “work product” is an intermediate result that we save into the incremental directory for later re-use. The primary example are the object files that we save for each partition at code generation time.
- A “work product” corresponds to a
.o
(or other) file that we save in between runs. These IDs do not have aDefId
but rather some independent path or string that persists between runs without the need to be mapped or unmapped. (This ensures we can serialize them even in the absence of a tcx.)
Enums
- Describes the contents of the fingerprint generated by a given query.
Traits
- Describe the different families of dependency nodes.