8015727: Thread safe print function

Fri, 31 May 2013 13:04:55 -0300

author
jlaskey
date
Fri, 31 May 2013 13:04:55 -0300
changeset 315
64250b3a2f2a
parent 314
b4e6cc05ce09
child 316
295c91f5fdde

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();

mercurial