| OLD | NEW |
| 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 (function(global, utils) { | 5 (function(global, utils) { |
| 6 | 6 |
| 7 %CheckIsBootstrapping(); | 7 %CheckIsBootstrapping(); |
| 8 | 8 |
| 9 // ------------------------------------------------------------------- | 9 // ------------------------------------------------------------------- |
| 10 // Imports | 10 // Imports |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 if (start < 0) { | 426 if (start < 0) { |
| 427 return false; | 427 return false; |
| 428 } | 428 } |
| 429 | 429 |
| 430 return %_SubString(s, start, start + ss_len) === ss; | 430 return %_SubString(s, start, start + ss_len) === ss; |
| 431 } | 431 } |
| 432 | 432 |
| 433 %FunctionSetLength(StringEndsWith, 1); | 433 %FunctionSetLength(StringEndsWith, 1); |
| 434 | 434 |
| 435 | 435 |
| 436 // ES6 draft 04-05-14, section 21.1.3.6 | |
| 437 function StringIncludes(searchString, position) { // length == 1 | |
| 438 CHECK_OBJECT_COERCIBLE(this, "String.prototype.includes"); | |
| 439 | |
| 440 var string = TO_STRING(this); | |
| 441 | |
| 442 if (IsRegExp(searchString)) { | |
| 443 throw %make_type_error(kFirstArgumentNotRegExp, "String.prototype.includes")
; | |
| 444 } | |
| 445 | |
| 446 searchString = TO_STRING(searchString); | |
| 447 var pos = TO_INTEGER(position); | |
| 448 | |
| 449 var stringLength = string.length; | |
| 450 if (pos < 0) pos = 0; | |
| 451 if (pos > stringLength) pos = stringLength; | |
| 452 var searchStringLength = searchString.length; | |
| 453 | |
| 454 if (searchStringLength + pos > stringLength) { | |
| 455 return false; | |
| 456 } | |
| 457 | |
| 458 return %StringIndexOf(string, searchString, pos) !== -1; | |
| 459 } | |
| 460 | |
| 461 %FunctionSetLength(StringIncludes, 1); | |
| 462 | |
| 463 | |
| 464 // ES6 Draft 05-22-2014, section 21.1.3.3 | 436 // ES6 Draft 05-22-2014, section 21.1.3.3 |
| 465 function StringCodePointAt(pos) { | 437 function StringCodePointAt(pos) { |
| 466 CHECK_OBJECT_COERCIBLE(this, "String.prototype.codePointAt"); | 438 CHECK_OBJECT_COERCIBLE(this, "String.prototype.codePointAt"); |
| 467 | 439 |
| 468 var string = TO_STRING(this); | 440 var string = TO_STRING(this); |
| 469 var size = string.length; | 441 var size = string.length; |
| 470 pos = TO_INTEGER(pos); | 442 pos = TO_INTEGER(pos); |
| 471 if (pos < 0 || pos >= size) { | 443 if (pos < 0 || pos >= size) { |
| 472 return UNDEFINED; | 444 return UNDEFINED; |
| 473 } | 445 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 // Set up the non-enumerable functions on the String object. | 484 // Set up the non-enumerable functions on the String object. |
| 513 utils.InstallFunctions(GlobalString, DONT_ENUM, [ | 485 utils.InstallFunctions(GlobalString, DONT_ENUM, [ |
| 514 "raw", StringRaw | 486 "raw", StringRaw |
| 515 ]); | 487 ]); |
| 516 | 488 |
| 517 // Set up the non-enumerable functions on the String prototype object. | 489 // Set up the non-enumerable functions on the String prototype object. |
| 518 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ | 490 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ |
| 519 "codePointAt", StringCodePointAt, | 491 "codePointAt", StringCodePointAt, |
| 520 "concat", StringConcat, | 492 "concat", StringConcat, |
| 521 "endsWith", StringEndsWith, | 493 "endsWith", StringEndsWith, |
| 522 "includes", StringIncludes, | |
| 523 "match", StringMatchJS, | 494 "match", StringMatchJS, |
| 524 "repeat", StringRepeat, | 495 "repeat", StringRepeat, |
| 525 "replace", StringReplace, | 496 "replace", StringReplace, |
| 526 "search", StringSearch, | 497 "search", StringSearch, |
| 527 "slice", StringSlice, | 498 "slice", StringSlice, |
| 528 "split", StringSplitJS, | 499 "split", StringSplitJS, |
| 529 "startsWith", StringStartsWith, | 500 "startsWith", StringStartsWith, |
| 530 "toLowerCase", StringToLowerCaseJS, | 501 "toLowerCase", StringToLowerCaseJS, |
| 531 "toLocaleLowerCase", StringToLocaleLowerCase, | 502 "toLocaleLowerCase", StringToLocaleLowerCase, |
| 532 "toUpperCase", StringToUpperCaseJS, | 503 "toUpperCase", StringToUpperCaseJS, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 551 // Exports | 522 // Exports |
| 552 | 523 |
| 553 utils.Export(function(to) { | 524 utils.Export(function(to) { |
| 554 to.StringMatch = StringMatchJS; | 525 to.StringMatch = StringMatchJS; |
| 555 to.StringReplace = StringReplace; | 526 to.StringReplace = StringReplace; |
| 556 to.StringSlice = StringSlice; | 527 to.StringSlice = StringSlice; |
| 557 to.StringSplit = StringSplitJS; | 528 to.StringSplit = StringSplitJS; |
| 558 }); | 529 }); |
| 559 | 530 |
| 560 }) | 531 }) |
| OLD | NEW |