#ifndef V8_HEAP_REFERENCE_SUMMARIZER_H_
#define V8_HEAP_REFERENCE_SUMMARIZER_H_
#include <unordered_set>
#include "src/objects/heap-object.h"
namespace v8 {
namespace internal {
class Heap;
class ReferenceSummary {
public:
ReferenceSummary() = default;
ReferenceSummary(ReferenceSummary&& other) V8_NOEXCEPT
: strong_references_(std::move(other.strong_references_)),
weak_references_(std::move(other.weak_references_)) {}
static ReferenceSummary SummarizeReferencesFrom(Heap* heap,
Tagged<HeapObject> obj);
using UnorderedHeapObjectSet =
std::unordered_set<Tagged<HeapObject>, Object::Hasher,
Object::KeyEqualSafe>;
UnorderedHeapObjectSet& strong_references() { return strong_references_; }
UnorderedHeapObjectSet& weak_references() { return weak_references_; }
void Clear() {
strong_references_.clear();
weak_references_.clear();
}
private:
UnorderedHeapObjectSet strong_references_;
UnorderedHeapObjectSet weak_references_;
DISALLOW_GARBAGE_COLLECTION(no_gc)
};
}
}
#endif