From b073fe2537bfd59abb9cb7631768e808312f3fda Mon Sep 17 00:00:00 2001 From: Hiroki6 Date: Sun, 21 Aug 2022 23:28:13 +0200 Subject: [PATCH 1/2] move vector_clock and sync into concurrency & make vector_clock private move thread it back --- src/concurrency/data_race.rs | 5 ++++- src/concurrency/mod.rs | 2 ++ src/{ => concurrency}/sync.rs | 3 ++- src/{ => concurrency}/vector_clock.rs | 0 src/concurrency/weak_memory.rs | 1 + src/lib.rs | 16 ++++++---------- src/shims/time.rs | 2 +- src/shims/unix/sync.rs | 2 +- src/thread.rs | 2 +- 9 files changed, 18 insertions(+), 15 deletions(-) rename src/{ => concurrency}/sync.rs (99%) rename src/{ => concurrency}/vector_clock.rs (100%) diff --git a/src/concurrency/data_race.rs b/src/concurrency/data_race.rs index 410c2b9c3d..0e176ec91f 100644 --- a/src/concurrency/data_race.rs +++ b/src/concurrency/data_race.rs @@ -54,7 +54,10 @@ use rustc_target::abi::{Align, Size}; use crate::*; -use super::weak_memory::EvalContextExt as _; +use super::{ + vector_clock::{VClock, VTimestamp, VectorIdx}, + weak_memory::EvalContextExt as _, +}; pub type AllocExtra = VClockAlloc; diff --git a/src/concurrency/mod.rs b/src/concurrency/mod.rs index 5f8bba8027..07c3f0d599 100644 --- a/src/concurrency/mod.rs +++ b/src/concurrency/mod.rs @@ -1,3 +1,5 @@ pub mod data_race; mod range_object_map; +pub mod sync; +mod vector_clock; pub mod weak_memory; diff --git a/src/sync.rs b/src/concurrency/sync.rs similarity index 99% rename from src/sync.rs rename to src/concurrency/sync.rs index de7d528d33..81e5a83a1f 100644 --- a/src/sync.rs +++ b/src/concurrency/sync.rs @@ -7,6 +7,7 @@ use log::trace; use rustc_data_structures::fx::FxHashMap; use rustc_index::vec::{Idx, IndexVec}; +use super::vector_clock::VClock; use crate::*; /// We cannot use the `newtype_index!` macro because we have to use 0 as a @@ -150,7 +151,7 @@ struct FutexWaiter { /// The state of all synchronization variables. #[derive(Default, Debug)] -pub(super) struct SynchronizationState { +pub(crate) struct SynchronizationState { mutexes: IndexVec, rwlocks: IndexVec, condvars: IndexVec, diff --git a/src/vector_clock.rs b/src/concurrency/vector_clock.rs similarity index 100% rename from src/vector_clock.rs rename to src/concurrency/vector_clock.rs diff --git a/src/concurrency/weak_memory.rs b/src/concurrency/weak_memory.rs index 317258a028..30037b6394 100644 --- a/src/concurrency/weak_memory.rs +++ b/src/concurrency/weak_memory.rs @@ -87,6 +87,7 @@ use crate::*; use super::{ data_race::{GlobalState as DataRaceState, ThreadClockSet}, range_object_map::{AccessType, RangeObjectMap}, + vector_clock::{VClock, VTimestamp, VectorIdx}, }; pub type AllocExtra = StoreBufferAlloc; diff --git a/src/lib.rs b/src/lib.rs index 8ca3e8d15e..d2bb904f3e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,9 +61,7 @@ mod operator; mod range_map; mod shims; mod stacked_borrows; -mod sync; -mod thread; -mod vector_clock; +pub mod thread; // Establish a "crate-wide prelude": we often import `crate::*`. @@ -87,17 +85,17 @@ pub use crate::concurrency::data_race::{ EvalContextExt as DataRaceEvalContextExt, }; pub use crate::diagnostics::{ - register_diagnostic, report_error, EvalContextExt as DiagnosticsEvalContextExt, - NonHaltingDiagnostic, TerminationInfo, + EvalContextExt as DiagnosticsEvalContextExt, NonHaltingDiagnostic, register_diagnostic, + report_error, TerminationInfo, }; pub use crate::eval::{ - create_ecx, eval_entry, AlignmentCheck, BacktraceStyle, IsolatedOp, MiriConfig, RejectOpWith, + AlignmentCheck, BacktraceStyle, create_ecx, eval_entry, IsolatedOp, MiriConfig, RejectOpWith, }; pub use crate::helpers::{CurrentSpan, EvalContextExt as HelpersEvalContextExt}; pub use crate::intptrcast::ProvenanceMode; pub use crate::machine::{ AllocExtra, Evaluator, FrameData, MiriEvalContext, MiriEvalContextExt, MiriMemoryKind, - Provenance, ProvenanceExtra, NUM_CPUS, PAGE_SIZE, STACK_ADDR, STACK_SIZE, + NUM_CPUS, PAGE_SIZE, Provenance, ProvenanceExtra, STACK_ADDR, STACK_SIZE, }; pub use crate::mono_hash_map::MonoHashMap; pub use crate::operator::EvalContextExt as OperatorEvalContextExt; @@ -105,12 +103,10 @@ pub use crate::range_map::RangeMap; pub use crate::stacked_borrows::{ CallId, EvalContextExt as StackedBorEvalContextExt, Item, Permission, SbTag, Stack, Stacks, }; -pub use crate::sync::{CondvarId, EvalContextExt as SyncEvalContextExt, MutexId, RwLockId}; +pub use concurrency::sync::{CondvarId, EvalContextExt as SyncEvalContextExt, MutexId, RwLockId}; pub use crate::thread::{ EvalContextExt as ThreadsEvalContextExt, SchedulingAction, ThreadId, ThreadManager, ThreadState, }; -pub use crate::vector_clock::{VClock, VTimestamp, VectorIdx}; - /// Insert rustc arguments at the beginning of the argument list that Miri wants to be /// set per default, for maximal validation power. pub const MIRI_DEFAULT_ARGS: &[&str] = &[ diff --git a/src/shims/time.rs b/src/shims/time.rs index 67303c47db..d639939ec5 100644 --- a/src/shims/time.rs +++ b/src/shims/time.rs @@ -1,7 +1,7 @@ use std::time::{Duration, Instant, SystemTime}; +use crate::thread::Time; use crate::*; -use thread::Time; /// Returns the time elapsed between the provided time and the unix epoch as a `Duration`. pub fn system_time_to_duration<'tcx>(time: &SystemTime) -> InterpResult<'tcx, Duration> { diff --git a/src/shims/unix/sync.rs b/src/shims/unix/sync.rs index 69e632915b..246cb100bc 100644 --- a/src/shims/unix/sync.rs +++ b/src/shims/unix/sync.rs @@ -3,8 +3,8 @@ use std::time::SystemTime; use rustc_hir::LangItem; use rustc_middle::ty::{layout::TyAndLayout, query::TyCtxtAt, subst::Subst, Ty}; +use crate::thread::Time; use crate::*; -use thread::Time; // pthread_mutexattr_t is either 4 or 8 bytes, depending on the platform. diff --git a/src/thread.rs b/src/thread.rs index b92728be20..dc8b1c2911 100644 --- a/src/thread.rs +++ b/src/thread.rs @@ -15,7 +15,7 @@ use rustc_middle::ty::layout::TyAndLayout; use rustc_target::spec::abi::Abi; use crate::concurrency::data_race; -use crate::sync::SynchronizationState; +use crate::concurrency::sync::SynchronizationState; use crate::*; #[derive(Clone, Copy, Debug, PartialEq, Eq)] From 8ee68490122fba1849565e99804e8c78ee4d9e3a Mon Sep 17 00:00:00 2001 From: Hiroki6 Date: Sun, 21 Aug 2022 23:43:16 +0200 Subject: [PATCH 2/2] rustfmt --- src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d2bb904f3e..550d9b9d7b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -85,17 +85,17 @@ pub use crate::concurrency::data_race::{ EvalContextExt as DataRaceEvalContextExt, }; pub use crate::diagnostics::{ - EvalContextExt as DiagnosticsEvalContextExt, NonHaltingDiagnostic, register_diagnostic, - report_error, TerminationInfo, + register_diagnostic, report_error, EvalContextExt as DiagnosticsEvalContextExt, + NonHaltingDiagnostic, TerminationInfo, }; pub use crate::eval::{ - AlignmentCheck, BacktraceStyle, create_ecx, eval_entry, IsolatedOp, MiriConfig, RejectOpWith, + create_ecx, eval_entry, AlignmentCheck, BacktraceStyle, IsolatedOp, MiriConfig, RejectOpWith, }; pub use crate::helpers::{CurrentSpan, EvalContextExt as HelpersEvalContextExt}; pub use crate::intptrcast::ProvenanceMode; pub use crate::machine::{ AllocExtra, Evaluator, FrameData, MiriEvalContext, MiriEvalContextExt, MiriMemoryKind, - NUM_CPUS, PAGE_SIZE, Provenance, ProvenanceExtra, STACK_ADDR, STACK_SIZE, + Provenance, ProvenanceExtra, NUM_CPUS, PAGE_SIZE, STACK_ADDR, STACK_SIZE, }; pub use crate::mono_hash_map::MonoHashMap; pub use crate::operator::EvalContextExt as OperatorEvalContextExt; @@ -103,10 +103,10 @@ pub use crate::range_map::RangeMap; pub use crate::stacked_borrows::{ CallId, EvalContextExt as StackedBorEvalContextExt, Item, Permission, SbTag, Stack, Stacks, }; -pub use concurrency::sync::{CondvarId, EvalContextExt as SyncEvalContextExt, MutexId, RwLockId}; pub use crate::thread::{ EvalContextExt as ThreadsEvalContextExt, SchedulingAction, ThreadId, ThreadManager, ThreadState, }; +pub use concurrency::sync::{CondvarId, EvalContextExt as SyncEvalContextExt, MutexId, RwLockId}; /// Insert rustc arguments at the beginning of the argument list that Miri wants to be /// set per default, for maximal validation power. pub const MIRI_DEFAULT_ARGS: &[&str] = &[