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 <deque> | 7 #include <deque> |
8 #include <queue> | 8 #include <queue> |
9 #include <sstream> | 9 #include <sstream> |
10 #include <string> | 10 #include <string> |
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 } | 625 } |
626 case IrOpcode::kChangeFloat64ToTagged: { | 626 case IrOpcode::kChangeFloat64ToTagged: { |
627 // Number /\ UntaggedFloat64 -> Number /\ Tagged | 627 // Number /\ UntaggedFloat64 -> Number /\ Tagged |
628 // TODO(neis): Activate once ChangeRepresentation works in typer. | 628 // TODO(neis): Activate once ChangeRepresentation works in typer. |
629 // Type* from =Type::Intersect(Type::Number(), Type::UntaggedFloat64()); | 629 // Type* from =Type::Intersect(Type::Number(), Type::UntaggedFloat64()); |
630 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); | 630 // Type* to = Type::Intersect(Type::Number(), Type::Tagged()); |
631 // CheckValueInputIs(node, 0, from)); | 631 // CheckValueInputIs(node, 0, from)); |
632 // CheckUpperIs(node, to)); | 632 // CheckUpperIs(node, to)); |
633 break; | 633 break; |
634 } | 634 } |
635 case IrOpcode::kChangeBitToBool: { | |
636 // Boolean /\ UntaggedInt1 -> Boolean /\ TaggedPtr | |
637 // TODO(neis): Activate once ChangeRepresentation works in typer. | |
638 // Type* from = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); | |
639 // Type* to = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); | |
640 // CheckValueInputIs(node, 0, from)); | |
641 // CheckUpperIs(node, to)); | |
642 break; | |
643 } | |
644 case IrOpcode::kChangeBoolToBit: { | 635 case IrOpcode::kChangeBoolToBit: { |
645 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 | 636 // Boolean /\ TaggedPtr -> Boolean /\ UntaggedInt1 |
646 // TODO(neis): Activate once ChangeRepresentation works in typer. | 637 // TODO(neis): Activate once ChangeRepresentation works in typer. |
647 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); | 638 // Type* from = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); |
648 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); | 639 // Type* to = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); |
649 // CheckValueInputIs(node, 0, from)); | 640 // CheckValueInputIs(node, 0, from)); |
650 // CheckUpperIs(node, to)); | 641 // CheckUpperIs(node, to)); |
651 break; | 642 break; |
652 } | 643 } |
653 case IrOpcode::kChangeWord32ToBit: { | 644 case IrOpcode::kChangeBitToBool: { |
654 // TODO(rossberg): Check. | 645 // Boolean /\ UntaggedInt1 -> Boolean /\ TaggedPtr |
655 CheckValueInputIs(node, 0, Type::Integral32()); | 646 // TODO(neis): Activate once ChangeRepresentation works in typer. |
656 break; | 647 // Type* from = Type::Intersect(Type::Boolean(), Type::UntaggedInt1()); |
657 } | 648 // Type* to = Type::Intersect(Type::Boolean(), Type::TaggedPtr()); |
658 case IrOpcode::kChangeWord64ToBit: { | 649 // CheckValueInputIs(node, 0, from)); |
659 // TODO(rossberg): Check. | 650 // CheckUpperIs(node, to)); |
660 break; | 651 break; |
661 } | 652 } |
662 | 653 |
663 case IrOpcode::kLoadField: | 654 case IrOpcode::kLoadField: |
664 // Object -> fieldtype | 655 // Object -> fieldtype |
665 // TODO(rossberg): activate once machine ops are typed. | 656 // TODO(rossberg): activate once machine ops are typed. |
666 // CheckValueInputIs(node, 0, Type::Object()); | 657 // CheckValueInputIs(node, 0, Type::Object()); |
667 // CheckUpperIs(node, Field(node).type)); | 658 // CheckUpperIs(node, Field(node).type)); |
668 break; | 659 break; |
669 case IrOpcode::kLoadBuffer: | 660 case IrOpcode::kLoadBuffer: |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1008 // Check inputs for all nodes in the block. | 999 // Check inputs for all nodes in the block. |
1009 for (size_t i = 0; i < block->NodeCount(); i++) { | 1000 for (size_t i = 0; i < block->NodeCount(); i++) { |
1010 Node* node = block->NodeAt(i); | 1001 Node* node = block->NodeAt(i); |
1011 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); | 1002 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1); |
1012 } | 1003 } |
1013 } | 1004 } |
1014 } | 1005 } |
1015 } | 1006 } |
1016 } | 1007 } |
1017 } // namespace v8::internal::compiler | 1008 } // namespace v8::internal::compiler |
OLD | NEW |