]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Improved performance of print statement
authorJamie McCracken <jamiemcc@gnome.org>
Tue, 27 May 2008 05:05:28 +0000 (05:05 +0000)
committerJamie McCracken <jamiemcc@src.gnome.org>
Tue, 27 May 2008 05:05:28 +0000 (05:05 +0000)
2008-05-27  Jamie McCracken  <jamiemcc@gnome.org>

* vala/valagenieparser.vala:

Improved performance of print statement

svn path=/trunk/; revision=1457

ChangeLog
vala/valagenieparser.vala

index 39db469d59ddea37d44c92ab73eb8ff6375d5d61..1454a38617fc8e5510817850b23401d0c8a281bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-27  Jamie McCracken  <jamiemcc@gnome.org>
+
+       * vala/valagenieparser.vala: 
+       
+       Improved performance of print statement
+
 2008-05-27  Jamie McCracken  <jamiemcc@gnome.org>
 
        * vala/valagenieparser.vala: 
index fa5989c6c9d9bab474d25d5240a05010e8e85cb7..2c8410aad3a243600198835a239a8ed919aa990d 100644 (file)
@@ -638,9 +638,22 @@ public class Vala.Genie.Parser : CodeVisitor {
                                        i++;
                                        
                                        if (p_expr != null) { 
-                                               string s = "\"\\n\"";
-                                               var rhs = new StringLiteral (s, get_src (begin));
-                                               p_expr = new BinaryExpression (BinaryOperator.PLUS, p_expr, rhs, get_src (begin));
+                                               string s = "\\n\"";
+                                               
+                                               if (p_expr is StringLiteral) {
+                                                       var s_exp = (StringLiteral) p_expr;
+                                                       var len = s_exp.value.size ();
+                                                       
+                                                       if (len > 2) {
+                                                               var st =  s_exp.value.ndup (len-1);
+                                                               st += s;
+                                                               s_exp.value = st;
+                                                       }
+                                               } else {
+                                                       string s = "\"\\n\"";
+                                                       var rhs = new StringLiteral (s, get_src (begin));
+                                                       p_expr = new BinaryExpression (BinaryOperator.PLUS, p_expr, rhs, get_src (begin));
+                                               }
                                        }
                                
                                }