OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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, exports) { | 5 (function(global, exports) { |
6 | 6 |
7 "use strict"; | 7 "use strict"; |
8 | 8 |
9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
10 | 10 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 // ES6 draft 05-18-15, section 22.2.3.21 | 93 // ES6 draft 05-18-15, section 22.2.3.21 |
94 function TypedArrayReverse() { | 94 function TypedArrayReverse() { |
95 if (!%IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); | 95 if (!%IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
96 | 96 |
97 var length = %_TypedArrayGetLength(this); | 97 var length = %_TypedArrayGetLength(this); |
98 | 98 |
99 return $innerArrayReverse(this, length); | 99 return $innerArrayReverse(this, length); |
100 } | 100 } |
101 | 101 |
102 | 102 |
| 103 function TypedArrayComparefn(x, y) { |
| 104 if ($isNaN(x) && $isNaN(y)) { |
| 105 return $isNaN(y) ? 0 : 1; |
| 106 } |
| 107 if ($isNaN(x)) { |
| 108 return 1; |
| 109 } |
| 110 if (x === 0 && x === y) { |
| 111 if (%_IsMinusZero(x)) { |
| 112 if (!%_IsMinusZero(y)) { |
| 113 return -1; |
| 114 } |
| 115 } else if (%_IsMinusZero(y)) { |
| 116 return 1; |
| 117 } |
| 118 } |
| 119 return x - y; |
| 120 } |
| 121 |
| 122 |
| 123 // ES6 draft 05-18-15, section 22.2.3.25 |
| 124 function TypedArraySort(comparefn) { |
| 125 if (!%IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
| 126 |
| 127 var length = %_TypedArrayGetLength(this); |
| 128 |
| 129 if (IS_UNDEFINED(comparefn)) { |
| 130 comparefn = TypedArrayComparefn; |
| 131 } |
| 132 |
| 133 return %_CallFunction(this, length, comparefn, $innerArraySort); |
| 134 } |
| 135 |
| 136 |
103 // ES6 draft 08-24-14, section 22.2.2.2 | 137 // ES6 draft 08-24-14, section 22.2.2.2 |
104 function TypedArrayOf() { | 138 function TypedArrayOf() { |
105 var length = %_ArgumentsLength(); | 139 var length = %_ArgumentsLength(); |
106 var array = new this(length); | 140 var array = new this(length); |
107 for (var i = 0; i < length; i++) { | 141 for (var i = 0; i < length; i++) { |
108 array[i] = %_Arguments(i); | 142 array[i] = %_Arguments(i); |
109 } | 143 } |
110 return array; | 144 return array; |
111 } | 145 } |
112 | 146 |
(...skipping 30 matching lines...) Expand all Loading... |
143 ]); | 177 ]); |
144 | 178 |
145 // Set up non-enumerable functions on the prototype object. | 179 // Set up non-enumerable functions on the prototype object. |
146 $installFunctions(GlobalNAME.prototype, DONT_ENUM, [ | 180 $installFunctions(GlobalNAME.prototype, DONT_ENUM, [ |
147 "copyWithin", TypedArrayCopyWithin, | 181 "copyWithin", TypedArrayCopyWithin, |
148 "every", TypedArrayEvery, | 182 "every", TypedArrayEvery, |
149 "forEach", TypedArrayForEach, | 183 "forEach", TypedArrayForEach, |
150 "find", TypedArrayFind, | 184 "find", TypedArrayFind, |
151 "findIndex", TypedArrayFindIndex, | 185 "findIndex", TypedArrayFindIndex, |
152 "fill", TypedArrayFill, | 186 "fill", TypedArrayFill, |
153 "reverse", TypedArrayReverse | 187 "reverse", TypedArrayReverse, |
| 188 "sort", TypedArraySort |
154 ]); | 189 ]); |
155 endmacro | 190 endmacro |
156 | 191 |
157 TYPED_ARRAYS(EXTEND_TYPED_ARRAY) | 192 TYPED_ARRAYS(EXTEND_TYPED_ARRAY) |
158 | 193 |
159 }) | 194 }) |
OLD | NEW |