| OLD | NEW |
| 1 // Copyright 2007-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2007-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 return -1; | 203 return -1; |
| 204 } | 204 } |
| 205 } else { | 205 } else { |
| 206 return 0; | 206 return 0; |
| 207 } | 207 } |
| 208 } | 208 } |
| 209 | 209 |
| 210 uchar Utf8::CalculateValue(const byte* str, | 210 uchar Utf8::CalculateValue(const byte* str, |
| 211 unsigned length, | 211 unsigned length, |
| 212 unsigned* cursor) { | 212 unsigned* cursor) { |
| 213 // We only get called for non-ascii characters. | 213 // We only get called for non-ASCII characters. |
| 214 if (length == 1) { | 214 if (length == 1) { |
| 215 *cursor += 1; | 215 *cursor += 1; |
| 216 return kBadChar; | 216 return kBadChar; |
| 217 } | 217 } |
| 218 byte first = str[0]; | 218 byte first = str[0]; |
| 219 byte second = str[1] ^ 0x80; | 219 byte second = str[1] ^ 0x80; |
| 220 if (second & 0xC0) { | 220 if (second & 0xC0) { |
| 221 *cursor += 1; | 221 *cursor += 1; |
| 222 return kBadChar; | 222 return kBadChar; |
| 223 } | 223 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 const byte* Utf8::ReadBlock(Buffer<const char*> str, byte* buffer, | 279 const byte* Utf8::ReadBlock(Buffer<const char*> str, byte* buffer, |
| 280 unsigned capacity, unsigned* chars_read_ptr, unsigned* offset_ptr) { | 280 unsigned capacity, unsigned* chars_read_ptr, unsigned* offset_ptr) { |
| 281 unsigned offset = *offset_ptr; | 281 unsigned offset = *offset_ptr; |
| 282 // Bail out early if we've reached the end of the string. | 282 // Bail out early if we've reached the end of the string. |
| 283 if (offset == str.length()) { | 283 if (offset == str.length()) { |
| 284 *chars_read_ptr = 0; | 284 *chars_read_ptr = 0; |
| 285 return NULL; | 285 return NULL; |
| 286 } | 286 } |
| 287 const byte* data = reinterpret_cast<const byte*>(str.data()); | 287 const byte* data = reinterpret_cast<const byte*>(str.data()); |
| 288 if (data[offset] <= kMaxOneByteChar) { | 288 if (data[offset] <= kMaxOneByteChar) { |
| 289 // The next character is an ascii char so we scan forward over | 289 // The next character is an ASCII char so we scan forward over |
| 290 // the following ascii characters and return the next pure ascii | 290 // the following ASCII characters and return the next pure ASCII |
| 291 // substring | 291 // substring |
| 292 const byte* result = data + offset; | 292 const byte* result = data + offset; |
| 293 offset++; | 293 offset++; |
| 294 while ((offset < str.length()) && (data[offset] <= kMaxOneByteChar)) | 294 while ((offset < str.length()) && (data[offset] <= kMaxOneByteChar)) |
| 295 offset++; | 295 offset++; |
| 296 *chars_read_ptr = offset - *offset_ptr; | 296 *chars_read_ptr = offset - *offset_ptr; |
| 297 *offset_ptr = offset; | 297 *offset_ptr = offset; |
| 298 return result; | 298 return result; |
| 299 } else { | 299 } else { |
| 300 // The next character is non-ascii so we just fill the buffer | 300 // The next character is non-ASCII so we just fill the buffer |
| 301 unsigned cursor = 0; | 301 unsigned cursor = 0; |
| 302 unsigned chars_read = 0; | 302 unsigned chars_read = 0; |
| 303 while (offset < str.length()) { | 303 while (offset < str.length()) { |
| 304 uchar c = data[offset]; | 304 uchar c = data[offset]; |
| 305 if (c <= kMaxOneByteChar) { | 305 if (c <= kMaxOneByteChar) { |
| 306 // Fast case for ascii characters | 306 // Fast case for ASCII characters |
| 307 if (!CharacterStream::EncodeAsciiCharacter(c, | 307 if (!CharacterStream::EncodeAsciiCharacter(c, |
| 308 buffer, | 308 buffer, |
| 309 capacity, | 309 capacity, |
| 310 cursor)) | 310 cursor)) |
| 311 break; | 311 break; |
| 312 offset += 1; | 312 offset += 1; |
| 313 } else { | 313 } else { |
| 314 unsigned chars = 0; | 314 unsigned chars = 0; |
| 315 c = Utf8::ValueOf(data + offset, str.length() - offset, &chars); | 315 c = Utf8::ValueOf(data + offset, str.length() - offset, &chars); |
| 316 if (!CharacterStream::EncodeNonAsciiCharacter(c, | 316 if (!CharacterStream::EncodeNonAsciiCharacter(c, |
| (...skipping 1298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1615 + kEcma262CanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCase
<1>) // NOLINT | 1615 + kEcma262CanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCase
<1>) // NOLINT |
| 1616 + kEcma262UnCanonicalizeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
se<4>) // NOLINT | 1616 + kEcma262UnCanonicalizeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
se<4>) // NOLINT |
| 1617 + kEcma262UnCanonicalizeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
se<2>) // NOLINT | 1617 + kEcma262UnCanonicalizeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
se<2>) // NOLINT |
| 1618 + kEcma262UnCanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
se<2>) // NOLINT | 1618 + kEcma262UnCanonicalizeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
se<2>) // NOLINT |
| 1619 + kCanonicalizationRangeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
se<1>) // NOLINT | 1619 + kCanonicalizationRangeMultiStrings0Size * sizeof(MultiCharacterSpecialCa
se<1>) // NOLINT |
| 1620 + kCanonicalizationRangeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
se<1>) // NOLINT | 1620 + kCanonicalizationRangeMultiStrings1Size * sizeof(MultiCharacterSpecialCa
se<1>) // NOLINT |
| 1621 + kCanonicalizationRangeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
se<1>); // NOLINT | 1621 + kCanonicalizationRangeMultiStrings7Size * sizeof(MultiCharacterSpecialCa
se<1>); // NOLINT |
| 1622 } | 1622 } |
| 1623 | 1623 |
| 1624 } // namespace unicode | 1624 } // namespace unicode |
| OLD | NEW |