Rollup merge of #117044 - RalfJung:miri, r=RalfJung
Miri subtree update This should unblock https://github.com/rust-lang/rust/pull/116581
This commit is contained in:
commit
fe4fde24e5
@ -1 +1 @@
|
|||||||
249624b5043013d18c00f0401ca431c1a6baa8cd
|
9e3f784eb2c7c847b6c3578b373c0e0bc9233ca3
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use std::sync::atomic::{AtomicU64, Ordering};
|
use std::cell::Cell;
|
||||||
use std::time::{Duration, Instant as StdInstant};
|
use std::time::{Duration, Instant as StdInstant};
|
||||||
|
|
||||||
/// When using a virtual clock, this defines how many nanoseconds we pretend are passing for each
|
/// When using a virtual clock, this defines how many nanoseconds we pretend are passing for each
|
||||||
@ -59,7 +59,7 @@ enum ClockKind {
|
|||||||
},
|
},
|
||||||
Virtual {
|
Virtual {
|
||||||
/// The "current virtual time".
|
/// The "current virtual time".
|
||||||
nanoseconds: AtomicU64,
|
nanoseconds: Cell<u64>,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ pub fn tick(&self) {
|
|||||||
// Time will pass without us doing anything.
|
// Time will pass without us doing anything.
|
||||||
}
|
}
|
||||||
ClockKind::Virtual { nanoseconds } => {
|
ClockKind::Virtual { nanoseconds } => {
|
||||||
nanoseconds.fetch_add(NANOSECONDS_PER_BASIC_BLOCK, Ordering::SeqCst);
|
nanoseconds.update(|x| x + NANOSECONDS_PER_BASIC_BLOCK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,7 +93,8 @@ pub fn sleep(&self, duration: Duration) {
|
|||||||
ClockKind::Host { .. } => std::thread::sleep(duration),
|
ClockKind::Host { .. } => std::thread::sleep(duration),
|
||||||
ClockKind::Virtual { nanoseconds } => {
|
ClockKind::Virtual { nanoseconds } => {
|
||||||
// Just pretend that we have slept for some time.
|
// Just pretend that we have slept for some time.
|
||||||
nanoseconds.fetch_add(duration.as_nanos().try_into().unwrap(), Ordering::SeqCst);
|
let nanos: u64 = duration.as_nanos().try_into().unwrap();
|
||||||
|
nanoseconds.update(|x| x + nanos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,9 +111,7 @@ pub fn now(&self) -> Instant {
|
|||||||
match &self.kind {
|
match &self.kind {
|
||||||
ClockKind::Host { .. } => Instant { kind: InstantKind::Host(StdInstant::now()) },
|
ClockKind::Host { .. } => Instant { kind: InstantKind::Host(StdInstant::now()) },
|
||||||
ClockKind::Virtual { nanoseconds } =>
|
ClockKind::Virtual { nanoseconds } =>
|
||||||
Instant {
|
Instant { kind: InstantKind::Virtual { nanoseconds: nanoseconds.get() } },
|
||||||
kind: InstantKind::Virtual { nanoseconds: nanoseconds.load(Ordering::SeqCst) },
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#![feature(rustc_private)]
|
#![feature(rustc_private)]
|
||||||
|
#![feature(cell_update)]
|
||||||
#![feature(float_gamma)]
|
#![feature(float_gamma)]
|
||||||
#![feature(map_try_insert)]
|
#![feature(map_try_insert)]
|
||||||
#![feature(never_type)]
|
#![feature(never_type)]
|
||||||
|
@ -37,7 +37,7 @@ fn handle_miri_get_backtrace(
|
|||||||
let this = self.eval_context_mut();
|
let this = self.eval_context_mut();
|
||||||
let tcx = this.tcx;
|
let tcx = this.tcx;
|
||||||
|
|
||||||
let flags = if let Some(flags_op) = args.get(0) {
|
let flags = if let Some(flags_op) = args.first() {
|
||||||
this.read_scalar(flags_op)?.to_u64()?
|
this.read_scalar(flags_op)?.to_u64()?
|
||||||
} else {
|
} else {
|
||||||
throw_ub_format!("expected at least 1 argument")
|
throw_ub_format!("expected at least 1 argument")
|
||||||
|
Loading…
Reference in New Issue
Block a user