< prev index next >

src/share/vm/opto/parse.hpp

Print this page
rev 5783 : 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: kvn, twisti
rev 5784 : 8026796: Make replace_in_map() on parent maps generic
Summary: propagate node replacements along control flow edges to callers
Reviewed-by: kvn, vlivanov


 331   // Add MemBarRelease for constructors which write volatile field (PPC64).
 332   PPC64_ONLY(bool _wrote_volatile;)
 333   bool          _count_invocations; // update and test invocation counter
 334   bool          _method_data_update; // update method data oop
 335 
 336   // Variables which track Java semantics during bytecode parsing:
 337 
 338   Block*            _block;     // block currently getting parsed
 339   ciBytecodeStream  _iter;      // stream of this method's bytecodes
 340 
 341   int           _blocks_merged; // Progress meter: state merges from BB preds
 342   int           _blocks_parsed; // Progress meter: BBs actually parsed
 343 
 344   const FastLockNode* _synch_lock; // FastLockNode for synchronized method
 345 
 346 #ifndef PRODUCT
 347   int _max_switch_depth;        // Debugging SwitchRanges.
 348   int _est_switch_depth;        // Debugging SwitchRanges.
 349 #endif
 350 




 351  public:
 352   // Constructor
 353   Parse(JVMState* caller, ciMethod* parse_method, float expected_uses);
 354 
 355   virtual Parse* is_Parse() const { return (Parse*)this; }
 356 
 357  public:
 358   // Accessors.
 359   JVMState*     caller()        const { return _caller; }
 360   float         expected_uses() const { return _expected_uses; }
 361   float         prof_factor()   const { return _prof_factor; }
 362   int           depth()         const { return _depth; }
 363   const TypeFunc* tf()          const { return _tf; }
 364   //            entry_bci()     -- see osr_bci, etc.
 365 
 366   ciTypeFlow*   flow()          const { return _flow; }
 367   //            blocks()        -- see rpo_at, start_block, etc.
 368   int           block_count()   const { return _block_count; }
 369 
 370   GraphKit&     exits()               { return _exits; }
 371   bool          wrote_final() const   { return _wrote_final; }
 372   void      set_wrote_final(bool z)   { _wrote_final = z; }
 373 #ifdef PPC64
 374   // Add MemBarRelease for constructors which write volatile field (PPC64).
 375   bool          wrote_volatile() const { return _wrote_volatile; }
 376   void      set_wrote_volatile(bool z) { _wrote_volatile = z; }
 377 #endif




 331   // Add MemBarRelease for constructors which write volatile field (PPC64).
 332   PPC64_ONLY(bool _wrote_volatile;)
 333   bool          _count_invocations; // update and test invocation counter
 334   bool          _method_data_update; // update method data oop
 335 
 336   // Variables which track Java semantics during bytecode parsing:
 337 
 338   Block*            _block;     // block currently getting parsed
 339   ciBytecodeStream  _iter;      // stream of this method's bytecodes
 340 
 341   int           _blocks_merged; // Progress meter: state merges from BB preds
 342   int           _blocks_parsed; // Progress meter: BBs actually parsed
 343 
 344   const FastLockNode* _synch_lock; // FastLockNode for synchronized method
 345 
 346 #ifndef PRODUCT
 347   int _max_switch_depth;        // Debugging SwitchRanges.
 348   int _est_switch_depth;        // Debugging SwitchRanges.
 349 #endif
 350 
 351   bool         _first_return;                  // true if return is the first to be parsed
 352   bool         _replaced_nodes_for_exceptions; // needs processing of replaced nodes in exception paths?
 353   uint         _new_idx;                       // any node with _idx above were new during this parsing. Used to trim the replaced nodes list.
 354 
 355  public:
 356   // Constructor
 357   Parse(JVMState* caller, ciMethod* parse_method, float expected_uses);
 358 
 359   virtual Parse* is_Parse() const { return (Parse*)this; }
 360 

 361   // Accessors.
 362   JVMState*     caller()        const { return _caller; }
 363   float         expected_uses() const { return _expected_uses; }
 364   float         prof_factor()   const { return _prof_factor; }
 365   int           depth()         const { return _depth; }
 366   const TypeFunc* tf()          const { return _tf; }
 367   //            entry_bci()     -- see osr_bci, etc.
 368 
 369   ciTypeFlow*   flow()          const { return _flow; }
 370   //            blocks()        -- see rpo_at, start_block, etc.
 371   int           block_count()   const { return _block_count; }
 372 
 373   GraphKit&     exits()               { return _exits; }
 374   bool          wrote_final() const   { return _wrote_final; }
 375   void      set_wrote_final(bool z)   { _wrote_final = z; }
 376 #ifdef PPC64
 377   // Add MemBarRelease for constructors which write volatile field (PPC64).
 378   bool          wrote_volatile() const { return _wrote_volatile; }
 379   void      set_wrote_volatile(bool z) { _wrote_volatile = z; }
 380 #endif


< prev index next >