Added: trunk/JSTests/stress/typed-array-sort-small.js (0 => 281686)
--- trunk/JSTests/stress/typed-array-sort-small.js (rev 0)
+++ trunk/JSTests/stress/typed-array-sort-small.js 2021-08-27 05:42:41 UTC (rev 281686)
@@ -0,0 +1,138 @@
+function shouldBe(actual, expected) {
+ if (actual !== expected)
+ throw new Error('bad value: ' + actual);
+}
+
+{
+ let array = new Int8Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int16Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int32Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint16Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint32Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8ClampedArray([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float32Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float64Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigInt64Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigUint64Array([]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int8Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int16Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int32Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint16Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint32Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8ClampedArray([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float32Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float64Array([1]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigInt64Array([1n]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigUint64Array([1n]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int8Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int16Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Int32Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint16Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint32Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Uint8ClampedArray([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float32Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new Float64Array([1, 2]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigInt64Array([1n, 2n]);
+ shouldBe(array.sort(), array);
+}
+{
+ let array = new BigUint64Array([1n, 2n]);
+ shouldBe(array.sort(), array);
+}
+
Modified: trunk/Source/_javascript_Core/ChangeLog (281685 => 281686)
--- trunk/Source/_javascript_Core/ChangeLog 2021-08-27 04:58:53 UTC (rev 281685)
+++ trunk/Source/_javascript_Core/ChangeLog 2021-08-27 05:42:41 UTC (rev 281686)
@@ -1,5 +1,17 @@
2021-08-26 Yusuke Suzuki <[email protected]>
+ Float32Arrays.sort() return undefined when length < 2
+ https://bugs.webkit.org/show_bug.cgi?id=229575
+
+ Reviewed by Saam Barati.
+
+ TypedArray#sort should return |this| even when we don't perform sorting.
+
+ * builtins/TypedArrayPrototype.js:
+ (sort):
+
+2021-08-26 Yusuke Suzuki <[email protected]>
+
[JSC] op_put_private_name should use modern IC and remove ByValInfo
https://bugs.webkit.org/show_bug.cgi?id=229544
Modified: trunk/Source/_javascript_Core/builtins/TypedArrayPrototype.js (281685 => 281686)
--- trunk/Source/_javascript_Core/builtins/TypedArrayPrototype.js 2021-08-27 04:58:53 UTC (rev 281685)
+++ trunk/Source/_javascript_Core/builtins/TypedArrayPrototype.js 2021-08-27 05:42:41 UTC (rev 281686)
@@ -235,7 +235,7 @@
var length = @typedArrayLength(this);
if (length < 2)
- return;
+ return this;
// typedArraySort is not safe when the other thread is modifying content. So if |this| is SharedArrayBuffer,
// use JS-implemented sorting.