Browse Source

* enabled generic multi-string concatenation optimization now that var
parameters for strings work (although they're not as efficient as
function results for the JVM target)

git-svn-id: branches/jvmbackend@18535 -

Jonas Maebe 14 years ago
parent
commit
e403ddca0c
3 changed files with 3 additions and 5 deletions
  1. 0 2
      compiler/nadd.pas
  2. 1 1
      rtl/java/compproc.inc
  3. 2 2
      rtl/java/ustrings.inc

+ 0 - 2
compiler/nadd.pas

@@ -2511,7 +2511,6 @@ implementation
 {$endif cpuneedsmulhelper}
       begin
          result:=nil;
-{$ifndef jvm}
          { Can we optimize multiple string additions into a single call?
            This need to be done on a complete tree to detect the multiple
            add nodes and is therefor done before the subtrees are processed }
@@ -2520,7 +2519,6 @@ implementation
              result := genmultistringadd(self);
              exit;
            end;
-{$endif jvm}
          { first do the two subtrees }
          firstpass(left);
          firstpass(right);

+ 1 - 1
rtl/java/compproc.inc

@@ -308,7 +308,7 @@ Function fpc_AnsiStr_To_UnicodeStr (Const S2 : AnsiString): UnicodeString; compi
 Function fpc_UnicodeStr_To_WideStr (const S2 : UnicodeString): WideString; compilerproc;
 Function fpc_WideStr_To_UnicodeStr (Const S2 : WideString): UnicodeString; compilerproc;
 Function fpc_UnicodeStr_Concat (const S1,S2 : UnicodeString) : UnicodeString; compilerproc;
-function fpc_UnicodeStr_Concat_multi (const sarr:array of Unicodestring): unicodestring; compilerproc;
+procedure fpc_UnicodeStr_Concat_multi (var DestS:Unicodestring;const sarr:array of Unicodestring); compilerproc;
 Function fpc_Char_To_UnicodeStr(const c : AnsiChar): UnicodeString; compilerproc;
 Function fpc_CharArray_To_UnicodeStr(const arr: array of AnsiChar; zerobased: boolean = true): UnicodeString; compilerproc;
 

+ 2 - 2
rtl/java/ustrings.inc

@@ -141,7 +141,7 @@ begin
 end;
 
 
-function fpc_UnicodeStr_Concat_multi (const sarr:array of Unicodestring): unicodestring; compilerproc;
+procedure fpc_UnicodeStr_Concat_multi (var DestS:Unicodestring;const sarr:array of Unicodestring); compilerproc;
 Var
   i  : Longint;
   Size,NewSize : SizeInt;
@@ -158,7 +158,7 @@ begin
       if length(sarr[i])>0 then
         sb.append(sarr[i]);
     end;
-  result:=sb.toString;
+  DestS:=sb.toString;
 end;