Struct rustc_query_impl::on_disk_cache::OnDiskCache [−][src]
pub struct OnDiskCache<'sess> {Show 16 fields
serialized_data: Vec<u8>,
current_side_effects: Lock<FxHashMap<DepNodeIndex, QuerySideEffects>>,
cnum_map: OnceCell<UnhashMap<StableCrateId, CrateNum>>,
source_map: &'sess SourceMap,
file_index_to_stable_id: FxHashMap<SourceFileIndex, EncodedSourceFileId>,
file_index_to_file: Lock<FxHashMap<SourceFileIndex, Lrc<SourceFile>>>,
query_result_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>,
prev_side_effects_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>,
alloc_decoding_state: AllocDecodingState,
syntax_contexts: FxHashMap<u32, AbsoluteBytePos>,
expn_data: UnhashMap<ExpnHash, AbsoluteBytePos>,
hygiene_context: HygieneDecodeContext,
foreign_def_path_hashes: UnhashMap<DefPathHash, RawDefId>,
foreign_expn_data: UnhashMap<ExpnHash, u32>,
latest_foreign_def_path_hashes: Lock<UnhashMap<DefPathHash, RawDefId>>,
def_path_hash_to_def_id_cache: Lock<UnhashMap<DefPathHash, Option<DefId>>>,
}Expand description
Provides an interface to incremental compilation data cached from the
previous compilation session. This data will eventually include the results
of a few selected queries (like typeck and mir_optimized) and
any side effects that have been emitted during a query.
Fields
serialized_data: Vec<u8>current_side_effects: Lock<FxHashMap<DepNodeIndex, QuerySideEffects>>cnum_map: OnceCell<UnhashMap<StableCrateId, CrateNum>>source_map: &'sess SourceMapfile_index_to_stable_id: FxHashMap<SourceFileIndex, EncodedSourceFileId>file_index_to_file: Lock<FxHashMap<SourceFileIndex, Lrc<SourceFile>>>query_result_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>prev_side_effects_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>alloc_decoding_state: AllocDecodingStatesyntax_contexts: FxHashMap<u32, AbsoluteBytePos>expn_data: UnhashMap<ExpnHash, AbsoluteBytePos>hygiene_context: HygieneDecodeContextforeign_def_path_hashes: UnhashMap<DefPathHash, RawDefId>foreign_expn_data: UnhashMap<ExpnHash, u32>latest_foreign_def_path_hashes: Lock<UnhashMap<DefPathHash, RawDefId>>def_path_hash_to_def_id_cache: Lock<UnhashMap<DefPathHash, Option<DefId>>>Implementations
pub fn load_side_effects(
&self,
tcx: TyCtxt<'_>,
dep_node_index: SerializedDepNodeIndex
) -> QuerySideEffects
pub fn load_side_effects(
&self,
tcx: TyCtxt<'_>,
dep_node_index: SerializedDepNodeIndex
) -> QuerySideEffects
Loads a QuerySideEffects created during the previous compilation session.
pub fn store_side_effects(
&self,
dep_node_index: DepNodeIndex,
side_effects: QuerySideEffects
)
pub fn store_side_effects(
&self,
dep_node_index: DepNodeIndex,
side_effects: QuerySideEffects
)
Stores a QuerySideEffects emitted during the current compilation session.
Anything stored like this will be available via load_side_effects in
the next compilation session.
pub fn try_load_query_result<'tcx, T>(
&self,
tcx: TyCtxt<'tcx>,
dep_node_index: SerializedDepNodeIndex
) -> Option<T> where
T: for<'a> Decodable<CacheDecoder<'a, 'tcx>>,
pub fn try_load_query_result<'tcx, T>(
&self,
tcx: TyCtxt<'tcx>,
dep_node_index: SerializedDepNodeIndex
) -> Option<T> where
T: for<'a> Decodable<CacheDecoder<'a, 'tcx>>,
Returns the cached query result if there is something in the cache for
the given SerializedDepNodeIndex; otherwise returns None.
pub fn store_side_effects_for_anon_node(
&self,
dep_node_index: DepNodeIndex,
side_effects: QuerySideEffects
)
pub fn store_side_effects_for_anon_node(
&self,
dep_node_index: DepNodeIndex,
side_effects: QuerySideEffects
)
Stores side effect emitted during computation of an anonymous query.
Since many anonymous queries can share the same DepNode, we aggregate
them – as opposed to regular queries where we assume that there is a
1:1 relationship between query-key and DepNode.
fn load_indexed<'tcx, T>(
&self,
tcx: TyCtxt<'tcx>,
dep_node_index: SerializedDepNodeIndex,
index: &FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>,
debug_tag: &'static str
) -> Option<T> where
T: for<'a> Decodable<CacheDecoder<'a, 'tcx>>,
fn with_decoder<'a, 'tcx, T, F: FnOnce(&mut CacheDecoder<'sess, 'tcx>) -> T>(
&'sess self,
tcx: TyCtxt<'tcx>,
pos: AbsoluteBytePos,
f: F
) -> T where
T: Decodable<CacheDecoder<'a, 'tcx>>,
Trait Implementations
Creates a new OnDiskCache instance from the serialized data in data.
fn def_path_hash_to_def_id<'tcx>(
&self,
tcx: TyCtxt<'tcx>,
hash: DefPathHash
) -> Option<DefId>
fn def_path_hash_to_def_id<'tcx>(
&self,
tcx: TyCtxt<'tcx>,
hash: DefPathHash
) -> Option<DefId>
Converts a DefPathHash to its corresponding DefId in the current compilation
session, if it still exists. This is used during incremental compilation to
turn a deserialized DefPathHash into its current DefId. Read more
If the given dep_node’s hash still exists in the current compilation,
and its current DefId is foreign, calls store_foreign_def_id with it. Read more
Auto Trait Implementations
impl<'sess> !RefUnwindSafe for OnDiskCache<'sess>
impl<'sess> !Send for OnDiskCache<'sess>
impl<'sess> !Sync for OnDiskCache<'sess>
impl<'sess> Unpin for OnDiskCache<'sess>
impl<'sess> !UnwindSafe for OnDiskCache<'sess>
Blanket Implementations
Layout
Note: Most layout information is completely unstable and may be different between compiler versions and platforms. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 528 bytes