| 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 |