Struct rustc::dep_graph::WorkProduct [] [src]

pub struct WorkProduct {
    pub cgu_name: String,
    pub saved_files: Vec<(WorkProductFileKind, String)>,
}
🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

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.

Each work product is associated with a dep-node, representing the process that produced the work-product. If that dep-node is found to be dirty when we load up, then we will delete the work-product at load time. If the work-product is found to be clean, then we will keep a record in the previous_work_products list.

In addition, work products have an associated hash. This hash is an extra hash that can be used to decide if the work-product from a previous compilation can be re-used (in addition to the dirty edges check).

As the primary example, consider the object files we generate for each partition. In the first run, we create partitions based on the symbols that need to be compiled. For each partition P, we hash the symbols in P and create a WorkProduct record associated with DepNode::TransPartition(P); the hash is the set of symbols in P.

The next time we compile, if the DepNode::TransPartition(P) is judged to be clean (which means none of the things we read to generate the partition were found to be dirty), it will be loaded into previous work products. We will then regenerate the set of symbols in the partition P and hash them (note that new symbols may be added -- for example, new monomorphizations -- even if nothing in P changed!). We will compare that hash against the previous hash. If it matches up, we can reuse the object file.

Fields

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Saved files associated with this CGU

Trait Implementations

impl Clone for WorkProduct
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Debug for WorkProduct
[src]

[src]

Formats the value using the given formatter. Read more

impl Encodable for WorkProduct
[src]

[src]

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

impl Decodable for WorkProduct
[src]

[src]

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?