diff options
Diffstat (limited to 'chromium/v8/src/heap/basic-memory-chunk.cc')
| -rw-r--r-- | chromium/v8/src/heap/basic-memory-chunk.cc | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/chromium/v8/src/heap/basic-memory-chunk.cc b/chromium/v8/src/heap/basic-memory-chunk.cc index fa94f60f4ec..50eb8392915 100644 --- a/chromium/v8/src/heap/basic-memory-chunk.cc +++ b/chromium/v8/src/heap/basic-memory-chunk.cc @@ -7,8 +7,8 @@ #include <cstdlib> #include "src/heap/heap-write-barrier-inl.h" +#include "src/heap/incremental-marking.h" #include "src/objects/heap-object.h" -#include "src/objects/slots-inl.h" namespace v8 { namespace internal { @@ -39,5 +39,41 @@ void BasicMemoryChunk::ReleaseMarkingBitmap() { marking_bitmap_ = nullptr; } +// static +BasicMemoryChunk* BasicMemoryChunk::Initialize(Heap* heap, Address base, + size_t size, Address area_start, + Address area_end, + BaseSpace* owner, + VirtualMemory reservation) { + BasicMemoryChunk* chunk = FromAddress(base); + DCHECK_EQ(base, chunk->address()); + new (chunk) BasicMemoryChunk(size, area_start, area_end); + + chunk->heap_ = heap; + chunk->set_owner(owner); + chunk->reservation_ = std::move(reservation); + chunk->high_water_mark_ = static_cast<intptr_t>(area_start - base); + chunk->allocated_bytes_ = chunk->area_size(); + chunk->wasted_memory_ = 0; + + return chunk; +} + +bool BasicMemoryChunk::InOldSpace() const { + return owner()->identity() == OLD_SPACE; +} + +bool BasicMemoryChunk::InLargeObjectSpace() const { + return owner()->identity() == LO_SPACE; +} + +#ifdef THREAD_SANITIZER +void BasicMemoryChunk::SynchronizedHeapLoad() { + CHECK(reinterpret_cast<Heap*>(base::Acquire_Load( + reinterpret_cast<base::AtomicWord*>(&heap_))) != nullptr || + InReadOnlySpace()); +} +#endif + } // namespace internal } // namespace v8 |
