Fri, 31 May 2013 13:04:55 -0300
8015727: Thread safe print function
Reviewed-by: sundar
Contributed-by: james.laskey@oracle.com
src/jdk/nashorn/internal/objects/Global.java | file | annotate | diff | comparison | revisions |
1.1 --- a/src/jdk/nashorn/internal/objects/Global.java Fri May 31 17:39:12 2013 +0530 1.2 +++ b/src/jdk/nashorn/internal/objects/Global.java Fri May 31 13:04:55 2013 -0300 1.3 @@ -1628,20 +1628,21 @@ 1.4 @SuppressWarnings("resource") 1.5 private static Object printImpl(final boolean newLine, final Object... objects) { 1.6 final PrintWriter out = Global.getEnv().getOut(); 1.7 + final StringBuilder sb = new StringBuilder(); 1.8 1.9 - boolean first = true; 1.10 for (final Object object : objects) { 1.11 - if (first) { 1.12 - first = false; 1.13 - } else { 1.14 - out.print(' '); 1.15 + if (sb.length() != 0) { 1.16 + sb.append(' '); 1.17 } 1.18 1.19 - out.print(JSType.toString(object)); 1.20 + sb.append(JSType.toString(object)); 1.21 } 1.22 1.23 + // Print all at once to ensure thread friendly result. 1.24 if (newLine) { 1.25 - out.println(); 1.26 + out.println(sb.toString()); 1.27 + } else { 1.28 + out.print(sb.toString()); 1.29 } 1.30 1.31 out.flush();