about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-06-26 18:02:47 -0700
committerBrian Anderson <banderson@mozilla.com>2011-06-26 18:02:47 -0700
commit08b49a5d8fe975bcd8a0526526eb9692f3f3be4c (patch)
tree7b8d1a3a5679e1f6a276ccb209e11bff4a20eb6c /src/comp
parentcfaa0f4b91b27abfb3b4fba4d0bb31a5e3da7c89 (diff)
downloadrust-08b49a5d8fe975bcd8a0526526eb9692f3f3be4c.tar.gz
rust-08b49a5d8fe975bcd8a0526526eb9692f3f3be4c.zip
Reformulate an assert in ty::tag_variants
This was doing a redundant hashmap lookup. Removing the redundancy trims 5%
(2.8s) off rustc's compile time
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/ty.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 69a59b42105..f9397a05adf 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -2702,8 +2702,13 @@ fn tag_variants(&ctxt cx, &ast::def_id id) -> vec[variant_info] {
     if (cx.sess.get_targ_crate_num() != id._0) {
         ret creader::get_tag_variants(cx, id);
     }
-    assert (cx.items.contains_key(id._1));
-    alt (cx.items.get(id._1)) {
+    auto item = alt (cx.items.find(id._1)) {
+        case (some(?i)) { i }
+        case (none) {
+            cx.sess.bug("expected to find cached node_item")
+        }
+    };
+    alt (item) {
         case (ast_map::node_item(?item)) {
             alt (item.node) {
                 case (ast::item_tag(?variants, _)) {