Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: src/unicode.cc

Issue 1967023004: [wasm] Add UTF-8 validation (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase on parallel compilation Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/unicode.h ('k') | src/unicode-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file was generated at 2014-10-08 15:25:47.940335 5 // This file was generated at 2014-10-08 15:25:47.940335
6 6
7 #include "src/unicode.h" 7 #include "src/unicode.h"
8 #include "src/unicode-inl.h" 8 #include "src/unicode-inl.h"
9 #include <stdio.h> 9 #include <stdio.h>
10 #include <stdlib.h> 10 #include <stdlib.h>
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 } 298 }
299 if (!IsContinuationCharacter(str[3])) { 299 if (!IsContinuationCharacter(str[3])) {
300 *cursor += 1; 300 *cursor += 1;
301 return kBadChar; 301 return kBadChar;
302 } 302 }
303 *cursor += 4; 303 *cursor += 4;
304 return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) - 304 return ((str[0] << 18) + (str[1] << 12) + (str[2] << 6) + str[3]) -
305 0x03C82080; 305 0x03C82080;
306 } 306 }
307 307
308 bool Utf8::Validate(const byte* bytes, size_t length) {
309 size_t cursor = 0;
310
311 // Performance optimization: Skip over single-byte values first.
312 while (cursor < length && bytes[cursor] <= kMaxOneByteChar) {
313 ++cursor;
314 }
315
316 while (cursor < length) {
317 uchar c = ValueOf(bytes + cursor, length - cursor, &cursor);
318 if (!IsValidCharacter(c)) return false;
319 }
320 return true;
321 }
308 322
309 // Uppercase: point.category == 'Lu' 323 // Uppercase: point.category == 'Lu'
310 324
311 static const uint16_t kUppercaseTable0Size = 455; 325 static const uint16_t kUppercaseTable0Size = 455;
312 static const int32_t kUppercaseTable0[455] = { 326 static const int32_t kUppercaseTable0[455] = {
313 1073741889, 90, 1073742016, 214, 327 1073741889, 90, 1073742016, 214,
314 1073742040, 222, 256, 258, // NOLINT 328 1073742040, 222, 256, 258, // NOLINT
315 260, 262, 264, 266, 329 260, 262, 264, 266,
316 268, 270, 272, 274, // NOLINT 330 268, 270, 272, 274, // NOLINT
317 276, 278, 280, 282, 331 276, 278, 280, 282,
(...skipping 3115 matching lines...) Expand 10 before | Expand all | Expand 10 after
3433 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3447 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3434 + 3448 +
3435 kCanonicalizationRangeMultiStrings1Size * 3449 kCanonicalizationRangeMultiStrings1Size *
3436 sizeof(MultiCharacterSpecialCase<1>) // NOLINT 3450 sizeof(MultiCharacterSpecialCase<1>) // NOLINT
3437 + 3451 +
3438 kCanonicalizationRangeMultiStrings7Size * 3452 kCanonicalizationRangeMultiStrings7Size *
3439 sizeof(MultiCharacterSpecialCase<1>); // NOLINT 3453 sizeof(MultiCharacterSpecialCase<1>); // NOLINT
3440 } 3454 }
3441 3455
3442 } // namespace unibrow 3456 } // namespace unibrow
OLDNEW
« no previous file with comments | « src/unicode.h ('k') | src/unicode-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698