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 |