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 3120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3131 Run<HRedundantPhiEliminationPhase>(); | 3131 Run<HRedundantPhiEliminationPhase>(); |
3132 if (!CheckArgumentsPhiUses()) { | 3132 if (!CheckArgumentsPhiUses()) { |
3133 *bailout_reason = kUnsupportedPhiUseOfArguments; | 3133 *bailout_reason = kUnsupportedPhiUseOfArguments; |
3134 return false; | 3134 return false; |
3135 } | 3135 } |
3136 | 3136 |
3137 // Find and mark unreachable code to simplify optimizations, especially gvn, | 3137 // Find and mark unreachable code to simplify optimizations, especially gvn, |
3138 // where unreachable code could unnecessarily defeat LICM. | 3138 // where unreachable code could unnecessarily defeat LICM. |
3139 Run<HMarkUnreachableBlocksPhase>(); | 3139 Run<HMarkUnreachableBlocksPhase>(); |
3140 | 3140 |
3141 if (FLAG_check_elimination) Run<HCheckEliminationPhase>(); | |
3142 if (FLAG_dead_code_elimination) Run<HDeadCodeEliminationPhase>(); | 3141 if (FLAG_dead_code_elimination) Run<HDeadCodeEliminationPhase>(); |
3143 if (FLAG_use_escape_analysis) Run<HEscapeAnalysisPhase>(); | 3142 if (FLAG_use_escape_analysis) Run<HEscapeAnalysisPhase>(); |
3144 | 3143 |
3145 if (FLAG_load_elimination) Run<HLoadEliminationPhase>(); | 3144 if (FLAG_load_elimination) Run<HLoadEliminationPhase>(); |
3146 | 3145 |
3147 CollectPhis(); | 3146 CollectPhis(); |
3148 | 3147 |
3149 if (has_osr()) osr()->FinishOsrValues(); | 3148 if (has_osr()) osr()->FinishOsrValues(); |
3150 | 3149 |
3151 Run<HInferRepresentationPhase>(); | 3150 Run<HInferRepresentationPhase>(); |
(...skipping 10 matching lines...) Expand all Loading... |
3162 | 3161 |
3163 // Must be performed before canonicalization to ensure that Canonicalize | 3162 // Must be performed before canonicalization to ensure that Canonicalize |
3164 // will not remove semantically meaningful ToInt32 operations e.g. BIT_OR with | 3163 // will not remove semantically meaningful ToInt32 operations e.g. BIT_OR with |
3165 // zero. | 3164 // zero. |
3166 if (FLAG_opt_safe_uint32_operations) Run<HUint32AnalysisPhase>(); | 3165 if (FLAG_opt_safe_uint32_operations) Run<HUint32AnalysisPhase>(); |
3167 | 3166 |
3168 if (FLAG_use_canonicalizing) Run<HCanonicalizePhase>(); | 3167 if (FLAG_use_canonicalizing) Run<HCanonicalizePhase>(); |
3169 | 3168 |
3170 if (FLAG_use_gvn) Run<HGlobalValueNumberingPhase>(); | 3169 if (FLAG_use_gvn) Run<HGlobalValueNumberingPhase>(); |
3171 | 3170 |
| 3171 if (FLAG_check_elimination) Run<HCheckEliminationPhase>(); |
| 3172 |
3172 if (FLAG_use_range) Run<HRangeAnalysisPhase>(); | 3173 if (FLAG_use_range) Run<HRangeAnalysisPhase>(); |
3173 | 3174 |
3174 Run<HComputeChangeUndefinedToNaN>(); | 3175 Run<HComputeChangeUndefinedToNaN>(); |
3175 Run<HComputeMinusZeroChecksPhase>(); | 3176 Run<HComputeMinusZeroChecksPhase>(); |
3176 | 3177 |
3177 // Eliminate redundant stack checks on backwards branches. | 3178 // Eliminate redundant stack checks on backwards branches. |
3178 Run<HStackCheckEliminationPhase>(); | 3179 Run<HStackCheckEliminationPhase>(); |
3179 | 3180 |
3180 if (FLAG_array_bounds_checks_elimination) Run<HBoundsCheckEliminationPhase>(); | 3181 if (FLAG_array_bounds_checks_elimination) Run<HBoundsCheckEliminationPhase>(); |
3181 if (FLAG_array_bounds_checks_hoisting) Run<HBoundsCheckHoistingPhase>(); | 3182 if (FLAG_array_bounds_checks_hoisting) Run<HBoundsCheckHoistingPhase>(); |
(...skipping 6642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9824 if (ShouldProduceTraceOutput()) { | 9825 if (ShouldProduceTraceOutput()) { |
9825 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 9826 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
9826 } | 9827 } |
9827 | 9828 |
9828 #ifdef DEBUG | 9829 #ifdef DEBUG |
9829 graph_->Verify(false); // No full verify. | 9830 graph_->Verify(false); // No full verify. |
9830 #endif | 9831 #endif |
9831 } | 9832 } |
9832 | 9833 |
9833 } } // namespace v8::internal | 9834 } } // namespace v8::internal |
OLD | NEW |