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 599 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 %FunctionSetLength(TypedArrayIndexOf, 1); | 610 %FunctionSetLength(TypedArrayIndexOf, 1); |
611 | 611 |
612 | 612 |
613 // ES6 section 22.2.3.16 | 613 // ES6 section 22.2.3.16 |
614 function TypedArrayLastIndexOf(element, index) { | 614 function TypedArrayLastIndexOf(element, index) { |
615 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 615 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
616 | 616 |
617 var length = %_TypedArrayGetLength(this); | 617 var length = %_TypedArrayGetLength(this); |
618 | 618 |
619 return InnerArrayLastIndexOf(this, element, index, length, | 619 return InnerArrayLastIndexOf(this, element, index, length, |
620 arguments.length); | 620 %_ArgumentsLength()); |
621 } | 621 } |
622 %FunctionSetLength(TypedArrayLastIndexOf, 1); | 622 %FunctionSetLength(TypedArrayLastIndexOf, 1); |
623 | 623 |
624 | 624 |
625 // ES6 draft 07-15-13, section 22.2.3.18 | 625 // ES6 draft 07-15-13, section 22.2.3.18 |
626 function TypedArrayMap(f, thisArg) { | 626 function TypedArrayMap(f, thisArg) { |
627 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 627 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
628 | 628 |
629 var length = %_TypedArrayGetLength(this); | 629 var length = %_TypedArrayGetLength(this); |
630 var result = TypedArraySpeciesCreate(this, length); | 630 var result = TypedArraySpeciesCreate(this, length); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 return InnerArrayJoin(separator, this, length); | 674 return InnerArrayJoin(separator, this, length); |
675 } | 675 } |
676 | 676 |
677 | 677 |
678 // ES6 draft 07-15-13, section 22.2.3.19 | 678 // ES6 draft 07-15-13, section 22.2.3.19 |
679 function TypedArrayReduce(callback, current) { | 679 function TypedArrayReduce(callback, current) { |
680 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 680 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
681 | 681 |
682 var length = %_TypedArrayGetLength(this); | 682 var length = %_TypedArrayGetLength(this); |
683 return InnerArrayReduce(callback, current, this, length, | 683 return InnerArrayReduce(callback, current, this, length, |
684 arguments.length); | 684 %_ArgumentsLength()); |
685 } | 685 } |
686 %FunctionSetLength(TypedArrayReduce, 1); | 686 %FunctionSetLength(TypedArrayReduce, 1); |
687 | 687 |
688 | 688 |
689 // ES6 draft 07-15-13, section 22.2.3.19 | 689 // ES6 draft 07-15-13, section 22.2.3.19 |
690 function TypedArrayReduceRight(callback, current) { | 690 function TypedArrayReduceRight(callback, current) { |
691 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 691 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
692 | 692 |
693 var length = %_TypedArrayGetLength(this); | 693 var length = %_TypedArrayGetLength(this); |
694 return InnerArrayReduceRight(callback, current, this, length, | 694 return InnerArrayReduceRight(callback, current, this, length, |
695 arguments.length); | 695 %_ArgumentsLength()); |
696 } | 696 } |
697 %FunctionSetLength(TypedArrayReduceRight, 1); | 697 %FunctionSetLength(TypedArrayReduceRight, 1); |
698 | 698 |
699 | 699 |
700 function TypedArraySlice(start, end) { | 700 function TypedArraySlice(start, end) { |
701 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 701 if (!%_IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
702 var len = %_TypedArrayGetLength(this); | 702 var len = %_TypedArrayGetLength(this); |
703 | 703 |
704 var relativeStart = TO_INTEGER(start); | 704 var relativeStart = TO_INTEGER(start); |
705 | 705 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 | 746 |
747 var length = %_TypedArrayGetLength(this); | 747 var length = %_TypedArrayGetLength(this); |
748 | 748 |
749 return InnerArrayIncludes(searchElement, fromIndex, this, length); | 749 return InnerArrayIncludes(searchElement, fromIndex, this, length); |
750 } | 750 } |
751 %FunctionSetLength(TypedArrayIncludes, 1); | 751 %FunctionSetLength(TypedArrayIncludes, 1); |
752 | 752 |
753 | 753 |
754 // ES6 draft 08-24-14, section 22.2.2.2 | 754 // ES6 draft 08-24-14, section 22.2.2.2 |
755 function TypedArrayOf() { | 755 function TypedArrayOf() { |
756 var length = arguments.length; | 756 var length = %_ArgumentsLength(); |
757 var array = TypedArrayCreate(this, length); | 757 var array = TypedArrayCreate(this, length); |
758 for (var i = 0; i < length; i++) { | 758 for (var i = 0; i < length; i++) { |
759 array[i] = arguments[i]; | 759 array[i] = %_Arguments(i); |
760 } | 760 } |
761 return array; | 761 return array; |
762 } | 762 } |
763 | 763 |
764 | 764 |
765 function TypedArrayFrom(source, mapfn, thisArg) { | 765 function TypedArrayFrom(source, mapfn, thisArg) { |
766 // TODO(littledan): Investigate if there is a receiver which could be | 766 // TODO(littledan): Investigate if there is a receiver which could be |
767 // faster to accumulate on than Array, e.g., a TypedVector. | 767 // faster to accumulate on than Array, e.g., a TypedVector. |
768 // TODO(littledan): Rewrite this code to ensure that things happen | 768 // TODO(littledan): Rewrite this code to ensure that things happen |
769 // in the right order, e.g., the constructor needs to be called before | 769 // in the right order, e.g., the constructor needs to be called before |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 FUNCTION(Float64) | 913 FUNCTION(Float64) |
914 endmacro | 914 endmacro |
915 | 915 |
916 | 916 |
917 macro DATA_VIEW_GETTER_SETTER(TYPENAME) | 917 macro DATA_VIEW_GETTER_SETTER(TYPENAME) |
918 function DataViewGetTYPENAMEJS(offset, little_endian) { | 918 function DataViewGetTYPENAMEJS(offset, little_endian) { |
919 if (!IS_DATAVIEW(this)) { | 919 if (!IS_DATAVIEW(this)) { |
920 throw MakeTypeError(kIncompatibleMethodReceiver, | 920 throw MakeTypeError(kIncompatibleMethodReceiver, |
921 'DataView.getTYPENAME', this); | 921 'DataView.getTYPENAME', this); |
922 } | 922 } |
923 if (arguments.length < 1) throw MakeTypeError(kInvalidArgument); | 923 if (%_ArgumentsLength() < 1) throw MakeTypeError(kInvalidArgument); |
924 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); | 924 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); |
925 little_endian = TO_BOOLEAN(little_endian); | 925 return %DataViewGetTYPENAME(this, offset, !!little_endian); |
926 return %DataViewGetTYPENAME(this, offset, little_endian); | |
927 } | 926 } |
928 %FunctionSetLength(DataViewGetTYPENAMEJS, 1); | 927 %FunctionSetLength(DataViewGetTYPENAMEJS, 1); |
929 | 928 |
930 function DataViewSetTYPENAMEJS(offset, value, little_endian) { | 929 function DataViewSetTYPENAMEJS(offset, value, little_endian) { |
931 if (!IS_DATAVIEW(this)) { | 930 if (!IS_DATAVIEW(this)) { |
932 throw MakeTypeError(kIncompatibleMethodReceiver, | 931 throw MakeTypeError(kIncompatibleMethodReceiver, |
933 'DataView.setTYPENAME', this); | 932 'DataView.setTYPENAME', this); |
934 } | 933 } |
935 if (arguments.length < 2) throw MakeTypeError(kInvalidArgument); | 934 if (%_ArgumentsLength() < 2) throw MakeTypeError(kInvalidArgument); |
936 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); | 935 offset = ToPositiveInteger(offset, kInvalidDataViewAccessorOffset); |
937 little_endian = TO_BOOLEAN(little_endian); | 936 %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), !!little_endian); |
938 %DataViewSetTYPENAME(this, offset, TO_NUMBER(value), little_endian); | |
939 } | 937 } |
940 %FunctionSetLength(DataViewSetTYPENAMEJS, 2); | 938 %FunctionSetLength(DataViewSetTYPENAMEJS, 2); |
941 endmacro | 939 endmacro |
942 | 940 |
943 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) | 941 DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) |
944 | 942 |
945 // Setup the DataView constructor. | 943 // Setup the DataView constructor. |
946 %SetCode(GlobalDataView, DataViewConstructor); | 944 %SetCode(GlobalDataView, DataViewConstructor); |
947 %FunctionSetPrototype(GlobalDataView, new GlobalObject); | 945 %FunctionSetPrototype(GlobalDataView, new GlobalObject); |
948 | 946 |
(...skipping 29 matching lines...) Expand all Loading... |
978 "setUint32", DataViewSetUint32JS, | 976 "setUint32", DataViewSetUint32JS, |
979 | 977 |
980 "getFloat32", DataViewGetFloat32JS, | 978 "getFloat32", DataViewGetFloat32JS, |
981 "setFloat32", DataViewSetFloat32JS, | 979 "setFloat32", DataViewSetFloat32JS, |
982 | 980 |
983 "getFloat64", DataViewGetFloat64JS, | 981 "getFloat64", DataViewGetFloat64JS, |
984 "setFloat64", DataViewSetFloat64JS | 982 "setFloat64", DataViewSetFloat64JS |
985 ]); | 983 ]); |
986 | 984 |
987 }) | 985 }) |
OLD | NEW |