Reland "[compiler] Slightly generalize type assertions"

This reverts commit 6eee152b21.

Reason for revert: Revert causes more problems and build failures:
https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20debug%20builder/52914

Original change's description:
> Revert "[compiler] Slightly generalize type assertions"
>
> This reverts commit ccbfa9182b.
>
> Reason for revert: Speculative revert for:
> https://ci.chromium.org/p/v8/builders/ci/V8%20NumFuzz%20-%20debug/14050
>
> Original change's description:
> > [compiler] Slightly generalize type assertions
> >
> > ... to also apply to common integer bitset types.
> >
> > Bug: v8:11724
> > Change-Id: I41077488688e924e4235911d3a90e15044c229bd
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2865747
> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
> > Commit-Queue: Georg Neis <neis@chromium.org>
> > Auto-Submit: Georg Neis <neis@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#74330}
>
> Bug: v8:11724
> Change-Id: I52268d5d553ba271e0a383b6af89b971892a67da
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2868605
> Auto-Submit: Michael Achenbach <machenbach@chromium.org>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Cr-Commit-Position: refs/heads/master@{#74337}

Change-Id: I60eb5930c4c532fe52865b8e198bae8d08dec23b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:11724
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2868606
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#74338}
This commit is contained in:
Michael Achenbach 2021-05-03 18:50:03 +00:00 committed by V8 LUCI CQ
parent 6eee152b21
commit 8f68f32fdb
3 changed files with 8 additions and 7 deletions

View File

@ -27,9 +27,7 @@ Reduction AddTypeAssertionsReducer::Reduce(Node* node) {
visited_.Set(node, true);
Type type = NodeProperties::GetType(node);
if (!type.IsRange()) {
return NoChange();
}
if (!type.CanBeAsserted()) return NoChange();
Node* assertion = graph()->NewNode(simplified()->AssertType(type), node);
NodeProperties::SetType(assertion, type);

View File

@ -5867,11 +5867,10 @@ Node* EffectControlLinearizer::CallBuiltin(Builtins::Name builtin,
Node* EffectControlLinearizer::LowerAssertType(Node* node) {
DCHECK_EQ(node->opcode(), IrOpcode::kAssertType);
Type type = OpParameter<Type>(node->op());
DCHECK(type.IsRange());
auto range = type.AsRange();
CHECK(type.CanBeAsserted());
Node* const input = node->InputAt(0);
Node* const min = __ NumberConstant(range->Min());
Node* const max = __ NumberConstant(range->Max());
Node* const min = __ NumberConstant(type.Min());
Node* const max = __ NumberConstant(type.Max());
CallBuiltin(Builtins::kCheckNumberInRange, node->op()->properties(), input,
min, max, __ SmiConstant(node->id()));
return input;

View File

@ -413,6 +413,10 @@ class V8_EXPORT_PRIVATE Type {
(Is(Type::PlainNumber()) && Min() == Max());
}
bool CanBeAsserted() const {
return IsRange() || (Is(Type::Integral32()) && !IsNone());
}
const HeapConstantType* AsHeapConstant() const;
const OtherNumberConstantType* AsOtherNumberConstant() const;
const RangeType* AsRange() const;