| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 3596add429ee9335994c525ad946be41648d6842..05de32d60949a941b68c75a4044ed2a59858ab5a 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -6105,8 +6105,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringToNumber) {
|
| // Fast check for a junk value. A valid string may start from a
|
| // whitespace, a sign ('+' or '-'), the decimal point, a decimal digit or
|
| // the 'I' character ('Infinity'). All of that have codes not greater than
|
| - // '9' except 'I' and .
|
| - if (data[start_pos] != 'I' && data[start_pos] != 0xa0) {
|
| + // '9' except 'I', NBSP and NEL.
|
| + if (data[start_pos] != 'I' &&
|
| + data[start_pos] != 0xa0 &&
|
| + data[start_pos] != 0x85) {
|
| return isolate->heap()->nan_value();
|
| }
|
| } else if (len - start_pos < 10 && AreDigits(data, start_pos, len)) {
|
| @@ -6541,11 +6543,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringToUpperCase) {
|
| }
|
|
|
|
|
| -static inline bool IsTrimWhiteSpace(unibrow::uchar c) {
|
| - return unibrow::WhiteSpace::Is(c) || c == 0x200b || c == 0xfeff;
|
| -}
|
| -
|
| -
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringTrim) {
|
| HandleScope scope(isolate);
|
| ASSERT(args.length() == 3);
|
| @@ -6558,15 +6555,17 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringTrim) {
|
| int length = string->length();
|
|
|
| int left = 0;
|
| + UnicodeCache* unicode_cache = isolate->unicode_cache();
|
| if (trimLeft) {
|
| - while (left < length && IsTrimWhiteSpace(string->Get(left))) {
|
| + while (left < length && unicode_cache->IsWhiteSpace(string->Get(left))) {
|
| left++;
|
| }
|
| }
|
|
|
| int right = length;
|
| if (trimRight) {
|
| - while (right > left && IsTrimWhiteSpace(string->Get(right - 1))) {
|
| + while (right > left &&
|
| + unicode_cache->IsWhiteSpace(string->Get(right - 1))) {
|
| right--;
|
| }
|
| }
|
|
|