| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/code-factory.h" | 5 #include "src/code-factory.h" |
| 6 #include "src/compiler/access-builder.h" | 6 #include "src/compiler/access-builder.h" |
| 7 #include "src/compiler/js-graph.h" | 7 #include "src/compiler/js-graph.h" |
| 8 #include "src/compiler/js-operator.h" | 8 #include "src/compiler/js-operator.h" |
| 9 #include "src/compiler/js-typed-lowering.h" | 9 #include "src/compiler/js-typed-lowering.h" |
| 10 #include "src/compiler/machine-operator.h" | 10 #include "src/compiler/machine-operator.h" |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 } | 383 } |
| 384 | 384 |
| 385 | 385 |
| 386 // ----------------------------------------------------------------------------- | 386 // ----------------------------------------------------------------------------- |
| 387 // JSStrictEqual | 387 // JSStrictEqual |
| 388 | 388 |
| 389 | 389 |
| 390 TEST_F(JSTypedLoweringTest, JSStrictEqualWithTheHole) { | 390 TEST_F(JSTypedLoweringTest, JSStrictEqualWithTheHole) { |
| 391 Node* const the_hole = HeapConstant(factory()->the_hole_value()); | 391 Node* const the_hole = HeapConstant(factory()->the_hole_value()); |
| 392 Node* const context = UndefinedConstant(); | 392 Node* const context = UndefinedConstant(); |
| 393 Node* const effect = graph()->start(); |
| 394 Node* const control = graph()->start(); |
| 393 TRACED_FOREACH(Type*, type, kJSTypes) { | 395 TRACED_FOREACH(Type*, type, kJSTypes) { |
| 394 Node* const lhs = Parameter(type); | 396 Node* const lhs = Parameter(type); |
| 395 Reduction r = Reduce(graph()->NewNode( | 397 Reduction r = Reduce(graph()->NewNode( |
| 396 javascript()->StrictEqual(CompareOperationHints::Any()), lhs, the_hole, | 398 javascript()->StrictEqual(CompareOperationHints::Any()), lhs, the_hole, |
| 397 context)); | 399 context, effect, control)); |
| 398 ASSERT_TRUE(r.Changed()); | 400 ASSERT_TRUE(r.Changed()); |
| 399 EXPECT_THAT(r.replacement(), IsFalseConstant()); | 401 EXPECT_THAT(r.replacement(), IsFalseConstant()); |
| 400 } | 402 } |
| 401 } | 403 } |
| 402 | 404 |
| 403 | 405 |
| 404 TEST_F(JSTypedLoweringTest, JSStrictEqualWithUnique) { | 406 TEST_F(JSTypedLoweringTest, JSStrictEqualWithUnique) { |
| 405 Node* const lhs = Parameter(Type::Unique(), 0); | 407 Node* const lhs = Parameter(Type::Unique(), 0); |
| 406 Node* const rhs = Parameter(Type::Unique(), 1); | 408 Node* const rhs = Parameter(Type::Unique(), 1); |
| 407 Node* const context = Parameter(Type::Any(), 2); | 409 Node* const context = Parameter(Type::Any(), 2); |
| 410 Node* const effect = graph()->start(); |
| 411 Node* const control = graph()->start(); |
| 408 Reduction r = Reduce( | 412 Reduction r = Reduce( |
| 409 graph()->NewNode(javascript()->StrictEqual(CompareOperationHints::Any()), | 413 graph()->NewNode(javascript()->StrictEqual(CompareOperationHints::Any()), |
| 410 lhs, rhs, context)); | 414 lhs, rhs, context, effect, control)); |
| 411 ASSERT_TRUE(r.Changed()); | 415 ASSERT_TRUE(r.Changed()); |
| 412 EXPECT_THAT(r.replacement(), IsReferenceEqual(Type::Unique(), lhs, rhs)); | 416 EXPECT_THAT(r.replacement(), IsReferenceEqual(Type::Unique(), lhs, rhs)); |
| 413 } | 417 } |
| 414 | 418 |
| 415 | 419 |
| 416 // ----------------------------------------------------------------------------- | 420 // ----------------------------------------------------------------------------- |
| 417 // JSShiftLeft | 421 // JSShiftLeft |
| 418 | 422 |
| 419 TEST_F(JSTypedLoweringTest, JSShiftLeftWithSigned32AndConstant) { | 423 TEST_F(JSTypedLoweringTest, JSShiftLeftWithSigned32AndConstant) { |
| 420 BinaryOperationHints const hints = BinaryOperationHints::Any(); | 424 BinaryOperationHints const hints = BinaryOperationHints::Any(); |
| (...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 EmptyFrameState(), effect, control)); | 1262 EmptyFrameState(), effect, control)); |
| 1259 ASSERT_TRUE(r.Changed()); | 1263 ASSERT_TRUE(r.Changed()); |
| 1260 EXPECT_THAT(r.replacement(), IsSpeculativeNumberBitwiseXor( | 1264 EXPECT_THAT(r.replacement(), IsSpeculativeNumberBitwiseXor( |
| 1261 NumberOperationHint::kNumberOrOddball, lhs, | 1265 NumberOperationHint::kNumberOrOddball, lhs, |
| 1262 rhs, effect, control)); | 1266 rhs, effect, control)); |
| 1263 } | 1267 } |
| 1264 | 1268 |
| 1265 } // namespace compiler | 1269 } // namespace compiler |
| 1266 } // namespace internal | 1270 } // namespace internal |
| 1267 } // namespace v8 | 1271 } // namespace v8 |
| OLD | NEW |