Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: src/array-iterator.js

Issue 486763002: Make all global private symbols own symbols. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rename Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/macros.py » ('j') | src/macros.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 'use strict'; 5 'use strict';
6 6
7 7
8 // This file relies on the fact that the following declaration has been made 8 // This file relies on the fact that the following declaration has been made
9 // in runtime.js: 9 // in runtime.js:
10 // var $Array = global.Array; 10 // var $Array = global.Array;
11 11
12 12
13 var arrayIteratorObjectSymbol = GLOBAL_PRIVATE("ArrayIterator#object"); 13 var arrayIteratorObjectSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#object");
14 var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE("ArrayIterator#next"); 14 var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#next");
15 var arrayIterationKindSymbol = GLOBAL_PRIVATE("ArrayIterator#kind"); 15 var arrayIterationKindSymbol = GLOBAL_PRIVATE_OWN("ArrayIterator#kind");
16
17 var arrayEndOfIterationMarker = new $Object();
16 18
17 19
18 function ArrayIterator() {} 20 function ArrayIterator() {}
19 21
20 22
21 // TODO(wingo): Update section numbers when ES6 has stabilized. The 23 // TODO(wingo): Update section numbers when ES6 has stabilized. The
22 // section numbers below are already out of date as of the May 2014 24 // section numbers below are already out of date as of the May 2014
23 // draft. 25 // draft.
24 26
25 27
(...skipping 17 matching lines...) Expand all
43 // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator] 45 // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]
44 function ArrayIteratorIterator() { 46 function ArrayIteratorIterator() {
45 return this; 47 return this;
46 } 48 }
47 49
48 50
49 // 15.4.5.2.2 ArrayIterator.prototype.next( ) 51 // 15.4.5.2.2 ArrayIterator.prototype.next( )
50 function ArrayIteratorNext() { 52 function ArrayIteratorNext() {
51 var iterator = ToObject(this); 53 var iterator = ToObject(this);
52 54
53 if (!HAS_PRIVATE(iterator, arrayIteratorObjectSymbol)) { 55 if (!HAS_DEFINED_PRIVATE(iterator, arrayIteratorObjectSymbol)) {
54 throw MakeTypeError('incompatible_method_receiver', 56 throw MakeTypeError('incompatible_method_receiver',
55 ['Array Iterator.prototype.next']); 57 ['Array Iterator.prototype.next']);
56 } 58 }
57 59
58 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); 60 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol);
59 if (IS_UNDEFINED(array)) { 61 if (array === arrayEndOfIterationMarker) {
60 return CreateIteratorResultObject(UNDEFINED, true); 62 return CreateIteratorResultObject(UNDEFINED, true);
61 } 63 }
62 64
63 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); 65 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol);
64 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); 66 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol);
65 var length = TO_UINT32(array.length); 67 var length = TO_UINT32(array.length);
66 68
67 // "sparse" is never used. 69 // "sparse" is never used.
68 70
69 if (index >= length) { 71 if (index >= length) {
70 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED); 72 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, arrayEndOfIterationMarker);
71 return CreateIteratorResultObject(UNDEFINED, true); 73 return CreateIteratorResultObject(UNDEFINED, true);
72 } 74 }
73 75
74 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1); 76 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1);
75 77
76 if (itemKind == ITERATOR_KIND_VALUES) { 78 if (itemKind == ITERATOR_KIND_VALUES) {
77 return CreateIteratorResultObject(array[index], false); 79 return CreateIteratorResultObject(array[index], false);
78 } 80 }
79 81
80 if (itemKind == ITERATOR_KIND_ENTRIES) { 82 if (itemKind == ITERATOR_KIND_ENTRIES) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 macro EXTEND_TYPED_ARRAY(NAME) 150 macro EXTEND_TYPED_ARRAY(NAME)
149 %AddNamedProperty($NAME.prototype, 'entries', ArrayEntries, DONT_ENUM); 151 %AddNamedProperty($NAME.prototype, 'entries', ArrayEntries, DONT_ENUM);
150 %AddNamedProperty($NAME.prototype, 'values', ArrayValues, DONT_ENUM); 152 %AddNamedProperty($NAME.prototype, 'values', ArrayValues, DONT_ENUM);
151 %AddNamedProperty($NAME.prototype, 'keys', ArrayKeys, DONT_ENUM); 153 %AddNamedProperty($NAME.prototype, 'keys', ArrayKeys, DONT_ENUM);
152 %AddNamedProperty($NAME.prototype, symbolIterator, ArrayValues, DONT_ENUM); 154 %AddNamedProperty($NAME.prototype, symbolIterator, ArrayValues, DONT_ENUM);
153 endmacro 155 endmacro
154 156
155 TYPED_ARRAYS(EXTEND_TYPED_ARRAY) 157 TYPED_ARRAYS(EXTEND_TYPED_ARRAY)
156 } 158 }
157 ExtendTypedArrayPrototypes(); 159 ExtendTypedArrayPrototypes();
OLDNEW
« no previous file with comments | « no previous file | src/macros.py » ('j') | src/macros.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698