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 983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 break; | 994 break; |
995 } | 995 } |
996 case IrOpcode::kTruncateTaggedToBit: | 996 case IrOpcode::kTruncateTaggedToBit: |
997 break; | 997 break; |
998 | 998 |
999 case IrOpcode::kCheckBounds: | 999 case IrOpcode::kCheckBounds: |
1000 CheckValueInputIs(node, 0, Type::Any()); | 1000 CheckValueInputIs(node, 0, Type::Any()); |
1001 CheckValueInputIs(node, 1, Type::Unsigned31()); | 1001 CheckValueInputIs(node, 1, Type::Unsigned31()); |
1002 CheckTypeIs(node, Type::Unsigned31()); | 1002 CheckTypeIs(node, Type::Unsigned31()); |
1003 break; | 1003 break; |
| 1004 case IrOpcode::kCheckHeapObject: |
| 1005 CheckValueInputIs(node, 0, Type::Any()); |
| 1006 break; |
| 1007 case IrOpcode::kCheckIf: |
| 1008 CheckValueInputIs(node, 0, Type::Boolean()); |
| 1009 CheckNotTyped(node); |
| 1010 break; |
1004 case IrOpcode::kCheckMaps: | 1011 case IrOpcode::kCheckMaps: |
1005 // (Any, Internal, ..., Internal) -> Any | 1012 // (Any, Internal, ..., Internal) -> Any |
1006 CheckValueInputIs(node, 0, Type::Any()); | 1013 CheckValueInputIs(node, 0, Type::Any()); |
1007 for (int i = 1; i < node->op()->ValueInputCount(); ++i) { | 1014 for (int i = 1; i < node->op()->ValueInputCount(); ++i) { |
1008 CheckValueInputIs(node, i, Type::Internal()); | 1015 CheckValueInputIs(node, i, Type::Internal()); |
1009 } | 1016 } |
1010 CheckNotTyped(node); | 1017 CheckNotTyped(node); |
1011 break; | 1018 break; |
1012 case IrOpcode::kCheckNumber: | 1019 case IrOpcode::kCheckNumber: |
1013 CheckValueInputIs(node, 0, Type::Any()); | 1020 CheckValueInputIs(node, 0, Type::Any()); |
1014 CheckTypeIs(node, Type::Number()); | 1021 CheckTypeIs(node, Type::Number()); |
1015 break; | 1022 break; |
| 1023 case IrOpcode::kCheckSmi: |
| 1024 CheckValueInputIs(node, 0, Type::Any()); |
| 1025 break; |
1016 case IrOpcode::kCheckString: | 1026 case IrOpcode::kCheckString: |
1017 CheckValueInputIs(node, 0, Type::Any()); | 1027 CheckValueInputIs(node, 0, Type::Any()); |
1018 CheckTypeIs(node, Type::String()); | 1028 CheckTypeIs(node, Type::String()); |
1019 break; | 1029 break; |
1020 case IrOpcode::kCheckIf: | |
1021 CheckValueInputIs(node, 0, Type::Boolean()); | |
1022 CheckNotTyped(node); | |
1023 break; | |
1024 case IrOpcode::kCheckTaggedSigned: | |
1025 CheckValueInputIs(node, 0, Type::Any()); | |
1026 break; | |
1027 case IrOpcode::kCheckTaggedPointer: | |
1028 CheckValueInputIs(node, 0, Type::Any()); | |
1029 break; | |
1030 | 1030 |
1031 case IrOpcode::kCheckedInt32Add: | 1031 case IrOpcode::kCheckedInt32Add: |
1032 case IrOpcode::kCheckedInt32Sub: | 1032 case IrOpcode::kCheckedInt32Sub: |
1033 case IrOpcode::kCheckedInt32Div: | 1033 case IrOpcode::kCheckedInt32Div: |
1034 case IrOpcode::kCheckedInt32Mod: | 1034 case IrOpcode::kCheckedInt32Mod: |
1035 case IrOpcode::kCheckedUint32Div: | 1035 case IrOpcode::kCheckedUint32Div: |
1036 case IrOpcode::kCheckedUint32Mod: | 1036 case IrOpcode::kCheckedUint32Mod: |
1037 case IrOpcode::kCheckedInt32Mul: | 1037 case IrOpcode::kCheckedInt32Mul: |
| 1038 case IrOpcode::kCheckedInt32ToTaggedSigned: |
1038 case IrOpcode::kCheckedUint32ToInt32: | 1039 case IrOpcode::kCheckedUint32ToInt32: |
| 1040 case IrOpcode::kCheckedUint32ToTaggedSigned: |
1039 case IrOpcode::kCheckedFloat64ToInt32: | 1041 case IrOpcode::kCheckedFloat64ToInt32: |
1040 case IrOpcode::kCheckedTaggedSignedToInt32: | 1042 case IrOpcode::kCheckedTaggedSignedToInt32: |
1041 case IrOpcode::kCheckedTaggedToInt32: | 1043 case IrOpcode::kCheckedTaggedToInt32: |
1042 case IrOpcode::kCheckedTaggedToFloat64: | 1044 case IrOpcode::kCheckedTaggedToFloat64: |
| 1045 case IrOpcode::kCheckedTaggedToTaggedSigned: |
1043 case IrOpcode::kCheckedTruncateTaggedToWord32: | 1046 case IrOpcode::kCheckedTruncateTaggedToWord32: |
1044 break; | 1047 break; |
1045 | 1048 |
1046 case IrOpcode::kCheckFloat64Hole: | 1049 case IrOpcode::kCheckFloat64Hole: |
1047 CheckValueInputIs(node, 0, Type::Number()); | 1050 CheckValueInputIs(node, 0, Type::Number()); |
1048 CheckTypeIs(node, Type::Number()); | 1051 CheckTypeIs(node, Type::Number()); |
1049 break; | 1052 break; |
1050 case IrOpcode::kCheckTaggedHole: | 1053 case IrOpcode::kCheckTaggedHole: |
1051 CheckValueInputIs(node, 0, Type::Any()); | 1054 CheckValueInputIs(node, 0, Type::Any()); |
1052 CheckTypeIs(node, Type::NonInternal()); | 1055 CheckTypeIs(node, Type::NonInternal()); |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1590 replacement->op()->EffectOutputCount() > 0); | 1593 replacement->op()->EffectOutputCount() > 0); |
1591 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1594 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1592 replacement->opcode() == IrOpcode::kFrameState); | 1595 replacement->opcode() == IrOpcode::kFrameState); |
1593 } | 1596 } |
1594 | 1597 |
1595 #endif // DEBUG | 1598 #endif // DEBUG |
1596 | 1599 |
1597 } // namespace compiler | 1600 } // namespace compiler |
1598 } // namespace internal | 1601 } // namespace internal |
1599 } // namespace v8 | 1602 } // namespace v8 |
OLD | NEW |