about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-09-08 23:47:16 +0000
committerbors <bors@rust-lang.org>2017-09-08 23:47:16 +0000
commitdee6d0f62e3b8bf8e58c4106f0f9bb54237c0807 (patch)
tree9d6a5769637d9f38e21c687eadc05e0cf1190397 /src/liballoc
parentdead08cb331343b84564628b139b657f93548320 (diff)
parentc1dddcec06428f5a19adb936774b31d42b57d8af (diff)
downloadrust-dee6d0f62e3b8bf8e58c4106f0f9bb54237c0807.tar.gz
rust-dee6d0f62e3b8bf8e58c4106f0f9bb54237c0807.zip
Auto merge of #44269 - nikomatsakis:issue-43613-limit-cache-obligations, r=arielb1
limit and clear cache obligations opportunistically

Keeping **all** the obligations for every projection is wasteful of
memory and compilation time. We only really care about those
subobligations that may inform the result of the projection (i.e., may
help to resolve any inference variables that appear within).
Therefore, we can clear the subobligations from the cache that don't
potentially affect the result of the projection. On every cache hit,
we also take the opportunity to check if the type variables have been
resolved *yet* and, if so, clear out the pending obligations.

Fixes #43613.

r? @arielb1

NB -- not sure how to test for this. Probably we should add the #43613 test case to perf.
Diffstat (limited to 'src/liballoc')
0 files changed, 0 insertions, 0 deletions