| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 (function(global, utils) { | 5 (function(global, utils) { |
| 6 | 6 |
| 7 "use strict"; | 7 "use strict"; |
| 8 | 8 |
| 9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
| 10 | 10 |
| 11 // ----------------------------------------------------------------------- | 11 // ----------------------------------------------------------------------- |
| 12 // Imports | 12 // Imports |
| 13 | 13 |
| 14 var arrayIterationKindSymbol = | 14 var arrayIterationKindSymbol = |
| 15 utils.ImportNow("array_iteration_kind_symbol"); | 15 utils.ImportNow("array_iteration_kind_symbol"); |
| 16 var arrayIteratorNextIndexSymbol = | 16 var arrayIteratorNextIndexSymbol = |
| 17 utils.ImportNow("array_iterator_next_symbol"); | 17 utils.ImportNow("array_iterator_next_symbol"); |
| 18 var arrayIteratorObjectSymbol = | 18 var arrayIteratorObjectSymbol = |
| 19 utils.ImportNow("array_iterator_object_symbol"); | 19 utils.ImportNow("array_iterator_object_symbol"); |
| 20 var GlobalArray = global.Array; | 20 var GlobalArray = global.Array; |
| 21 var IteratorPrototype = utils.ImportNow("IteratorPrototype"); | 21 var IteratorPrototype = utils.ImportNow("IteratorPrototype"); |
| 22 var iteratorSymbol = utils.ImportNow("iterator_symbol"); | 22 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
| 23 var MakeTypeError; | |
| 24 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 23 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 25 var GlobalTypedArray = %object_get_prototype_of(global.Uint8Array); | 24 var GlobalTypedArray = %object_get_prototype_of(global.Uint8Array); |
| 26 | 25 |
| 27 utils.Import(function(from) { | |
| 28 MakeTypeError = from.MakeTypeError; | |
| 29 }) | |
| 30 | |
| 31 // ----------------------------------------------------------------------- | 26 // ----------------------------------------------------------------------- |
| 32 | 27 |
| 33 function ArrayIterator() {} | 28 function ArrayIterator() {} |
| 34 | 29 |
| 35 | 30 |
| 36 // TODO(wingo): Update section numbers when ES6 has stabilized. The | 31 // TODO(wingo): Update section numbers when ES6 has stabilized. The |
| 37 // section numbers below are already out of date as of the May 2014 | 32 // section numbers below are already out of date as of the May 2014 |
| 38 // draft. | 33 // draft. |
| 39 | 34 |
| 40 | 35 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 56 | 51 |
| 57 | 52 |
| 58 // ES6 section 22.1.5.2.1 %ArrayIteratorPrototype%.next( ) | 53 // ES6 section 22.1.5.2.1 %ArrayIteratorPrototype%.next( ) |
| 59 function ArrayIteratorNext() { | 54 function ArrayIteratorNext() { |
| 60 var iterator = this; | 55 var iterator = this; |
| 61 var value = UNDEFINED; | 56 var value = UNDEFINED; |
| 62 var done = true; | 57 var done = true; |
| 63 | 58 |
| 64 if (!IS_RECEIVER(iterator) || | 59 if (!IS_RECEIVER(iterator) || |
| 65 !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) { | 60 !HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) { |
| 66 throw MakeTypeError(kIncompatibleMethodReceiver, | 61 throw %make_type_error(kIncompatibleMethodReceiver, |
| 67 'Array Iterator.prototype.next', this); | 62 'Array Iterator.prototype.next', this); |
| 68 } | 63 } |
| 69 | 64 |
| 70 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); | 65 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); |
| 71 if (!IS_UNDEFINED(array)) { | 66 if (!IS_UNDEFINED(array)) { |
| 72 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); | 67 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); |
| 73 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); | 68 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); |
| 74 var length = TO_UINT32(array.length); | 69 var length = TO_UINT32(array.length); |
| 75 | 70 |
| 76 // "sparse" is never used. | 71 // "sparse" is never used. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 104 return CreateArrayIterator(this, ITERATOR_KIND_VALUES); | 99 return CreateArrayIterator(this, ITERATOR_KIND_VALUES); |
| 105 } | 100 } |
| 106 | 101 |
| 107 | 102 |
| 108 function ArrayKeys() { | 103 function ArrayKeys() { |
| 109 return CreateArrayIterator(this, ITERATOR_KIND_KEYS); | 104 return CreateArrayIterator(this, ITERATOR_KIND_KEYS); |
| 110 } | 105 } |
| 111 | 106 |
| 112 // TODO(littledan): Check for detached TypedArray in these three methods | 107 // TODO(littledan): Check for detached TypedArray in these three methods |
| 113 function TypedArrayEntries() { | 108 function TypedArrayEntries() { |
| 114 if (!IS_TYPEDARRAY(this)) throw MakeTypeError(kNotTypedArray); | 109 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
| 115 return %_Call(ArrayEntries, this); | 110 return %_Call(ArrayEntries, this); |
| 116 } | 111 } |
| 117 | 112 |
| 118 | 113 |
| 119 function TypedArrayValues() { | 114 function TypedArrayValues() { |
| 120 if (!IS_TYPEDARRAY(this)) throw MakeTypeError(kNotTypedArray); | 115 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
| 121 return %_Call(ArrayValues, this); | 116 return %_Call(ArrayValues, this); |
| 122 } | 117 } |
| 123 | 118 |
| 124 | 119 |
| 125 function TypedArrayKeys() { | 120 function TypedArrayKeys() { |
| 126 if (!IS_TYPEDARRAY(this)) throw MakeTypeError(kNotTypedArray); | 121 if (!IS_TYPEDARRAY(this)) throw %make_type_error(kNotTypedArray); |
| 127 return %_Call(ArrayKeys, this); | 122 return %_Call(ArrayKeys, this); |
| 128 } | 123 } |
| 129 | 124 |
| 130 | 125 |
| 131 %FunctionSetPrototype(ArrayIterator, {__proto__: IteratorPrototype}); | 126 %FunctionSetPrototype(ArrayIterator, {__proto__: IteratorPrototype}); |
| 132 %FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator'); | 127 %FunctionSetInstanceClassName(ArrayIterator, 'Array Iterator'); |
| 133 | 128 |
| 134 utils.InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [ | 129 utils.InstallFunctions(ArrayIterator.prototype, DONT_ENUM, [ |
| 135 'next', ArrayIteratorNext | 130 'next', ArrayIteratorNext |
| 136 ]); | 131 ]); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 164 // ------------------------------------------------------------------- | 159 // ------------------------------------------------------------------- |
| 165 // Exports | 160 // Exports |
| 166 | 161 |
| 167 utils.Export(function(to) { | 162 utils.Export(function(to) { |
| 168 to.ArrayValues = ArrayValues; | 163 to.ArrayValues = ArrayValues; |
| 169 }); | 164 }); |
| 170 | 165 |
| 171 %InstallToContext(["array_values_iterator", ArrayValues]); | 166 %InstallToContext(["array_values_iterator", ArrayValues]); |
| 172 | 167 |
| 173 }) | 168 }) |
| OLD | NEW |