Lines Matching refs:header
15 #include "src/heap/cppgc/heap-object-header.h"
72 void MarkingStateBase::MarkAndPush(HeapObjectHeader& header,
76 if (header.IsInConstruction<AccessMode::kAtomic>()) {
77 not_fully_constructed_worklist_.Push<AccessMode::kAtomic>(&header);
78 } else if (MarkNoPush(header)) {
79 PushMarked(header, desc);
83 bool MarkingStateBase::MarkNoPush(HeapObjectHeader& header) {
85 DCHECK_EQ(&heap_, &BasePage::FromPayload(&header)->heap());
88 DCHECK(!header.IsFree<AccessMode::kAtomic>());
89 return header.TryMarkAtomic();
92 void MarkingStateBase::MarkAndPush(HeapObjectHeader& header) {
94 header,
95 {header.ObjectStart(),
96 GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
99 void MarkingStateBase::PushMarked(HeapObjectHeader& header,
101 DCHECK(header.IsMarked<AccessMode::kAtomic>());
102 DCHECK(!header.IsInConstruction<AccessMode::kAtomic>());
256 const HeapObjectHeader& header =
258 if (!header.IsInConstruction<AccessMode::kAtomic>() &&
259 header.IsMarked<AccessMode::kAtomic>())
270 void BasicMarkingState::RegisterWeakContainer(HeapObjectHeader& header) {
271 weak_containers_worklist_.Push<AccessMode::kAtomic>(&header);
280 HeapObjectHeader& header =
283 if (header.IsInConstruction<AccessMode::kAtomic>()) {
284 not_fully_constructed_worklist_.Push<AccessMode::kAtomic>(&header);
290 if (!MarkNoPush(header)) return;
292 RegisterWeakContainer(header);
302 PushMarked(header, desc);
306 AccountMarkedBytes(header);
344 void BasicMarkingState::AccountMarkedBytes(const HeapObjectHeader& header) {
346 header.IsLargeObject<AccessMode::kAtomic>()
347 ? reinterpret_cast<const LargePage*>(BasePage::FromPayload(&header))
349 : header.AllocatedSize<AccessMode::kAtomic>());
362 inline bool MarkNoPush(HeapObjectHeader& header) {
363 return MutatorMarkingState::BasicMarkingState::MarkNoPush(header);
402 HeapObjectHeader& header) {
403 DCHECK(weak_containers_worklist_.Contains(&header));
404 recently_retraced_weak_containers_.Insert(&header);
405 retrace_marked_objects_worklist().Push(&header);
409 HeapObjectHeader& header =
412 DCHECK(!header.IsInConstruction());
413 if (MarkNoPush(header)) {
415 {reinterpret_cast<void*>(header.ObjectStart()),
416 GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
426 const HeapObjectHeader& header =
428 DCHECK_IMPLIES(header.IsInConstruction(),
429 header.IsMarked<AccessMode::kAtomic>());
434 bool MutatorMarkingState::IsMarkedWeakContainer(HeapObjectHeader& header) {
436 weak_containers_worklist_.Contains<AccessMode::kAtomic>(&header) &&
437 !recently_retraced_weak_containers_.Contains(&header);
438 DCHECK_IMPLIES(result, header.IsMarked<AccessMode::kAtomic>());
439 DCHECK_IMPLIES(result, !header.IsInConstruction());
444 const HeapObjectHeader* header) {
447 header) != recently_retraced_cache_.end();
451 const HeapObjectHeader* header) {
454 recently_retraced_cache_.push_back(header);
456 recently_retraced_cache_[last_used_index_] = header;
506 const HeapObjectHeader& header) {
507 DCHECK(!header.IsInConstruction<mode>());
508 DCHECK(header.IsMarked<AccessMode::kAtomic>());
509 header.Trace<mode>(&visitor);