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

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: Rebase again. 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
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/execution.h » ('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 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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 function SetConstructor(iterable) { 128 function SetConstructor(iterable) {
129 if (!%_IsConstructCall()) { 129 if (!%_IsConstructCall()) {
130 throw MakeTypeError(kConstructorNotFunction, "Set"); 130 throw MakeTypeError(kConstructorNotFunction, "Set");
131 } 131 }
132 132
133 %_SetInitialize(this); 133 %_SetInitialize(this);
134 134
135 if (!IS_NULL_OR_UNDEFINED(iterable)) { 135 if (!IS_NULL_OR_UNDEFINED(iterable)) {
136 var adder = this.add; 136 var adder = this.add;
137 if (!IS_SPEC_FUNCTION(adder)) { 137 if (!IS_CALLABLE(adder)) {
138 throw MakeTypeError(kPropertyNotFunction, 'add', this); 138 throw MakeTypeError(kPropertyNotFunction, 'add', this);
139 } 139 }
140 140
141 for (var value of iterable) { 141 for (var value of iterable) {
142 %_CallFunction(this, value, adder); 142 %_CallFunction(this, value, adder);
143 } 143 }
144 } 144 }
145 } 145 }
146 146
147 147
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 %_SetClear(this); 238 %_SetClear(this);
239 } 239 }
240 240
241 241
242 function SetForEach(f, receiver) { 242 function SetForEach(f, receiver) {
243 if (!IS_SET(this)) { 243 if (!IS_SET(this)) {
244 throw MakeTypeError(kIncompatibleMethodReceiver, 244 throw MakeTypeError(kIncompatibleMethodReceiver,
245 'Set.prototype.forEach', this); 245 'Set.prototype.forEach', this);
246 } 246 }
247 247
248 if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f); 248 if (!IS_CALLABLE(f)) throw MakeTypeError(kCalledNonCallable, f);
249 var needs_wrapper = false; 249 var needs_wrapper = false;
250 if (IS_NULL(receiver)) { 250 if (IS_NULL(receiver)) {
251 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED; 251 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED;
252 } else if (!IS_UNDEFINED(receiver)) { 252 } else if (!IS_UNDEFINED(receiver)) {
253 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver); 253 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver);
254 } 254 }
255 255
256 var iterator = new SetIterator(this, ITERATOR_KIND_VALUES); 256 var iterator = new SetIterator(this, ITERATOR_KIND_VALUES);
257 var key; 257 var key;
258 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 258 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 292
293 function MapConstructor(iterable) { 293 function MapConstructor(iterable) {
294 if (!%_IsConstructCall()) { 294 if (!%_IsConstructCall()) {
295 throw MakeTypeError(kConstructorNotFunction, "Map"); 295 throw MakeTypeError(kConstructorNotFunction, "Map");
296 } 296 }
297 297
298 %_MapInitialize(this); 298 %_MapInitialize(this);
299 299
300 if (!IS_NULL_OR_UNDEFINED(iterable)) { 300 if (!IS_NULL_OR_UNDEFINED(iterable)) {
301 var adder = this.set; 301 var adder = this.set;
302 if (!IS_SPEC_FUNCTION(adder)) { 302 if (!IS_CALLABLE(adder)) {
303 throw MakeTypeError(kPropertyNotFunction, 'set', this); 303 throw MakeTypeError(kPropertyNotFunction, 'set', this);
304 } 304 }
305 305
306 for (var nextItem of iterable) { 306 for (var nextItem of iterable) {
307 if (!IS_SPEC_OBJECT(nextItem)) { 307 if (!IS_SPEC_OBJECT(nextItem)) {
308 throw MakeTypeError(kIteratorValueNotAnObject, nextItem); 308 throw MakeTypeError(kIteratorValueNotAnObject, nextItem);
309 } 309 }
310 %_CallFunction(this, nextItem[0], nextItem[1], adder); 310 %_CallFunction(this, nextItem[0], nextItem[1], adder);
311 } 311 }
312 } 312 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 %_MapClear(this); 429 %_MapClear(this);
430 } 430 }
431 431
432 432
433 function MapForEach(f, receiver) { 433 function MapForEach(f, receiver) {
434 if (!IS_MAP(this)) { 434 if (!IS_MAP(this)) {
435 throw MakeTypeError(kIncompatibleMethodReceiver, 435 throw MakeTypeError(kIncompatibleMethodReceiver,
436 'Map.prototype.forEach', this); 436 'Map.prototype.forEach', this);
437 } 437 }
438 438
439 if (!IS_SPEC_FUNCTION(f)) throw MakeTypeError(kCalledNonCallable, f); 439 if (!IS_CALLABLE(f)) throw MakeTypeError(kCalledNonCallable, f);
440 var needs_wrapper = false; 440 var needs_wrapper = false;
441 if (IS_NULL(receiver)) { 441 if (IS_NULL(receiver)) {
442 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED; 442 if (%IsSloppyModeFunction(f)) receiver = UNDEFINED;
443 } else if (!IS_UNDEFINED(receiver)) { 443 } else if (!IS_UNDEFINED(receiver)) {
444 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver); 444 needs_wrapper = SHOULD_CREATE_WRAPPER(f, receiver);
445 } 445 }
446 446
447 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES); 447 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES);
448 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 448 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
449 var value_array = [UNDEFINED, UNDEFINED]; 449 var value_array = [UNDEFINED, UNDEFINED];
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 "map_has", MapHas, 509 "map_has", MapHas,
510 "map_delete", MapDelete, 510 "map_delete", MapDelete,
511 "set_add", SetAdd, 511 "set_add", SetAdd,
512 "set_has", SetHas, 512 "set_has", SetHas,
513 "set_delete", SetDelete, 513 "set_delete", SetDelete,
514 "map_from_array", MapFromArray, 514 "map_from_array", MapFromArray,
515 "set_from_array",SetFromArray, 515 "set_from_array",SetFromArray,
516 ]); 516 ]);
517 517
518 }) 518 })
OLDNEW
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/execution.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698