GeezerVison is showing github.com — deps: cherry-pick 09db540,686558d from V8 upstream · nodejs/node@71f9cdf
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: deps/v8/include/v8-version.h +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
|
11 | 11 | #define V8_MAJOR_VERSION 4 |
12 | 12 | #define V8_MINOR_VERSION 5 |
13 | 13 | #define V8_BUILD_NUMBER 103 |
14 | | -#define V8_PATCH_LEVEL 48 |
| 14 | +#define V8_PATCH_LEVEL 49 |
15 | 15 |
|
16 | 16 | // Use 1 for candidates and 0 otherwise. |
17 | 17 | // (Boolean macro values are not supported by all preprocessors.) |
|
Collapse file
Copy file name to clipboardExpand all lines: deps/v8/src/objects.cc +15Lines changed: 15 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -13744,6 +13744,16 @@ void HashTable<Derived, Shape, Key>::Rehash(Key key) { |
13744 | 13744 | } |
13745 | 13745 | } |
13746 | 13746 | } |
| 13747 | + // Wipe deleted entries. |
| 13748 | + Heap* heap = GetHeap(); |
| 13749 | + Object* the_hole = heap->the_hole_value(); |
| 13750 | + Object* undefined = heap->undefined_value(); |
| 13751 | + for (uint32_t current = 0; current < capacity; current++) { |
| 13752 | + if (get(EntryToIndex(current)) == the_hole) { |
| 13753 | + set(EntryToIndex(current), undefined); |
| 13754 | + } |
| 13755 | + } |
| 13756 | + SetNumberOfDeletedElements(0); |
13747 | 13757 | } |
13748 | 13758 |
|
13749 | 13759 |
|
@@ -15198,6 +15208,11 @@ Handle<ObjectHashTable> ObjectHashTable::Put(Handle<ObjectHashTable> table, |
15198 | 15208 | return table; |
15199 | 15209 | } |
15200 | 15210 |
|
| 15211 | + // Rehash if more than 33% of the entries are deleted entries. |
| 15212 | + // TODO(jochen): Consider to shrink the fixed array in place. |
| 15213 | + if ((table->NumberOfDeletedElements() << 1) > table->NumberOfElements()) { |
| 15214 | + table->Rehash(isolate->factory()->undefined_value()); |
| 15215 | + } |
15201 | 15216 | // If we're out of luck, we didn't get a GC recently, and so rehashing |
15202 | 15217 | // isn't enough to avoid a crash. |
15203 | 15218 | if (!table->HasSufficientCapacityToAdd(1)) { |
|