| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
😿 Job mac-m1_mini_2020-perf/jetstream-main.crossbench failed.
See results at: https://pinpoint-dot-chromeperf.appspot.com/job/11e37585b10000
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
LGTM % nit
if (IsEmptyNodeType(
IntersectType(known_node_aspects().GetType(broker(), input),
NodeType::kAnyHeapObject))) {
return DeoptAndTruncate(DeoptimizeReason::kSmi);
}
if (known_node_aspects().EnsureType(broker(), input,
NodeType::kAnyHeapObject)) {
return ProcessResult::kRemove;
}I guess this will become a common pattern. I wonder if we should introduce a helper for it.
```
REMOVE_AND_RETURN_IF_DONE(EnsureType(input, Type, DeoptReason::kSmi));
```
then a
```
ReduceResult EnsureType(ValueNode *input, NodeType type, DeoptimizeReason reason = DeoptimizeReason::WrongValue) {
if (IsEmptyNodeType(
IntersectType(known_node_aspects().GetType(broker(), input),
type))) {
return EmitUnconditionalDeopt(reason);
}
if (!known_node_aspects().EnsureType(broker(), input, type)) {
return {};
}
return ReduceResult::Done();
}
```
```
#define REMOVE_AND_RETURN_IF_DONE(result) \
do { \
auto res = (result); \
if (IsDoneWithAbort(res)) { \
return ProcessResult::kTruncateBlock; \
} else if (IsDone(res)) {
return ProcessResult::kRemove; \
DCHECK(IsFail(result)); \
} while (false)
```
if (IsEmptyNodeType(
IntersectType(known_node_aspects().GetType(broker(), input),
NodeType::kJSReceiver))) {
return DeoptAndTruncate(DeoptimizeReason::kWrongInstanceType);
}
if (known_node_aspects().EnsureType(broker(), input,
NodeType::kJSReceiver)) {
return ProcessResult::kRemove;
}REMOVE_AND_RETURN_IF_DONE(EnsureType(input, kJSReceiver, DeoptReason::kWrongInstanceType));
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |