mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-12-24 12:58:37 +00:00
Bump parking_lot and remove workaround
This commit is contained in:
parent
832a5519be
commit
c627cda525
2 changed files with 10 additions and 8 deletions
|
@ -11,8 +11,9 @@ readme = "README.md"
|
|||
[dependencies]
|
||||
crossbeam = "0.7.1"
|
||||
indexmap = "1.0.1"
|
||||
lock_api = "0.4"
|
||||
log = "0.4.5"
|
||||
parking_lot = "0.10.0"
|
||||
parking_lot = "0.11.0"
|
||||
rustc-hash = "1.0"
|
||||
smallvec = "1.0.0"
|
||||
rand = { version = "0.7", features = [ "small_rng" ] }
|
||||
|
|
|
@ -15,9 +15,10 @@ use crate::runtime::Runtime;
|
|||
use crate::runtime::RuntimeId;
|
||||
use crate::runtime::StampedValue;
|
||||
use crate::{CycleError, Database, DiscardIf, DiscardWhat, Event, EventKind, SweepStrategy};
|
||||
// use lock_api::RawRwLockUpgrade;
|
||||
use log::{debug, info};
|
||||
use parking_lot::Mutex;
|
||||
use parking_lot::RwLock;
|
||||
use parking_lot::{RawRwLock, RwLock};
|
||||
use smallvec::SmallVec;
|
||||
use std::marker::PhantomData;
|
||||
use std::ops::Deref;
|
||||
|
@ -165,13 +166,13 @@ where
|
|||
// Check with an upgradable read to see if there is a value
|
||||
// already. (This permits other readers but prevents anyone
|
||||
// else from running `read_upgrade` at the same time.)
|
||||
//
|
||||
// FIXME(Amanieu/parking_lot#101) -- we are using a write-lock
|
||||
// and not an upgradable read here because upgradable reads
|
||||
// can sometimes encounter deadlocks.
|
||||
let old_memo = match self.probe(db, self.state.write(), runtime, revision_now) {
|
||||
let old_memo = match self.probe(db, self.state.upgradable_read(), runtime, revision_now) {
|
||||
ProbeState::UpToDate(v) => return v,
|
||||
ProbeState::StaleOrAbsent(mut state) => {
|
||||
ProbeState::StaleOrAbsent(state) => {
|
||||
type RwLockUpgradableReadGuard<'a, T> =
|
||||
lock_api::RwLockUpgradableReadGuard<'a, RawRwLock, T>;
|
||||
|
||||
let mut state = RwLockUpgradableReadGuard::upgrade(state);
|
||||
match std::mem::replace(&mut *state, QueryState::in_progress(runtime.id())) {
|
||||
QueryState::Memoized(old_memo) => Some(old_memo),
|
||||
QueryState::InProgress { .. } => unreachable!(),
|
||||
|
|
Loading…
Reference in a new issue