< prev index next >
src/hotspot/share/opto/loopnode.hpp
Print this page
*** 910,936 ****
_verify_only(true) {
build_and_optimize(false, false);
}
// build the loop tree and perform any requested optimizations
! void build_and_optimize(bool do_split_if, bool skip_loop_opts);
// Dominators for the sea of nodes
void Dominators();
Node *dom_lca( Node *n1, Node *n2 ) const {
return find_non_split_ctrl(dom_lca_internal(n1, n2));
}
Node *dom_lca_internal( Node *n1, Node *n2 ) const;
// Compute the Ideal Node to Loop mapping
! PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool skip_loop_opts = false) :
PhaseTransform(Ideal_Loop),
_igvn(igvn),
_dom_lca_tags(arena()), // Thread::resource_area
_verify_me(NULL),
_verify_only(false) {
! build_and_optimize(do_split_ifs, skip_loop_opts);
}
// Verify that verify_me made the same decisions as a fresh run.
PhaseIdealLoop( PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
PhaseTransform(Ideal_Loop),
--- 910,936 ----
_verify_only(true) {
build_and_optimize(false, false);
}
// build the loop tree and perform any requested optimizations
! void build_and_optimize(bool do_split_if, bool skip_loop_opts, bool last_round = false);
// Dominators for the sea of nodes
void Dominators();
Node *dom_lca( Node *n1, Node *n2 ) const {
return find_non_split_ctrl(dom_lca_internal(n1, n2));
}
Node *dom_lca_internal( Node *n1, Node *n2 ) const;
// Compute the Ideal Node to Loop mapping
! PhaseIdealLoop( PhaseIterGVN &igvn, bool do_split_ifs, bool skip_loop_opts = false, bool last_round = false) :
PhaseTransform(Ideal_Loop),
_igvn(igvn),
_dom_lca_tags(arena()), // Thread::resource_area
_verify_me(NULL),
_verify_only(false) {
! build_and_optimize(do_split_ifs, skip_loop_opts, last_round);
}
// Verify that verify_me made the same decisions as a fresh run.
PhaseIdealLoop( PhaseIterGVN &igvn, const PhaseIdealLoop *verify_me) :
PhaseTransform(Ideal_Loop),
*** 1225,1237 ****
// forcing an extra register move)
void reorg_offsets( IdealLoopTree *loop );
// Check for aggressive application of 'split-if' optimization,
// using basic block level info.
! void split_if_with_blocks ( VectorSet &visited, Node_Stack &nstack );
Node *split_if_with_blocks_pre ( Node *n );
! void split_if_with_blocks_post( Node *n );
Node *has_local_phi_input( Node *n );
// Mark an IfNode as being dominated by a prior test,
// without actually altering the CFG (and hence IDOM info).
void dominated_by( Node *prevdom, Node *iff, bool flip = false, bool exclude_loop_predicate = false );
--- 1225,1237 ----
// forcing an extra register move)
void reorg_offsets( IdealLoopTree *loop );
// Check for aggressive application of 'split-if' optimization,
// using basic block level info.
! void split_if_with_blocks ( VectorSet &visited, Node_Stack &nstack, bool last_round );
Node *split_if_with_blocks_pre ( Node *n );
! void split_if_with_blocks_post( Node *n, bool last_round );
Node *has_local_phi_input( Node *n );
// Mark an IfNode as being dominated by a prior test,
// without actually altering the CFG (and hence IDOM info).
void dominated_by( Node *prevdom, Node *iff, bool flip = false, bool exclude_loop_predicate = false );
< prev index next >