#ifndef V8_HEAP_SCAVENGER_INL_H_
#define V8_HEAP_SCAVENGER_INL_H_
#include "src/codegen/assembler-inl.h"
#include "src/heap/evacuation-allocator-inl.h"
#include "src/heap/incremental-marking-inl.h"
#include "src/heap/marking-state-inl.h"
#include "src/heap/mutable-page-metadata.h"
#include "src/heap/new-spaces.h"
#include "src/heap/objects-visiting-inl.h"
#include "src/heap/pretenuring-handler-inl.h"
#include "src/heap/scavenger.h"
#include "src/objects/js-objects.h"
#include "src/objects/map.h"
#include "src/objects/objects-body-descriptors-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/slots-inl.h"
namespace v8 {
namespace internal {
void Scavenger::PromotionList::Local::PushRegularObject(
Tagged<HeapObject> object, int size) { … }
void Scavenger::PromotionList::Local::PushLargeObject(Tagged<HeapObject> object,
Tagged<Map> map,
int size) { … }
size_t Scavenger::PromotionList::Local::LocalPushSegmentSize() const { … }
bool Scavenger::PromotionList::Local::Pop(struct PromotionListEntry* entry) { … }
void Scavenger::PromotionList::Local::Publish() { … }
bool Scavenger::PromotionList::Local::IsGlobalPoolEmpty() const { … }
bool Scavenger::PromotionList::Local::ShouldEagerlyProcessPromotionList()
const { … }
bool Scavenger::PromotionList::IsEmpty() const { … }
size_t Scavenger::PromotionList::Size() const { … }
void Scavenger::PageMemoryFence(Tagged<MaybeObject> object) { … }
bool Scavenger::MigrateObject(Tagged<Map> map, Tagged<HeapObject> source,
Tagged<HeapObject> target, int size,
PromotionHeapChoice promotion_heap_choice) { … }
template <typename THeapObjectSlot>
CopyAndForwardResult Scavenger::SemiSpaceCopyObject(
Tagged<Map> map, THeapObjectSlot slot, Tagged<HeapObject> object,
int object_size, ObjectFields object_fields) { … }
template <typename THeapObjectSlot,
Scavenger::PromotionHeapChoice promotion_heap_choice>
CopyAndForwardResult Scavenger::PromoteObject(Tagged<Map> map,
THeapObjectSlot slot,
Tagged<HeapObject> object,
int object_size,
ObjectFields object_fields) { … }
SlotCallbackResult Scavenger::RememberedSetEntryNeeded(
CopyAndForwardResult result) { … }
bool Scavenger::HandleLargeObject(Tagged<Map> map, Tagged<HeapObject> object,
int object_size, ObjectFields object_fields) { … }
template <typename THeapObjectSlot,
Scavenger::PromotionHeapChoice promotion_heap_choice>
SlotCallbackResult Scavenger::EvacuateObjectDefault(
Tagged<Map> map, THeapObjectSlot slot, Tagged<HeapObject> object,
int object_size, ObjectFields object_fields) { … }
template <typename THeapObjectSlot>
SlotCallbackResult Scavenger::EvacuateThinString(Tagged<Map> map,
THeapObjectSlot slot,
Tagged<ThinString> object,
int object_size) { … }
template <typename THeapObjectSlot>
SlotCallbackResult Scavenger::EvacuateShortcutCandidate(
Tagged<Map> map, THeapObjectSlot slot, Tagged<ConsString> object,
int object_size) { … }
template <typename THeapObjectSlot>
SlotCallbackResult Scavenger::EvacuateInPlaceInternalizableString(
Tagged<Map> map, THeapObjectSlot slot, Tagged<String> object,
int object_size, ObjectFields object_fields) { … }
template <typename THeapObjectSlot>
SlotCallbackResult Scavenger::EvacuateObject(THeapObjectSlot slot,
Tagged<Map> map,
Tagged<HeapObject> source) { … }
template <typename THeapObjectSlot>
SlotCallbackResult Scavenger::ScavengeObject(THeapObjectSlot p,
Tagged<HeapObject> object) { … }
template <typename TSlot>
SlotCallbackResult Scavenger::CheckAndScavengeObject(Heap* heap, TSlot slot) { … }
class ScavengeVisitor final : public NewSpaceVisitor<ScavengeVisitor> { … };
void ScavengeVisitor::VisitPointers(Tagged<HeapObject> host, ObjectSlot start,
ObjectSlot end) { … }
void ScavengeVisitor::VisitPointers(Tagged<HeapObject> host,
MaybeObjectSlot start,
MaybeObjectSlot end) { … }
template <typename TSlot>
void ScavengeVisitor::VisitHeapObjectImpl(TSlot slot,
Tagged<HeapObject> heap_object) { … }
template <typename TSlot>
void ScavengeVisitor::VisitPointersImpl(Tagged<HeapObject> host, TSlot start,
TSlot end) { … }
int ScavengeVisitor::VisitJSArrayBuffer(Tagged<Map> map,
Tagged<JSArrayBuffer> object) { … }
int ScavengeVisitor::VisitJSApiObject(Tagged<Map> map,
Tagged<JSObject> object) { … }
void ScavengeVisitor::VisitExternalPointer(Tagged<HeapObject> host,
ExternalPointerSlot slot) { … }
int ScavengeVisitor::VisitEphemeronHashTable(Tagged<Map> map,
Tagged<EphemeronHashTable> table) { … }
}
}
#endif