Index: src/js/array-iterator.js |
diff --git a/src/js/array-iterator.js b/src/js/array-iterator.js |
deleted file mode 100644 |
index 227f733a059150259d55120df60deb30fd9e7938..0000000000000000000000000000000000000000 |
--- a/src/js/array-iterator.js |
+++ /dev/null |
@@ -1,168 +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. |
- |
-(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 IteratorPrototype = utils.ImportNow("IteratorPrototype"); |
-var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
-var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
-var GlobalTypedArray = %object_get_prototype_of(global.Uint8Array); |
- |
-// ----------------------------------------------------------------------- |
- |
-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_RECEIVER(iterator) || |
- !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) { |
- throw %make_type_error(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); |
-} |
- |
-// TODO(littledan): Check for detached TypedArray in these three methods |
-function TypedArrayEntries() { |
- if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
- return %_Call(ArrayEntries, this); |
-} |
- |
- |
-function TypedArrayValues() { |
- if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
- return %_Call(ArrayValues, this); |
-} |
- |
- |
-function TypedArrayKeys() { |
- if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
- return %_Call(ArrayKeys, this); |
-} |
- |
- |
-%FunctionSetPrototype(ArrayIterator, {__proto__: IteratorPrototype}); |
-%FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator'); |
- |
-utils.InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [ |
- 'next', ArrayIteratorNext |
-]); |
-utils.SetFunctionName(ArrayIteratorIterator, iteratorSymbol); |
-%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 these calls once 'values' is in the above |
-// InstallFunctions block, as they'll be redundant. |
-utils.SetFunctionName(ArrayValues, 'values'); |
-%FunctionRemovePrototype(ArrayValues); |
-%SetNativeFlag(ArrayValues); |
- |
-%AddNamedProperty(GlobalArray.prototype, iteratorSymbol, ArrayValues, |
- DONT_ENUM); |
- |
-utils.InstallFunctions(GlobalTypedArray.prototype, DONT_ENUM, [ |
- 'entries', TypedArrayEntries, |
- 'keys', TypedArrayKeys, |
- 'values', TypedArrayValues |
-]); |
-%AddNamedProperty(GlobalTypedArray.prototype, |
- iteratorSymbol, TypedArrayValues, DONT_ENUM); |
- |
-// ------------------------------------------------------------------- |
-// Exports |
- |
-utils.Export(function(to) { |
- to.ArrayValues = ArrayValues; |
-}); |
- |
-%InstallToContext(["array_values_iterator", ArrayValues]); |
- |
-}) |