| Index: src/compiler/verifier.cc
|
| diff --git a/src/compiler/verifier.cc b/src/compiler/verifier.cc
|
| index b39a0223f8f5af292e1f35370c660febb80dda1c..6612a830d7eb0ef8e45ee5dc792269ad1d2fa2f4 100644
|
| --- a/src/compiler/verifier.cc
|
| +++ b/src/compiler/verifier.cc
|
| @@ -675,16 +675,16 @@ 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());
|
| + // (Number, Number) -> Boolean
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| + CheckValueInputIs(node, 1, Type::Number());
|
| CheckUpperIs(node, Type::Boolean());
|
| break;
|
| case IrOpcode::kNumberLessThan:
|
| case IrOpcode::kNumberLessThanOrEqual:
|
| // (Number, Number) -> Boolean
|
| - CheckValueInputIs(node, 0, Type::NumberOrUndefined());
|
| - CheckValueInputIs(node, 1, Type::NumberOrUndefined());
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| + CheckValueInputIs(node, 1, Type::Number());
|
| CheckUpperIs(node, Type::Boolean());
|
| break;
|
| case IrOpcode::kSpeculativeNumberAdd:
|
| @@ -695,16 +695,15 @@ void Verifier::Visitor::Check(Node* node) {
|
| case IrOpcode::kNumberMultiply:
|
| case IrOpcode::kNumberDivide:
|
| // (Number, Number) -> Number
|
| - CheckValueInputIs(node, 0, Type::NumberOrUndefined());
|
| - CheckValueInputIs(node, 1, Type::NumberOrUndefined());
|
| - // CheckUpperIs(node, Type::Number());
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| + CheckValueInputIs(node, 1, Type::Number());
|
| + CheckUpperIs(node, Type::Number());
|
| break;
|
| case IrOpcode::kNumberModulus:
|
| // (Number, Number) -> Number
|
| CheckValueInputIs(node, 0, Type::Number());
|
| CheckValueInputIs(node, 1, Type::Number());
|
| - // TODO(rossberg): activate once we retype after opcode changes.
|
| - // CheckUpperIs(node, Type::Number());
|
| + CheckUpperIs(node, Type::Number());
|
| break;
|
| case IrOpcode::kNumberBitwiseOr:
|
| case IrOpcode::kNumberBitwiseXor:
|
| @@ -746,10 +745,12 @@ void Verifier::Visitor::Check(Node* node) {
|
| break;
|
| case IrOpcode::kNumberCeil:
|
| case IrOpcode::kNumberFloor:
|
| + case IrOpcode::kNumberFround:
|
| case IrOpcode::kNumberAtan:
|
| case IrOpcode::kNumberLog:
|
| case IrOpcode::kNumberLog1p:
|
| case IrOpcode::kNumberRound:
|
| + case IrOpcode::kNumberSqrt:
|
| case IrOpcode::kNumberTrunc:
|
| // Number -> Number
|
| CheckValueInputIs(node, 0, Type::Number());
|
| @@ -757,12 +758,12 @@ void Verifier::Visitor::Check(Node* node) {
|
| break;
|
| case IrOpcode::kNumberToInt32:
|
| // Number -> Signed32
|
| - CheckValueInputIs(node, 0, Type::NumberOrUndefined());
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| CheckUpperIs(node, Type::Signed32());
|
| break;
|
| case IrOpcode::kNumberToUint32:
|
| // Number -> Unsigned32
|
| - CheckValueInputIs(node, 0, Type::NumberOrUndefined());
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| CheckUpperIs(node, Type::Unsigned32());
|
| break;
|
| case IrOpcode::kNumberIsHoleNaN:
|
| @@ -851,7 +852,7 @@ void Verifier::Visitor::Check(Node* node) {
|
| break;
|
| }
|
| case IrOpcode::kChangeTaggedToFloat64: {
|
| - // Number /\ Tagged -> Number /\ UntaggedFloat64
|
| + // NumberOrUndefined /\ Tagged -> Number /\ UntaggedFloat64
|
| // TODO(neis): Activate once ChangeRepresentation works in typer.
|
| // Type* from = Type::Intersect(Type::Number(), Type::Tagged());
|
| // Type* to = Type::Intersect(Type::Number(), Type::UntaggedFloat64());
|
| @@ -970,7 +971,7 @@ void Verifier::Visitor::Check(Node* node) {
|
| CheckNotTyped(node);
|
| break;
|
| case IrOpcode::kNumberSilenceNaN:
|
| - CheckValueInputIs(node, 0, Type::NumberOrUndefined());
|
| + CheckValueInputIs(node, 0, Type::Number());
|
| CheckUpperIs(node, Type::Number());
|
| break;
|
|
|
|
|