Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 683 PrintChangesTo(stream); | 683 PrintChangesTo(stream); |
| 684 PrintTypeTo(stream); | 684 PrintTypeTo(stream); |
| 685 } | 685 } |
| 686 | 686 |
| 687 | 687 |
| 688 void HInstruction::PrintMnemonicTo(StringStream* stream) { | 688 void HInstruction::PrintMnemonicTo(StringStream* stream) { |
| 689 stream->Add("%s ", Mnemonic()); | 689 stream->Add("%s ", Mnemonic()); |
| 690 } | 690 } |
| 691 | 691 |
| 692 | 692 |
| 693 HValue* HValue::AddNumericConstraint(HInstruction* insertion_point, | |
|
Jakob Kummerow
2013/02/12 15:10:42
I don't think we need this. Let's just inline it e
Massi
2013/02/13 11:56:42
Done.
| |
| 694 HValue* related_value, | |
| 695 NumericRelation relation) { | |
| 696 return HNumericConstraint::New( | |
| 697 insertion_point, this, related_value, relation); | |
| 698 } | |
| 699 | |
| 700 | |
| 693 void HInstruction::Unlink() { | 701 void HInstruction::Unlink() { |
| 694 ASSERT(IsLinked()); | 702 ASSERT(IsLinked()); |
| 695 ASSERT(!IsControlInstruction()); // Must never move control instructions. | 703 ASSERT(!IsControlInstruction()); // Must never move control instructions. |
| 696 ASSERT(!IsBlockEntry()); // Doesn't make sense to delete these. | 704 ASSERT(!IsBlockEntry()); // Doesn't make sense to delete these. |
| 697 ASSERT(previous_ != NULL); | 705 ASSERT(previous_ != NULL); |
| 698 previous_->next_ = next_; | 706 previous_->next_ = next_; |
| 699 if (next_ == NULL) { | 707 if (next_ == NULL) { |
| 700 ASSERT(block()->last() == this); | 708 ASSERT(block()->last() == this); |
| 701 block()->set_last(previous_); | 709 block()->set_last(previous_); |
| 702 } else { | 710 } else { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 787 } | 795 } |
| 788 | 796 |
| 789 // Verify that instructions that can be eliminated by GVN have overridden | 797 // Verify that instructions that can be eliminated by GVN have overridden |
| 790 // HValue::DataEquals. The default implementation is UNREACHABLE. We | 798 // HValue::DataEquals. The default implementation is UNREACHABLE. We |
| 791 // don't actually care whether DataEquals returns true or false here. | 799 // don't actually care whether DataEquals returns true or false here. |
| 792 if (CheckFlag(kUseGVN)) DataEquals(this); | 800 if (CheckFlag(kUseGVN)) DataEquals(this); |
| 793 } | 801 } |
| 794 #endif | 802 #endif |
| 795 | 803 |
| 796 | 804 |
| 805 HNumericConstraint* HNumericConstraint::New(HInstruction* insertion_point, | |
|
Jakob Kummerow
2013/02/12 15:10:42
This should probably be renamed (AddToGraph?). Als
Massi
2013/02/13 11:56:42
Done.
| |
| 806 HValue* constrained_value, | |
| 807 HValue* related_value, | |
| 808 NumericRelation relation) { | |
| 809 HNumericConstraint* result = | |
| 810 new(insertion_point->block()->zone()) HNumericConstraint( | |
| 811 constrained_value, related_value, relation); | |
| 812 result->InsertAfter(insertion_point); | |
| 813 return result; | |
| 814 } | |
| 815 | |
| 816 | |
| 817 void HNumericConstraint::PrintDataTo(StringStream* stream) { | |
| 818 stream->Add("("); | |
| 819 constrained_value()->PrintNameTo(stream); | |
| 820 stream->Add(" %s ", relation().Mnemonic()); | |
| 821 related_value()->PrintNameTo(stream); | |
| 822 stream->Add(")"); | |
| 823 } | |
| 824 | |
| 825 | |
| 797 void HDummyUse::PrintDataTo(StringStream* stream) { | 826 void HDummyUse::PrintDataTo(StringStream* stream) { |
| 798 value()->PrintNameTo(stream); | 827 value()->PrintNameTo(stream); |
| 799 } | 828 } |
| 800 | 829 |
| 801 | 830 |
| 802 void HUnaryCall::PrintDataTo(StringStream* stream) { | 831 void HUnaryCall::PrintDataTo(StringStream* stream) { |
| 803 value()->PrintNameTo(stream); | 832 value()->PrintNameTo(stream); |
| 804 stream->Add(" "); | 833 stream->Add(" "); |
| 805 stream->Add("#%d", argument_count()); | 834 stream->Add("#%d", argument_count()); |
| 806 } | 835 } |
| 807 | 836 |
| 808 | 837 |
| 809 void HBinaryCall::PrintDataTo(StringStream* stream) { | 838 void HBinaryCall::PrintDataTo(StringStream* stream) { |
| 810 first()->PrintNameTo(stream); | 839 first()->PrintNameTo(stream); |
| 811 stream->Add(" "); | 840 stream->Add(" "); |
| 812 second()->PrintNameTo(stream); | 841 second()->PrintNameTo(stream); |
| 813 stream->Add(" "); | 842 stream->Add(" "); |
| 814 stream->Add("#%d", argument_count()); | 843 stream->Add("#%d", argument_count()); |
| 815 } | 844 } |
| 816 | 845 |
| 817 | 846 |
| 847 bool HBoundsCheck::CheckRelation(NumericRelation relation, | |
| 848 HValue* related_value) { | |
|
Jakob Kummerow
2013/02/12 15:10:42
nit: indentation
Massi
2013/02/13 11:56:42
Done.
| |
| 849 if (related_value == length()) { | |
| 850 return NumericRelation::Lt().Implies(relation); | |
|
Jakob Kummerow
2013/02/12 15:10:42
How about a comment:
// We know that a BoundsCheck
Massi
2013/02/13 11:56:42
Done.
| |
| 851 } else if (related_value == block()->graph()->GetConstant0()) { | |
| 852 return NumericRelation::Ge().Implies(relation); | |
| 853 } else { | |
| 854 return false; | |
| 855 } | |
| 856 } | |
| 857 | |
| 858 | |
| 818 void HBoundsCheck::PrintDataTo(StringStream* stream) { | 859 void HBoundsCheck::PrintDataTo(StringStream* stream) { |
| 819 index()->PrintNameTo(stream); | 860 index()->PrintNameTo(stream); |
| 820 stream->Add(" "); | 861 stream->Add(" "); |
| 821 length()->PrintNameTo(stream); | 862 length()->PrintNameTo(stream); |
| 822 } | 863 } |
| 823 | 864 |
| 824 | 865 |
| 825 void HBoundsCheck::InferRepresentation(HInferRepresentation* h_infer) { | 866 void HBoundsCheck::InferRepresentation(HInferRepresentation* h_infer) { |
| 826 ASSERT(CheckFlag(kFlexibleRepresentation)); | 867 ASSERT(CheckFlag(kFlexibleRepresentation)); |
| 827 Representation r; | 868 Representation r; |
| (...skipping 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2941 | 2982 |
| 2942 | 2983 |
| 2943 void HCheckFunction::Verify() { | 2984 void HCheckFunction::Verify() { |
| 2944 HInstruction::Verify(); | 2985 HInstruction::Verify(); |
| 2945 ASSERT(HasNoUses()); | 2986 ASSERT(HasNoUses()); |
| 2946 } | 2987 } |
| 2947 | 2988 |
| 2948 #endif | 2989 #endif |
| 2949 | 2990 |
| 2950 } } // namespace v8::internal | 2991 } } // namespace v8::internal |
| OLD | NEW |