Inline mark_as_waiting_from
.
It has a single call site, and the code is easier to read this way.
This commit is contained in:
parent
4a7fb8b13a
commit
85a56cbd88
@ -570,7 +570,19 @@ impl<O: ForestObligation> ObligationForest<O> {
|
||||
#[inline(always)]
|
||||
fn inlined_mark_neighbors_as_waiting_from(&self, node: &Node<O>) {
|
||||
for &index in node.dependents.iter() {
|
||||
self.mark_as_waiting_from(&self.nodes[index]);
|
||||
let node = &self.nodes[index];
|
||||
match node.state.get() {
|
||||
NodeState::Waiting | NodeState::Error => {}
|
||||
NodeState::Success => {
|
||||
node.state.set(NodeState::Waiting);
|
||||
// This call site is cold.
|
||||
self.uninlined_mark_neighbors_as_waiting_from(node);
|
||||
}
|
||||
NodeState::Pending | NodeState::Done => {
|
||||
// This call site is cold.
|
||||
self.uninlined_mark_neighbors_as_waiting_from(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -596,17 +608,6 @@ impl<O: ForestObligation> ObligationForest<O> {
|
||||
}
|
||||
}
|
||||
|
||||
fn mark_as_waiting_from(&self, node: &Node<O>) {
|
||||
match node.state.get() {
|
||||
NodeState::Waiting | NodeState::Error => return,
|
||||
NodeState::Success => node.state.set(NodeState::Waiting),
|
||||
NodeState::Pending | NodeState::Done => {},
|
||||
}
|
||||
|
||||
// This call site is cold.
|
||||
self.uninlined_mark_neighbors_as_waiting_from(node);
|
||||
}
|
||||
|
||||
/// Compresses the vector, removing all popped nodes. This adjusts
|
||||
/// the indices and hence invalidates any outstanding
|
||||
/// indices. Cannot be used during a transaction.
|
||||
|
Loading…
x
Reference in New Issue
Block a user