| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 "use strict"; | 7 "use strict"; |
| 8 | 8 |
| 9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
| 10 | 10 |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 function TypedArrayReduceRight(callback, current) { | 576 function TypedArrayReduceRight(callback, current) { |
| 577 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); | 577 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
| 578 | 578 |
| 579 var length = %_TypedArrayGetLength(this); | 579 var length = %_TypedArrayGetLength(this); |
| 580 return InnerArrayReduceRight(callback, current, this, length, | 580 return InnerArrayReduceRight(callback, current, this, length, |
| 581 arguments.length); | 581 arguments.length); |
| 582 } | 582 } |
| 583 %FunctionSetLength(TypedArrayReduceRight, 1); | 583 %FunctionSetLength(TypedArrayReduceRight, 1); |
| 584 | 584 |
| 585 | 585 |
| 586 function TypedArraySlice(start, end) { | |
| 587 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); | |
| 588 var len = %_TypedArrayGetLength(this); | |
| 589 | |
| 590 var relativeStart = TO_INTEGER(start); | |
| 591 | |
| 592 var k; | |
| 593 if (relativeStart < 0) { | |
| 594 k = MaxSimple(len + relativeStart, 0); | |
| 595 } else { | |
| 596 k = MinSimple(relativeStart, len); | |
| 597 } | |
| 598 | |
| 599 var relativeEnd; | |
| 600 if (IS_UNDEFINED(end)) { | |
| 601 relativeEnd = len; | |
| 602 } else { | |
| 603 relativeEnd = TO_INTEGER(end); | |
| 604 } | |
| 605 | |
| 606 var final; | |
| 607 if (relativeEnd < 0) { | |
| 608 final = MaxSimple(len + relativeEnd, 0); | |
| 609 } else { | |
| 610 final = MinSimple(relativeEnd, len); | |
| 611 } | |
| 612 | |
| 613 var count = MaxSimple(final - k, 0); | |
| 614 var array = TypedArraySpeciesCreate(this, count); | |
| 615 // The code below is the 'then' branch; the 'else' branch species | |
| 616 // a memcpy. Because V8 doesn't canonicalize NaN, the difference is | |
| 617 // unobservable. | |
| 618 var n = 0; | |
| 619 while (k < final) { | |
| 620 var kValue = this[k]; | |
| 621 array[n] = kValue; | |
| 622 k++; | |
| 623 n++; | |
| 624 } | |
| 625 return array; | |
| 626 } | |
| 627 | |
| 628 | |
| 629 // ES6 draft 08-24-14, section 22.2.2.2 | 586 // ES6 draft 08-24-14, section 22.2.2.2 |
| 630 function TypedArrayOf() { | 587 function TypedArrayOf() { |
| 631 var length = arguments.length; | 588 var length = arguments.length; |
| 632 var array = TypedArrayCreate(this, length); | 589 var array = TypedArrayCreate(this, length); |
| 633 for (var i = 0; i < length; i++) { | 590 for (var i = 0; i < length; i++) { |
| 634 array[i] = arguments[i]; | 591 array[i] = arguments[i]; |
| 635 } | 592 } |
| 636 return array; | 593 return array; |
| 637 } | 594 } |
| 638 | 595 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 703 "set", TypedArraySet, | 660 "set", TypedArraySet, |
| 704 "every", TypedArrayEvery, | 661 "every", TypedArrayEvery, |
| 705 "filter", TypedArrayFilter, | 662 "filter", TypedArrayFilter, |
| 706 "find", TypedArrayFind, | 663 "find", TypedArrayFind, |
| 707 "findIndex", TypedArrayFindIndex, | 664 "findIndex", TypedArrayFindIndex, |
| 708 "join", TypedArrayJoin, | 665 "join", TypedArrayJoin, |
| 709 "forEach", TypedArrayForEach, | 666 "forEach", TypedArrayForEach, |
| 710 "map", TypedArrayMap, | 667 "map", TypedArrayMap, |
| 711 "reduce", TypedArrayReduce, | 668 "reduce", TypedArrayReduce, |
| 712 "reduceRight", TypedArrayReduceRight, | 669 "reduceRight", TypedArrayReduceRight, |
| 713 "slice", TypedArraySlice, | |
| 714 "some", TypedArraySome, | 670 "some", TypedArraySome, |
| 715 "sort", TypedArraySort, | 671 "sort", TypedArraySort, |
| 716 "toLocaleString", TypedArrayToLocaleString | 672 "toLocaleString", TypedArrayToLocaleString |
| 717 ]); | 673 ]); |
| 718 | 674 |
| 719 %AddNamedProperty(GlobalTypedArray.prototype, "toString", ArrayToString, | 675 %AddNamedProperty(GlobalTypedArray.prototype, "toString", ArrayToString, |
| 720 DONT_ENUM); | 676 DONT_ENUM); |
| 721 | 677 |
| 722 | 678 |
| 723 macro SETUP_TYPED_ARRAY(NAME, ELEMENT_SIZE) | 679 macro SETUP_TYPED_ARRAY(NAME, ELEMENT_SIZE) |
| 724 %SetCode(GlobalNAME, NAMEConstructor); | 680 %SetCode(GlobalNAME, NAMEConstructor); |
| 725 %FunctionSetPrototype(GlobalNAME, new GlobalObject()); | 681 %FunctionSetPrototype(GlobalNAME, new GlobalObject()); |
| 726 %InternalSetPrototype(GlobalNAME, GlobalTypedArray); | 682 %InternalSetPrototype(GlobalNAME, GlobalTypedArray); |
| 727 %InternalSetPrototype(GlobalNAME.prototype, GlobalTypedArray.prototype); | 683 %InternalSetPrototype(GlobalNAME.prototype, GlobalTypedArray.prototype); |
| 728 | 684 |
| 729 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 685 %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
| 730 READ_ONLY | DONT_ENUM | DONT_DELETE); | 686 READ_ONLY | DONT_ENUM | DONT_DELETE); |
| 731 | 687 |
| 732 %AddNamedProperty(GlobalNAME.prototype, | 688 %AddNamedProperty(GlobalNAME.prototype, |
| 733 "constructor", global.NAME, DONT_ENUM); | 689 "constructor", global.NAME, DONT_ENUM); |
| 734 %AddNamedProperty(GlobalNAME.prototype, | 690 %AddNamedProperty(GlobalNAME.prototype, |
| 735 "BYTES_PER_ELEMENT", ELEMENT_SIZE, | 691 "BYTES_PER_ELEMENT", ELEMENT_SIZE, |
| 736 READ_ONLY | DONT_ENUM | DONT_DELETE); | 692 READ_ONLY | DONT_ENUM | DONT_DELETE); |
| 737 endmacro | 693 endmacro |
| 738 | 694 |
| 739 TYPED_ARRAYS(SETUP_TYPED_ARRAY) | 695 TYPED_ARRAYS(SETUP_TYPED_ARRAY) |
| 740 | 696 |
| 741 }) | 697 }) |
| OLD | NEW |