| Index: src/array-iterator.js
|
| diff --git a/src/array-iterator.js b/src/array-iterator.js
|
| deleted file mode 100644
|
| index 5b2d9d9454e86adc792f6ef60cfe6845a63b3dfd..0000000000000000000000000000000000000000
|
| --- a/src/array-iterator.js
|
| +++ /dev/null
|
| @@ -1,172 +0,0 @@
|
| -// Copyright 2013 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -var $arrayValues;
|
| -
|
| -(function(global, utils) {
|
| -
|
| -"use strict";
|
| -
|
| -%CheckIsBootstrapping();
|
| -
|
| -// -----------------------------------------------------------------------
|
| -// Imports
|
| -
|
| -var arrayIterationKindSymbol =
|
| - utils.ImportNow("array_iteration_kind_symbol");
|
| -var arrayIteratorNextIndexSymbol =
|
| - utils.ImportNow("array_iterator_next_symbol");
|
| -var arrayIteratorObjectSymbol =
|
| - utils.ImportNow("array_iterator_object_symbol");
|
| -var GlobalArray = global.Array;
|
| -var iteratorSymbol = utils.ImportNow("iterator_symbol");
|
| -var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
|
| -
|
| -macro TYPED_ARRAYS(FUNCTION)
|
| - FUNCTION(Uint8Array)
|
| - FUNCTION(Int8Array)
|
| - FUNCTION(Uint16Array)
|
| - FUNCTION(Int16Array)
|
| - FUNCTION(Uint32Array)
|
| - FUNCTION(Int32Array)
|
| - FUNCTION(Float32Array)
|
| - FUNCTION(Float64Array)
|
| - FUNCTION(Uint8ClampedArray)
|
| -endmacro
|
| -
|
| -macro COPY_FROM_GLOBAL(NAME)
|
| - var GlobalNAME = global.NAME;
|
| -endmacro
|
| -
|
| -TYPED_ARRAYS(COPY_FROM_GLOBAL)
|
| -
|
| -// -----------------------------------------------------------------------
|
| -
|
| -function ArrayIterator() {}
|
| -
|
| -
|
| -// TODO(wingo): Update section numbers when ES6 has stabilized. The
|
| -// section numbers below are already out of date as of the May 2014
|
| -// draft.
|
| -
|
| -
|
| -// 15.4.5.1 CreateArrayIterator Abstract Operation
|
| -function CreateArrayIterator(array, kind) {
|
| - var object = TO_OBJECT(array);
|
| - var iterator = new ArrayIterator;
|
| - SET_PRIVATE(iterator, arrayIteratorObjectSymbol, object);
|
| - SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, 0);
|
| - SET_PRIVATE(iterator, arrayIterationKindSymbol, kind);
|
| - return iterator;
|
| -}
|
| -
|
| -
|
| -// 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]
|
| -function ArrayIteratorIterator() {
|
| - return this;
|
| -}
|
| -
|
| -
|
| -// ES6 section 22.1.5.2.1 %ArrayIteratorPrototype%.next( )
|
| -function ArrayIteratorNext() {
|
| - var iterator = this;
|
| - var value = UNDEFINED;
|
| - var done = true;
|
| -
|
| - if (!IS_SPEC_OBJECT(iterator) ||
|
| - !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) {
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - 'Array Iterator.prototype.next', this);
|
| - }
|
| -
|
| - var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol);
|
| - if (!IS_UNDEFINED(array)) {
|
| - var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol);
|
| - var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol);
|
| - var length = TO_UINT32(array.length);
|
| -
|
| - // "sparse" is never used.
|
| -
|
| - if (index >= length) {
|
| - SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED);
|
| - } else {
|
| - SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1);
|
| -
|
| - if (itemKind == ITERATOR_KIND_VALUES) {
|
| - value = array[index];
|
| - } else if (itemKind == ITERATOR_KIND_ENTRIES) {
|
| - value = [index, array[index]];
|
| - } else {
|
| - value = index;
|
| - }
|
| - done = false;
|
| - }
|
| - }
|
| -
|
| - return %_CreateIterResultObject(value, done);
|
| -}
|
| -
|
| -
|
| -function ArrayEntries() {
|
| - return CreateArrayIterator(this, ITERATOR_KIND_ENTRIES);
|
| -}
|
| -
|
| -
|
| -function ArrayValues() {
|
| - return CreateArrayIterator(this, ITERATOR_KIND_VALUES);
|
| -}
|
| -
|
| -
|
| -function ArrayKeys() {
|
| - return CreateArrayIterator(this, ITERATOR_KIND_KEYS);
|
| -}
|
| -
|
| -
|
| -%FunctionSetPrototype(ArrayIterator, {__proto__: $iteratorPrototype});
|
| -%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator');
|
| -
|
| -utils.InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [
|
| - 'next', ArrayIteratorNext
|
| -]);
|
| -utils.SetFunctionName(ArrayIteratorIterator, iteratorSymbol);
|
| -%AddNamedProperty(ArrayIterator.prototype, iteratorSymbol,
|
| - ArrayIteratorIterator, DONT_ENUM);
|
| -%AddNamedProperty(ArrayIterator.prototype, toStringTagSymbol,
|
| - "Array Iterator", READ_ONLY | DONT_ENUM);
|
| -
|
| -utils.InstallFunctions(GlobalArray.prototype, DONT_ENUM, [
|
| - // No 'values' since it breaks webcompat: http://crbug.com/409858
|
| - 'entries', ArrayEntries,
|
| - 'keys', ArrayKeys
|
| -]);
|
| -
|
| -// TODO(adam): Remove this call once 'values' is in the above
|
| -// InstallFunctions block, as it'll be redundant.
|
| -utils.SetFunctionName(ArrayValues, 'values');
|
| -
|
| -%AddNamedProperty(GlobalArray.prototype, iteratorSymbol, ArrayValues,
|
| - DONT_ENUM);
|
| -
|
| -macro EXTEND_TYPED_ARRAY(NAME)
|
| - %AddNamedProperty(GlobalNAME.prototype, 'entries', ArrayEntries, DONT_ENUM);
|
| - %AddNamedProperty(GlobalNAME.prototype, 'values', ArrayValues, DONT_ENUM);
|
| - %AddNamedProperty(GlobalNAME.prototype, 'keys', ArrayKeys, DONT_ENUM);
|
| - %AddNamedProperty(GlobalNAME.prototype, iteratorSymbol, ArrayValues,
|
| - DONT_ENUM);
|
| -endmacro
|
| -
|
| -TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
|
| -
|
| -// -------------------------------------------------------------------
|
| -// Exports
|
| -
|
| -$arrayValues = ArrayValues;
|
| -
|
| -%InstallToContext([
|
| - "array_keys_iterator", ArrayKeys,
|
| - "array_values_iterator", ArrayValues,
|
| - "array_entries_iterator", ArrayEntries
|
| -]);
|
| -
|
| -})
|
|
|