Skip to content

Commit 00f8757

Browse files
committed
Skip unnecessary type-id check
1 parent d544f59 commit 00f8757

File tree

9 files changed

+18
-12
lines changed

9 files changed

+18
-12
lines changed

src/accumulator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl<A: Accumulator> Ingredient for IngredientImpl<A> {
100100
self.index
101101
}
102102

103-
fn maybe_changed_after(
103+
unsafe fn maybe_changed_after(
104104
&self,
105105
_db: &dyn Database,
106106
_input: Id,

src/function.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ where
224224
self.index
225225
}
226226

227-
fn maybe_changed_after(
227+
unsafe fn maybe_changed_after(
228228
&self,
229229
db: &dyn Database,
230230
input: Id,

src/ingredient.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ pub trait Ingredient: Any + std::fmt::Debug + Send + Sync {
5151
fn debug_name(&self) -> &'static str;
5252

5353
/// Has the value for `input` in this ingredient changed after `revision`?
54-
fn maybe_changed_after<'db>(
54+
///
55+
/// # Safety
56+
///
57+
/// The passed in database needs to be the same one that the ingredient was created with.
58+
unsafe fn maybe_changed_after<'db>(
5559
&'db self,
5660
db: &'db dyn Database,
5761
input: Id,

src/input.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ impl<C: Configuration> Ingredient for IngredientImpl<C> {
215215
self.ingredient_index
216216
}
217217

218-
fn maybe_changed_after(
218+
unsafe fn maybe_changed_after(
219219
&self,
220220
_db: &dyn Database,
221221
_input: Id,

src/input/input_field.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ where
4949
CycleRecoveryStrategy::Panic
5050
}
5151

52-
fn maybe_changed_after(
52+
unsafe fn maybe_changed_after(
5353
&self,
5454
db: &dyn Database,
5555
input: Id,

src/interned.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ where
282282
self.ingredient_index
283283
}
284284

285-
fn maybe_changed_after(
285+
unsafe fn maybe_changed_after(
286286
&self,
287287
_db: &dyn Database,
288288
_input: Id,

src/key.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,12 @@ impl InputDependencyIndex {
100100
last_verified_at: crate::Revision,
101101
) -> MaybeChangedAfter {
102102
match self.key_index {
103-
Some(key_index) => db
104-
.zalsa()
105-
.lookup_ingredient(self.ingredient_index)
106-
.maybe_changed_after(db, key_index, last_verified_at),
103+
// SAFETY: The `db` belongs to the ingredient
104+
Some(key_index) => unsafe {
105+
db.zalsa()
106+
.lookup_ingredient(self.ingredient_index)
107+
.maybe_changed_after(db, key_index, last_verified_at)
108+
},
107109
// Data in tables themselves remain valid until the table as a whole is reset.
108110
None => MaybeChangedAfter::No(InputAccumulatedValues::Empty),
109111
}

src/tracked_struct.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ where
735735
self.ingredient_index
736736
}
737737

738-
fn maybe_changed_after(
738+
unsafe fn maybe_changed_after(
739739
&self,
740740
db: &dyn Database,
741741
input: Id,

src/tracked_struct/tracked_field.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ where
5555
crate::cycle::CycleRecoveryStrategy::Panic
5656
}
5757

58-
fn maybe_changed_after<'db>(
58+
unsafe fn maybe_changed_after<'db>(
5959
&'db self,
6060
db: &'db dyn Database,
6161
input: Id,

0 commit comments

Comments
 (0)