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 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); | 675 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); |
676 CheckUpperIs(node, Type::Boolean()); | 676 CheckUpperIs(node, Type::Boolean()); |
677 break; | 677 break; |
678 case IrOpcode::kNumberLessThan: | 678 case IrOpcode::kNumberLessThan: |
679 case IrOpcode::kNumberLessThanOrEqual: | 679 case IrOpcode::kNumberLessThanOrEqual: |
680 // (Number, Number) -> Boolean | 680 // (Number, Number) -> Boolean |
681 CheckValueInputIs(node, 0, Type::NumberOrUndefined()); | 681 CheckValueInputIs(node, 0, Type::NumberOrUndefined()); |
682 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); | 682 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); |
683 CheckUpperIs(node, Type::Boolean()); | 683 CheckUpperIs(node, Type::Boolean()); |
684 break; | 684 break; |
| 685 case IrOpcode::kSpeculativeNumberAdd: |
| 686 case IrOpcode::kSpeculativeNumberSubtract: |
| 687 break; |
685 case IrOpcode::kNumberAdd: | 688 case IrOpcode::kNumberAdd: |
686 case IrOpcode::kNumberSubtract: | 689 case IrOpcode::kNumberSubtract: |
687 case IrOpcode::kNumberMultiply: | 690 case IrOpcode::kNumberMultiply: |
688 case IrOpcode::kNumberDivide: | 691 case IrOpcode::kNumberDivide: |
689 // (Number, Number) -> Number | 692 // (Number, Number) -> Number |
690 CheckValueInputIs(node, 0, Type::NumberOrUndefined()); | 693 CheckValueInputIs(node, 0, Type::NumberOrUndefined()); |
691 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); | 694 CheckValueInputIs(node, 1, Type::NumberOrUndefined()); |
692 // CheckUpperIs(node, Type::Number()); | 695 // CheckUpperIs(node, Type::Number()); |
693 break; | 696 break; |
694 case IrOpcode::kNumberModulus: | 697 case IrOpcode::kNumberModulus: |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 case IrOpcode::kTruncateTaggedToWord32: { | 897 case IrOpcode::kTruncateTaggedToWord32: { |
895 // Number /\ Tagged -> Signed32 /\ UntaggedInt32 | 898 // Number /\ Tagged -> Signed32 /\ UntaggedInt32 |
896 // TODO(neis): Activate once ChangeRepresentation works in typer. | 899 // TODO(neis): Activate once ChangeRepresentation works in typer. |
897 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); | 900 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); |
898 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedInt32()); | 901 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedInt32()); |
899 // CheckValueInputIs(node, 0, from)); | 902 // CheckValueInputIs(node, 0, from)); |
900 // CheckUpperIs(node, to)); | 903 // CheckUpperIs(node, to)); |
901 break; | 904 break; |
902 } | 905 } |
903 | 906 |
| 907 case IrOpcode::kCheckedUint32ToInt32: |
| 908 case IrOpcode::kCheckedFloat64ToInt32: |
| 909 case IrOpcode::kCheckedTaggedToInt32: |
| 910 case IrOpcode::kCheckedTaggedToFloat64: |
| 911 break; |
| 912 |
904 case IrOpcode::kLoadField: | 913 case IrOpcode::kLoadField: |
905 // Object -> fieldtype | 914 // Object -> fieldtype |
906 // TODO(rossberg): activate once machine ops are typed. | 915 // TODO(rossberg): activate once machine ops are typed. |
907 // CheckValueInputIs(node, 0, Type::Object()); | 916 // CheckValueInputIs(node, 0, Type::Object()); |
908 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); | 917 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); |
909 break; | 918 break; |
910 case IrOpcode::kLoadBuffer: | 919 case IrOpcode::kLoadBuffer: |
911 break; | 920 break; |
912 case IrOpcode::kLoadElement: | 921 case IrOpcode::kLoadElement: |
913 // Object -> elementtype | 922 // Object -> elementtype |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1398 replacement->op()->EffectOutputCount() > 0); | 1407 replacement->op()->EffectOutputCount() > 0); |
1399 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1408 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1400 replacement->opcode() == IrOpcode::kFrameState); | 1409 replacement->opcode() == IrOpcode::kFrameState); |
1401 } | 1410 } |
1402 | 1411 |
1403 #endif // DEBUG | 1412 #endif // DEBUG |
1404 | 1413 |
1405 } // namespace compiler | 1414 } // namespace compiler |
1406 } // namespace internal | 1415 } // namespace internal |
1407 } // namespace v8 | 1416 } // namespace v8 |
OLD | NEW |