1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef V8_STORE_BUFFER_INL_H_
6 #define V8_STORE_BUFFER_INL_H_
8 #include "src/heap/store-buffer.h"
13 Address StoreBuffer::TopAddress() {
14 return reinterpret_cast<Address>(heap_->store_buffer_top_address());
18 void StoreBuffer::Mark(Address addr) {
19 DCHECK(!heap_->cell_space()->Contains(addr));
20 DCHECK(!heap_->code_space()->Contains(addr));
21 DCHECK(!heap_->old_data_space()->Contains(addr));
22 Address* top = reinterpret_cast<Address*>(heap_->store_buffer_top());
24 heap_->public_set_store_buffer_top(top);
25 if ((reinterpret_cast<uintptr_t>(top) & kStoreBufferOverflowBit) != 0) {
26 DCHECK(top == limit_);
34 void StoreBuffer::EnterDirectlyIntoStoreBuffer(Address addr) {
35 if (store_buffer_rebuilding_enabled_) {
36 SLOW_DCHECK(!heap_->cell_space()->Contains(addr) &&
37 !heap_->code_space()->Contains(addr) &&
38 !heap_->old_data_space()->Contains(addr) &&
39 !heap_->new_space()->Contains(addr));
40 Address* top = old_top_;
43 old_buffer_is_sorted_ = false;
44 old_buffer_is_filtered_ = false;
45 if (top >= old_limit_) {
46 DCHECK(callback_ != NULL);
47 (*callback_)(heap_, MemoryChunk::FromAnyPointerAddress(heap_, addr),
48 kStoreBufferFullEvent);
53 } // namespace v8::internal
55 #endif // V8_STORE_BUFFER_INL_H_