From 8e754ec0d7eaee9b2c3f7688eb237240178a1b6d Mon Sep 17 00:00:00 2001 From: XFFXFF <1247714429@qq.com> Date: Thu, 25 Aug 2022 06:30:27 +0800 Subject: [PATCH] add report_untracked_read to salsa::Database --- components/salsa-2022/src/database.rs | 8 ++++++++ salsa-2022-tests/tests/cycles.rs | 5 ++--- salsa-2022-tests/tests/lru.rs | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/components/salsa-2022/src/database.rs b/components/salsa-2022/src/database.rs index 41a7e242..2ec031b3 100644 --- a/components/salsa-2022/src/database.rs +++ b/components/salsa-2022/src/database.rs @@ -22,6 +22,14 @@ pub trait Database: HasJarsDyn + AsSalsaDatabase { fn synthetic_write(&mut self, durability: Durability) { self.runtime_mut().synthetic_write(durability); } + + /// Reports that the query depends on some state unknown to salsa. + /// + /// Queries which report untracked reads will be re-executed in the next + /// revision. + fn report_untracked_read(&self) { + self.runtime().report_untracked_read(); + } } /// Indicates a database that also supports parallel query diff --git a/salsa-2022-tests/tests/cycles.rs b/salsa-2022-tests/tests/cycles.rs index 0caa2a21..65eca622 100644 --- a/salsa-2022-tests/tests/cycles.rs +++ b/salsa-2022-tests/tests/cycles.rs @@ -3,7 +3,6 @@ use std::panic::{RefUnwindSafe, UnwindSafe}; use expect_test::expect; -use salsa::storage::HasJarsDyn; use salsa::Durability; // Axes: @@ -99,13 +98,13 @@ fn memoized_b(db: &dyn Db, input: MyInput) { #[salsa::tracked(jar = Jar)] fn volatile_a(db: &dyn Db, input: MyInput) { - db.runtime().report_untracked_read(); + db.report_untracked_read(); volatile_b(db, input) } #[salsa::tracked(jar = Jar)] fn volatile_b(db: &dyn Db, input: MyInput) { - db.runtime().report_untracked_read(); + db.report_untracked_read(); volatile_a(db, input) } diff --git a/salsa-2022-tests/tests/lru.rs b/salsa-2022-tests/tests/lru.rs index eaff3e57..9426677a 100644 --- a/salsa-2022-tests/tests/lru.rs +++ b/salsa-2022-tests/tests/lru.rs @@ -55,7 +55,7 @@ fn get_hot_potato2(db: &dyn Db, input: MyInput) -> u32 { #[salsa::tracked(jar = Jar, lru = 32)] fn get_volatile(db: &dyn Db, _input: MyInput) -> usize { static COUNTER: AtomicUsize = AtomicUsize::new(0); - db.runtime().report_untracked_read(); + db.report_untracked_read(); COUNTER.fetch_add(1, Ordering::SeqCst) }