456
457 // Add users of 'n' to worklist
458 void add_users_to_worklist0( Node *n );
459 void add_users_to_worklist ( Node *n );
460
461 // Replace old node with new one.
462 void replace_node( Node *old, Node *nn ) {
463 add_users_to_worklist(old);
464 hash_delete(old); // Yank from hash before hacking edges
465 subsume_node(old, nn);
466 }
467
468 bool delay_transform() const { return _delay_transform; }
469
470 void set_delay_transform(bool delay) {
471 _delay_transform = delay;
472 }
473
474 // Clone loop predicates. Defined in loopTransform.cpp.
475 Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check);
476 Node* move_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check);
477 // Create a new if below new_entry for the predicate to be cloned
478 ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry,
479 Deoptimization::DeoptReason reason);
480
481 #ifndef PRODUCT
482 protected:
483 // Sub-quadratic implementation of VerifyIterativeGVN.
484 unsigned long _verify_counter;
485 unsigned long _verify_full_passes;
486 enum { _verify_window_size = 30 };
487 Node* _verify_window[_verify_window_size];
488 void verify_step(Node* n);
489 #endif
490 };
491
492 //------------------------------PhaseCCP---------------------------------------
493 // Phase for performing global Conditional Constant Propagation.
494 // Should be replaced with combined CCP & GVN someday.
495 class PhaseCCP : public PhaseIterGVN {
496 // Non-recursive. Use analysis to transform single Node.
|
456
457 // Add users of 'n' to worklist
458 void add_users_to_worklist0( Node *n );
459 void add_users_to_worklist ( Node *n );
460
461 // Replace old node with new one.
462 void replace_node( Node *old, Node *nn ) {
463 add_users_to_worklist(old);
464 hash_delete(old); // Yank from hash before hacking edges
465 subsume_node(old, nn);
466 }
467
468 bool delay_transform() const { return _delay_transform; }
469
470 void set_delay_transform(bool delay) {
471 _delay_transform = delay;
472 }
473
474 // Clone loop predicates. Defined in loopTransform.cpp.
475 Node* clone_loop_predicates(Node* old_entry, Node* new_entry, bool clone_limit_check);
476 // Create a new if below new_entry for the predicate to be cloned
477 ProjNode* create_new_if_for_predicate(ProjNode* cont_proj, Node* new_entry,
478 Deoptimization::DeoptReason reason);
479
480 #ifndef PRODUCT
481 protected:
482 // Sub-quadratic implementation of VerifyIterativeGVN.
483 unsigned long _verify_counter;
484 unsigned long _verify_full_passes;
485 enum { _verify_window_size = 30 };
486 Node* _verify_window[_verify_window_size];
487 void verify_step(Node* n);
488 #endif
489 };
490
491 //------------------------------PhaseCCP---------------------------------------
492 // Phase for performing global Conditional Constant Propagation.
493 // Should be replaced with combined CCP & GVN someday.
494 class PhaseCCP : public PhaseIterGVN {
495 // Non-recursive. Use analysis to transform single Node.
|