Rollup merge of #37231 - jonas-schievink:obligation-forest-the-quest-for-performance, r=arielb1
[Obligation Forest] Don't process cycles when stalled This improves the `inflate-0.1.0` benchmark by about 10% for me. /me hopes this is sound
This commit is contained in:
commit
6ae80c6ac4
@ -333,6 +333,7 @@ impl<O: ForestObligation> ObligationForest<O> {
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
stalled = false;
|
||||
let backtrace = self.error_at(index);
|
||||
errors.push(Error {
|
||||
error: err,
|
||||
@ -342,6 +343,16 @@ impl<O: ForestObligation> ObligationForest<O> {
|
||||
}
|
||||
}
|
||||
|
||||
if stalled {
|
||||
// There's no need to perform marking, cycle processing and compression when nothing
|
||||
// changed.
|
||||
return Outcome {
|
||||
completed: vec![],
|
||||
errors: errors,
|
||||
stalled: stalled,
|
||||
};
|
||||
}
|
||||
|
||||
self.mark_as_waiting();
|
||||
self.process_cycles(processor);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user