#include "src/heap/weak-object-worklists.h"
#include "src/heap/heap-inl.h"
#include "src/heap/heap.h"
#include "src/objects/hash-table.h"
#include "src/objects/heap-object.h"
#include "src/objects/js-function.h"
#include "src/objects/js-weak-refs-inl.h"
#include "src/objects/js-weak-refs.h"
#include "src/objects/shared-function-info.h"
#include "src/objects/transitions.h"
namespace v8 {
namespace internal {
WeakObjects::Local::Local(WeakObjects* weak_objects)
: … { … }
void WeakObjects::Local::Publish() { … }
void WeakObjects::UpdateAfterScavenge() { … }
void WeakObjects::Clear() { … }
void WeakObjects::UpdateTransitionArrays(
WeakObjectWorklist<Tagged<TransitionArray>>& transition_arrays) { … }
void WeakObjects::UpdateEphemeronHashTables(
WeakObjectWorklist<Tagged<EphemeronHashTable>>& ephemeron_hash_tables) { … }
namespace {
bool EphemeronUpdater(Ephemeron slot_in, Ephemeron* slot_out) { … }
}
void WeakObjects::UpdateCurrentEphemerons(
WeakObjectWorklist<Ephemeron>& current_ephemerons) { … }
void WeakObjects::UpdateNextEphemerons(
WeakObjectWorklist<Ephemeron>& next_ephemerons) { … }
void WeakObjects::UpdateDiscoveredEphemerons(
WeakObjectWorklist<Ephemeron>& discovered_ephemerons) { … }
namespace {
void UpdateWeakReferencesHelper(
WeakObjects::WeakObjectWorklist<HeapObjectAndSlot>& weak_references) { … }
}
void WeakObjects::UpdateWeakReferencesTrivial(
WeakObjectWorklist<HeapObjectAndSlot>& weak_references) { … }
void WeakObjects::UpdateWeakReferencesNonTrivial(
WeakObjectWorklist<HeapObjectAndSlot>& weak_references) { … }
void WeakObjects::UpdateWeakReferencesNonTrivialUnmarked(
WeakObjectWorklist<HeapObjectAndSlot>& weak_references) { … }
void WeakObjects::UpdateWeakObjectsInCode(
WeakObjectWorklist<HeapObjectAndCode>& weak_objects_in_code) { … }
void WeakObjects::UpdateJSWeakRefs(
WeakObjectWorklist<Tagged<JSWeakRef>>& js_weak_refs) { … }
void WeakObjects::UpdateWeakCells(
WeakObjectWorklist<Tagged<WeakCell>>& weak_cells) { … }
void WeakObjects::UpdateCodeFlushingCandidates(
WeakObjectWorklist<Tagged<SharedFunctionInfo>>& code_flushing_candidates) { … }
void WeakObjects::UpdateFlushedJSFunctions(
WeakObjectWorklist<Tagged<JSFunction>>& flushed_js_functions) { … }
void WeakObjects::UpdateBaselineFlushingCandidates(
WeakObjectWorklist<Tagged<JSFunction>>& baseline_flush_candidates) { … }
#ifdef DEBUG
template <typename Type>
bool WeakObjects::ContainsYoungObjects(
WeakObjectWorklist<Tagged<Type>>& worklist) { … }
#endif
}
}