summary refs log tree commit diff
path: root/src/libsyntax/ext
diff options
context:
space:
mode:
authorBjörn Steinbrink <bsteinbr@gmail.com>2013-05-03 12:26:45 +0200
committerBjörn Steinbrink <bsteinbr@gmail.com>2013-05-03 12:26:45 +0200
commit2e3e0c0892d6fc9d20374d31db994eee4d083366 (patch)
treea3dd92264e23c3ae63be032ca841a0878b035155 /src/libsyntax/ext
parent2ae44a07a9d508d0ad413e70d3152a0f4a087976 (diff)
downloadrust-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.rs6
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],