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