| Index: src/harmony-typedarray.js
|
| diff --git a/src/harmony-typedarray.js b/src/harmony-typedarray.js
|
| index 0129f38d507cd0f8d0483a5ba3bbed8a04a2d773..34cbeb305f01d542346021958bcc3b03e4e1ca39 100644
|
| --- a/src/harmony-typedarray.js
|
| +++ b/src/harmony-typedarray.js
|
| @@ -58,6 +58,46 @@ function NAMEForEach(f /* thisArg */) { // length == 1
|
| %_CallFunction(new_receiver, TO_OBJECT_INLINE(element), i, this, f);
|
| }
|
| }
|
| +
|
| +
|
| +// ES6 draft 10-14-2014, section 22.1.3.6
|
| +function NAMEFill(value /* [, start [, end ] ] */) { // length == 1
|
| + if (!%IsTypedArray(this)) {
|
| + throw MakeTypeError('not_typed_array', []);
|
| + }
|
| +
|
| + var length = %_TypedArrayGetLength(this);
|
| +
|
| + var i = 0;
|
| + var end = length;
|
| +
|
| + if (%_ArgumentsLength() > 1) {
|
| + i = %_Arguments(1);
|
| + i = TO_INTEGER(i);
|
| + if (%_ArgumentsLength() > 2) {
|
| + end = %_Arguments(2);
|
| + end = IS_UNDEFINED(end) ? length : TO_INTEGER(end);
|
| + }
|
| + }
|
| +
|
| + if (i < 0) {
|
| + i += length;
|
| + if (i < 0) i = 0;
|
| + } else {
|
| + if (i > length) i = length;
|
| + }
|
| +
|
| + if (end < 0) {
|
| + end += length;
|
| + if (end < 0) end = 0;
|
| + } else {
|
| + if (end > length) end = length;
|
| + }
|
| +
|
| + for (; i < end; i++)
|
| + this[i] = value;
|
| + return this;
|
| +}
|
| endmacro
|
|
|
| TYPED_ARRAYS(TYPED_ARRAY_HARMONY_ADDITIONS)
|
| @@ -68,9 +108,12 @@ macro EXTEND_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
|
| %CheckIsBootstrapping();
|
|
|
| // Set up non-enumerable functions on the prototype object.
|
| - InstallFunctions(global.NAME.prototype, DONT_ENUM, $Array(
|
| - "forEach", NAMEForEach
|
| - ));
|
| + InstallFunctions(global.NAME.prototype, DONT_ENUM | DONT_DELETE | READ_ONLY,
|
| + $Array(
|
| + "forEach", NAMEForEach,
|
| + "fill", NAMEFill
|
| + )
|
| + );
|
| endmacro
|
|
|
| TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
|
|
|