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 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 | 643 |
644 case IrOpcode::kJSGeneratorRestoreRegister: | 644 case IrOpcode::kJSGeneratorRestoreRegister: |
645 CheckUpperIs(node, Type::Any()); | 645 CheckUpperIs(node, Type::Any()); |
646 break; | 646 break; |
647 | 647 |
648 case IrOpcode::kJSStackCheck: | 648 case IrOpcode::kJSStackCheck: |
649 // Type is empty. | 649 // Type is empty. |
650 CheckNotTyped(node); | 650 CheckNotTyped(node); |
651 break; | 651 break; |
652 | 652 |
653 case IrOpcode::kDebugBreak: | |
654 CheckNotTyped(node); | |
655 break; | |
656 | |
657 case IrOpcode::kComment: | 653 case IrOpcode::kComment: |
| 654 case IrOpcode::kDebugBreak: |
| 655 case IrOpcode::kRetain: |
| 656 case IrOpcode::kUnsafePointerAdd: |
658 CheckNotTyped(node); | 657 CheckNotTyped(node); |
659 break; | 658 break; |
660 | 659 |
661 // Simplified operators | 660 // Simplified operators |
662 // ------------------------------- | 661 // ------------------------------- |
663 case IrOpcode::kBooleanNot: | 662 case IrOpcode::kBooleanNot: |
664 // Boolean -> Boolean | 663 // Boolean -> Boolean |
665 CheckValueInputIs(node, 0, Type::Boolean()); | 664 CheckValueInputIs(node, 0, Type::Boolean()); |
666 CheckUpperIs(node, Type::Boolean()); | 665 CheckUpperIs(node, Type::Boolean()); |
667 break; | 666 break; |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); | 1034 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); |
1036 break; | 1035 break; |
1037 case IrOpcode::kLoadBuffer: | 1036 case IrOpcode::kLoadBuffer: |
1038 break; | 1037 break; |
1039 case IrOpcode::kLoadElement: | 1038 case IrOpcode::kLoadElement: |
1040 // Object -> elementtype | 1039 // Object -> elementtype |
1041 // TODO(rossberg): activate once machine ops are typed. | 1040 // TODO(rossberg): activate once machine ops are typed. |
1042 // CheckValueInputIs(node, 0, Type::Object()); | 1041 // CheckValueInputIs(node, 0, Type::Object()); |
1043 // CheckUpperIs(node, ElementAccessOf(node->op()).type)); | 1042 // CheckUpperIs(node, ElementAccessOf(node->op()).type)); |
1044 break; | 1043 break; |
| 1044 case IrOpcode::kLoadTypedElement: |
| 1045 break; |
1045 case IrOpcode::kStoreField: | 1046 case IrOpcode::kStoreField: |
1046 // (Object, fieldtype) -> _|_ | 1047 // (Object, fieldtype) -> _|_ |
1047 // TODO(rossberg): activate once machine ops are typed. | 1048 // TODO(rossberg): activate once machine ops are typed. |
1048 // CheckValueInputIs(node, 0, Type::Object()); | 1049 // CheckValueInputIs(node, 0, Type::Object()); |
1049 // CheckValueInputIs(node, 1, FieldAccessOf(node->op()).type)); | 1050 // CheckValueInputIs(node, 1, FieldAccessOf(node->op()).type)); |
1050 CheckNotTyped(node); | 1051 CheckNotTyped(node); |
1051 break; | 1052 break; |
1052 case IrOpcode::kStoreBuffer: | 1053 case IrOpcode::kStoreBuffer: |
1053 break; | 1054 break; |
1054 case IrOpcode::kStoreElement: | 1055 case IrOpcode::kStoreElement: |
1055 // (Object, elementtype) -> _|_ | 1056 // (Object, elementtype) -> _|_ |
1056 // TODO(rossberg): activate once machine ops are typed. | 1057 // TODO(rossberg): activate once machine ops are typed. |
1057 // CheckValueInputIs(node, 0, Type::Object()); | 1058 // CheckValueInputIs(node, 0, Type::Object()); |
1058 // CheckValueInputIs(node, 1, ElementAccessOf(node->op()).type)); | 1059 // CheckValueInputIs(node, 1, ElementAccessOf(node->op()).type)); |
1059 CheckNotTyped(node); | 1060 CheckNotTyped(node); |
1060 break; | 1061 break; |
| 1062 case IrOpcode::kStoreTypedElement: |
| 1063 CheckNotTyped(node); |
| 1064 break; |
1061 case IrOpcode::kNumberSilenceNaN: | 1065 case IrOpcode::kNumberSilenceNaN: |
1062 CheckValueInputIs(node, 0, Type::Number()); | 1066 CheckValueInputIs(node, 0, Type::Number()); |
1063 CheckUpperIs(node, Type::Number()); | 1067 CheckUpperIs(node, Type::Number()); |
1064 break; | 1068 break; |
1065 | 1069 |
1066 // Machine operators | 1070 // Machine operators |
1067 // ----------------------- | 1071 // ----------------------- |
1068 case IrOpcode::kLoad: | 1072 case IrOpcode::kLoad: |
1069 case IrOpcode::kStore: | 1073 case IrOpcode::kStore: |
1070 case IrOpcode::kStackSlot: | 1074 case IrOpcode::kStackSlot: |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1554 replacement->op()->EffectOutputCount() > 0); | 1558 replacement->op()->EffectOutputCount() > 0); |
1555 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1559 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1556 replacement->opcode() == IrOpcode::kFrameState); | 1560 replacement->opcode() == IrOpcode::kFrameState); |
1557 } | 1561 } |
1558 | 1562 |
1559 #endif // DEBUG | 1563 #endif // DEBUG |
1560 | 1564 |
1561 } // namespace compiler | 1565 } // namespace compiler |
1562 } // namespace internal | 1566 } // namespace internal |
1563 } // namespace v8 | 1567 } // namespace v8 |
OLD | NEW |