20 temp_zone_(temp_zone),
34 capacity_ = kInitialCapacity;
35 entries_ = temp_zone()->AllocateArray<
Node*>(kInitialCapacity);
37 entries_[hash & (kInitialCapacity - 1)] = node;
45 const size_t mask = capacity_ - 1;
46 size_t dead = capacity_;
51 if (dead != capacity_) {
77 for (
size_t j = (
i + 1) &
mask;; j = (j + 1) &
mask) {
83 if (other_entry->
IsDead()) {
86 if (other_entry == node) {
99 Reduction reduction = ReplaceIfTypesMatch(node, other_entry);
100 if (reduction.Changed()) {
121 return ReplaceIfTypesMatch(node, entry);
132 if (!replacement_type.
Is(node_type)) {
138 if (node_type.
Is(replacement_type)) {
146 return Replace(replacement);
153 size_t const old_capacity = capacity_;
155 entries_ = temp_zone()->AllocateArray<
Node*>(capacity_);
158 size_t const mask = capacity_ - 1;
161 for (
size_t i = 0;
i < old_capacity; ++
i) {
162 Node*
const old_entry = old_entries[
i];
163 if (!old_entry || old_entry->
IsDead())
continue;
165 j = (j + 1) &
mask) {
167 if (entry == old_entry) {
static Type GetType(const Node *node)
static bool IsTyped(const Node *node)
static size_t HashCode(Node *node)
static void SetType(Node *node, Type type)
static bool Equals(Node *a, Node *b)
Reduction Reduce(Node *node) override
Reduction ReplaceIfTypesMatch(Node *node, Node *replacement)
~ValueNumberingReducer() override
ValueNumberingReducer(Zone *temp_zone, Zone *graph_zone)
std::vector< EntryBuilder > entries_
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)