Struct rustc_query_system::dep_graph::graph::WorkProduct[−][src]

pub struct WorkProduct {
    pub cgu_name: String,
    pub saved_file: Option<String>,
}
Expand description

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::CodegenUnit(P); the hash is the set of symbols in P.

The next time we compile, if the DepNode::CodegenUnit(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

cgu_name: Stringsaved_file: Option<String>
Expand description

Saved file associated with this CGU.

Trait Implementations

impl Clone for WorkProduct[src]

fn clone(&self) -> WorkProduct[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for WorkProduct[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<__D: Decoder> Decodable<__D> for WorkProduct[src]

fn decode(__decoder: &mut __D) -> Result<Self, <__D as Decoder>::Error>[src]

impl<__E: Encoder> Encodable<__E> for WorkProduct[src]

fn encode(&self, __encoder: &mut __E) -> Result<(), <__E as Encoder>::Error>[src]

Auto Trait Implementations

impl RefUnwindSafe for WorkProduct

impl Send for WorkProduct

impl Sync for WorkProduct

impl Unpin for WorkProduct

impl UnwindSafe for WorkProduct

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone, 
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

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

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.