���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /home/real/node-v13.0.1/deps/v8/src/heap/ |
// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/heap/basic-memory-chunk.h" #include <cstdlib> #include "src/heap/heap-write-barrier-inl.h" #include "src/objects/heap-object.h" #include "src/objects/slots-inl.h" namespace v8 { namespace internal { // Verify write barrier offsets match the the real offsets. STATIC_ASSERT(BasicMemoryChunk::Flag::INCREMENTAL_MARKING == heap_internals::MemoryChunk::kMarkingBit); STATIC_ASSERT(BasicMemoryChunk::Flag::FROM_PAGE == heap_internals::MemoryChunk::kFromPageBit); STATIC_ASSERT(BasicMemoryChunk::Flag::TO_PAGE == heap_internals::MemoryChunk::kToPageBit); STATIC_ASSERT(BasicMemoryChunk::kFlagsOffset == heap_internals::MemoryChunk::kFlagsOffset); STATIC_ASSERT(BasicMemoryChunk::kHeapOffset == heap_internals::MemoryChunk::kHeapOffset); BasicMemoryChunk::BasicMemoryChunk(size_t size, Address area_start, Address area_end) { const Address base = reinterpret_cast<Address>(this); size_ = size; marking_bitmap_ = static_cast<Bitmap*>(calloc(1, Bitmap::kSize)); header_sentinel_ = HeapObject::FromAddress(base).ptr(); DCHECK(HasHeaderSentinel(area_start)); area_start_ = area_start; area_end_ = area_end; } // static bool BasicMemoryChunk::HasHeaderSentinel(Address slot_addr) { Address base = BaseAddress(slot_addr); if (slot_addr < base + kHeaderSize) return false; return HeapObject::FromAddress(base) == ObjectSlot(base + kHeaderSentinelOffset).Relaxed_Load(); } void BasicMemoryChunk::ReleaseMarkingBitmap() { DCHECK_NOT_NULL(marking_bitmap_); free(marking_bitmap_); marking_bitmap_ = nullptr; } } // namespace internal } // namespace v8