| Index: src/ostreams.cc
 | 
| diff --git a/src/ostreams.cc b/src/ostreams.cc
 | 
| index 62304eb9081240a1e9942fbaeb2a5076fdeecc05..e927e6bbfdd5288981aa251d2a6c7a25d039de1c 100644
 | 
| --- a/src/ostreams.cc
 | 
| +++ b/src/ostreams.cc
 | 
| @@ -2,12 +2,12 @@
 | 
|  // Use of this source code is governed by a BSD-style license that can be
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
| +#include "src/ostreams.h"
 | 
| +
 | 
|  #include <algorithm>
 | 
| -#include <cctype>
 | 
|  #include <cmath>
 | 
|  
 | 
|  #include "src/base/platform/platform.h"  // For isinf/isnan with MSVC
 | 
| -#include "src/ostreams.h"
 | 
|  
 | 
|  #if V8_OS_WIN
 | 
|  #define snprintf sprintf_s
 | 
| @@ -164,22 +164,26 @@ OFStream& OFStream::flush() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c) {
 | 
| +// Locale-independent predicates.
 | 
| +static bool IsPrint(uint16_t c) { return 0x20 <= c && c <= 0x7e; }
 | 
| +static bool IsSpace(uint16_t c) { return (0x9 <= c && c <= 0xd) || c == 0x20; }
 | 
| +static bool IsOK(uint16_t c) { return (IsPrint(c) || IsSpace(c)) && c != '\\'; }
 | 
| +
 | 
| +
 | 
| +static OStream& PrintUC16(OStream& os, uint16_t c, bool (*pred)(uint16_t)) {
 | 
|    char buf[10];
 | 
| -  const char* format =
 | 
| -      (std::isprint(c.value) || std::isspace(c.value)) && c.value != '\\'
 | 
| -          ? "%c"
 | 
| -          : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
 | 
| -  snprintf(buf, sizeof(buf), format, c.value);
 | 
| +  const char* format = pred(c) ? "%c" : (c <= 0xff) ? "\\x%02x" : "\\u%04x";
 | 
| +  snprintf(buf, sizeof(buf), format, c);
 | 
|    return os << buf;
 | 
|  }
 | 
|  
 | 
|  
 | 
| +OStream& operator<<(OStream& os, const AsReversiblyEscapedUC16& c) {
 | 
| +  return PrintUC16(os, c.value, IsOK);
 | 
| +}
 | 
| +
 | 
| +
 | 
|  OStream& operator<<(OStream& os, const AsUC16& c) {
 | 
| -  char buf[10];
 | 
| -  const char* format =
 | 
| -      std::isprint(c.value) ? "%c" : (c.value <= 0xff) ? "\\x%02x" : "\\u%04x";
 | 
| -  snprintf(buf, sizeof(buf), format, c.value);
 | 
| -  return os << buf;
 | 
| +  return PrintUC16(os, c.value, IsPrint);
 | 
|  }
 | 
|  } }  // namespace v8::internal
 | 
| 
 |