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

Side by Side Diff: src/typedarray.js

Issue 1181903003: Allow TypedArrays to be initialized with iterables (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « no previous file | test/mjsunit/harmony/typedarrays.js » ('j') | no next file with comments »
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 (function(global, utils) { 5 (function(global, utils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 } 123 }
124 if (!initialized) { 124 if (!initialized) {
125 for (var i = 0; i < l; i++) { 125 for (var i = 0; i < l; i++) {
126 // It is crucial that we let any execptions from arrayLike[i] 126 // It is crucial that we let any execptions from arrayLike[i]
127 // propagate outside the function. 127 // propagate outside the function.
128 obj[i] = arrayLike[i]; 128 obj[i] = arrayLike[i];
129 } 129 }
130 } 130 }
131 } 131 }
132 132
133 function NAMEConstructByIterable(obj, iterable) {
134 var list = new InternalArray();
135 for (var element of iterable) {
136 list.push(element);
137 }
138 return NAMEConstructByArrayLike(obj, list);
139 }
140
133 function NAMEConstructor(arg1, arg2, arg3) { 141 function NAMEConstructor(arg1, arg2, arg3) {
134 if (%_IsConstructCall()) { 142 if (%_IsConstructCall()) {
135 if (IS_ARRAYBUFFER(arg1) || IS_SHAREDARRAYBUFFER(arg1)) { 143 if (IS_ARRAYBUFFER(arg1) || IS_SHAREDARRAYBUFFER(arg1)) {
136 NAMEConstructByArrayBuffer(this, arg1, arg2, arg3); 144 NAMEConstructByArrayBuffer(this, arg1, arg2, arg3);
137 } else if (IS_NUMBER(arg1) || IS_STRING(arg1) || 145 } else if (IS_NUMBER(arg1) || IS_STRING(arg1) ||
138 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) { 146 IS_BOOLEAN(arg1) || IS_UNDEFINED(arg1)) {
139 NAMEConstructByLength(this, arg1); 147 NAMEConstructByLength(this, arg1);
140 } else { 148 } else {
141 NAMEConstructByArrayLike(this, arg1); 149 var iteratorFn = arg1[Symbol.iterator];
150 if (IS_UNDEFINED(iteratorFn) || iteratorFn === $arrayValues) {
151 NAMEConstructByArrayLike(this, arg1);
152 } else {
153 // TODO(littledan): The code here is lazy and looks up @@iterator
154 // twice. Currently, that's fine, but it'll be observable with proxies.
adamk 2015/06/12 00:57:08 Proxies aren't required, a getter for @@iterator i
caitp (gmail) 2015/06/12 01:11:33 I think the only way to really fix that currently
Dan Ehrenberg 2015/06/12 02:42:22 Well, you can use for-of on most of the builtin it
155 NAMEConstructByIterable(this, arg1);
156 }
142 } 157 }
143 } else { 158 } else {
144 throw MakeTypeError(kConstructorNotFunction, "NAME") 159 throw MakeTypeError(kConstructorNotFunction, "NAME")
145 } 160 }
146 } 161 }
147 162
148 function NAME_GetBuffer() { 163 function NAME_GetBuffer() {
149 if (!(%_ClassOf(this) === 'NAME')) { 164 if (!(%_ClassOf(this) === 'NAME')) {
150 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.buffer", this); 165 throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.buffer", this);
151 } 166 }
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 "setUint32", DataViewSetUint32JS, 488 "setUint32", DataViewSetUint32JS,
474 489
475 "getFloat32", DataViewGetFloat32JS, 490 "getFloat32", DataViewGetFloat32JS,
476 "setFloat32", DataViewSetFloat32JS, 491 "setFloat32", DataViewSetFloat32JS,
477 492
478 "getFloat64", DataViewGetFloat64JS, 493 "getFloat64", DataViewGetFloat64JS,
479 "setFloat64", DataViewSetFloat64JS 494 "setFloat64", DataViewSetFloat64JS
480 ]); 495 ]);
481 496
482 }) 497 })
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/harmony/typedarrays.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698