diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-26 23:47:27 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-26 23:49:37 -0800 |
| commit | 8fdb213eb2b5fc226b9d077078dfab6bf7bac713 (patch) | |
| tree | 88d7038203d9ff9388d68714afccebca28fdd574 /src/rustdoc | |
| parent | 3bfa4570393977ea01a216bd97350fdf1cbf2fdf (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/rustdoc/desc_pass.rs | 9 | ||||
| -rw-r--r-- | src/rustdoc/markdown_pass.rs | 2 | ||||
| -rw-r--r-- | src/rustdoc/par.rs | 2 | ||||
| -rw-r--r-- | src/rustdoc/tystr_pass.rs | 3 |
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, _), _ }, _) { |
