| Index: src/heap/store-buffer.h
|
| diff --git a/src/heap/store-buffer.h b/src/heap/store-buffer.h
|
| index cbeaec20a3e68d3460615d71ac938140158921fa..e7e9c985eb4c79c544033e722aed9d1f21eb4115 100644
|
| --- a/src/heap/store-buffer.h
|
| +++ b/src/heap/store-buffer.h
|
| @@ -14,14 +14,8 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -class Page;
|
| -class PagedSpace;
|
| -class StoreBuffer;
|
| -
|
| -typedef void (*ObjectSlotCallback)(HeapObject** from, HeapObject* to);
|
| -
|
| -// Used to implement the write barrier by collecting addresses of pointers
|
| -// between spaces.
|
| +// Intermediate buffer that accumulates old-to-new stores from the generated
|
| +// code. On buffer overflow the slots are moved to the remembered set.
|
| class StoreBuffer {
|
| public:
|
| explicit StoreBuffer(Heap* heap);
|
| @@ -33,25 +27,7 @@ class StoreBuffer {
|
| static const int kStoreBufferSize = kStoreBufferOverflowBit;
|
| static const int kStoreBufferLength = kStoreBufferSize / sizeof(Address);
|
|
|
| - // This is used to add addresses to the store buffer non-concurrently.
|
| - inline void Mark(Address addr);
|
| -
|
| - // Removes the given slot from the store buffer non-concurrently. If the
|
| - // slot was never added to the store buffer, then the function does nothing.
|
| - void Remove(Address addr);
|
| -
|
| - // Slots that do not point to the ToSpace after callback invocation will be
|
| - // removed from the set.
|
| - void IteratePointersToNewSpace(ObjectSlotCallback callback);
|
| -
|
| - void Verify();
|
| -
|
| - // Eliminates all stale store buffer entries from the store buffer, i.e.,
|
| - // slots that are not part of live objects anymore. This method must be
|
| - // called after marking, when the whole transitive closure is known and
|
| - // must be called before sweeping when mark bits are still intact.
|
| - void ClearInvalidStoreBufferEntries();
|
| - void VerifyValidStoreBufferEntries();
|
| + void MoveEntriesToRememberedSet();
|
|
|
| private:
|
| Heap* heap_;
|
| @@ -62,27 +38,13 @@ class StoreBuffer {
|
| Address* limit_;
|
|
|
| base::VirtualMemory* virtual_memory_;
|
| -
|
| - // Used for synchronization of concurrent store buffer access.
|
| - base::Mutex mutex_;
|
| -
|
| - void InsertEntriesFromBuffer();
|
| -
|
| - inline uint32_t AddressToSlotSetAndOffset(Address slot_address,
|
| - SlotSet** slots);
|
| -
|
| - template <typename Callback>
|
| - void Iterate(Callback callback);
|
| -
|
| -#ifdef VERIFY_HEAP
|
| - void VerifyPointers(LargeObjectSpace* space);
|
| -#endif
|
| };
|
|
|
|
|
| class LocalStoreBuffer BASE_EMBEDDED {
|
| public:
|
| - LocalStoreBuffer() : top_(new Node(nullptr)) {}
|
| + explicit LocalStoreBuffer(Heap* heap)
|
| + : top_(new Node(nullptr)), heap_(heap) {}
|
|
|
| ~LocalStoreBuffer() {
|
| Node* current = top_;
|
| @@ -110,6 +72,7 @@ class LocalStoreBuffer BASE_EMBEDDED {
|
| };
|
|
|
| Node* top_;
|
| + Heap* heap_;
|
| };
|
|
|
| } // namespace internal
|
|
|