about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2023-10-23 08:12:40 +0200
committerGitHub <noreply@github.com>2023-10-23 08:12:40 +0200
commitfe4fde24e5b414fb341e1b8d9bc48ac4afdf62f9 (patch)
tree5afdb93b9d98689f47ee3b6e57d1085990eb8b65 /src
parentdde77f7a33ab64115102ba7d4bfd6ab9bb46253e (diff)
parentf35c36af19dd24569d760c77388036fffad0be1a (diff)
downloadrust-fe4fde24e5b414fb341e1b8d9bc48ac4afdf62f9.tar.gz
rust-fe4fde24e5b414fb341e1b8d9bc48ac4afdf62f9.zip
Rollup merge of #117044 - RalfJung:miri, r=RalfJung
Miri subtree update

This should unblock https://github.com/rust-lang/rust/pull/116581
Diffstat (limited to 'src')
-rw-r--r--src/tools/miri/rust-version2
-rw-r--r--src/tools/miri/src/clock.rs13
-rw-r--r--src/tools/miri/src/lib.rs1
-rw-r--r--src/tools/miri/src/shims/backtrace.rs2
4 files changed, 9 insertions, 9 deletions
diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version
index bc3882bcf2b..0335ad3c1d8 100644
--- a/src/tools/miri/rust-version
+++ b/src/tools/miri/rust-version
@@ -1 +1 @@
-249624b5043013d18c00f0401ca431c1a6baa8cd
+9e3f784eb2c7c847b6c3578b373c0e0bc9233ca3
diff --git a/src/tools/miri/src/clock.rs b/src/tools/miri/src/clock.rs
index 24bf90f104f..fd0c121626b 100644
--- a/src/tools/miri/src/clock.rs
+++ b/src/tools/miri/src/clock.rs
@@ -1,4 +1,4 @@
-use std::sync::atomic::{AtomicU64, Ordering};
+use std::cell::Cell;
 use std::time::{Duration, Instant as StdInstant};
 
 /// When using a virtual clock, this defines how many nanoseconds we pretend are passing for each
@@ -59,7 +59,7 @@ enum ClockKind {
     },
     Virtual {
         /// The "current virtual time".
-        nanoseconds: AtomicU64,
+        nanoseconds: Cell<u64>,
     },
 }
 
@@ -82,7 +82,7 @@ impl Clock {
                 // Time will pass without us doing anything.
             }
             ClockKind::Virtual { nanoseconds } => {
-                nanoseconds.fetch_add(NANOSECONDS_PER_BASIC_BLOCK, Ordering::SeqCst);
+                nanoseconds.update(|x| x + NANOSECONDS_PER_BASIC_BLOCK);
             }
         }
     }
@@ -93,7 +93,8 @@ impl Clock {
             ClockKind::Host { .. } => std::thread::sleep(duration),
             ClockKind::Virtual { nanoseconds } => {
                 // 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 @@ impl Clock {
         match &self.kind {
             ClockKind::Host { .. } => Instant { kind: InstantKind::Host(StdInstant::now()) },
             ClockKind::Virtual { nanoseconds } =>
-                Instant {
-                    kind: InstantKind::Virtual { nanoseconds: nanoseconds.load(Ordering::SeqCst) },
-                },
+                Instant { kind: InstantKind::Virtual { nanoseconds: nanoseconds.get() } },
         }
     }
 }
diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs
index 68b9164dec0..b12aae6d414 100644
--- a/src/tools/miri/src/lib.rs
+++ b/src/tools/miri/src/lib.rs
@@ -1,4 +1,5 @@
 #![feature(rustc_private)]
+#![feature(cell_update)]
 #![feature(float_gamma)]
 #![feature(map_try_insert)]
 #![feature(never_type)]
diff --git a/src/tools/miri/src/shims/backtrace.rs b/src/tools/miri/src/shims/backtrace.rs
index 08b26f5fe85..48dafc40c62 100644
--- a/src/tools/miri/src/shims/backtrace.rs
+++ b/src/tools/miri/src/shims/backtrace.rs
@@ -37,7 +37,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
         let this = self.eval_context_mut();
         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()?
         } else {
             throw_ub_format!("expected at least 1 argument")