| 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 737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 } | 748 } |
| 749 case IrOpcode::kChangeTaggedToFloat64: { | 749 case IrOpcode::kChangeTaggedToFloat64: { |
| 750 // Number /\ Tagged -> Number /\ UntaggedFloat64 | 750 // Number /\ Tagged -> Number /\ UntaggedFloat64 |
| 751 // TODO(neis): Activate once ChangeRepresentation works in typer. | 751 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 752 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); | 752 // Type* from = Type::Intersect(Type::Number(), Type::Tagged()); |
| 753 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedFloat64()); | 753 // Type* to = Type::Intersect(Type::Number(), Type::UntaggedFloat64()); |
| 754 // CheckValueInputIs(node, 0, from)); | 754 // CheckValueInputIs(node, 0, from)); |
| 755 // CheckUpperIs(node, to)); | 755 // CheckUpperIs(node, to)); |
| 756 break; | 756 break; |
| 757 } | 757 } |
| 758 #define SIMD128_CASE(TYPE, Type, type, lane_count, lane_type) \ |
| 759 case IrOpcode::kChangeTaggedTo##Type: { \ |
| 760 break; \ |
| 761 } |
| 762 SIMD128_TYPES(SIMD128_CASE) |
| 763 #undef SIMD128_CASE |
| 758 case IrOpcode::kChangeInt32ToTagged: { | 764 case IrOpcode::kChangeInt32ToTagged: { |
| 759 // Signed32 /\ UntaggedInt32 -> Signed32 /\ Tagged | 765 // Signed32 /\ UntaggedInt32 -> Signed32 /\ Tagged |
| 760 // TODO(neis): Activate once ChangeRepresentation works in typer. | 766 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 761 // Type* from =Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); | 767 // Type* from =Type::Intersect(Type::Signed32(), Type::UntaggedInt32()); |
| 762 // Type* to = Type::Intersect(Type::Signed32(), Type::Tagged()); | 768 // Type* to = Type::Intersect(Type::Signed32(), Type::Tagged()); |
| 763 // CheckValueInputIs(node, 0, from)); | 769 // CheckValueInputIs(node, 0, from)); |
| 764 // CheckUpperIs(node, to)); | 770 // CheckUpperIs(node, to)); |
| 765 break; | 771 break; |
| 766 } | 772 } |
| 767 case IrOpcode::kChangeUint32ToTagged: { | 773 case IrOpcode::kChangeUint32ToTagged: { |
| 768 // Unsigned32 /\ UntaggedInt32 -> Unsigned32 /\ Tagged | 774 // Unsigned32 /\ UntaggedInt32 -> Unsigned32 /\ Tagged |
| 769 // TODO(neis): Activate once ChangeRepresentation works in typer. | 775 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 770 // Type* from=Type::Intersect(Type::Unsigned32(),Type::UntaggedInt32()); | 776 // Type* from=Type::Intersect(Type::Unsigned32(),Type::UntaggedInt32()); |
| 771 // Type* to = Type::Intersect(Type::Unsigned32(), Type::Tagged()); | 777 // Type* to = Type::Intersect(Type::Unsigned32(), Type::Tagged()); |
| 772 // CheckValueInputIs(node, 0, from)); | 778 // CheckValueInputIs(node, 0, from)); |
| 773 // CheckUpperIs(node, to)); | 779 // CheckUpperIs(node, to)); |
| 774 break; | 780 break; |
| 775 } | 781 } |
| 776 case IrOpcode::kChangeFloat64ToTagged: { | 782 case IrOpcode::kChangeFloat64ToTagged: { |
| 777 // Number /\ UntaggedFloat64 -> Number /\ Tagged | 783 // Number /\ UntaggedFloat64 -> Number /\ Tagged |
| 778 // TODO(neis): Activate once ChangeRepresentation works in typer. | 784 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 779 // Type* from =Type::Intersect(Type::Number(), Type::UntaggedFloat64()); | 785 // Type* from =Type::Intersect(Type::Number(), Type::UntaggedFloat64()); |
| 780 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); | 786 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); |
| 781 // CheckValueInputIs(node, 0, from)); | 787 // CheckValueInputIs(node, 0, from)); |
| 782 // CheckUpperIs(node, to)); | 788 // CheckUpperIs(node, to)); |
| 783 break; | 789 break; |
| 784 } | 790 } |
| 791 #define SIMD128_CASE(TYPE, Type, type, lane_count, lane_type) \ |
| 792 case IrOpcode::kChange##Type##ToTagged: { \ |
| 793 break; \ |
| 794 } |
| 795 SIMD128_TYPES(SIMD128_CASE) |
| 796 #undef SIMD128_CASE |
| 785 case IrOpcode::kChangeBoolToBit: { | 797 case IrOpcode::kChangeBoolToBit: { |
| 786 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 | 798 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 |
| 787 // TODO(neis): Activate once ChangeRepresentation works in typer. | 799 // TODO(neis): Activate once ChangeRepresentation works in typer. |
| 788 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); | 800 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); |
| 789 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); | 801 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); |
| 790 // CheckValueInputIs(node, 0, from)); | 802 // CheckValueInputIs(node, 0, from)); |
| 791 // CheckUpperIs(node, to)); | 803 // CheckUpperIs(node, to)); |
| 792 break; | 804 break; |
| 793 } | 805 } |
| 794 case IrOpcode::kChangeBitToBool: { | 806 case IrOpcode::kChangeBitToBool: { |
| (...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1284 replacement->op()->EffectOutputCount() > 0); | 1296 replacement->op()->EffectOutputCount() > 0); |
| 1285 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || | 1297 DCHECK(!NodeProperties::IsFrameStateEdge(edge) || |
| 1286 replacement->opcode() == IrOpcode::kFrameState); | 1298 replacement->opcode() == IrOpcode::kFrameState); |
| 1287 } | 1299 } |
| 1288 | 1300 |
| 1289 #endif // DEBUG | 1301 #endif // DEBUG |
| 1290 | 1302 |
| 1291 } // namespace compiler | 1303 } // namespace compiler |
| 1292 } // namespace internal | 1304 } // namespace internal |
| 1293 } // namespace v8 | 1305 } // namespace v8 |
| OLD | NEW |