From e79f6ee3ca0175076645413a3d83a01a366df369 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Mon, 22 May 2017 08:56:29 +0200
Subject: [PATCH] do not use StringBuffer

---
 .../com/oracle/truffle/r/engine/shell/RCommand.java  |  2 +-
 .../oracle/truffle/r/library/tools/ToolsText.java    |  2 +-
 .../truffle/r/nodes/builtin/base/EncodeString.java   |  6 +++---
 .../truffle/r/nodes/builtin/base/GrepFunctions.java  |  4 ++--
 .../oracle/truffle/r/nodes/builtin/base/Parse.java   |  2 +-
 .../oracle/truffle/r/nodes/builtin/base/Strrep.java  |  2 +-
 .../truffle/r/nodes/builtin/base/TraceFunctions.java |  2 +-
 .../builtin/base/system/SystemFunctionFactory.java   |  2 +-
 .../r/nodes/builtin/helpers/BrowserInteractNode.java |  2 +-
 .../com/oracle/truffle/r/nodes/ffi/RFFIUtils.java    |  4 ++--
 .../truffle/r/nodes/objects/DispatchGeneric.java     |  2 +-
 .../src/com/oracle/truffle/r/runtime/DCF.java        |  4 ++--
 .../src/com/oracle/truffle/r/runtime/RDeparse.java   |  2 +-
 .../src/com/oracle/truffle/r/runtime/REnvVars.java   |  2 +-
 .../src/com/oracle/truffle/r/runtime/RSerialize.java |  2 +-
 .../truffle/r/runtime/conn/TextConnections.java      | 12 ++++++------
 .../truffle/r/test/generate/TestOutputManager.java   |  6 +++---
 .../truffle/r/test/library/stats/TestFitting.java    |  4 ++--
 18 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
index 0f98a4dbcb..b48d4d484a 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/shell/RCommand.java
@@ -225,7 +225,7 @@ public class RCommand {
                     }
 
                     String continuePrompt = getContinuePrompt(vm);
-                    StringBuffer sb = new StringBuffer(input);
+                    StringBuilder sb = new StringBuilder(input);
                     Source source = RSource.fromTextInternal(sb.toString(), RSource.Internal.SHELL_INPUT);
                     boolean hasExecutor = hasExectuor(vm);
                     while (true) {
diff --git a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/tools/ToolsText.java b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/tools/ToolsText.java
index 79f1b7df8b..c95e3d4a45 100644
--- a/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/tools/ToolsText.java
+++ b/com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/tools/ToolsText.java
@@ -49,7 +49,7 @@ public class ToolsText {
             for (int i = 0; i < data.length; i++) {
                 String input = strings.getDataAt(i);
                 if (input.indexOf('\t') >= 0) {
-                    StringBuffer sb = new StringBuffer();
+                    StringBuilder sb = new StringBuilder();
                     int b = 0;
                     int start = starts.getDataAt(i % starts.getLength());
                     for (int sx = 0; sx < input.length(); sx++) {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EncodeString.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EncodeString.java
index edff830f72..656ad0b6b1 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EncodeString.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EncodeString.java
@@ -85,7 +85,7 @@ public abstract class EncodeString extends RBuiltinNode.Arg5 {
 
     @TruffleBoundary
     private static String concat(Object... args) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         for (Object arg : args) {
             sb.append(arg);
         }
@@ -229,7 +229,7 @@ public abstract class EncodeString extends RBuiltinNode.Arg5 {
 
     @TruffleBoundary
     private static String addPaddingIgnoreNA(final String el, final int leftPadding, final int rightPadding, final String quoteEl) {
-        final StringBuffer sb = new StringBuffer();
+        final StringBuilder sb = new StringBuilder();
         for (int j = 0; j < leftPadding; j++) {
             sb.append(" ");
         }
@@ -244,7 +244,7 @@ public abstract class EncodeString extends RBuiltinNode.Arg5 {
 
     @TruffleBoundary
     private String addPadding(final String el, final int leftPadding, final int rightPadding, final String quoteEl) {
-        final StringBuffer sb = new StringBuffer();
+        final StringBuilder sb = new StringBuilder();
         for (int j = 0; j < leftPadding; j++) {
             sb.append(" ");
         }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
index 97a8bf4feb..d1432ee475 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
@@ -479,7 +479,7 @@ public class GrepFunctions {
                         int[] fromByteMapping = getFromByteMapping(input); // non-null if it's
                                                                            // necessary
 
-                        StringBuffer sb = new StringBuffer();
+                        StringBuilder sb = new StringBuilder();
                         while (execNode.execute(pcre.result, 0, input, lastEndOffset, eflag, ovector) >= 0) {
                             nmatch++;
 
@@ -623,7 +623,7 @@ public class GrepFunctions {
             return nonEmpty;
         }
 
-        private static void pcreStringAdj(StringBuffer sb, String input, String repl, int[] ovector, int[] fromByteMapping) {
+        private static void pcreStringAdj(StringBuilder sb, String input, String repl, int[] ovector, int[] fromByteMapping) {
             boolean upper = false;
             boolean lower = false;
             int px = 0;
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
index b351ea5aef..55e01a2343 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
@@ -159,7 +159,7 @@ public abstract class Parse extends RBuiltinNode.Arg6 {
     }
 
     private static String coalesce(String[] lines) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         for (String line : lines) {
             sb.append(line);
             sb.append('\n');
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Strrep.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Strrep.java
index 46455a6a60..43dd6c789a 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Strrep.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Strrep.java
@@ -73,7 +73,7 @@ public abstract class Strrep extends RBuiltinNode.Arg2 {
                 if (times == 1) {
                     data[i] = x;
                 } else {
-                    StringBuffer sb = new StringBuffer();
+                    StringBuilder sb = new StringBuilder();
                     for (int t = 0; t < times; t++) {
                         sb.append(x);
                     }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/TraceFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/TraceFunctions.java
index 653e415b77..586af6390e 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/TraceFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/TraceFunctions.java
@@ -203,7 +203,7 @@ public class TraceFunctions {
 
     @TruffleBoundary
     protected static String getStackTrace() {
-        final StringBuffer result = new StringBuffer();
+        final StringBuilder result = new StringBuilder();
         Truffle.getRuntime().iterateFrames(frame -> {
             Frame unwrapped = RArguments.unwrap(frame.getFrame(FrameAccess.READ_ONLY));
             if (RArguments.isRFrame(unwrapped)) {
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/system/SystemFunctionFactory.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/system/SystemFunctionFactory.java
index e751d26204..a384de71c6 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/system/SystemFunctionFactory.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/system/SystemFunctionFactory.java
@@ -130,7 +130,7 @@ public abstract class SystemFunctionFactory {
                         newArgsList.add("-e");
                         newArgsList.add("tools:::.install_packages()");
                         newArgsList.add("--args");
-                        StringBuffer sb = new StringBuffer();
+                        StringBuilder sb = new StringBuilder();
                         i = 2;
                         while (i < commandInfo.args.length) {
                             String arg = commandInfo.args[i];
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
index 71c6062bdd..c37597d069 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/helpers/BrowserInteractNode.java
@@ -147,7 +147,7 @@ public abstract class BrowserInteractNode extends RNode {
                     }
 
                     default:
-                        StringBuffer sb = new StringBuffer(input);
+                        StringBuilder sb = new StringBuilder(input);
                         while (true) {
                             try {
                                 RContext.getEngine().parseAndEval(RSource.fromTextInternal(sb.toString(), RSource.Internal.BROWSER_INPUT), mFrame, true);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
index 9b7df136ad..46cb7f66b6 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/RFFIUtils.java
@@ -150,7 +150,7 @@ public class RFFIUtils {
 
     private static void traceCall(CallMode mode, String name, int depthValue, Object... args) {
         if (traceEnabled) {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             sb.append("CallRFFI[");
             sb.append(mode.printName);
             sb.append(':');
@@ -170,7 +170,7 @@ public class RFFIUtils {
         }
     }
 
-    private static void printArgs(StringBuffer sb, Object[] args) {
+    private static void printArgs(StringBuilder sb, Object[] args) {
         boolean first = true;
         for (Object arg : args) {
             if (first) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/DispatchGeneric.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/DispatchGeneric.java
index ab3e9a0db9..9d4fdeb7f0 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/DispatchGeneric.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/DispatchGeneric.java
@@ -42,7 +42,7 @@ public abstract class DispatchGeneric extends RBaseNode {
 
     @TruffleBoundary
     private static String createMultiDispatchString(RStringVector classes) {
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         for (int i = 0; i < classes.getLength(); i++) {
             if (i > 0) {
                 sb.append('#');
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/DCF.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/DCF.java
index 48069f9e2f..0d4e319a07 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/DCF.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/DCF.java
@@ -52,7 +52,7 @@ public class DCF {
     public static DCF read(String[] lines, Set<String> keepWhiteSet) {
         DCF result = new DCF();
         String fieldName = null;
-        StringBuffer fieldContent = new StringBuffer();
+        StringBuilder fieldContent = new StringBuilder();
         Fields fields = new Fields();
         for (String line : lines) {
             if (line == null) {
@@ -67,7 +67,7 @@ public class DCF {
                 // should start a field, finish off any current one
                 if (fieldName != null) {
                     fields.add(fieldName, fieldContent.toString());
-                    fieldContent = new StringBuffer();
+                    fieldContent = new StringBuilder();
                 }
                 if (endOfParagraph(line)) {
                     fieldName = null;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RDeparse.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RDeparse.java
index 73ebc61f28..07974eaba2 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RDeparse.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RDeparse.java
@@ -1118,7 +1118,7 @@ public class RDeparse {
         if (isValidName(name) || name.length() == 0) {
             return name;
         } else {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             sb.append(qc);
             for (int i = 0; i < name.length(); i++) {
                 char ch = name.charAt(i);
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/REnvVars.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/REnvVars.java
index 87fcb60bbd..5d7338bd0c 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/REnvVars.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/REnvVars.java
@@ -291,7 +291,7 @@ public final class REnvVars implements RContext.ContextState {
     }
 
     private String expandParameters(String value) {
-        StringBuffer result = new StringBuffer();
+        StringBuilder result = new StringBuilder();
         int x = 0;
         int paramStart = value.indexOf("${", x);
         while (paramStart >= 0) {
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSerialize.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSerialize.java
index 8415803a34..8ee00ebb4a 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSerialize.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RSerialize.java
@@ -2038,7 +2038,7 @@ public class RSerialize {
             // IDE debugging
             Iterator<RPairList> iter = active.iterator();
             if (iter.hasNext()) {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 while (iter.hasNext()) {
                     RPairList pl = iter.next();
                     sb.append('[');
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/conn/TextConnections.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/conn/TextConnections.java
index b1e4629053..341f5e16bf 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/conn/TextConnections.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/conn/TextConnections.java
@@ -94,7 +94,7 @@ public class TextConnections {
         TextReadRConnection(TextRConnection base, RAbstractStringVector object) {
             super(base, 0);
             assert object != null;
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             for (int i = 0; i < object.getLength(); i++) {
                 sb.append(object.getDataAt(i));
                 // vector elements are implicitly terminated with a newline
@@ -219,7 +219,7 @@ public class TextConnections {
             }
             if (incompleteLine != null && !endOfLine) {
                 // end of line not found - accumulate incomplete line
-                incompleteLine = new StringBuffer(incompleteLine).append(result).toString();
+                incompleteLine = new StringBuilder(incompleteLine).append(result).toString();
                 base.setIncomplete(true);
             } else if (px < result.length()) {
                 // only reset incompleteLine if
@@ -250,7 +250,7 @@ public class TextConnections {
 
         @Override
         public void writeLines(RAbstractStringVector lines, String sep, boolean useBytes) throws IOException {
-            StringBuffer sb = new StringBuffer();
+            StringBuilder sb = new StringBuilder();
             if (incompleteLine != null) {
                 sb.append(incompleteLine);
                 incompleteLine = null;
@@ -269,7 +269,7 @@ public class TextConnections {
 
         @Override
         public void writeString(String s, boolean nl) throws IOException {
-            writeStringInternal(nl ? new StringBuffer(s).append('\n').toString() : s);
+            writeStringInternal(nl ? new StringBuilder(s).append('\n').toString() : s);
         }
 
         @Override
@@ -328,7 +328,7 @@ public class TextConnections {
      * Strictly implementation-internal connection that is used to support the external debugger.
      */
     public static class InternalStringWriteConnection extends BaseRConnection {
-        private StringBuffer sb = new StringBuffer();
+        private StringBuilder sb = new StringBuilder();
 
         public InternalStringWriteConnection() throws IOException {
             super(ConnectionClass.Terminal, "w", AbstractOpenMode.Write);
@@ -363,7 +363,7 @@ public class TextConnections {
 
         public String getString() {
             String result = sb.toString();
-            sb = new StringBuffer();
+            sb = new StringBuilder();
             return result;
         }
     }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
index 1bfcae0799..11ea456977 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/generate/TestOutputManager.java
@@ -188,9 +188,9 @@ public class TestOutputManager {
     }
 
     private static class SaveBufferedReader extends BufferedReader {
-        StringBuffer save;
+        StringBuilder save;
 
-        SaveBufferedReader(Reader in, StringBuffer save) {
+        SaveBufferedReader(Reader in, StringBuilder save) {
             super(in);
             this.save = save;
         }
@@ -217,7 +217,7 @@ public class TestOutputManager {
         if (!outputFile.exists()) {
             return null;
         }
-        StringBuffer content = new StringBuffer();
+        StringBuilder content = new StringBuilder();
         try (SaveBufferedReader in = new SaveBufferedReader(new FileReader(outputFile), content)) {
             // line format for element name: ##elementName
             // line format for input lines: #input
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestFitting.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestFitting.java
index d1f775861e..56da0b1072 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestFitting.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/library/stats/TestFitting.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@ public class TestFitting extends TestBase {
 
     @Test
     public void testLm() {
-        StringBuffer printCode = new StringBuffer();
+        StringBuilder printCode = new StringBuilder();
         for (String name : CHECK_RESULT_NAMES) {
             printCode.append("print(res$").append(name).append(");");
         }
-- 
GitLab