summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/ordered-hash-table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/ordered-hash-table.cc')
-rw-r--r--deps/v8/src/objects/ordered-hash-table.cc26
1 files changed, 18 insertions, 8 deletions
diff --git a/deps/v8/src/objects/ordered-hash-table.cc b/deps/v8/src/objects/ordered-hash-table.cc
index f0cc7b9df7..962224024e 100644
--- a/deps/v8/src/objects/ordered-hash-table.cc
+++ b/deps/v8/src/objects/ordered-hash-table.cc
@@ -168,8 +168,8 @@ Handle<FixedArray> OrderedHashSet::ConvertToKeysArray(
for (int i = 0; i < length; i++) {
int index = HashTableStartIndex() + nof_buckets + (i * kEntrySize);
Object key = table->get(index);
+ uint32_t index_value;
if (convert == GetKeysConversion::kConvertToString) {
- uint32_t index_value;
if (key.ToArrayIndex(&index_value)) {
// Avoid trashing the Number2String cache if indices get very large.
bool use_cache = i < kMaxStringTableEntries;
@@ -177,6 +177,8 @@ Handle<FixedArray> OrderedHashSet::ConvertToKeysArray(
} else {
CHECK(key.IsName());
}
+ } else if (convert == GetKeysConversion::kNoNumbers) {
+ DCHECK(!key.ToArrayIndex(&index_value));
}
result->set(i, key);
}
@@ -957,22 +959,19 @@ OrderedHashTableHandler<SmallOrderedNameDictionary,
OrderedNameDictionary>::Allocate(Isolate* isolate,
int capacity);
-#if !defined(V8_OS_WIN)
template <class SmallTable, class LargeTable>
bool OrderedHashTableHandler<SmallTable, LargeTable>::Delete(
- Handle<HeapObject> table, Handle<Object> key) {
+ Isolate* isolate, Handle<HeapObject> table, Handle<Object> key) {
if (SmallTable::Is(table)) {
- return SmallTable::Delete(Handle<SmallTable>::cast(table), key);
+ return SmallTable::Delete(isolate, *Handle<SmallTable>::cast(table), *key);
}
DCHECK(LargeTable::Is(table));
// Note: Once we migrate to the a big hash table, we never migrate
// down to a smaller hash table.
- return LargeTable::Delete(Handle<LargeTable>::cast(table), key);
+ return LargeTable::Delete(isolate, *Handle<LargeTable>::cast(table), *key);
}
-#endif
-#if !defined(V8_OS_WIN)
template <class SmallTable, class LargeTable>
bool OrderedHashTableHandler<SmallTable, LargeTable>::HasKey(
Isolate* isolate, Handle<HeapObject> table, Handle<Object> key) {
@@ -983,7 +982,6 @@ bool OrderedHashTableHandler<SmallTable, LargeTable>::HasKey(
DCHECK(LargeTable::Is(table));
return LargeTable::HasKey(isolate, LargeTable::cast(*table), *key);
}
-#endif
template bool
OrderedHashTableHandler<SmallOrderedHashSet, OrderedHashSet>::HasKey(
@@ -992,6 +990,18 @@ template bool
OrderedHashTableHandler<SmallOrderedHashMap, OrderedHashMap>::HasKey(
Isolate* isolate, Handle<HeapObject> table, Handle<Object> key);
+template bool
+OrderedHashTableHandler<SmallOrderedHashSet, OrderedHashSet>::Delete(
+ Isolate* isolate, Handle<HeapObject> table, Handle<Object> key);
+template bool
+OrderedHashTableHandler<SmallOrderedHashMap, OrderedHashMap>::Delete(
+ Isolate* isolate, Handle<HeapObject> table, Handle<Object> key);
+template bool
+OrderedHashTableHandler<SmallOrderedNameDictionary,
+ OrderedNameDictionary>::Delete(Isolate* isolate,
+ Handle<HeapObject> table,
+ Handle<Object> key);
+
MaybeHandle<OrderedHashMap> OrderedHashMapHandler::AdjustRepresentation(
Isolate* isolate, Handle<SmallOrderedHashMap> table) {
MaybeHandle<OrderedHashMap> new_table_candidate =