diff --git a/test/built-ins/Array/prototype/filter/resizable-buffer-grow-mid-iteration.js b/test/built-ins/Array/prototype/filter/resizable-buffer-grow-mid-iteration.js index 5a24fc9b2c..5ce7c6b2fc 100644 --- a/test/built-ins/Array/prototype/filter/resizable-buffer-grow-mid-iteration.js +++ b/test/built-ins/Array/prototype/filter/resizable-buffer-grow-mid-iteration.js @@ -4,8 +4,8 @@ /*--- esid: sec-array.prototype.filter description: > - Array.p.filter behaves correctly on receivers backed by resizable - buffers that grow mid-iteration + Array.p.filter behaves correctly on TypedArrays backed by resizable buffers + that grow mid-iteration. includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ @@ -19,7 +19,7 @@ let resizeTo; // resizeTo. To be called by a method of the view being collected. // Note that rab, values, resizeAfter, and resizeTo may need to be reset // before calling this. -function ResizeBufferMidIteration(n) { +function ResizeMidIteration(n) { CollectValuesAndResize(n, values, rab, resizeAfter, resizeTo); return false; } @@ -36,7 +36,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLength, ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLength, ResizeMidIteration)), []); assert.compareArray(values, [ 0, 2, @@ -50,7 +50,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLengthWithOffset, ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLengthWithOffset, ResizeMidIteration)), []); assert.compareArray(values, [ 4, 6 @@ -62,7 +62,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTracking, ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTracking, ResizeMidIteration)), []); assert.compareArray(values, [ 0, 2, @@ -76,10 +76,9 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTrackingWithOffset, ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTrackingWithOffset, ResizeMidIteration)), []); assert.compareArray(values, [ 4, 6 ]); } - diff --git a/test/built-ins/Array/prototype/filter/resizable-buffer-shrink-mid-iteration.js b/test/built-ins/Array/prototype/filter/resizable-buffer-shrink-mid-iteration.js new file mode 100644 index 0000000000..5af5f62412 --- /dev/null +++ b/test/built-ins/Array/prototype/filter/resizable-buffer-shrink-mid-iteration.js @@ -0,0 +1,79 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%array%.prototype.filter +description: > + Array.p.filter behaves correctly on TypedArrays backed by resizable buffers + that shrink mid-iteration. +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +let values; +let rab; +let resizeAfter; +let resizeTo; +// Collects the view of the resizable array buffer rab into values, with an +// iteration during which, after resizeAfter steps, rab is resized to length +// resizeTo. To be called by a method of the view being collected. +// Note that rab, values, resizeAfter, and resizeTo may need to be reset +// before calling this. +function ResizeMidIteration(n) { + CollectValuesAndResize(n, values, rab, resizeAfter, resizeTo); + return false; +} + +// Orig. array: [0, 2, 4, 6] +// [0, 2, 4, 6] << fixedLength +// [4, 6] << fixedLengthWithOffset +// [0, 2, 4, 6, ...] << lengthTracking +// [4, 6, ...] << lengthTrackingWithOffset + +for (let ctor of ctors) { + rab = CreateRabForTest(ctor); + const fixedLength = new ctor(rab, 0, 4); + values = []; + resizeAfter = 2; + resizeTo = 3 * ctor.BYTES_PER_ELEMENT; + assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLength, ResizeMidIteration)),[]); + assert.compareArray(values, [ + 0, + 2 + ]); +} +for (let ctor of ctors) { + rab = CreateRabForTest(ctor); + const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); + values = []; + resizeAfter = 1; + resizeTo = 3 * ctor.BYTES_PER_ELEMENT; + assert.compareArray(ToNumbers(Array.prototype.filter.call(fixedLengthWithOffset, ResizeMidIteration)),[]); + assert.compareArray(values, [ + 4 + ]); +} +for (let ctor of ctors) { + rab = CreateRabForTest(ctor); + const lengthTracking = new ctor(rab, 0); + values = []; + resizeAfter = 2; + resizeTo = 3 * ctor.BYTES_PER_ELEMENT; + assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTracking, ResizeMidIteration)),[]); + assert.compareArray(values, [ + 0, + 2, + 4 + ]); +} +for (let ctor of ctors) { + rab = CreateRabForTest(ctor); + const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); + values = []; + resizeAfter = 1; + resizeTo = 3 * ctor.BYTES_PER_ELEMENT; + assert.compareArray(ToNumbers(Array.prototype.filter.call(lengthTrackingWithOffset, ResizeMidIteration)),[]); + assert.compareArray(values, [ + 4 + ]); +} diff --git a/test/built-ins/Array/prototype/filter/resizable-buffer.js b/test/built-ins/Array/prototype/filter/resizable-buffer.js index 85174a5f20..df38c65791 100644 --- a/test/built-ins/Array/prototype/filter/resizable-buffer.js +++ b/test/built-ins/Array/prototype/filter/resizable-buffer.js @@ -4,8 +4,7 @@ /*--- esid: sec-array.prototype.filter description: > - Array.p.filter behaves correctly on receivers backed by resizable - buffers + Array.p.filter behaves correctly on TypedArrays backed by resizable buffers. includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ diff --git a/test/built-ins/TypedArray/prototype/filter/resizable-buffer-grow-mid-iteration.js b/test/built-ins/TypedArray/prototype/filter/resizable-buffer-grow-mid-iteration.js index b3a75ea5cc..d0ad21029a 100644 --- a/test/built-ins/TypedArray/prototype/filter/resizable-buffer-grow-mid-iteration.js +++ b/test/built-ins/TypedArray/prototype/filter/resizable-buffer-grow-mid-iteration.js @@ -4,8 +4,8 @@ /*--- esid: sec-%typedarray%.prototype.filter description: > - TypedArray.p.filter behaves correctly on receivers backed by resizable - buffers that grow mid-iteration + TypedArray.p.filter behaves correctly on TypedArrays backed by resizable + buffers that grow mid-iteration. includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ @@ -19,7 +19,7 @@ let resizeTo; // resizeTo. To be called by a method of the view being collected. // Note that rab, values, resizeAfter, and resizeTo may need to be reset // before calling this. -function ResizeBufferMidIteration(n) { +function ResizeMidIteration(n) { CollectValuesAndResize(n, values, rab, resizeAfter, resizeTo); return false; } @@ -36,7 +36,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLength.filter(ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(fixedLength.filter(ResizeMidIteration)), []); assert.compareArray(values, [ 0, 2, @@ -50,7 +50,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLengthWithOffset.filter(ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(fixedLengthWithOffset.filter(ResizeMidIteration)), []); assert.compareArray(values, [ 4, 6 @@ -62,7 +62,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTracking.filter(ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(lengthTracking.filter(ResizeMidIteration)), []); assert.compareArray(values, [ 0, 2, @@ -76,7 +76,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTrackingWithOffset.filter(ResizeBufferMidIteration)), []); + assert.compareArray(ToNumbers(lengthTrackingWithOffset.filter(ResizeMidIteration)), []); assert.compareArray(values, [ 4, 6 diff --git a/test/built-ins/TypedArray/prototype/filter/resizable-buffer-shrink-mid-iteration.js b/test/built-ins/TypedArray/prototype/filter/resizable-buffer-shrink-mid-iteration.js index 1e72a7ff8e..409a138890 100644 --- a/test/built-ins/TypedArray/prototype/filter/resizable-buffer-shrink-mid-iteration.js +++ b/test/built-ins/TypedArray/prototype/filter/resizable-buffer-shrink-mid-iteration.js @@ -4,8 +4,8 @@ /*--- esid: sec-%typedarray%.prototype.filter description: > - TypedArray.p.filter behaves correctly when receiver is backed by resizable - buffer that is shrunk mid-iteration + TypedArray.p.filter behaves correctly on TypedArrays backed by resizable + buffers that are shrunk mid-iteration. includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ @@ -19,7 +19,7 @@ let resizeTo; // resizeTo. To be called by a method of the view being collected. // Note that rab, values, resizeAfter, and resizeTo may need to be reset // before calling this. -function ResizeBufferMidIteration(n) { +function ResizeMidIteration(n) { CollectValuesAndResize(n, values, rab, resizeAfter, resizeTo); return false; } @@ -36,7 +36,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLength.filter(ResizeBufferMidIteration)),[]); + assert.compareArray(ToNumbers(fixedLength.filter(ResizeMidIteration)),[]); assert.compareArray(values, [ 0, 2, @@ -50,7 +50,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLengthWithOffset.filter(ResizeBufferMidIteration)),[]); + assert.compareArray(ToNumbers(fixedLengthWithOffset.filter(ResizeMidIteration)),[]); assert.compareArray(values, [ 4, undefined @@ -62,7 +62,7 @@ for (let ctor of ctors) { values = []; resizeAfter = 2; resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTracking.filter(ResizeBufferMidIteration)),[]); + assert.compareArray(ToNumbers(lengthTracking.filter(ResizeMidIteration)),[]); assert.compareArray(values, [ 0, 2, @@ -76,10 +76,9 @@ for (let ctor of ctors) { values = []; resizeAfter = 1; resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTrackingWithOffset.filter(ResizeBufferMidIteration)),[]); + assert.compareArray(ToNumbers(lengthTrackingWithOffset.filter(ResizeMidIteration)),[]); assert.compareArray(values, [ 4, undefined ]); } - diff --git a/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js b/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js index da2111408c..de536e2912 100644 --- a/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.prototype.filter description: > - TypedArray.p.filter behaves correctly on receivers backed by resizable + TypedArray.p.filter behaves correctly on TypedArrays backed by resizable buffers includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer]