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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 case IrOpcode::kTruncateTaggedToWord32: { | 882 case IrOpcode::kTruncateTaggedToWord32: { |
880 // Number /\ Tagged -> Signed32 /\ UntaggedInt32 | 883 // Number /\ Tagged -> Signed32 /\ UntaggedInt32 |
881 // TODO(neis): Activate once ChangeRepresentation works in typer. | 884 // TODO(neis): Activate once ChangeRepresentation works in typer. |
882 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); | 885 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); |
883 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedInt32()); | 886 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedInt32()); |
884 // CheckValueInputIs(node, 0, from)); | 887 // CheckValueInputIs(node, 0, from)); |
885 // CheckUpperIs(node, to)); | 888 // CheckUpperIs(node, to)); |
886 break; | 889 break; |
887 } | 890 } |
888 | 891 |
| 892 case IrOpcode::kCheckedUint32ToInt32: |
| 893 case IrOpcode::kCheckedFloat64ToInt32: |
| 894 case IrOpcode::kCheckedTaggedToInt32: |
| 895 case IrOpcode::kCheckedTaggedToFloat64: |
| 896 break; |
| 897 |
889 case IrOpcode::kLoadField: | 898 case IrOpcode::kLoadField: |
890 // Object -> fieldtype | 899 // Object -> fieldtype |
891 // TODO(rossberg): activate once machine ops are typed. | 900 // TODO(rossberg): activate once machine ops are typed. |
892 // CheckValueInputIs(node, 0, Type::Object()); | 901 // CheckValueInputIs(node, 0, Type::Object()); |
893 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); | 902 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); |
894 break; | 903 break; |
895 case IrOpcode::kLoadBuffer: | 904 case IrOpcode::kLoadBuffer: |
896 break; | 905 break; |
897 case IrOpcode::kLoadElement: | 906 case IrOpcode::kLoadElement: |
898 // Object -> elementtype | 907 // Object -> elementtype |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1381 replacement->op()->EffectOutputCount() > 0); | 1390 replacement->op()->EffectOutputCount() > 0); |
1382 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1391 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1383 replacement->opcode() == IrOpcode::kFrameState); | 1392 replacement->opcode() == IrOpcode::kFrameState); |
1384 } | 1393 } |
1385 | 1394 |
1386 #endif // DEBUG | 1395 #endif // DEBUG |
1387 | 1396 |
1388 } // namespace compiler | 1397 } // namespace compiler |
1389 } // namespace internal | 1398 } // namespace internal |
1390 } // namespace v8 | 1399 } // namespace v8 |
OLD | NEW |