mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-10-23 04:46:35 +00:00
make interner take database, not runtime
This commit is contained in:
parent
53ccfa3fc3
commit
782896772f
3 changed files with 15 additions and 9 deletions
|
@ -134,9 +134,8 @@ macro_rules! setup_interned_struct {
|
||||||
// FIXME(rust-lang/rust#65991): The `db` argument *should* have the type `dyn Database`
|
// FIXME(rust-lang/rust#65991): The `db` argument *should* have the type `dyn Database`
|
||||||
$Db: ?Sized + salsa::Database,
|
$Db: ?Sized + salsa::Database,
|
||||||
{
|
{
|
||||||
let runtime = db.runtime();
|
|
||||||
let current_revision = $zalsa::current_revision(db);
|
let current_revision = $zalsa::current_revision(db);
|
||||||
$Configuration::ingredient(db).intern(runtime, ($($field_id,)*))
|
$Configuration::ingredient(db).intern(db.as_salsa_database(), ($($field_id,)*))
|
||||||
}
|
}
|
||||||
|
|
||||||
$(
|
$(
|
||||||
|
|
|
@ -233,7 +233,7 @@ macro_rules! setup_tracked_fn {
|
||||||
use salsa::plumbing as $zalsa;
|
use salsa::plumbing as $zalsa;
|
||||||
let key = $zalsa::macro_if! {
|
let key = $zalsa::macro_if! {
|
||||||
if $needs_interner {
|
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 {
|
} else {
|
||||||
$zalsa::AsId::as_id(&($($input_id),*))
|
$zalsa::AsId::as_id(&($($input_id),*))
|
||||||
}
|
}
|
||||||
|
@ -269,7 +269,7 @@ macro_rules! setup_tracked_fn {
|
||||||
let result = $zalsa::macro_if! {
|
let result = $zalsa::macro_if! {
|
||||||
if $needs_interner {
|
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)
|
$Configuration::fn_ingredient($db).fetch($db, key)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -11,7 +11,6 @@ use crate::ingredient::fmt_index;
|
||||||
use crate::key::DependencyIndex;
|
use crate::key::DependencyIndex;
|
||||||
use crate::local_state::QueryOrigin;
|
use crate::local_state::QueryOrigin;
|
||||||
use crate::plumbing::Jar;
|
use crate::plumbing::Jar;
|
||||||
use crate::runtime::Runtime;
|
|
||||||
use crate::storage::IngredientIndex;
|
use crate::storage::IngredientIndex;
|
||||||
use crate::{Database, DatabaseKeyIndex, Id};
|
use crate::{Database, DatabaseKeyIndex, Id};
|
||||||
|
|
||||||
|
@ -123,13 +122,21 @@ where
|
||||||
unsafe { std::mem::transmute(data) }
|
unsafe { std::mem::transmute(data) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn intern_id<'db>(&'db self, runtime: &'db Runtime, data: C::Data<'db>) -> crate::Id {
|
pub fn intern_id<'db>(
|
||||||
C::deref_struct(self.intern(runtime, data)).as_id()
|
&'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.
|
/// Intern data to a unique reference.
|
||||||
pub fn intern<'db>(&'db self, runtime: &'db Runtime, data: C::Data<'db>) -> C::Struct<'db> {
|
pub fn intern<'db>(
|
||||||
runtime.report_tracked_read(
|
&'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),
|
DependencyIndex::for_table(self.ingredient_index),
|
||||||
Durability::MAX,
|
Durability::MAX,
|
||||||
self.reset_at,
|
self.reset_at,
|
||||||
|
|
Loading…
Reference in a new issue