< prev index next >

src/hotspot/share/opto/phaseX.hpp

Print this page




 445 
 446   Node_Stack _stack;      // Stack used to avoid recursion
 447 
 448 protected:
 449 
 450   // Warm up hash table, type table and initial worklist
 451   void init_worklist( Node *a_root );
 452 
 453   virtual const Type* saturate(const Type* new_type, const Type* old_type,
 454                                const Type* limit_type) const;
 455   // Usually returns new_type.  Returns old_type if new_type is only a slight
 456   // improvement, such that it would take many (>>10) steps to reach 2**32.
 457 
 458 public:
 459   PhaseIterGVN( PhaseIterGVN *igvn ); // Used by CCP constructor
 460   PhaseIterGVN( PhaseGVN *gvn ); // Used after Parser
 461   PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ); // Used after +VerifyOpto
 462 
 463   // Idealize new Node 'n' with respect to its inputs and its value
 464   virtual Node *transform( Node *a_node );
 465   virtual void record_for_igvn(Node *n) { }
 466 
 467   virtual PhaseIterGVN *is_IterGVN() { return this; }
 468 
 469   Unique_Node_List _worklist;       // Iterative worklist
 470 
 471   // Given def-use info and an initial worklist, apply Node::Ideal,
 472   // Node::Value, Node::Identity, hash-based value numbering, Node::Ideal_DU
 473   // and dominator info to a fixed point.
 474   void optimize();
 475 
 476 #ifndef PRODUCT
 477   void trace_PhaseIterGVN(Node* n, Node* nn, const Type* old_type);
 478   void init_verifyPhaseIterGVN();
 479   void verify_PhaseIterGVN();
 480 #endif
 481 
 482 #ifdef ASSERT
 483   void dump_infinite_loop_info(Node* n);
 484   void trace_PhaseIterGVN_verbose(Node* n, int num_processed);
 485 #endif




 445 
 446   Node_Stack _stack;      // Stack used to avoid recursion
 447 
 448 protected:
 449 
 450   // Warm up hash table, type table and initial worklist
 451   void init_worklist( Node *a_root );
 452 
 453   virtual const Type* saturate(const Type* new_type, const Type* old_type,
 454                                const Type* limit_type) const;
 455   // Usually returns new_type.  Returns old_type if new_type is only a slight
 456   // improvement, such that it would take many (>>10) steps to reach 2**32.
 457 
 458 public:
 459   PhaseIterGVN( PhaseIterGVN *igvn ); // Used by CCP constructor
 460   PhaseIterGVN( PhaseGVN *gvn ); // Used after Parser
 461   PhaseIterGVN( PhaseIterGVN *igvn, const char *dummy ); // Used after +VerifyOpto
 462 
 463   // Idealize new Node 'n' with respect to its inputs and its value
 464   virtual Node *transform( Node *a_node );
 465   virtual void record_for_igvn(Node *n) { _worklist.push(n); }
 466 
 467   virtual PhaseIterGVN *is_IterGVN() { return this; }
 468 
 469   Unique_Node_List _worklist;       // Iterative worklist
 470 
 471   // Given def-use info and an initial worklist, apply Node::Ideal,
 472   // Node::Value, Node::Identity, hash-based value numbering, Node::Ideal_DU
 473   // and dominator info to a fixed point.
 474   void optimize();
 475 
 476 #ifndef PRODUCT
 477   void trace_PhaseIterGVN(Node* n, Node* nn, const Type* old_type);
 478   void init_verifyPhaseIterGVN();
 479   void verify_PhaseIterGVN();
 480 #endif
 481 
 482 #ifdef ASSERT
 483   void dump_infinite_loop_info(Node* n);
 484   void trace_PhaseIterGVN_verbose(Node* n, int num_processed);
 485 #endif


< prev index next >