Index: src/heap/store-buffer.h |
diff --git a/src/heap/store-buffer.h b/src/heap/store-buffer.h |
index 6c571fcdce5bd2f755e0b42c259aae231667d80f..158c7258153450ce5554aed051a8c1e35c6b294d 100644 |
--- a/src/heap/store-buffer.h |
+++ b/src/heap/store-buffer.h |
@@ -162,6 +162,26 @@ class StoreBuffer { |
}; |
+class StoreBufferRebuilder { |
+ public: |
+ explicit StoreBufferRebuilder(StoreBuffer* store_buffer) |
+ : store_buffer_(store_buffer) {} |
+ |
+ void Callback(MemoryChunk* page, StoreBufferEvent event); |
+ |
+ private: |
+ StoreBuffer* store_buffer_; |
+ |
+ // We record in this variable how full the store buffer was when we started |
+ // iterating over the current page, finding pointers to new space. If the |
+ // store buffer overflows again we can exempt the page from the store buffer |
+ // by rewinding to this point instead of having to search the store buffer. |
+ Object*** start_of_current_page_; |
+ // The current page we are scanning in the store buffer iterator. |
+ MemoryChunk* current_page_; |
+}; |
+ |
+ |
class StoreBufferRebuildScope { |
public: |
explicit StoreBufferRebuildScope(Heap* heap, StoreBuffer* store_buffer, |