Rollup merge of #117194 - nnethercote:rustc_incremental, r=cjgillot
Minor improvements to `rustc_incremental` Just some things I spotted while looking at this code. r? `@cjgillot`
This commit is contained in:
commit
577026c65c
@ -5,7 +5,6 @@
|
||||
#![cfg_attr(not(bootstrap), doc(rust_logo))]
|
||||
#![cfg_attr(not(bootstrap), feature(rustdoc_internals))]
|
||||
#![cfg_attr(not(bootstrap), allow(internal_features))]
|
||||
#![feature(never_type)]
|
||||
#![recursion_limit = "256"]
|
||||
#![deny(rustc::untranslatable_diagnostic)]
|
||||
#![deny(rustc::diagnostic_outside_of_impl)]
|
||||
@ -19,15 +18,11 @@
|
||||
mod errors;
|
||||
mod persist;
|
||||
|
||||
use assert_dep_graph::assert_dep_graph;
|
||||
pub use persist::copy_cgu_workproduct_to_incr_comp_cache_dir;
|
||||
pub use persist::delete_workproduct_files;
|
||||
pub use persist::finalize_session_directory;
|
||||
pub use persist::garbage_collect_session_directories;
|
||||
pub use persist::in_incr_comp_dir;
|
||||
pub use persist::in_incr_comp_dir_sess;
|
||||
pub use persist::load_query_result_cache;
|
||||
pub use persist::prepare_session_directory;
|
||||
pub use persist::save_dep_graph;
|
||||
pub use persist::save_work_product_index;
|
||||
pub use persist::setup_dep_graph;
|
||||
|
@ -53,7 +53,7 @@
|
||||
//! ## Synchronization
|
||||
//!
|
||||
//! There is some synchronization needed in order for the compiler to be able to
|
||||
//! determine whether a given private session directory is not in used any more.
|
||||
//! determine whether a given private session directory is not in use any more.
|
||||
//! This is done by creating a lock file for each session directory and
|
||||
//! locking it while the directory is still being used. Since file locks have
|
||||
//! operating system support, we can rely on the lock being released if the
|
||||
@ -136,26 +136,29 @@
|
||||
const INT_ENCODE_BASE: usize = base_n::CASE_INSENSITIVE;
|
||||
|
||||
/// Returns the path to a session's dependency graph.
|
||||
pub fn dep_graph_path(sess: &Session) -> PathBuf {
|
||||
pub(crate) fn dep_graph_path(sess: &Session) -> PathBuf {
|
||||
in_incr_comp_dir_sess(sess, DEP_GRAPH_FILENAME)
|
||||
}
|
||||
|
||||
/// Returns the path to a session's staging dependency graph.
|
||||
///
|
||||
/// On the difference between dep-graph and staging dep-graph,
|
||||
/// see `build_dep_graph`.
|
||||
pub fn staging_dep_graph_path(sess: &Session) -> PathBuf {
|
||||
pub(crate) fn staging_dep_graph_path(sess: &Session) -> PathBuf {
|
||||
in_incr_comp_dir_sess(sess, STAGING_DEP_GRAPH_FILENAME)
|
||||
}
|
||||
pub fn work_products_path(sess: &Session) -> PathBuf {
|
||||
|
||||
pub(crate) fn work_products_path(sess: &Session) -> PathBuf {
|
||||
in_incr_comp_dir_sess(sess, WORK_PRODUCTS_FILENAME)
|
||||
}
|
||||
|
||||
/// Returns the path to a session's query cache.
|
||||
pub fn query_cache_path(sess: &Session) -> PathBuf {
|
||||
in_incr_comp_dir_sess(sess, QUERY_CACHE_FILENAME)
|
||||
}
|
||||
|
||||
/// Locks a given session directory.
|
||||
pub fn lock_file_path(session_dir: &Path) -> PathBuf {
|
||||
fn lock_file_path(session_dir: &Path) -> PathBuf {
|
||||
let crate_dir = session_dir.parent().unwrap();
|
||||
|
||||
let directory_name = session_dir.file_name().unwrap().to_string_lossy();
|
||||
@ -202,7 +205,7 @@ pub fn in_incr_comp_dir(incr_comp_session_dir: &Path, file_name: &str) -> PathBu
|
||||
/// The garbage collection will take care of it.
|
||||
///
|
||||
/// [`rustc_interface::queries::dep_graph`]: ../../rustc_interface/struct.Queries.html#structfield.dep_graph
|
||||
pub fn prepare_session_directory(
|
||||
pub(crate) fn prepare_session_directory(
|
||||
sess: &Session,
|
||||
crate_name: Symbol,
|
||||
stable_crate_id: StableCrateId,
|
||||
@ -373,7 +376,7 @@ pub fn finalize_session_directory(sess: &Session, svh: Option<Svh>) {
|
||||
let _ = garbage_collect_session_directories(sess);
|
||||
}
|
||||
|
||||
pub fn delete_all_session_dir_contents(sess: &Session) -> io::Result<()> {
|
||||
pub(crate) fn delete_all_session_dir_contents(sess: &Session) -> io::Result<()> {
|
||||
let sess_dir_iterator = sess.incr_comp_session_dir().read_dir()?;
|
||||
for entry in sess_dir_iterator {
|
||||
let entry = entry?;
|
||||
@ -621,7 +624,7 @@ fn is_old_enough_to_be_collected(timestamp: SystemTime) -> bool {
|
||||
}
|
||||
|
||||
/// Runs garbage collection for the current session.
|
||||
pub fn garbage_collect_session_directories(sess: &Session) -> io::Result<()> {
|
||||
pub(crate) fn garbage_collect_session_directories(sess: &Session) -> io::Result<()> {
|
||||
debug!("garbage_collect_session_directories() - begin");
|
||||
|
||||
let session_directory = sess.incr_comp_session_dir();
|
||||
|
@ -1,4 +1,4 @@
|
||||
//! Code to save/load the dep-graph from files.
|
||||
//! Code to load the dep-graph from files.
|
||||
|
||||
use crate::errors;
|
||||
use rustc_data_structures::memmap::Mmap;
|
||||
|
@ -11,14 +11,11 @@
|
||||
mod work_product;
|
||||
|
||||
pub use fs::finalize_session_directory;
|
||||
pub use fs::garbage_collect_session_directories;
|
||||
pub use fs::in_incr_comp_dir;
|
||||
pub use fs::in_incr_comp_dir_sess;
|
||||
pub use fs::prepare_session_directory;
|
||||
pub use load::load_query_result_cache;
|
||||
pub use load::setup_dep_graph;
|
||||
pub use load::LoadResult;
|
||||
pub use save::save_dep_graph;
|
||||
pub use save::save_work_product_index;
|
||||
pub use work_product::copy_cgu_workproduct_to_incr_comp_cache_dir;
|
||||
pub use work_product::delete_workproduct_files;
|
||||
|
@ -1,3 +1,4 @@
|
||||
use crate::assert_dep_graph::assert_dep_graph;
|
||||
use crate::errors;
|
||||
use rustc_data_structures::fx::FxIndexMap;
|
||||
use rustc_data_structures::sync::join;
|
||||
@ -39,7 +40,7 @@ pub fn save_dep_graph(tcx: TyCtxt<'_>) {
|
||||
let dep_graph_path = dep_graph_path(sess);
|
||||
let staging_dep_graph_path = staging_dep_graph_path(sess);
|
||||
|
||||
sess.time("assert_dep_graph", || crate::assert_dep_graph(tcx));
|
||||
sess.time("assert_dep_graph", || assert_dep_graph(tcx));
|
||||
sess.time("check_dirty_clean", || dirty_clean::check_dirty_clean_annotations(tcx));
|
||||
|
||||
if sess.opts.unstable_opts.incremental_info {
|
||||
|
@ -11,7 +11,8 @@
|
||||
use std::fs as std_fs;
|
||||
use std::path::Path;
|
||||
|
||||
/// Copies a CGU work product to the incremental compilation directory, so next compilation can find and reuse it.
|
||||
/// Copies a CGU work product to the incremental compilation directory, so next compilation can
|
||||
/// find and reuse it.
|
||||
pub fn copy_cgu_workproduct_to_incr_comp_cache_dir(
|
||||
sess: &Session,
|
||||
cgu_name: &str,
|
||||
@ -45,7 +46,7 @@ pub fn copy_cgu_workproduct_to_incr_comp_cache_dir(
|
||||
}
|
||||
|
||||
/// Removes files for a given work product.
|
||||
pub fn delete_workproduct_files(sess: &Session, work_product: &WorkProduct) {
|
||||
pub(crate) fn delete_workproduct_files(sess: &Session, work_product: &WorkProduct) {
|
||||
for (_, path) in work_product.saved_files.items().into_sorted_stable_ord() {
|
||||
let path = in_incr_comp_dir_sess(sess, path);
|
||||
if let Err(err) = std_fs::remove_file(&path) {
|
||||
|
Loading…
Reference in New Issue
Block a user