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 839 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 } | 850 } |
851 case IrOpcode::kChangeBitToBool: { | 851 case IrOpcode::kChangeBitToBool: { |
852 // Boolean /\ UntaggedInt1 -> Boolean /\ TaggedPtr | 852 // Boolean /\ UntaggedInt1 -> Boolean /\ TaggedPtr |
853 // TODO(neis): Activate once ChangeRepresentation works in typer. | 853 // TODO(neis): Activate once ChangeRepresentation works in typer. |
854 // Type* from = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); | 854 // Type* from = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); |
855 // Type* to = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); | 855 // Type* to = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); |
856 // CheckValueInputIs(node, 0, from)); | 856 // CheckValueInputIs(node, 0, from)); |
857 // CheckUpperIs(node, to)); | 857 // CheckUpperIs(node, to)); |
858 break; | 858 break; |
859 } | 859 } |
| 860 case IrOpcode::kTruncateTaggedToWord32: { |
| 861 // Number /\ Tagged -> Signed32 /\ UntaggedInt32 |
| 862 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 863 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); |
| 864 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedInt32()); |
| 865 // CheckValueInputIs(node, 0, from)); |
| 866 // CheckUpperIs(node, to)); |
| 867 break; |
| 868 } |
860 | 869 |
861 case IrOpcode::kLoadField: | 870 case IrOpcode::kLoadField: |
862 // Object -> fieldtype | 871 // Object -> fieldtype |
863 // TODO(rossberg): activate once machine ops are typed. | 872 // TODO(rossberg): activate once machine ops are typed. |
864 // CheckValueInputIs(node, 0, Type::Object()); | 873 // CheckValueInputIs(node, 0, Type::Object()); |
865 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); | 874 // CheckUpperIs(node, FieldAccessOf(node->op()).type)); |
866 break; | 875 break; |
867 case IrOpcode::kLoadBuffer: | 876 case IrOpcode::kLoadBuffer: |
868 break; | 877 break; |
869 case IrOpcode::kLoadElement: | 878 case IrOpcode::kLoadElement: |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
972 case IrOpcode::kFloat64RoundUp: | 981 case IrOpcode::kFloat64RoundUp: |
973 case IrOpcode::kFloat32RoundTruncate: | 982 case IrOpcode::kFloat32RoundTruncate: |
974 case IrOpcode::kFloat64RoundTruncate: | 983 case IrOpcode::kFloat64RoundTruncate: |
975 case IrOpcode::kFloat64RoundTiesAway: | 984 case IrOpcode::kFloat64RoundTiesAway: |
976 case IrOpcode::kFloat32RoundTiesEven: | 985 case IrOpcode::kFloat32RoundTiesEven: |
977 case IrOpcode::kFloat64RoundTiesEven: | 986 case IrOpcode::kFloat64RoundTiesEven: |
978 case IrOpcode::kFloat64Equal: | 987 case IrOpcode::kFloat64Equal: |
979 case IrOpcode::kFloat64LessThan: | 988 case IrOpcode::kFloat64LessThan: |
980 case IrOpcode::kFloat64LessThanOrEqual: | 989 case IrOpcode::kFloat64LessThanOrEqual: |
981 case IrOpcode::kTruncateInt64ToInt32: | 990 case IrOpcode::kTruncateInt64ToInt32: |
| 991 case IrOpcode::kRoundFloat64ToInt32: |
982 case IrOpcode::kRoundInt32ToFloat32: | 992 case IrOpcode::kRoundInt32ToFloat32: |
983 case IrOpcode::kRoundInt64ToFloat32: | 993 case IrOpcode::kRoundInt64ToFloat32: |
984 case IrOpcode::kRoundInt64ToFloat64: | 994 case IrOpcode::kRoundInt64ToFloat64: |
985 case IrOpcode::kRoundUint32ToFloat32: | 995 case IrOpcode::kRoundUint32ToFloat32: |
986 case IrOpcode::kRoundUint64ToFloat64: | 996 case IrOpcode::kRoundUint64ToFloat64: |
987 case IrOpcode::kRoundUint64ToFloat32: | 997 case IrOpcode::kRoundUint64ToFloat32: |
988 case IrOpcode::kTruncateFloat64ToFloat32: | 998 case IrOpcode::kTruncateFloat64ToFloat32: |
989 case IrOpcode::kTruncateFloat64ToInt32: | 999 case IrOpcode::kTruncateFloat64ToWord32: |
990 case IrOpcode::kBitcastFloat32ToInt32: | 1000 case IrOpcode::kBitcastFloat32ToInt32: |
991 case IrOpcode::kBitcastFloat64ToInt64: | 1001 case IrOpcode::kBitcastFloat64ToInt64: |
992 case IrOpcode::kBitcastInt32ToFloat32: | 1002 case IrOpcode::kBitcastInt32ToFloat32: |
993 case IrOpcode::kBitcastInt64ToFloat64: | 1003 case IrOpcode::kBitcastInt64ToFloat64: |
994 case IrOpcode::kBitcastWordToTagged: | 1004 case IrOpcode::kBitcastWordToTagged: |
995 case IrOpcode::kChangeInt32ToInt64: | 1005 case IrOpcode::kChangeInt32ToInt64: |
996 case IrOpcode::kChangeUint32ToUint64: | 1006 case IrOpcode::kChangeUint32ToUint64: |
997 case IrOpcode::kChangeInt32ToFloat64: | 1007 case IrOpcode::kChangeInt32ToFloat64: |
998 case IrOpcode::kChangeUint32ToFloat64: | 1008 case IrOpcode::kChangeUint32ToFloat64: |
999 case IrOpcode::kChangeFloat32ToFloat64: | 1009 case IrOpcode::kChangeFloat32ToFloat64: |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 replacement->op()->EffectOutputCount() > 0); | 1354 replacement->op()->EffectOutputCount() > 0); |
1345 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1355 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
1346 replacement->opcode() == IrOpcode::kFrameState); | 1356 replacement->opcode() == IrOpcode::kFrameState); |
1347 } | 1357 } |
1348 | 1358 |
1349 #endif // DEBUG | 1359 #endif // DEBUG |
1350 | 1360 |
1351 } // namespace compiler | 1361 } // namespace compiler |
1352 } // namespace internal | 1362 } // namespace internal |
1353 } // namespace v8 | 1363 } // namespace v8 |
OLD | NEW |