| Index: src/store-buffer.h
|
| diff --git a/src/store-buffer.h b/src/store-buffer.h
|
| index ab2593808fd256b71bf1667223fd04b7cd6e9bc5..204fa3ff4e072e7262202da9e259e081a5a20c74 100644
|
| --- a/src/store-buffer.h
|
| +++ b/src/store-buffer.h
|
| @@ -85,8 +85,8 @@ class StoreBuffer {
|
| static const int kStoreBufferSize = kStoreBufferOverflowBit;
|
| static const int kStoreBufferLength = kStoreBufferSize / sizeof(Address);
|
| static const int kOldStoreBufferLength = kStoreBufferLength * 16;
|
| - static const int kHashMapLengthLog2 = 12;
|
| - static const int kHashMapLength = 1 << kHashMapLengthLog2;
|
| + static const int kHashSetLengthLog2 = 12;
|
| + static const int kHashSetLength = 1 << kHashSetLengthLog2;
|
|
|
| void Compact();
|
|
|
| @@ -148,13 +148,18 @@ class StoreBuffer {
|
| bool may_move_store_buffer_entries_;
|
|
|
| VirtualMemory* virtual_memory_;
|
| - uintptr_t* hash_map_1_;
|
| - uintptr_t* hash_map_2_;
|
| +
|
| + // Two hash sets used for filtering.
|
| + // If address is in the hash set then it is guaranteed to be in the
|
| + // old part of the store buffer.
|
| + uintptr_t* hash_set_1_;
|
| + uintptr_t* hash_set_2_;
|
| + bool hash_sets_are_empty_;
|
| +
|
| + void ClearFilteringHashSets();
|
|
|
| void CheckForFullBuffer();
|
| void Uniq();
|
| - void ZapHashTables();
|
| - bool HashTablesAreZapped();
|
| void ExemptPopularPages(int prime_sample_step, int threshold);
|
|
|
| void FindPointersToNewSpaceInRegion(Address start,
|
|
|