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

Side by Side Diff: src/collection.js

Issue 1316933002: [es6] Initial steps towards a correct implementation of IsCallable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: ia32, arm and arm64 ports. Misc cleanups. Created 5 years, 3 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 var $getHash; 5 var $getHash;
6 var $getExistingHash; 6 var $getExistingHash;
7 7
8 (function(global, utils) { 8 (function(global, utils) {
9 "use strict"; 9 "use strict";
10 10
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 126
127 function SetConstructor(iterable) { 127 function SetConstructor(iterable) {
128 if (!%_IsConstructCall()) { 128 if (!%_IsConstructCall()) {
129 throw MakeTypeError(kConstructorNotFunction, "Set"); 129 throw MakeTypeError(kConstructorNotFunction, "Set");
130 } 130 }
131 131
132 %_SetInitialize(this); 132 %_SetInitialize(this);
133 133
134 if (!IS_NULL_OR_UNDEFINED(iterable)) { 134 if (!IS_NULL_OR_UNDEFINED(iterable)) {
135 var adder = this.add; 135 var adder = this.add;
136 if (!IS_SPEC_FUNCTION(adder)) { 136 if (!IS_CALLABLE(adder)) {
137 throw MakeTypeError(kPropertyNotFunction, 'add', this); 137 throw MakeTypeError(kPropertyNotFunction, 'add', this);
138 } 138 }
139 139
140 for (var value of iterable) { 140 for (var value of iterable) {
141 %_CallFunction(this, value, adder); 141 %_CallFunction(this, value, adder);
142 } 142 }
143 } 143 }
144 } 144 }
145 145
146 146
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 %_SetClear(this); 237 %_SetClear(this);
238 } 238 }
239 239
240 240
241 function SetForEach(f, receiver) { 241 function SetForEach(f, receiver) {
242 if (!IS_SET(this)) { 242 if (!IS_SET(this)) {
243 throw MakeTypeError(kIncompatibleMethodReceiver, 243 throw MakeTypeError(kIncompatibleMethodReceiver,
244 'Set.prototype.forEach', this); 244 'Set.prototype.forEach', this);
245 } 245 }
246 246
247 if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f); 247 if (!IS_CALLABLE(f)) throw MakeTypeError(kCalledNonCallable, f);
248 var needs_wrapper = false; 248 var needs_wrapper = false;
249 if (IS_NULL(receiver)) { 249 if (IS_NULL(receiver)) {
250 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED; 250 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED;
251 } else if (!IS_UNDEFINED(receiver)) { 251 } else if (!IS_UNDEFINED(receiver)) {
252 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver); 252 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver);
253 } 253 }
254 254
255 var iterator = new SetIterator(this, ITERATOR_KIND_VALUES); 255 var iterator = new SetIterator(this, ITERATOR_KIND_VALUES);
256 var key; 256 var key;
257 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 257 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 291
292 function MapConstructor(iterable) { 292 function MapConstructor(iterable) {
293 if (!%_IsConstructCall()) { 293 if (!%_IsConstructCall()) {
294 throw MakeTypeError(kConstructorNotFunction, "Map"); 294 throw MakeTypeError(kConstructorNotFunction, "Map");
295 } 295 }
296 296
297 %_MapInitialize(this); 297 %_MapInitialize(this);
298 298
299 if (!IS_NULL_OR_UNDEFINED(iterable)) { 299 if (!IS_NULL_OR_UNDEFINED(iterable)) {
300 var adder = this.set; 300 var adder = this.set;
301 if (!IS_SPEC_FUNCTION(adder)) { 301 if (!IS_CALLABLE(adder)) {
302 throw MakeTypeError(kPropertyNotFunction, 'set', this); 302 throw MakeTypeError(kPropertyNotFunction, 'set', this);
303 } 303 }
304 304
305 for (var nextItem of iterable) { 305 for (var nextItem of iterable) {
306 if (!IS_SPEC_OBJECT(nextItem)) { 306 if (!IS_SPEC_OBJECT(nextItem)) {
307 throw MakeTypeError(kIteratorValueNotAnObject, nextItem); 307 throw MakeTypeError(kIteratorValueNotAnObject, nextItem);
308 } 308 }
309 %_CallFunction(this, nextItem[0], nextItem[1], adder); 309 %_CallFunction(this, nextItem[0], nextItem[1], adder);
310 } 310 }
311 } 311 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 %_MapClear(this); 428 %_MapClear(this);
429 } 429 }
430 430
431 431
432 function MapForEach(f, receiver) { 432 function MapForEach(f, receiver) {
433 if (!IS_MAP(this)) { 433 if (!IS_MAP(this)) {
434 throw MakeTypeError(kIncompatibleMethodReceiver, 434 throw MakeTypeError(kIncompatibleMethodReceiver,
435 'Map.prototype.forEach', this); 435 'Map.prototype.forEach', this);
436 } 436 }
437 437
438 if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f); 438 if (!IS_CALLABLE(f)) throw MakeTypeError(kCalledNonCallable, f);
439 var needs_wrapper = false; 439 var needs_wrapper = false;
440 if (IS_NULL(receiver)) { 440 if (IS_NULL(receiver)) {
441 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED; 441 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED;
442 } else if (!IS_UNDEFINED(receiver)) { 442 } else if (!IS_UNDEFINED(receiver)) {
443 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver); 443 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver);
444 } 444 }
445 445
446 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES); 446 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES);
447 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 447 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
448 var value_array = [UNDEFINED, UNDEFINED]; 448 var value_array = [UNDEFINED, UNDEFINED];
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 "map_has", MapHas, 508 "map_has", MapHas,
509 "map_delete", MapDelete, 509 "map_delete", MapDelete,
510 "set_add", SetAdd, 510 "set_add", SetAdd,
511 "set_has", SetHas, 511 "set_has", SetHas,
512 "set_delete", SetDelete, 512 "set_delete", SetDelete,
513 "map_from_array", MapFromArray, 513 "map_from_array", MapFromArray,
514 "set_from_array",SetFromArray, 514 "set_from_array",SetFromArray,
515 ]); 515 ]);
516 516
517 }) 517 })
OLDNEW
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/execution.h » ('j') | src/execution.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698