src/share/vm/opto/loopnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/loopnode.hpp

Print this page
rev 5411 : 8024069: replace_in_map() should operate on parent maps
Summary: type information gets lost because replace_in_map() doesn't update parent maps
Reviewed-by:


 859   void insert_pre_post_loops( IdealLoopTree *loop, Node_List &old_new, bool peel_only );
 860   // If Node n lives in the back_ctrl block, we clone a private version of n
 861   // in preheader_ctrl block and return that, otherwise return n.
 862   Node *clone_up_backedge_goo( Node *back_ctrl, Node *preheader_ctrl, Node *n, VectorSet &visited, Node_Stack &clones );
 863 
 864   // Take steps to maximally unroll the loop.  Peel any odd iterations, then
 865   // unroll to do double iterations.  The next round of major loop transforms
 866   // will repeat till the doubled loop body does all remaining iterations in 1
 867   // pass.
 868   void do_maximally_unroll( IdealLoopTree *loop, Node_List &old_new );
 869 
 870   // Unroll the loop body one step - make each trip do 2 iterations.
 871   void do_unroll( IdealLoopTree *loop, Node_List &old_new, bool adjust_min_trip );
 872 
 873   // Return true if exp is a constant times an induction var
 874   bool is_scaled_iv(Node* exp, Node* iv, int* p_scale);
 875 
 876   // Return true if exp is a scaled induction var plus (or minus) constant
 877   bool is_scaled_iv_plus_offset(Node* exp, Node* iv, int* p_scale, Node** p_offset, int depth = 0);
 878 
 879   // Return true if proj is for "proj->[region->..]call_uct"
 880   static bool is_uncommon_trap_proj(ProjNode* proj, Deoptimization::DeoptReason reason);
 881   // Return true for    "if(test)-> proj -> ...
 882   //                          |
 883   //                          V
 884   //                      other_proj->[region->..]call_uct"
 885   static bool is_uncommon_trap_if_pattern(ProjNode* proj, Deoptimization::DeoptReason reason);
 886   // Create a new if above the uncommon_trap_if_pattern for the predicate to be promoted
 887   ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry,
 888                                         Deoptimization::DeoptReason reason);
 889   void register_control(Node* n, IdealLoopTree *loop, Node* pred);
 890 
 891   // Clone loop predicates to cloned loops (peeled, unswitched)
 892   static ProjNode* clone_predicate(ProjNode* predicate_proj, Node* new_entry,
 893                                    Deoptimization::DeoptReason reason,
 894                                    PhaseIdealLoop* loop_phase,
 895                                    PhaseIterGVN* igvn);
 896 
 897   static Node* clone_loop_predicates(Node* old_entry, Node* new_entry,
 898                                          bool clone_limit_check,
 899                                          PhaseIdealLoop* loop_phase,
 900                                          PhaseIterGVN* igvn);
 901   Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check);
 902 
 903   static Node* skip_loop_predicates(Node* entry);
 904 
 905   // Find a good location to insert a predicate




 859   void insert_pre_post_loops( IdealLoopTree *loop, Node_List &old_new, bool peel_only );
 860   // If Node n lives in the back_ctrl block, we clone a private version of n
 861   // in preheader_ctrl block and return that, otherwise return n.
 862   Node *clone_up_backedge_goo( Node *back_ctrl, Node *preheader_ctrl, Node *n, VectorSet &visited, Node_Stack &clones );
 863 
 864   // Take steps to maximally unroll the loop.  Peel any odd iterations, then
 865   // unroll to do double iterations.  The next round of major loop transforms
 866   // will repeat till the doubled loop body does all remaining iterations in 1
 867   // pass.
 868   void do_maximally_unroll( IdealLoopTree *loop, Node_List &old_new );
 869 
 870   // Unroll the loop body one step - make each trip do 2 iterations.
 871   void do_unroll( IdealLoopTree *loop, Node_List &old_new, bool adjust_min_trip );
 872 
 873   // Return true if exp is a constant times an induction var
 874   bool is_scaled_iv(Node* exp, Node* iv, int* p_scale);
 875 
 876   // Return true if exp is a scaled induction var plus (or minus) constant
 877   bool is_scaled_iv_plus_offset(Node* exp, Node* iv, int* p_scale, Node** p_offset, int depth = 0);
 878 







 879   // Create a new if above the uncommon_trap_if_pattern for the predicate to be promoted
 880   ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry,
 881                                         Deoptimization::DeoptReason reason);
 882   void register_control(Node* n, IdealLoopTree *loop, Node* pred);
 883 
 884   // Clone loop predicates to cloned loops (peeled, unswitched)
 885   static ProjNode* clone_predicate(ProjNode* predicate_proj, Node* new_entry,
 886                                    Deoptimization::DeoptReason reason,
 887                                    PhaseIdealLoop* loop_phase,
 888                                    PhaseIterGVN* igvn);
 889 
 890   static Node* clone_loop_predicates(Node* old_entry, Node* new_entry,
 891                                          bool clone_limit_check,
 892                                          PhaseIdealLoop* loop_phase,
 893                                          PhaseIterGVN* igvn);
 894   Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check);
 895 
 896   static Node* skip_loop_predicates(Node* entry);
 897 
 898   // Find a good location to insert a predicate


src/share/vm/opto/loopnode.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File