| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
// The forward predecessor dominates the loop body and the loop effects
// summarize every write in the body, so a forward fact provably untouched
// by the loop is kept even without a matching backedge entry.
for (auto key_it = loaded_properties_.begin();
key_it != loaded_properties_.end();) {
PropertyKey key = key_it->first;
const ZoneMap<ValueNode*, ValueNode*>* backedge_props = nullptr;
auto backedge_key_it = backedge.loaded_properties_.find(key);
if (backedge_key_it != backedge.loaded_properties_.end()) {
backedge_props = &backedge_key_it->second;
}
ZoneMap<ValueNode*, ValueNode*>& props = key_it->second;
for (auto it = props.begin(); it != props.end();) {
ValueNode* obj = it->first;
if (it->second) it->second = it->second->UnwrapIdentities();
ValueNode* l = it->second;
ValueNode* r = nullptr;
if (backedge_props) {
auto r_it = backedge_props->find(obj);
if (r_it != backedge_props->end() && r_it->second) {
r = r_it->second->UnwrapIdentities();
}
}
bool keep;
if (r) {
keep = l == r || (entry_invariant(key, obj) && same_load(l, r));
} else {
keep = l != nullptr && entry_invariant(key, obj);
}
if (keep) {
++it;
} else {
it = props.erase(it);
}
}
if (props.empty()) {
key_it = loaded_properties_.erase(key_it);
} else {
++key_it;
}Is there really no way to make this look nicer???
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
nice!
// Loop-header variant of Merge. The forward (LHS) predecessor dominates the#followup
ugh, depending on visitation order is so brittle here. it would really help to normalize the graph such that we always have one forward entry for loops.
next to the niceness, another question is if we could somehow unify it with CloneForLoopHeader to make sure they always change in lockstep?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
// Loop-header variant of Merge. The forward (LHS) predecessor dominates the#followup
ugh, depending on visitation order is so brittle here. it would really help to normalize the graph such that we always have one forward entry for loops.
Let's do that in a follow up. It was kind of in my plans already, since loop peeler only supports a single forward predecessor.
// The forward predecessor dominates the loop body and the loop effectsIt is a lock-step walk similar to https://source.chromium.org/chromium/chromium/src/+/main:v8/src/maglev/maglev-known-node-aspects.cc;drc=2c2e022b251a82064c60e67b17f9103162a501aa;l=79
I guess we can massage DestructivelyIntersect... but I guess that is also ugly in other aspects. But I can try. Wdyt?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |