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

Side by Side Diff: src/collection.js

Issue 1094563002: Wrap map and set implementation in functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/ast-value-factory.h ('k') | src/collection-iterator.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 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 (function() {
6
5 "use strict"; 7 "use strict";
6 8
7 // This file relies on the fact that the following declaration has been made
8 // in runtime.js:
9 // var $Array = global.Array;
10
11 var $Set = global.Set;
12 var $Map = global.Map;
13
14
15 (function() {
16
17 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
18 10
11 var GlobalMap = global.Map;
12 var GlobalObject = global.Object;
13 var GlobalSet = global.Set;
14
15 // -------------------------------------------------------------------
19 16
20 function HashToEntry(table, hash, numBuckets) { 17 function HashToEntry(table, hash, numBuckets) {
21 var bucket = ORDERED_HASH_TABLE_HASH_TO_BUCKET(hash, numBuckets); 18 var bucket = ORDERED_HASH_TABLE_HASH_TO_BUCKET(hash, numBuckets);
22 return ORDERED_HASH_TABLE_BUCKET_AT(table, bucket); 19 return ORDERED_HASH_TABLE_BUCKET_AT(table, bucket);
23 } 20 }
24 %SetInlineBuiltinFlag(HashToEntry); 21 %SetInlineBuiltinFlag(HashToEntry);
25 22
26 23
27 function SetFindEntry(table, numBuckets, key, hash) { 24 function SetFindEntry(table, numBuckets, key, hash) {
28 var keyIsNaN = NumberIsNaN(key); 25 var keyIsNaN = NumberIsNaN(key);
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 224 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
228 var value_array = [UNDEFINED]; 225 var value_array = [UNDEFINED];
229 while (%SetIteratorNext(iterator, value_array)) { 226 while (%SetIteratorNext(iterator, value_array)) {
230 if (stepping) %DebugPrepareStepInIfStepping(f); 227 if (stepping) %DebugPrepareStepInIfStepping(f);
231 key = value_array[0]; 228 key = value_array[0];
232 var new_receiver = needs_wrapper ? ToObject(receiver) : receiver; 229 var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
233 %_CallFunction(new_receiver, key, key, this, f); 230 %_CallFunction(new_receiver, key, key, this, f);
234 } 231 }
235 } 232 }
236 233
234 // -------------------------------------------------------------------
237 235
238 %SetCode($Set, SetConstructor); 236 %SetCode(GlobalSet, SetConstructor);
239 %FunctionSetLength($Set, 0); 237 %FunctionSetLength(GlobalSet, 0);
240 %FunctionSetPrototype($Set, new $Object()); 238 %FunctionSetPrototype(GlobalSet, new GlobalObject());
241 %AddNamedProperty($Set.prototype, "constructor", $Set, DONT_ENUM); 239 %AddNamedProperty(GlobalSet.prototype, "constructor", GlobalSet, DONT_ENUM);
242 %AddNamedProperty( 240 %AddNamedProperty(GlobalSet.prototype, symbolToStringTag, "Set",
243 $Set.prototype, symbolToStringTag, "Set", DONT_ENUM | READ_ONLY); 241 DONT_ENUM | READ_ONLY);
244 242
245 %FunctionSetLength(SetForEach, 1); 243 %FunctionSetLength(SetForEach, 1);
246 244
247 // Set up the non-enumerable functions on the Set prototype object. 245 // Set up the non-enumerable functions on the Set prototype object.
248 InstallGetter($Set.prototype, "size", SetGetSize); 246 InstallGetter(GlobalSet.prototype, "size", SetGetSize);
249 InstallFunctions($Set.prototype, DONT_ENUM, [ 247 InstallFunctions(GlobalSet.prototype, DONT_ENUM, [
250 "add", SetAdd, 248 "add", SetAdd,
251 "has", SetHas, 249 "has", SetHas,
252 "delete", SetDelete, 250 "delete", SetDelete,
253 "clear", SetClearJS, 251 "clear", SetClearJS,
254 "forEach", SetForEach 252 "forEach", SetForEach
255 ]); 253 ]);
256 254
257 255
258 // ------------------------------------------------------------------- 256 // -------------------------------------------------------------------
259 // Harmony Map 257 // Harmony Map
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES); 414 var iterator = new MapIterator(this, ITERATOR_KIND_ENTRIES);
417 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f); 415 var stepping = DEBUG_IS_ACTIVE && %DebugCallbackSupportsStepping(f);
418 var value_array = [UNDEFINED, UNDEFINED]; 416 var value_array = [UNDEFINED, UNDEFINED];
419 while (%MapIteratorNext(iterator, value_array)) { 417 while (%MapIteratorNext(iterator, value_array)) {
420 if (stepping) %DebugPrepareStepInIfStepping(f); 418 if (stepping) %DebugPrepareStepInIfStepping(f);
421 var new_receiver = needs_wrapper ? ToObject(receiver) : receiver; 419 var new_receiver = needs_wrapper ? ToObject(receiver) : receiver;
422 %_CallFunction(new_receiver, value_array[1], value_array[0], this, f); 420 %_CallFunction(new_receiver, value_array[1], value_array[0], this, f);
423 } 421 }
424 } 422 }
425 423
424 // -------------------------------------------------------------------
426 425
427 %SetCode($Map, MapConstructor); 426 %SetCode(GlobalMap, MapConstructor);
428 %FunctionSetLength($Map, 0); 427 %FunctionSetLength(GlobalMap, 0);
429 %FunctionSetPrototype($Map, new $Object()); 428 %FunctionSetPrototype(GlobalMap, new GlobalObject());
430 %AddNamedProperty($Map.prototype, "constructor", $Map, DONT_ENUM); 429 %AddNamedProperty(GlobalMap.prototype, "constructor", GlobalMap, DONT_ENUM);
431 %AddNamedProperty( 430 %AddNamedProperty(
432 $Map.prototype, symbolToStringTag, "Map", DONT_ENUM | READ_ONLY); 431 GlobalMap.prototype, symbolToStringTag, "Map", DONT_ENUM | READ_ONLY);
433 432
434 %FunctionSetLength(MapForEach, 1); 433 %FunctionSetLength(MapForEach, 1);
435 434
436 // Set up the non-enumerable functions on the Map prototype object. 435 // Set up the non-enumerable functions on the Map prototype object.
437 InstallGetter($Map.prototype, "size", MapGetSize); 436 InstallGetter(GlobalMap.prototype, "size", MapGetSize);
438 InstallFunctions($Map.prototype, DONT_ENUM, [ 437 InstallFunctions(GlobalMap.prototype, DONT_ENUM, [
439 "get", MapGet, 438 "get", MapGet,
440 "set", MapSet, 439 "set", MapSet,
441 "has", MapHas, 440 "has", MapHas,
442 "delete", MapDelete, 441 "delete", MapDelete,
443 "clear", MapClearJS, 442 "clear", MapClearJS,
444 "forEach", MapForEach 443 "forEach", MapForEach
445 ]); 444 ]);
446 445
447 })(); 446 })();
OLDNEW
« no previous file with comments | « src/ast-value-factory.h ('k') | src/collection-iterator.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698