Index: test/unittests/compiler/typer-unittest.cc |
diff --git a/test/unittests/compiler/typer-unittest.cc b/test/unittests/compiler/typer-unittest.cc |
index 4a462cef1023c685f293e7a3b0e965e0957ba5f1..6e4d4d589fb7b8643ae59b0b49019182c853b704 100644 |
--- a/test/unittests/compiler/typer-unittest.cc |
+++ b/test/unittests/compiler/typer-unittest.cc |
@@ -51,6 +51,7 @@ class TyperTest : public TypedGraphTest { |
Types<Type, Type*, Zone> types_; |
JSOperatorBuilder javascript_; |
+ BinaryOperationHints const hints_ = BinaryOperationHints::Any(); |
Node* context_node_; |
v8::base::RandomNumberGenerator* rng_; |
std::vector<double> integers; |
@@ -239,68 +240,78 @@ int32_t bit_xor(int32_t x, int32_t y) { return x ^ y; } |
TEST_F(TyperTest, TypeJSAdd) { |
- TestBinaryArithOp(javascript_.Add(LanguageMode::SLOPPY), std::plus<double>()); |
- TestBinaryArithOp(javascript_.Add(LanguageMode::STRONG), std::plus<double>()); |
+ TestBinaryArithOp(javascript_.Add(LanguageMode::SLOPPY, hints_), |
+ std::plus<double>()); |
+ TestBinaryArithOp(javascript_.Add(LanguageMode::STRONG, hints_), |
+ std::plus<double>()); |
} |
TEST_F(TyperTest, TypeJSSubtract) { |
- TestBinaryArithOp(javascript_.Subtract(LanguageMode::SLOPPY), |
+ TestBinaryArithOp(javascript_.Subtract(LanguageMode::SLOPPY, hints_), |
std::minus<double>()); |
- TestBinaryArithOp(javascript_.Subtract(LanguageMode::STRONG), |
+ TestBinaryArithOp(javascript_.Subtract(LanguageMode::STRONG, hints_), |
std::minus<double>()); |
} |
TEST_F(TyperTest, TypeJSMultiply) { |
- TestBinaryArithOp(javascript_.Multiply(LanguageMode::SLOPPY), |
+ TestBinaryArithOp(javascript_.Multiply(LanguageMode::SLOPPY, hints_), |
std::multiplies<double>()); |
- TestBinaryArithOp(javascript_.Multiply(LanguageMode::STRONG), |
+ TestBinaryArithOp(javascript_.Multiply(LanguageMode::STRONG, hints_), |
std::multiplies<double>()); |
} |
TEST_F(TyperTest, TypeJSDivide) { |
- TestBinaryArithOp(javascript_.Divide(LanguageMode::SLOPPY), |
+ TestBinaryArithOp(javascript_.Divide(LanguageMode::SLOPPY, hints_), |
std::divides<double>()); |
- TestBinaryArithOp(javascript_.Divide(LanguageMode::STRONG), |
+ TestBinaryArithOp(javascript_.Divide(LanguageMode::STRONG, hints_), |
std::divides<double>()); |
} |
TEST_F(TyperTest, TypeJSModulus) { |
- TestBinaryArithOp(javascript_.Modulus(LanguageMode::SLOPPY), modulo); |
- TestBinaryArithOp(javascript_.Modulus(LanguageMode::STRONG), modulo); |
+ TestBinaryArithOp(javascript_.Modulus(LanguageMode::SLOPPY, hints_), modulo); |
+ TestBinaryArithOp(javascript_.Modulus(LanguageMode::STRONG, hints_), modulo); |
} |
TEST_F(TyperTest, TypeJSBitwiseOr) { |
- TestBinaryBitOp(javascript_.BitwiseOr(LanguageMode::SLOPPY), bit_or); |
- TestBinaryBitOp(javascript_.BitwiseOr(LanguageMode::STRONG), bit_or); |
+ TestBinaryBitOp(javascript_.BitwiseOr(LanguageMode::SLOPPY, hints_), bit_or); |
+ TestBinaryBitOp(javascript_.BitwiseOr(LanguageMode::STRONG, hints_), bit_or); |
} |
TEST_F(TyperTest, TypeJSBitwiseAnd) { |
- TestBinaryBitOp(javascript_.BitwiseAnd(LanguageMode::SLOPPY), bit_and); |
- TestBinaryBitOp(javascript_.BitwiseAnd(LanguageMode::STRONG), bit_and); |
+ TestBinaryBitOp(javascript_.BitwiseAnd(LanguageMode::SLOPPY, hints_), |
+ bit_and); |
+ TestBinaryBitOp(javascript_.BitwiseAnd(LanguageMode::STRONG, hints_), |
+ bit_and); |
} |
TEST_F(TyperTest, TypeJSBitwiseXor) { |
- TestBinaryBitOp(javascript_.BitwiseXor(LanguageMode::SLOPPY), bit_xor); |
- TestBinaryBitOp(javascript_.BitwiseXor(LanguageMode::STRONG), bit_xor); |
+ TestBinaryBitOp(javascript_.BitwiseXor(LanguageMode::SLOPPY, hints_), |
+ bit_xor); |
+ TestBinaryBitOp(javascript_.BitwiseXor(LanguageMode::STRONG, hints_), |
+ bit_xor); |
} |
TEST_F(TyperTest, TypeJSShiftLeft) { |
- TestBinaryBitOp(javascript_.ShiftLeft(LanguageMode::SLOPPY), shift_left); |
- TestBinaryBitOp(javascript_.ShiftLeft(LanguageMode::STRONG), shift_left); |
+ TestBinaryBitOp(javascript_.ShiftLeft(LanguageMode::SLOPPY, hints_), |
+ shift_left); |
+ TestBinaryBitOp(javascript_.ShiftLeft(LanguageMode::STRONG, hints_), |
+ shift_left); |
} |
TEST_F(TyperTest, TypeJSShiftRight) { |
- TestBinaryBitOp(javascript_.ShiftRight(LanguageMode::SLOPPY), shift_right); |
- TestBinaryBitOp(javascript_.ShiftRight(LanguageMode::STRONG), shift_right); |
+ TestBinaryBitOp(javascript_.ShiftRight(LanguageMode::SLOPPY, hints_), |
+ shift_right); |
+ TestBinaryBitOp(javascript_.ShiftRight(LanguageMode::STRONG, hints_), |
+ shift_right); |
} |
@@ -362,47 +373,48 @@ TEST_F(TyperTest, TypeJSStrictNotEqual) { |
// Monotonicity |
-// List should be in sync with JS_SIMPLE_BINOP_LIST. |
-#define JSBINOP_LIST(V) \ |
- V(Equal) \ |
- V(NotEqual) \ |
- V(StrictEqual) \ |
- V(StrictNotEqual) |
- |
- |
-#define JSBINOP_WITH_STRONG_LIST(V) \ |
- V(LessThan) \ |
- V(GreaterThan) \ |
- V(LessThanOrEqual) \ |
- V(GreaterThanOrEqual) \ |
- V(BitwiseOr) \ |
- V(BitwiseXor) \ |
- V(BitwiseAnd) \ |
- V(ShiftLeft) \ |
- V(ShiftRight) \ |
- V(ShiftRightLogical) \ |
- V(Add) \ |
- V(Subtract) \ |
- V(Multiply) \ |
- V(Divide) \ |
- V(Modulus) |
- |
- |
-#define TEST_FUNC(name) \ |
+#define TEST_BINARY_MONOTONICITY(name) \ |
TEST_F(TyperTest, Monotonicity_##name) { \ |
TestBinaryMonotonicity(javascript_.name()); \ |
} |
-JSBINOP_LIST(TEST_FUNC) |
-#undef TEST_FUNC |
+TEST_BINARY_MONOTONICITY(Equal) |
+TEST_BINARY_MONOTONICITY(NotEqual) |
+TEST_BINARY_MONOTONICITY(StrictEqual) |
+TEST_BINARY_MONOTONICITY(StrictNotEqual) |
+#undef TEST_BINARY_MONOTONICITY |
-#define TEST_FUNC(name) \ |
+#define TEST_BINARY_MONOTONICITY(name) \ |
TEST_F(TyperTest, Monotonicity_##name) { \ |
TestBinaryMonotonicity(javascript_.name(LanguageMode::SLOPPY)); \ |
TestBinaryMonotonicity(javascript_.name(LanguageMode::STRONG)); \ |
} |
-JSBINOP_WITH_STRONG_LIST(TEST_FUNC) |
-#undef TEST_FUNC |
+TEST_BINARY_MONOTONICITY(LessThan) |
+TEST_BINARY_MONOTONICITY(GreaterThan) |
+TEST_BINARY_MONOTONICITY(LessThanOrEqual) |
+TEST_BINARY_MONOTONICITY(GreaterThanOrEqual) |
+#undef TEST_BINARY_MONOTONICITY |
+ |
+ |
+#define TEST_BINARY_MONOTONICITY(name) \ |
+ TEST_F(TyperTest, Monotonicity_##name) { \ |
+ TestBinaryMonotonicity( \ |
+ javascript_.name(LanguageMode::SLOPPY, BinaryOperationHints::Any())); \ |
+ TestBinaryMonotonicity( \ |
+ javascript_.name(LanguageMode::STRONG, BinaryOperationHints::Any())); \ |
+ } |
+TEST_BINARY_MONOTONICITY(BitwiseOr) |
+TEST_BINARY_MONOTONICITY(BitwiseXor) |
+TEST_BINARY_MONOTONICITY(BitwiseAnd) |
+TEST_BINARY_MONOTONICITY(ShiftLeft) |
+TEST_BINARY_MONOTONICITY(ShiftRight) |
+TEST_BINARY_MONOTONICITY(ShiftRightLogical) |
+TEST_BINARY_MONOTONICITY(Add) |
+TEST_BINARY_MONOTONICITY(Subtract) |
+TEST_BINARY_MONOTONICITY(Multiply) |
+TEST_BINARY_MONOTONICITY(Divide) |
+TEST_BINARY_MONOTONICITY(Modulus) |
+#undef TEST_BINARY_MONOTONICITY |
//------------------------------------------------------------------------------ |