Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 44f9b8a64be51c79fd50bb24d569d57c5730ebc2..8e9fe00034964da47b342582dec75cea8cedc16a 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -1948,52 +1948,6 @@ void HGlobalValueNumberer::ProcessLoopBlock( |
if (can_hoist && !graph()->use_optimistic_licm()) { |
can_hoist = block->IsLoopSuccessorDominator(); |
} |
- if (instr->IsTransitionElementsKind()) { |
- // It's possible to hoist transitions out of a loop as long as the |
- // hoisting wouldn't move the transition past an instruction that has a |
- // DependsOn flag for anything it changes. |
- GVNFlagSet hoist_depends_blockers = |
- HValue::ConvertChangesToDependsFlags(instr->ChangesFlags()); |
- |
- // In addition, the transition must not be hoisted above elements kind |
- // changes, or if the transition is destructive to the elements buffer, |
- // changes to array pointer or array contents. |
- GVNFlagSet hoist_change_blockers; |
- hoist_change_blockers.Add(kChangesElementsKind); |
- HTransitionElementsKind* trans = HTransitionElementsKind::cast(instr); |
- if (trans->original_map()->has_fast_double_elements()) { |
- hoist_change_blockers.Add(kChangesElementsPointer); |
- hoist_change_blockers.Add(kChangesDoubleArrayElements); |
- } |
- if (trans->transitioned_map()->has_fast_double_elements()) { |
- hoist_change_blockers.Add(kChangesElementsPointer); |
- hoist_change_blockers.Add(kChangesArrayElements); |
- } |
- if (FLAG_trace_gvn) { |
- GVNFlagSet hoist_blockers = hoist_depends_blockers; |
- hoist_blockers.Add(hoist_change_blockers); |
- GVNFlagSet first_time = *first_time_changes; |
- first_time.Add(*first_time_depends); |
- TRACE_GVN_4("Checking dependencies on HTransitionElementsKind " |
- "%d (%s) hoist blockers: %s; " |
- "first-time accumulated: %s\n", |
- instr->id(), |
- instr->Mnemonic(), |
- *GetGVNFlagsString(hoist_blockers), |
- *GetGVNFlagsString(first_time)); |
- } |
- // It's possible to hoist transition from the current loop loop only if |
- // they dominate all of the successor blocks in the same loop and there |
- // are not any instructions that have Changes/DependsOn that intervene |
- // between it and the beginning of the loop header. |
- bool in_nested_loop = block != loop_header && |
- ((block->parent_loop_header() != loop_header) || |
- block->IsLoopHeader()); |
- can_hoist = !in_nested_loop && |
- block->IsLoopSuccessorDominator() && |
- !first_time_depends->ContainsAnyOf(hoist_depends_blockers) && |
- !first_time_changes->ContainsAnyOf(hoist_change_blockers); |
- } |
if (can_hoist) { |
bool inputs_loop_invariant = true; |