summaryrefslogtreecommitdiffstats
path: root/chromium/v8/src/heap/basic-memory-chunk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/heap/basic-memory-chunk.cc')
-rw-r--r--chromium/v8/src/heap/basic-memory-chunk.cc38
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