Skip to content

Commit 2da5ca3

Browse files
committed
Skip unnecessary type-id check
1 parent b845fc9 commit 2da5ca3

File tree

9 files changed

+18
-12
lines changed

9 files changed

+18
-12
lines changed

Diff for: src/accumulator.rs

+1-1
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,

Diff for: src/function.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ where
218218
self.index
219219
}
220220

221-
fn maybe_changed_after(
221+
unsafe fn maybe_changed_after(
222222
&self,
223223
db: &dyn Database,
224224
input: Id,

Diff for: src/ingredient.rs

+5-1
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,

Diff for: src/input.rs

+1-1
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,

Diff for: src/input/input_field.rs

+1-1
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,

Diff for: src/interned.rs

+1-1
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,

Diff for: src/key.rs

+6-4
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
}

Diff for: src/tracked_struct.rs

+1-1
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,

Diff for: src/tracked_struct/tracked_field.rs

+1-1
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)