Index: src/harmony-typedarray.js |
diff --git a/src/harmony-typedarray.js b/src/harmony-typedarray.js |
index 90679e0c1fe1afffb6b6b7115e93719e02d7b0c1..1c1f3d9e355948a91ada1f9f830d43ff53130a7e 100644 |
--- a/src/harmony-typedarray.js |
+++ b/src/harmony-typedarray.js |
@@ -91,6 +91,42 @@ function TypedArrayFindIndex(predicate, thisArg) { |
%FunctionSetLength(TypedArrayFindIndex, 1); |
+function TypedArrayComparefn(x, y) { |
arv (Not doing code reviews)
2015/05/19 15:49:31
This is OK for now but I think we might want to in
dehrenberg
2015/05/19 16:39:09
Acknowledged.
|
+ if ($isNaN(x) && $isNaN(y)) { |
+ return 0; |
+ } else if ($isNaN(x)) { |
arv (Not doing code reviews)
2015/05/19 15:49:31
no else after return
The order can be changed to
dehrenberg
2015/05/19 16:39:08
Done.
|
+ return 1; |
+ } else if ($isNaN(y)) { |
+ return -1; |
+ } else if (x < y) { |
+ return -1; |
arv (Not doing code reviews)
2015/05/19 15:49:31
Do we care about -1? Generally this just has to be
dehrenberg
2015/05/19 16:39:09
Done.
|
+ } else if (x > y) { |
+ return 1; |
+ } else if (x === y && x === 0) { |
+ if (%_IsMinusZero(x) && !%_IsMinusZero(y)) { |
+ return -1; |
+ } else if (!%_IsMinusZero(x) && %_IsMinusZero(y)) { |
arv (Not doing code reviews)
2015/05/19 15:49:31
reorg to reduce test?
dehrenberg
2015/05/19 16:39:08
Done.
|
+ return 1; |
+ } |
+ } |
+ return 0; |
+} |
+ |
+ |
+// ES6 draft 05-18-15, section 22.2.3.25 |
+function TypedArraySort(comparefn) { |
+ if (!%IsTypedArray(this)) throw MakeTypeError(kNotTypedArray); |
+ |
+ var length = %_TypedArrayGetLength(this); |
+ |
+ if (IS_UNDEFINED(comparefn)) { |
+ comparefn = TypedArrayComparefn; |
+ } |
+ |
+ return %_CallFunction(this, length, comparefn, $innerArraySort); |
+} |
+ |
+ |
// ES6 draft 08-24-14, section 22.2.2.2 |
function TypedArrayOf() { |
var length = %_ArgumentsLength(); |
@@ -140,7 +176,8 @@ macro EXTEND_TYPED_ARRAY(NAME) |
"forEach", TypedArrayForEach, |
"find", TypedArrayFind, |
"findIndex", TypedArrayFindIndex, |
- "fill", TypedArrayFill |
+ "fill", TypedArrayFill, |
+ "sort", TypedArraySort |
]); |
endmacro |