Struct rustc_query_system::dep_graph::graph::WorkProduct [−][src]
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]
impl Clone for WorkProduct[src]fn clone(&self) -> 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]
fn clone_from(&mut self, source: &Self)1.0.0[src]Performs copy-assignment from source. Read more
impl Debug for WorkProduct[src]
impl Debug for WorkProduct[src]impl<__D: Decoder> Decodable<__D> for WorkProduct[src]
impl<__D: Decoder> Decodable<__D> for WorkProduct[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> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
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]
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