OLD | NEW |
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(global, utils) { | 5 (function(global, utils) { |
6 "use strict"; | 6 "use strict"; |
7 | 7 |
8 %CheckIsBootstrapping(); | 8 %CheckIsBootstrapping(); |
9 | 9 |
10 // ------------------------------------------------------------------- | 10 // ------------------------------------------------------------------- |
11 // Imports | 11 // Imports |
12 | 12 |
13 var GlobalMap = global.Map; | 13 var GlobalMap = global.Map; |
14 var GlobalObject = global.Object; | 14 var GlobalObject = global.Object; |
15 var GlobalSet = global.Set; | 15 var GlobalSet = global.Set; |
16 var hashCodeSymbol = utils.ImportNow("hash_code_symbol"); | 16 var hashCodeSymbol = utils.ImportNow("hash_code_symbol"); |
17 var IntRandom; | 17 var MathRandom; |
18 var MakeTypeError; | 18 var MakeTypeError; |
19 var MapIterator; | 19 var MapIterator; |
20 var NumberIsNaN; | 20 var NumberIsNaN; |
21 var SetIterator; | 21 var SetIterator; |
22 var speciesSymbol = utils.ImportNow("species_symbol"); | 22 var speciesSymbol = utils.ImportNow("species_symbol"); |
23 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 23 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
24 | 24 |
25 utils.Import(function(from) { | 25 utils.Import(function(from) { |
26 IntRandom = from.IntRandom; | 26 MathRandom = from.MathRandom; |
27 MakeTypeError = from.MakeTypeError; | 27 MakeTypeError = from.MakeTypeError; |
28 MapIterator = from.MapIterator; | 28 MapIterator = from.MapIterator; |
29 NumberIsNaN = from.NumberIsNaN; | 29 NumberIsNaN = from.NumberIsNaN; |
30 SetIterator = from.SetIterator; | 30 SetIterator = from.SetIterator; |
31 }); | 31 }); |
32 | 32 |
33 // ------------------------------------------------------------------- | 33 // ------------------------------------------------------------------- |
34 | 34 |
35 function HashToEntry(table, hash, numBuckets) { | 35 function HashToEntry(table, hash, numBuckets) { |
36 var bucket = ORDERED_HASH_TABLE_HASH_TO_BUCKET(hash, numBuckets); | 36 var bucket = ORDERED_HASH_TABLE_HASH_TO_BUCKET(hash, numBuckets); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 return hash; | 106 return hash; |
107 } | 107 } |
108 return %GenericHash(key); | 108 return %GenericHash(key); |
109 } | 109 } |
110 %SetForceInlineFlag(GetExistingHash); | 110 %SetForceInlineFlag(GetExistingHash); |
111 | 111 |
112 | 112 |
113 function GetHash(key) { | 113 function GetHash(key) { |
114 var hash = GetExistingHash(key); | 114 var hash = GetExistingHash(key); |
115 if (IS_UNDEFINED(hash)) { | 115 if (IS_UNDEFINED(hash)) { |
116 hash = IntRandom() | 0; | 116 hash = (MathRandom() * 0x40000000) | 0; |
117 if (hash === 0) hash = 1; | 117 if (hash === 0) hash = 1; |
118 SET_PRIVATE(key, hashCodeSymbol, hash); | 118 SET_PRIVATE(key, hashCodeSymbol, hash); |
119 } | 119 } |
120 return hash; | 120 return hash; |
121 } | 121 } |
122 %SetForceInlineFlag(GetHash); | 122 %SetForceInlineFlag(GetHash); |
123 | 123 |
124 | 124 |
125 // ------------------------------------------------------------------- | 125 // ------------------------------------------------------------------- |
126 // Harmony Set | 126 // Harmony Set |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 "set_has", SetHas, | 485 "set_has", SetHas, |
486 "set_delete", SetDelete, | 486 "set_delete", SetDelete, |
487 ]); | 487 ]); |
488 | 488 |
489 utils.Export(function(to) { | 489 utils.Export(function(to) { |
490 to.GetExistingHash = GetExistingHash; | 490 to.GetExistingHash = GetExistingHash; |
491 to.GetHash = GetHash; | 491 to.GetHash = GetHash; |
492 }); | 492 }); |
493 | 493 |
494 }) | 494 }) |
OLD | NEW |