summary refs log tree commit diff
path: root/src/rustdoc
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-26 23:47:27 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-26 23:49:37 -0800
commit8fdb213eb2b5fc226b9d077078dfab6bf7bac713 (patch)
tree88d7038203d9ff9388d68714afccebca28fdd574 /src/rustdoc
parent3bfa4570393977ea01a216bd97350fdf1cbf2fdf (diff)
downloadrust-8fdb213eb2b5fc226b9d077078dfab6bf7bac713.tar.gz
rust-8fdb213eb2b5fc226b9d077078dfab6bf7bac713.zip
rustdoc: Optimize some closures to avoid copying
Diffstat (limited to 'src/rustdoc')
-rw-r--r--src/rustdoc/attr_pass.rs8
-rw-r--r--src/rustdoc/desc_pass.rs9
-rw-r--r--src/rustdoc/markdown_pass.rs2
-rw-r--r--src/rustdoc/par.rs2
-rw-r--r--src/rustdoc/tystr_pass.rs3
5 files changed, 15 insertions, 9 deletions
diff --git a/src/rustdoc/attr_pass.rs b/src/rustdoc/attr_pass.rs
index 1f894c579b7..6f25ae4fbab 100644
--- a/src/rustdoc/attr_pass.rs
+++ b/src/rustdoc/attr_pass.rs
@@ -154,7 +154,7 @@ fn merge_arg_attrs(
     docs: [doc::argdoc],
     attrs: [attr_parser::arg_attrs]
 ) -> [doc::argdoc] {
-    par::anymap(docs) {|doc|
+    par::seqmap(docs) {|doc|
         alt vec::find(attrs) {|attr|
             attr.name == doc.name
         } {
@@ -235,13 +235,15 @@ fn fold_enum(
     fold: fold::fold<astsrv::srv>,
     doc: doc::enumdoc
 ) -> doc::enumdoc {
+
     let srv = fold.ctxt;
+    let doc_id = doc.id();
     let doc = fold::default_seq_fold_enum(fold, doc);
 
     {
         variants: par::anymap(doc.variants) {|variant|
             let attrs = astsrv::exec(srv) {|ctxt|
-                alt check ctxt.ast_map.get(doc.id()) {
+                alt check ctxt.ast_map.get(doc_id) {
                   ast_map::node_item(@{
                     node: ast::item_enum(ast_variants, _), _
                   }, _) {
@@ -288,7 +290,7 @@ fn fold_res(
     let attrs = parse_item_attrs(srv, doc.id(), attr_parser::parse_res);
 
     {
-        args: par::anymap(doc.args) {|doc|
+        args: par::seqmap(doc.args) {|doc|
             alt vec::find(attrs.args) {|attr|
                 attr.name == doc.name
             } {
diff --git a/src/rustdoc/desc_pass.rs b/src/rustdoc/desc_pass.rs
index 42d5e62ffc7..8295f927050 100644
--- a/src/rustdoc/desc_pass.rs
+++ b/src/rustdoc/desc_pass.rs
@@ -42,12 +42,13 @@ fn fold_item(fold: fold::fold<op>, doc: doc::itemdoc) -> doc::itemdoc {
 }
 
 fn fold_fn(fold: fold::fold<op>, doc: doc::fndoc) -> doc::fndoc {
+    let fold_ctxt = fold.ctxt;
     let doc = fold::default_seq_fold_fn(fold, doc);
 
     {
         args: par::anymap(doc.args) {|doc|
             {
-                desc: maybe_apply_op(fold.ctxt, doc.desc)
+                desc: maybe_apply_op(fold_ctxt, doc.desc)
                 with doc
             }
         },
@@ -61,12 +62,13 @@ fn fold_fn(fold: fold::fold<op>, doc: doc::fndoc) -> doc::fndoc {
 }
 
 fn fold_enum(fold: fold::fold<op>, doc: doc::enumdoc) -> doc::enumdoc {
+    let fold_ctxt = fold.ctxt;
     let doc = fold::default_seq_fold_enum(fold, doc);
 
     {
         variants: par::anymap(doc.variants) {|variant|
             {
-                desc: maybe_apply_op(fold.ctxt, variant.desc)
+                desc: maybe_apply_op(fold_ctxt, variant.desc)
                 with variant
             }
         }
@@ -75,12 +77,13 @@ fn fold_enum(fold: fold::fold<op>, doc: doc::enumdoc) -> doc::enumdoc {
 }
 
 fn fold_res(fold: fold::fold<op>, doc: doc::resdoc) -> doc::resdoc {
+    let fold_ctxt = fold.ctxt;
     let doc = fold::default_seq_fold_res(fold, doc);
 
     {
         args: par::anymap(doc.args) {|arg|
             {
-                desc: maybe_apply_op(fold.ctxt, arg.desc)
+                desc: maybe_apply_op(fold_ctxt, arg.desc)
                 with arg
             }
         }
diff --git a/src/rustdoc/markdown_pass.rs b/src/rustdoc/markdown_pass.rs
index 41b33688390..95e1b670060 100644
--- a/src/rustdoc/markdown_pass.rs
+++ b/src/rustdoc/markdown_pass.rs
@@ -228,7 +228,7 @@ fn write_sig(ctxt: ctxt, sig: option<str>) {
 
 fn code_block_indent(s: str) -> str {
     let lines = str::lines_any(s);
-    let indented = par::anymap(lines, { |line| #fmt("    %s", line) });
+    let indented = par::seqmap(lines, { |line| #fmt("    %s", line) });
     str::connect(indented, "\n")
 }
 
diff --git a/src/rustdoc/par.rs b/src/rustdoc/par.rs
index 861dea83bc6..d15caffd46f 100644
--- a/src/rustdoc/par.rs
+++ b/src/rustdoc/par.rs
@@ -1,6 +1,6 @@
 export anymap, seqmap, parmap;
 
-fn anymap<T:send, U:send>(v: [T], f: fn(T) -> U) -> [U] {
+fn anymap<T:send, U:send>(v: [T], f: fn~(T) -> U) -> [U] {
     seqmap(v, f)
 }
 
diff --git a/src/rustdoc/tystr_pass.rs b/src/rustdoc/tystr_pass.rs
index 33eab67b1f8..5f3c1496bff 100644
--- a/src/rustdoc/tystr_pass.rs
+++ b/src/rustdoc/tystr_pass.rs
@@ -214,12 +214,13 @@ fn fold_enum(
     fold: fold::fold<astsrv::srv>,
     doc: doc::enumdoc
 ) -> doc::enumdoc {
+    let doc_id = doc.id();
     let srv = fold.ctxt;
 
     {
         variants: par::anymap(doc.variants) {|variant|
             let sig = astsrv::exec(srv) {|ctxt|
-                alt check ctxt.ast_map.get(doc.id()) {
+                alt check ctxt.ast_map.get(doc_id) {
                   ast_map::node_item(@{
                     node: ast::item_enum(ast_variants, _), _
                   }, _) {