c4f1304935
Make `process_obligations()` greedier. `process_obligations()` adds new nodes, but it does not process these new nodes until the next time it is called. This commit changes it so that it does process these new nodes within the same call. This change reduces the number of calls to `process_obligations()` required to complete processing, sometimes giving significant speed-ups. The change required some changes to tests. - The output of `cycle-cache-err-60010.rs` is slightly different. - The unit tests required extra cases to handle the earlier processing of the added nodes. I mostly did these in the simplest possible way, by making the added nodes be ignored, thus giving outcomes the same as with the old behaviour. But I changed `success_in_grandchildren()` more extensively so that some obligations are completed earlier than they used to be. r? @nikomatsakis |
||
---|---|---|
.. | ||
base_n | ||
binary_search_util | ||
graph | ||
obligation_forest | ||
owning_ref | ||
sip128 | ||
small_c_str | ||
snapshot_map | ||
sorted_map | ||
tiny_list | ||
transitive_relation | ||
base_n.rs | ||
box_region.rs | ||
Cargo.toml | ||
const_cstr.rs | ||
fingerprint.rs | ||
flock.rs | ||
fx.rs | ||
jobserver.rs | ||
lib.rs | ||
macros.rs | ||
profiling.rs | ||
ptr_key.rs | ||
sharded.rs | ||
sip128.rs | ||
small_c_str.rs | ||
sorted_map.rs | ||
stable_hasher.rs | ||
stable_map.rs | ||
stable_set.rs | ||
svh.rs | ||
sync.rs | ||
thin_vec.rs | ||
tiny_list.rs | ||
transitive_relation.rs | ||
vec_linked_list.rs | ||
work_queue.rs |