| // Copyright 2020 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/cppgc/heap-object-header.h" |
| #include "include/cppgc/internal/api-constants.h" |
| #include "src/base/macros.h" |
| #include "src/heap/cppgc/gc-info-table.h" |
| STATIC_ASSERT((kAllocationGranularity % sizeof(HeapObjectHeader)) == 0); |
| void HeapObjectHeader::CheckApiConstants() { |
| STATIC_ASSERT(api_constants::kFullyConstructedBitMask == |
| FullyConstructedField::kMask); |
| STATIC_ASSERT(api_constants::kFullyConstructedBitFieldOffsetFromPayload == |
| (sizeof(encoded_high_) + sizeof(encoded_low_))); |
| void HeapObjectHeader::Finalize() { |
| const GCInfo& gc_info = GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex()); |
| gc_info.finalize(Payload()); |
| HeapObjectName HeapObjectHeader::GetName() const { |
| const GCInfo& gc_info = GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex()); |
| return gc_info.name(Payload()); |
| void HeapObjectHeader::Trace(Visitor* visitor) const { |
| const GCInfo& gc_info = GlobalGCInfoTable::GCInfoFromIndex(GetGCInfoIndex()); |
| return gc_info.trace(visitor, Payload()); |