Index: src/heap/store-buffer-inl.h |
diff --git a/src/heap/store-buffer-inl.h b/src/heap/store-buffer-inl.h |
index cf88e25aea934293fe7e2c66e96fabbbf25a1e9c..920ec3411dc16687efc604441a3f3037818f4c9d 100644 |
--- a/src/heap/store-buffer-inl.h |
+++ b/src/heap/store-buffer-inl.h |
@@ -13,6 +13,22 @@ |
namespace v8 { |
namespace internal { |
+void LocalStoreBuffer::Record(Address addr) { |
+ if (top_->is_full()) top_ = new Node(top_); |
+ top_->buffer[top_->count++] = addr; |
+} |
+ |
+void LocalStoreBuffer::Process(StoreBuffer* store_buffer) { |
+ Node* current = top_; |
+ while (current != nullptr) { |
+ for (int i = 0; i < current->count; i++) { |
+ Address slot = current->buffer[i]; |
+ Page* page = Page::FromAnyPointerAddress(heap_, slot); |
+ RememberedSet<OLD_TO_NEW>::Insert(page, slot); |
+ } |
+ current = current->next; |
+ } |
+} |
} // namespace internal |
} // namespace v8 |