about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAriel Ben-Yehuda <arielb1@mail.tau.ac.il>2015-08-18 00:17:02 +0300
committerAriel Ben-Yehuda <arielb1@mail.tau.ac.il>2015-08-18 00:25:29 +0300
commit13809ffff7022a24b33d93f63a2cbdb6ecd20805 (patch)
tree4931113b5af4ffd99245a9945a044b5b457989de
parent8aeaaac6545565345f4df7d24d6421f93f28d698 (diff)
don't iterate over all impls when none match
before:
573.01user 4.04system 7:33.86elapsed 127%CPU (0avgtext+0avgdata 1141656maxresident)k
after:
567.03user 4.00system 7:28.23elapsed 127%CPU (0avgtext+0avgdata 1133112maxresident)k

an additional 1% improvement
-rw-r--r--src/librustc/middle/ty.rs11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index f99760b6210..69b83b24ffd 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -3222,13 +3222,12 @@ impl<'tcx> TraitDef<'tcx> {
                 for &impl_def_id in impls {
                     f(impl_def_id);
                 }
-                return; // we don't need to process the other non-blanket impls
             }
-        }
-
-        for v in self.nonblanket_impls.borrow().values() {
-            for &impl_def_id in v {
-                f(impl_def_id);
+        } else {
+            for v in self.nonblanket_impls.borrow().values() {
+                for &impl_def_id in v {
+                    f(impl_def_id);
+                }
             }
         }
     }