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 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 case IrOpcode::kNumberToInt32: | 759 case IrOpcode::kNumberToInt32: |
760 // Number -> Signed32 | 760 // Number -> Signed32 |
761 CheckValueInputIs(node, 0, Type::Number()); | 761 CheckValueInputIs(node, 0, Type::Number()); |
762 CheckUpperIs(node, Type::Signed32()); | 762 CheckUpperIs(node, Type::Signed32()); |
763 break; | 763 break; |
764 case IrOpcode::kNumberToUint32: | 764 case IrOpcode::kNumberToUint32: |
765 // Number -> Unsigned32 | 765 // Number -> Unsigned32 |
766 CheckValueInputIs(node, 0, Type::Number()); | 766 CheckValueInputIs(node, 0, Type::Number()); |
767 CheckUpperIs(node, Type::Unsigned32()); | 767 CheckUpperIs(node, Type::Unsigned32()); |
768 break; | 768 break; |
769 case IrOpcode::kNumberIsHoleNaN: | |
770 // Number -> Boolean | |
771 CheckValueInputIs(node, 0, Type::Number()); | |
772 CheckUpperIs(node, Type::Boolean()); | |
773 break; | |
774 case IrOpcode::kNumberConvertHoleNaN: | |
775 // Number -> Number \/ Undefined | |
776 CheckValueInputIs(node, 0, Type::Number()); | |
777 CheckUpperIs(node, Type::NumberOrUndefined()); | |
778 break; | |
779 case IrOpcode::kPlainPrimitiveToNumber: | 769 case IrOpcode::kPlainPrimitiveToNumber: |
780 // Type is Number. | 770 // Type is Number. |
781 CheckUpperIs(node, Type::Number()); | 771 CheckUpperIs(node, Type::Number()); |
782 break; | 772 break; |
783 case IrOpcode::kPlainPrimitiveToWord32: | 773 case IrOpcode::kPlainPrimitiveToWord32: |
784 CheckUpperIs(node, Type::Number()); | 774 CheckUpperIs(node, Type::Number()); |
785 break; | 775 break; |
786 case IrOpcode::kPlainPrimitiveToFloat64: | 776 case IrOpcode::kPlainPrimitiveToFloat64: |
787 CheckUpperIs(node, Type::Number()); | 777 CheckUpperIs(node, Type::Number()); |
788 break; | 778 break; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 // CheckUpperIs(node, to)); | 923 // CheckUpperIs(node, to)); |
934 break; | 924 break; |
935 } | 925 } |
936 | 926 |
937 case IrOpcode::kCheckedUint32ToInt32: | 927 case IrOpcode::kCheckedUint32ToInt32: |
938 case IrOpcode::kCheckedFloat64ToInt32: | 928 case IrOpcode::kCheckedFloat64ToInt32: |
939 case IrOpcode::kCheckedTaggedToInt32: | 929 case IrOpcode::kCheckedTaggedToInt32: |
940 case IrOpcode::kCheckedTaggedToFloat64: | 930 case IrOpcode::kCheckedTaggedToFloat64: |
941 break; | 931 break; |
942 | 932 |
| 933 case IrOpcode::kCheckFloat64Hole: |
| 934 CheckValueInputIs(node, 0, Type::Number()); |
| 935 CheckUpperIs(node, Type::Number()); |
| 936 break; |
| 937 case IrOpcode::kCheckTaggedHole: |
| 938 CheckValueInputIs(node, 0, Type::Any()); |
| 939 CheckUpperIs(node, Type::Any()); |
| 940 break; |
| 941 |
943 case IrOpcode::kLoadField: | 942 case IrOpcode::kLoadField: |
944 // Object -> fieldtype | 943 // Object -> fieldtype |
945 // TODO(rossberg): activate once machine ops are typed. | 944 // TODO(rossberg): activate once machine ops are typed. |
946 // CheckValueInputIs(node, 0, Type::Object()); | 945 // CheckValueInputIs(node, 0, Type::Object()); |
947 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); | 946 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); |
948 break; | 947 break; |
949 case IrOpcode::kLoadBuffer: | 948 case IrOpcode::kLoadBuffer: |
950 break; | 949 break; |
951 case IrOpcode::kLoadElement: | 950 case IrOpcode::kLoadElement: |
952 // Object -> elementtype | 951 // Object -> elementtype |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1446 replacement->op()->EffectOutputCount() > 0); | 1445 replacement->op()->EffectOutputCount() > 0); |
1447 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1446 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1448 replacement->opcode() == IrOpcode::kFrameState); | 1447 replacement->opcode() == IrOpcode::kFrameState); |
1449 } | 1448 } |
1450 | 1449 |
1451 #endif // DEBUG | 1450 #endif // DEBUG |
1452 | 1451 |
1453 } // namespace compiler | 1452 } // namespace compiler |
1454 } // namespace internal | 1453 } // namespace internal |
1455 } // namespace v8 | 1454 } // namespace v8 |
OLD | NEW |