summaryrefslogtreecommitdiff
path: root/chromium/v8/src/compiler/effect-control-linearizer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/compiler/effect-control-linearizer.cc')
-rw-r--r--chromium/v8/src/compiler/effect-control-linearizer.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/chromium/v8/src/compiler/effect-control-linearizer.cc b/chromium/v8/src/compiler/effect-control-linearizer.cc
index 20391eacce6..65bb2eaf053 100644
--- a/chromium/v8/src/compiler/effect-control-linearizer.cc
+++ b/chromium/v8/src/compiler/effect-control-linearizer.cc
@@ -2700,6 +2700,20 @@ Node* EffectControlLinearizer::BuildCheckedHeapNumberOrOddballToFloat64(
check_number, frame_state);
break;
}
+ case CheckTaggedInputMode::kNumberOrBoolean: {
+ auto check_done = __ MakeLabel();
+
+ __ GotoIf(check_number, &check_done);
+ __ DeoptimizeIfNot(DeoptimizeReason::kNotANumberOrBoolean, feedback,
+ __ TaggedEqual(value_map, __ BooleanMapConstant()),
+ frame_state);
+ STATIC_ASSERT_FIELD_OFFSETS_EQUAL(HeapNumber::kValueOffset,
+ Oddball::kToNumberRawOffset);
+ __ Goto(&check_done);
+
+ __ Bind(&check_done);
+ break;
+ }
case CheckTaggedInputMode::kNumberOrOddball: {
auto check_done = __ MakeLabel();
@@ -3756,7 +3770,7 @@ Node* EffectControlLinearizer::LowerDeadValue(Node* node) {
Node* unreachable = __ Unreachable();
NodeProperties::ReplaceValueInput(node, unreachable, 0);
}
- return node;
+ return gasm()->AddNode(node);
}
Node* EffectControlLinearizer::LowerStringToNumber(Node* node) {