Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(513)

Unified Diff: src/compiler/verifier.cc

Issue 1884713003: [turbofan] Change number operations to handle Undefined as well. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Tweaks Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/compiler/verifier.cc
diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc
index 1fe71205da4def2e45b6c6b65c73504620378cd4..75197c02370dbd50063f6fd0447f73098f168346 100644
--- a/src/compiler/verifier.cc
+++ b/src/compiler/verifier.cc
@@ -646,17 +646,27 @@ void Verifier::Visitor::Check(Node* node) {
CheckUpperIs(node, Type::Number());
break;
case IrOpcode::kNumberEqual:
+ // (NumberOrUndefined, NumberOrUndefined) -> Boolean
+ CheckValueInputIs(node, 0, Type::NumberOrUndefined());
+ CheckValueInputIs(node, 1, Type::NumberOrUndefined());
+ CheckUpperIs(node, Type::Boolean());
+ break;
case IrOpcode::kNumberLessThan:
case IrOpcode::kNumberLessThanOrEqual:
// (Number, Number) -> Boolean
- CheckValueInputIs(node, 0, Type::Number());
- CheckValueInputIs(node, 1, Type::Number());
+ CheckValueInputIs(node, 0, Type::NumberOrUndefined());
+ CheckValueInputIs(node, 1, Type::NumberOrUndefined());
CheckUpperIs(node, Type::Boolean());
break;
case IrOpcode::kNumberAdd:
case IrOpcode::kNumberSubtract:
case IrOpcode::kNumberMultiply:
case IrOpcode::kNumberDivide:
+ // (Number, Number) -> Number
+ CheckValueInputIs(node, 0, Type::NumberOrUndefined());
+ CheckValueInputIs(node, 1, Type::NumberOrUndefined());
+ // CheckUpperIs(node, Type::Number());
+ break;
case IrOpcode::kNumberModulus:
// (Number, Number) -> Number
CheckValueInputIs(node, 0, Type::Number());
@@ -700,12 +710,12 @@ void Verifier::Visitor::Check(Node* node) {
break;
case IrOpcode::kNumberToInt32:
// Number -> Signed32
- CheckValueInputIs(node, 0, Type::Number());
+ CheckValueInputIs(node, 0, Type::NumberOrUndefined());
CheckUpperIs(node, Type::Signed32());
break;
case IrOpcode::kNumberToUint32:
// Number -> Unsigned32
- CheckValueInputIs(node, 0, Type::Number());
+ CheckValueInputIs(node, 0, Type::NumberOrUndefined());
CheckUpperIs(node, Type::Unsigned32());
break;
case IrOpcode::kNumberIsHoleNaN:

Powered by Google App Engine
This is Rietveld 408576698