Chromium Code Reviews| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <queue> | 9 #include <queue> |
| 10 #include <sstream> | 10 #include <sstream> |
| (...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 577 // Type can be anything. | 577 // Type can be anything. |
| 578 CheckUpperIs(node, Type::Any()); | 578 CheckUpperIs(node, Type::Any()); |
| 579 break; | 579 break; |
| 580 | 580 |
| 581 case IrOpcode::kJSForInPrepare: { | 581 case IrOpcode::kJSForInPrepare: { |
| 582 // TODO(bmeurer): What are the constraints on thse? | 582 // TODO(bmeurer): What are the constraints on thse? |
| 583 CheckUpperIs(node, Type::Any()); | 583 CheckUpperIs(node, Type::Any()); |
| 584 break; | 584 break; |
| 585 } | 585 } |
| 586 case IrOpcode::kJSForInDone: { | 586 case IrOpcode::kJSForInDone: { |
| 587 CheckValueInputIs(node, 0, Type::UnsignedSmall()); | 587 // TODO(bmeurer): OSR breaks this invariant, although the node is not user |
| 588 // visible, so we now it is safe (fullcodegen has an unsigned smi there). | |
|
Jarin
2015/07/06 10:34:49
now -> know (here and below)
Benedikt Meurer
2015/07/06 10:37:39
Done.
| |
| 589 // CheckValueInputIs(node, 0, Type::UnsignedSmall()); | |
| 588 break; | 590 break; |
| 589 } | 591 } |
| 590 case IrOpcode::kJSForInNext: { | 592 case IrOpcode::kJSForInNext: { |
| 591 CheckUpperIs(node, Type::Union(Type::Name(), Type::Undefined())); | 593 CheckUpperIs(node, Type::Union(Type::Name(), Type::Undefined())); |
| 592 break; | 594 break; |
| 593 } | 595 } |
| 594 case IrOpcode::kJSForInStep: { | 596 case IrOpcode::kJSForInStep: { |
| 595 CheckValueInputIs(node, 0, Type::UnsignedSmall()); | 597 // TODO(bmeurer): OSR breaks this invariant, although the node is not user |
| 598 // visible, so we now it is safe (fullcodegen has an unsigned smi there). | |
| 599 // CheckValueInputIs(node, 0, Type::UnsignedSmall()); | |
| 596 CheckUpperIs(node, Type::UnsignedSmall()); | 600 CheckUpperIs(node, Type::UnsignedSmall()); |
| 597 break; | 601 break; |
| 598 } | 602 } |
| 599 | 603 |
| 600 case IrOpcode::kJSStackCheck: | 604 case IrOpcode::kJSStackCheck: |
| 601 // Type is empty. | 605 // Type is empty. |
| 602 CheckNotTyped(node); | 606 CheckNotTyped(node); |
| 603 break; | 607 break; |
| 604 | 608 |
| 605 // Simplified operators | 609 // Simplified operators |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1144 // Check inputs for all nodes in the block. | 1148 // Check inputs for all nodes in the block. |
| 1145 for (size_t i = 0; i < block->NodeCount(); i++) { | 1149 for (size_t i = 0; i < block->NodeCount(); i++) { |
| 1146 Node* node = block->NodeAt(i); | 1150 Node* node = block->NodeAt(i); |
| 1147 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); | 1151 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); |
| 1148 } | 1152 } |
| 1149 } | 1153 } |
| 1150 } | 1154 } |
| 1151 } // namespace compiler | 1155 } // namespace compiler |
| 1152 } // namespace internal | 1156 } // namespace internal |
| 1153 } // namespace v8 | 1157 } // namespace v8 |
| OLD | NEW |