480 void delete_input_of(Node* n, int i) { 481 rehash_node_delayed(n); 482 n->del_req(i); 483 } 484 485 bool delay_transform() const { return _delay_transform; } 486 487 void set_delay_transform(bool delay) { 488 _delay_transform = delay; 489 } 490 491 // Clone loop predicates. Defined in loopTransform.cpp. 492 Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check); 493 // Create a new if below new_entry for the predicate to be cloned 494 ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry, 495 Deoptimization::DeoptReason reason); 496 497 #ifndef PRODUCT 498 protected: 499 // Sub-quadratic implementation of VerifyIterativeGVN. 500 unsigned long _verify_counter; 501 unsigned long _verify_full_passes; 502 enum { _verify_window_size = 30 }; 503 Node* _verify_window[_verify_window_size]; 504 void verify_step(Node* n); 505 #endif 506 }; 507 508 //------------------------------PhaseCCP--------------------------------------- 509 // Phase for performing global Conditional Constant Propagation. 510 // Should be replaced with combined CCP & GVN someday. 511 class PhaseCCP : public PhaseIterGVN { 512 // Non-recursive. Use analysis to transform single Node. 513 virtual Node *transform_once( Node *n ); 514 515 public: 516 PhaseCCP( PhaseIterGVN *igvn ); // Compute conditional constants 517 NOT_PRODUCT( ~PhaseCCP(); ) 518 519 // Worklist algorithm identifies constants 520 void analyze(); 521 // Recursive traversal of program. Used analysis to modify program. | 480 void delete_input_of(Node* n, int i) { 481 rehash_node_delayed(n); 482 n->del_req(i); 483 } 484 485 bool delay_transform() const { return _delay_transform; } 486 487 void set_delay_transform(bool delay) { 488 _delay_transform = delay; 489 } 490 491 // Clone loop predicates. Defined in loopTransform.cpp. 492 Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check); 493 // Create a new if below new_entry for the predicate to be cloned 494 ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry, 495 Deoptimization::DeoptReason reason); 496 497 #ifndef PRODUCT 498 protected: 499 // Sub-quadratic implementation of VerifyIterativeGVN. 500 julong _verify_counter; 501 julong _verify_full_passes; 502 enum { _verify_window_size = 30 }; 503 Node* _verify_window[_verify_window_size]; 504 void verify_step(Node* n); 505 #endif 506 }; 507 508 //------------------------------PhaseCCP--------------------------------------- 509 // Phase for performing global Conditional Constant Propagation. 510 // Should be replaced with combined CCP & GVN someday. 511 class PhaseCCP : public PhaseIterGVN { 512 // Non-recursive. Use analysis to transform single Node. 513 virtual Node *transform_once( Node *n ); 514 515 public: 516 PhaseCCP( PhaseIterGVN *igvn ); // Compute conditional constants 517 NOT_PRODUCT( ~PhaseCCP(); ) 518 519 // Worklist algorithm identifies constants 520 void analyze(); 521 // Recursive traversal of program. Used analysis to modify program. |