make interner take database, not runtime

This commit is contained in:
Niko Matsakis 2024-07-23 06:12:44 -04:00
parent 53ccfa3fc3
commit 782896772f
3 changed files with 15 additions and 9 deletions

View file

@ -134,9 +134,8 @@ macro_rules! setup_interned_struct {
// FIXME(rust-lang/rust#65991): The `db` argument *should* have the type `dyn Database`
$Db: ?Sized + salsa::Database,
{
let runtime = db.runtime();
let current_revision = $zalsa::current_revision(db);
$Configuration::ingredient(db).intern(runtime, ($($field_id,)*))
$Configuration::ingredient(db).intern(db.as_salsa_database(), ($($field_id,)*))
}
$(

View file

@ -233,7 +233,7 @@ macro_rules! setup_tracked_fn {
use salsa::plumbing as $zalsa;
let key = $zalsa::macro_if! {
if $needs_interner {
$Configuration::intern_ingredient($db).intern_id($db.runtime(), ($($input_id),*))
$Configuration::intern_ingredient($db).intern_id($db.as_salsa_database(), ($($input_id),*))
} else {
$zalsa::AsId::as_id(&($($input_id),*))
}
@ -269,7 +269,7 @@ macro_rules! setup_tracked_fn {
let result = $zalsa::macro_if! {
if $needs_interner {
{
let key = $Configuration::intern_ingredient($db).intern_id($db.runtime(), ($($input_id),*));
let key = $Configuration::intern_ingredient($db).intern_id($db.as_salsa_database(), ($($input_id),*));
$Configuration::fn_ingredient($db).fetch($db, key)
}
} else {

View file

@ -11,7 +11,6 @@ use crate::ingredient::fmt_index;
use crate::key::DependencyIndex;
use crate::local_state::QueryOrigin;
use crate::plumbing::Jar;
use crate::runtime::Runtime;
use crate::storage::IngredientIndex;
use crate::{Database, DatabaseKeyIndex, Id};
@ -123,13 +122,21 @@ where
unsafe { std::mem::transmute(data) }
}
pub fn intern_id<'db>(&'db self, runtime: &'db Runtime, data: C::Data<'db>) -> crate::Id {
C::deref_struct(self.intern(runtime, data)).as_id()
pub fn intern_id<'db>(
&'db self,
db: &'db dyn crate::Database,
data: C::Data<'db>,
) -> crate::Id {
C::deref_struct(self.intern(db, data)).as_id()
}
/// Intern data to a unique reference.
pub fn intern<'db>(&'db self, runtime: &'db Runtime, data: C::Data<'db>) -> C::Struct<'db> {
runtime.report_tracked_read(
pub fn intern<'db>(
&'db self,
db: &'db dyn crate::Database,
data: C::Data<'db>,
) -> C::Struct<'db> {
db.runtime().report_tracked_read(
DependencyIndex::for_table(self.ingredient_index),
Durability::MAX,
self.reset_at,