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 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 CHECK(NodeProperties::GetType(val)->Is(NodeProperties::GetType(node))); | 502 CHECK(NodeProperties::GetType(val)->Is(NodeProperties::GetType(node))); |
503 } | 503 } |
504 break; | 504 break; |
505 } | 505 } |
506 case IrOpcode::kFrameState: { | 506 case IrOpcode::kFrameState: { |
507 // TODO(jarin): what are the constraints on these? | 507 // TODO(jarin): what are the constraints on these? |
508 CHECK_EQ(5, value_count); | 508 CHECK_EQ(5, value_count); |
509 CHECK_EQ(0, control_count); | 509 CHECK_EQ(0, control_count); |
510 CHECK_EQ(0, effect_count); | 510 CHECK_EQ(0, effect_count); |
511 CHECK_EQ(6, input_count); | 511 CHECK_EQ(6, input_count); |
512 for (int i = 0; i < 3; ++i) { | 512 // Check that the parameters and registers are kStateValues or |
| 513 // kTypedStateValues. |
| 514 for (int i = 0; i < 2; ++i) { |
513 CHECK(NodeProperties::GetValueInput(node, i)->opcode() == | 515 CHECK(NodeProperties::GetValueInput(node, i)->opcode() == |
514 IrOpcode::kStateValues || | 516 IrOpcode::kStateValues || |
515 NodeProperties::GetValueInput(node, i)->opcode() == | 517 NodeProperties::GetValueInput(node, i)->opcode() == |
516 IrOpcode::kTypedStateValues); | 518 IrOpcode::kTypedStateValues); |
517 } | 519 } |
| 520 // The accumulator (InputAt(2)) cannot be kStateValues, but it can be |
| 521 // kTypedStateValues (to signal the type). Once AST graph builder |
| 522 // is removed, we should check this here. Until then, AST graph |
| 523 // builder can generate expression stack as InputAt(2), which can |
| 524 // still be kStateValues. |
518 break; | 525 break; |
519 } | 526 } |
520 case IrOpcode::kStateValues: | 527 case IrOpcode::kStateValues: |
521 case IrOpcode::kTypedStateValues: | 528 case IrOpcode::kTypedStateValues: |
522 case IrOpcode::kArgumentsElementsState: | 529 case IrOpcode::kArgumentsElementsState: |
523 case IrOpcode::kArgumentsLengthState: | 530 case IrOpcode::kArgumentsLengthState: |
524 case IrOpcode::kObjectState: | 531 case IrOpcode::kObjectState: |
525 case IrOpcode::kTypedObjectState: | 532 case IrOpcode::kTypedObjectState: |
526 // TODO(jarin): what are the constraints on these? | 533 // TODO(jarin): what are the constraints on these? |
527 break; | 534 break; |
(...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 replacement->op()->EffectOutputCount() > 0); | 1770 replacement->op()->EffectOutputCount() > 0); |
1764 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1771 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1765 replacement->opcode() == IrOpcode::kFrameState); | 1772 replacement->opcode() == IrOpcode::kFrameState); |
1766 } | 1773 } |
1767 | 1774 |
1768 #endif // DEBUG | 1775 #endif // DEBUG |
1769 | 1776 |
1770 } // namespace compiler | 1777 } // namespace compiler |
1771 } // namespace internal | 1778 } // namespace internal |
1772 } // namespace v8 | 1779 } // namespace v8 |
OLD | NEW |