[−][src]Struct rustc_middle::ty::query::OnDiskCache

pub struct OnDiskCache<'sess> {
    serialized_data: Vec<u8>,
    current_diagnostics: Lock<FxHashMap<DepNodeIndex, Vec<Diagnostic>>>,
    prev_cnums: Vec<(u32, String, CrateDisambiguator)>,
    cnum_map: OnceCell<IndexVec<CrateNum, Option<CrateNum>>>,
    source_map: &'sess SourceMap,
    file_index_to_stable_id: FxHashMap<SourceFileIndex, StableSourceFileId>,
    file_index_to_file: Lock<FxHashMap<SourceFileIndex, Lrc<SourceFile>>>,
    query_result_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>,
    prev_diagnostics_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>,
    alloc_decoding_state: AllocDecodingState,
    syntax_contexts: FxHashMap<u32, AbsoluteBytePos>,
    expn_data: FxHashMap<u32, AbsoluteBytePos>,
    hygiene_context: HygieneDecodeContext,
}

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 diagnostics that have been emitted during a query.

Fields

serialized_data: Vec<u8>current_diagnostics: Lock<FxHashMap<DepNodeIndex, Vec<Diagnostic>>>prev_cnums: Vec<(u32, String, CrateDisambiguator)>cnum_map: OnceCell<IndexVec<CrateNum, Option<CrateNum>>>source_map: &'sess SourceMapfile_index_to_stable_id: FxHashMap<SourceFileIndex, StableSourceFileId>file_index_to_file: Lock<FxHashMap<SourceFileIndex, Lrc<SourceFile>>>query_result_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>prev_diagnostics_index: FxHashMap<SerializedDepNodeIndex, AbsoluteBytePos>alloc_decoding_state: AllocDecodingStatesyntax_contexts: FxHashMap<u32, AbsoluteBytePos>expn_data: FxHashMap<u32, AbsoluteBytePos>hygiene_context: HygieneDecodeContext

Implementations

impl<'sess> OnDiskCache<'sess>[src]

pub fn new(sess: &'sess Session, data: Vec<u8>, start_pos: usize) -> Self[src]

Creates a new OnDiskCache instance from the serialized data in data.

pub fn new_empty(source_map: &'sess SourceMap) -> Self[src]

pub fn serialize<'tcx, E>(
    &self,
    tcx: TyCtxt<'tcx>,
    encoder: &mut E
) -> Result<(), E::Error> where
    E: OpaqueEncoder, 
[src]

pub fn load_diagnostics(
    &self,
    tcx: TyCtxt<'_>,
    dep_node_index: SerializedDepNodeIndex
) -> Vec<Diagnostic>
[src]

Loads a diagnostic emitted during the previous compilation session.

pub fn store_diagnostics(
    &self,
    dep_node_index: DepNodeIndex,
    diagnostics: ThinVec<Diagnostic>
)
[src]

Stores a diagnostic emitted during the current compilation session. Anything stored like this will be available via load_diagnostics in the next compilation session.

pub(crate) 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>>, 
[src]

Returns the cached query result if there is something in the cache for the given SerializedDepNodeIndex; otherwise returns None.

pub fn store_diagnostics_for_anon_node(
    &self,
    dep_node_index: DepNodeIndex,
    diagnostics: ThinVec<Diagnostic>
)
[src]

Stores a diagnostic 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.

pub(in ty::query::on_disk_cache) 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>>, 
[src]

pub(in ty::query::on_disk_cache) 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>>, 
[src]

pub(in ty::query::on_disk_cache) fn compute_cnum_map(
    tcx: TyCtxt<'_>,
    prev_cnums: &[(u32, String, CrateDisambiguator)]
) -> IndexVec<CrateNum, Option<CrateNum>>
[src]

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

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

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

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

impl<'a, T> Captures<'a> for T where
    T: ?Sized, 
[src]

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

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

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

type Error = !

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.

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.

impl<T> WithConstness for T[src]