| 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/compiler/verifier.h" | 5 #include "src/compiler/verifier.h" |
| 6 | 6 |
| 7 #include <deque> | 7 #include <deque> |
| 8 #include <queue> | 8 #include <queue> |
| 9 | 9 |
| 10 #include "src/compiler/generic-algorithm.h" | 10 #include "src/compiler/generic-algorithm.h" |
| (...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 CHECK(bounds(node).upper->Is(Type::String())); | 479 CHECK(bounds(node).upper->Is(Type::String())); |
| 480 break; | 480 break; |
| 481 case IrOpcode::kReferenceEqual: { | 481 case IrOpcode::kReferenceEqual: { |
| 482 // (Unique, Any) -> Boolean and | 482 // (Unique, Any) -> Boolean and |
| 483 // (Any, Unique) -> Boolean | 483 // (Any, Unique) -> Boolean |
| 484 CHECK(bounds(Operand(node, 0)).upper->Is(Type::Unique()) || | 484 CHECK(bounds(Operand(node, 0)).upper->Is(Type::Unique()) || |
| 485 bounds(Operand(node, 1)).upper->Is(Type::Unique())); | 485 bounds(Operand(node, 1)).upper->Is(Type::Unique())); |
| 486 CHECK(bounds(node).upper->Is(Type::Boolean())); | 486 CHECK(bounds(node).upper->Is(Type::Boolean())); |
| 487 break; | 487 break; |
| 488 } | 488 } |
| 489 case IrOpcode::kIsSmi: |
| 490 CHECK(bounds(Operand(node)).upper->Is(Type::Any())); |
| 491 CHECK(bounds(node).upper->Is(Type::Boolean())); |
| 492 break; |
| 493 case IrOpcode::kIsNonNegativeSmi: |
| 494 CHECK(bounds(Operand(node)).upper->Is(Type::Any())); |
| 495 CHECK(bounds(node).upper->Is(Type::Boolean())); |
| 496 break; |
| 489 | 497 |
| 490 case IrOpcode::kChangeTaggedToInt32: { | 498 case IrOpcode::kChangeTaggedToInt32: { |
| 491 // Signed32 /\ Tagged -> Signed32 /\ UntaggedInt32 | 499 // Signed32 /\ Tagged -> Signed32 /\ UntaggedInt32 |
| 492 // TODO(neis): Activate once ChangeRepresentation works in typer. | 500 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 493 // Type* from = Type::Intersect(Type::Signed32(), Type::Tagged()); | 501 // Type* from = Type::Intersect(Type::Signed32(), Type::Tagged()); |
| 494 // Type* to = Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); | 502 // Type* to = Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); |
| 495 // CHECK(bounds(Operand(node)).upper->Is(from)); | 503 // CHECK(bounds(Operand(node)).upper->Is(from)); |
| 496 // CHECK(bounds(node).upper->Is(to)); | 504 // CHECK(bounds(node).upper->Is(to)); |
| 497 break; | 505 break; |
| 498 } | 506 } |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 // Check inputs for all nodes in the block. | 910 // Check inputs for all nodes in the block. |
| 903 for (size_t i = 0; i < block->NodeCount(); i++) { | 911 for (size_t i = 0; i < block->NodeCount(); i++) { |
| 904 Node* node = block->NodeAt(i); | 912 Node* node = block->NodeAt(i); |
| 905 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); | 913 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); |
| 906 } | 914 } |
| 907 } | 915 } |
| 908 } | 916 } |
| 909 } | 917 } |
| 910 } | 918 } |
| 911 } // namespace v8::internal::compiler | 919 } // namespace v8::internal::compiler |
| OLD | NEW |