OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 3753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3764 Run<HRedundantPhiEliminationPhase>(); | 3764 Run<HRedundantPhiEliminationPhase>(); |
3765 if (!CheckArgumentsPhiUses()) { | 3765 if (!CheckArgumentsPhiUses()) { |
3766 *bailout_reason = kUnsupportedPhiUseOfArguments; | 3766 *bailout_reason = kUnsupportedPhiUseOfArguments; |
3767 return false; | 3767 return false; |
3768 } | 3768 } |
3769 | 3769 |
3770 // Find and mark unreachable code to simplify optimizations, especially gvn, | 3770 // Find and mark unreachable code to simplify optimizations, especially gvn, |
3771 // where unreachable code could unnecessarily defeat LICM. | 3771 // where unreachable code could unnecessarily defeat LICM. |
3772 Run<HMarkUnreachableBlocksPhase>(); | 3772 Run<HMarkUnreachableBlocksPhase>(); |
3773 | 3773 |
3774 if (FLAG_check_elimination) Run<HCheckEliminationPhase>(); | |
3775 if (FLAG_dead_code_elimination) Run<HDeadCodeEliminationPhase>(); | 3774 if (FLAG_dead_code_elimination) Run<HDeadCodeEliminationPhase>(); |
3776 if (FLAG_use_escape_analysis) Run<HEscapeAnalysisPhase>(); | 3775 if (FLAG_use_escape_analysis) Run<HEscapeAnalysisPhase>(); |
3777 | 3776 |
3778 if (FLAG_load_elimination) Run<HLoadEliminationPhase>(); | 3777 if (FLAG_load_elimination) Run<HLoadEliminationPhase>(); |
3779 | 3778 |
3780 CollectPhis(); | 3779 CollectPhis(); |
3781 | 3780 |
3782 if (has_osr()) osr()->FinishOsrValues(); | 3781 if (has_osr()) osr()->FinishOsrValues(); |
3783 | 3782 |
3784 Run<HInferRepresentationPhase>(); | 3783 Run<HInferRepresentationPhase>(); |
(...skipping 10 matching lines...) Expand all Loading... |
3795 | 3794 |
3796 // Must be performed before canonicalization to ensure that Canonicalize | 3795 // Must be performed before canonicalization to ensure that Canonicalize |
3797 // will not remove semantically meaningful ToInt32 operations e.g. BIT_OR with | 3796 // will not remove semantically meaningful ToInt32 operations e.g. BIT_OR with |
3798 // zero. | 3797 // zero. |
3799 if (FLAG_opt_safe_uint32_operations) Run<HUint32AnalysisPhase>(); | 3798 if (FLAG_opt_safe_uint32_operations) Run<HUint32AnalysisPhase>(); |
3800 | 3799 |
3801 if (FLAG_use_canonicalizing) Run<HCanonicalizePhase>(); | 3800 if (FLAG_use_canonicalizing) Run<HCanonicalizePhase>(); |
3802 | 3801 |
3803 if (FLAG_use_gvn) Run<HGlobalValueNumberingPhase>(); | 3802 if (FLAG_use_gvn) Run<HGlobalValueNumberingPhase>(); |
3804 | 3803 |
| 3804 if (FLAG_check_elimination) Run<HCheckEliminationPhase>(); |
| 3805 |
3805 if (FLAG_use_range) Run<HRangeAnalysisPhase>(); | 3806 if (FLAG_use_range) Run<HRangeAnalysisPhase>(); |
3806 | 3807 |
3807 Run<HComputeChangeUndefinedToNaN>(); | 3808 Run<HComputeChangeUndefinedToNaN>(); |
3808 Run<HComputeMinusZeroChecksPhase>(); | 3809 Run<HComputeMinusZeroChecksPhase>(); |
3809 | 3810 |
3810 // Eliminate redundant stack checks on backwards branches. | 3811 // Eliminate redundant stack checks on backwards branches. |
3811 Run<HStackCheckEliminationPhase>(); | 3812 Run<HStackCheckEliminationPhase>(); |
3812 | 3813 |
3813 if (FLAG_array_bounds_checks_elimination) Run<HBoundsCheckEliminationPhase>(); | 3814 if (FLAG_array_bounds_checks_elimination) Run<HBoundsCheckEliminationPhase>(); |
3814 if (FLAG_array_bounds_checks_hoisting) Run<HBoundsCheckHoistingPhase>(); | 3815 if (FLAG_array_bounds_checks_hoisting) Run<HBoundsCheckHoistingPhase>(); |
(...skipping 6999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10814 if (ShouldProduceTraceOutput()) { | 10815 if (ShouldProduceTraceOutput()) { |
10815 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 10816 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
10816 } | 10817 } |
10817 | 10818 |
10818 #ifdef DEBUG | 10819 #ifdef DEBUG |
10819 graph_->Verify(false); // No full verify. | 10820 graph_->Verify(false); // No full verify. |
10820 #endif | 10821 #endif |
10821 } | 10822 } |
10822 | 10823 |
10823 } } // namespace v8::internal | 10824 } } // namespace v8::internal |
OLD | NEW |