diff options
| author | Björn Steinbrink <bsteinbr@gmail.com> | 2013-05-03 12:26:45 +0200 |
|---|---|---|
| committer | Björn Steinbrink <bsteinbr@gmail.com> | 2013-05-03 12:26:45 +0200 |
| commit | 2e3e0c0892d6fc9d20374d31db994eee4d083366 (patch) | |
| tree | a3dd92264e23c3ae63be032ca841a0878b035155 /src/libsyntax/ext | |
| parent | 2ae44a07a9d508d0ad413e70d3152a0f4a087976 (diff) | |
| download | rust-2e3e0c0892d6fc9d20374d31db994eee4d083366.tar.gz rust-2e3e0c0892d6fc9d20374d31db994eee4d083366.zip | |
Avoid needless creation of unique strings in fmt!()
Only the first portion has to be owned, as it acts as the buffer for the constructed string. The remaining strings can be static.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/fmt.rs | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 62641279f88..e9eebe5b2ac 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -273,15 +273,13 @@ fn pieces_to_expr(cx: @ext_ctxt, sp: span, match pc { /* Raw strings get appended via str::push_str */ PieceString(s) => { - let portion = mk_uniq_str(cx, fmt_sp, s); - /* If this is the first portion, then initialize the local buffer with it directly. If it's actually the only piece, then there's no need for it to be mutable */ if i == 0 { - stms.push(mk_local(cx, fmt_sp, npieces > 1, ident, portion)); + stms.push(mk_local(cx, fmt_sp, npieces > 1, ident, mk_uniq_str(cx, fmt_sp, s))); } else { - let args = ~[mk_mut_addr_of(cx, fmt_sp, buf()), portion]; + let args = ~[mk_mut_addr_of(cx, fmt_sp, buf()), mk_base_str(cx, fmt_sp, s)]; let call = mk_call_global(cx, fmt_sp, ~[str_ident, push_ident], |
