< prev index next >

src/hotspot/share/opto/loopnode.cpp

Print this page
*** 4995,16 ***
        C->record_method_not_compilable("empty program detected during loop optimization");
      }
      return;
    }
  
-   BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
    // Nothing to do, so get out
    bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !do_max_unroll && !_verify_me &&
!           !_verify_only && !bs->is_gc_specific_loop_opts_pass(_mode);
    bool do_expensive_nodes = C->should_optimize_expensive_nodes(_igvn);
-   bool strip_mined_loops_expanded = bs->strip_mined_loops_expanded(_mode);
    if (stop_early && !do_expensive_nodes) {
      return;
    }
  
    // Set loop nesting depth
--- 4995,14 ---
        C->record_method_not_compilable("empty program detected during loop optimization");
      }
      return;
    }
  
    // Nothing to do, so get out
    bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !do_max_unroll && !_verify_me &&
!           !_verify_only;
    bool do_expensive_nodes = C->should_optimize_expensive_nodes(_igvn);
    if (stop_early && !do_expensive_nodes) {
      return;
    }
  
    // Set loop nesting depth

*** 5077,11 ***
    visited.set(C->top()->_idx); // Set C->top() as visited now
    build_loop_early( visited, worklist, nstack );
  
    // Given early legal placement, try finding counted loops.  This placement
    // is good enough to discover most loop invariants.
!   if (!_verify_me && !_verify_only && !strip_mined_loops_expanded) {
      _ltree_root->counted_loop( this );
    }
  
    // Find latest loop placement.  Find ideal loop placement.
    visited.clear();
--- 5075,11 ---
    visited.set(C->top()->_idx); // Set C->top() as visited now
    build_loop_early( visited, worklist, nstack );
  
    // Given early legal placement, try finding counted loops.  This placement
    // is good enough to discover most loop invariants.
!   if (!_verify_me && !_verify_only) {
      _ltree_root->counted_loop( this );
    }
  
    // Find latest loop placement.  Find ideal loop placement.
    visited.clear();

*** 5162,14 ***
  
      C->restore_major_progress(old_progress);
      return;
    }
  
-   if (bs->optimize_loops(this, _mode, visited, nstack, worklist)) {
-     return;
-   }
- 
    if (ReassociateInvariants && !C->major_progress()) {
      // Reassociate invariants and prep for split_thru_phi
      for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {
        IdealLoopTree* lpt = iter.current();
        if (!lpt->is_loop()) {
--- 5160,10 ---

*** 6852,11 ***
      predicate_iterator.for_each(dominated_predicates);
      least = dominated_predicates.earliest_dominated_predicate_entry();
    }
    // Try not to place code on a loop entry projection
    // which can inhibit range check elimination.
!   if (least != early && !BarrierSet::barrier_set()->barrier_set_c2()->is_gc_specific_loop_opts_pass(_mode)) {
      Node* ctrl_out = least->unique_ctrl_out_or_null();
      if (ctrl_out != nullptr && ctrl_out->is_Loop() &&
          least == ctrl_out->in(LoopNode::EntryControl) &&
          (ctrl_out->is_CountedLoop() || ctrl_out->is_OuterStripMinedLoop())) {
        Node* least_dom = idom(least);
--- 6846,11 ---
      predicate_iterator.for_each(dominated_predicates);
      least = dominated_predicates.earliest_dominated_predicate_entry();
    }
    // Try not to place code on a loop entry projection
    // which can inhibit range check elimination.
!   if (least != early) {
      Node* ctrl_out = least->unique_ctrl_out_or_null();
      if (ctrl_out != nullptr && ctrl_out->is_Loop() &&
          least == ctrl_out->in(LoopNode::EntryControl) &&
          (ctrl_out->is_CountedLoop() || ctrl_out->is_OuterStripMinedLoop())) {
        Node* least_dom = idom(least);
< prev index next >