src/share/vm/ci/ciMethodData.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8031320_8u Sdiff src/share/vm/ci

src/share/vm/ci/ciMethodData.hpp

Print this page
rev 5968 : 8031320: Use Intel RTM instructions for locks
Summary: Use RTM for inflated locks and stack locks.
Reviewed-by: iveresov, twisti, roland, dcubed


 461     return (address) _data;
 462   }
 463   DataLayout* limit_data_position() const {
 464     return (DataLayout*)((address)data_base() + _data_size);
 465   }
 466 
 467   void load_extra_data();
 468   ciProfileData* bci_to_extra_data(int bci, ciMethod* m, bool& two_free_slots);
 469 
 470 public:
 471   bool is_method_data() const { return true; }
 472 
 473   bool is_empty()  { return _state == empty_state; }
 474   bool is_mature() { return _state == mature_state; }
 475 
 476   int creation_mileage() { return _orig.creation_mileage(); }
 477   int current_mileage()  { return _current_mileage; }
 478 
 479   int invocation_count() { return _invocation_counter; }
 480   int backedge_count()   { return _backedge_counter;   }












 481   // Transfer information about the method to MethodData*.
 482   // would_profile means we would like to profile this method,
 483   // meaning it's not trivial.
 484   void set_would_profile(bool p);
 485   // Also set the numer of loops and blocks in the method.
 486   // Again, this is used to determine if a method is trivial.
 487   void set_compilation_stats(short loops, short blocks);
 488   // If the compiler finds a profiled type that is known statically
 489   // for sure, set it in the MethodData
 490   void set_argument_type(int bci, int i, ciKlass* k);
 491   void set_parameter_type(int i, ciKlass* k);
 492   void set_return_type(int bci, ciKlass* k);
 493 
 494   void load_data();
 495 
 496   // Convert a dp (data pointer) to a di (data index).
 497   int dp_to_di(address dp) {
 498     return dp - ((address)_data);
 499   }
 500 




 461     return (address) _data;
 462   }
 463   DataLayout* limit_data_position() const {
 464     return (DataLayout*)((address)data_base() + _data_size);
 465   }
 466 
 467   void load_extra_data();
 468   ciProfileData* bci_to_extra_data(int bci, ciMethod* m, bool& two_free_slots);
 469 
 470 public:
 471   bool is_method_data() const { return true; }
 472 
 473   bool is_empty()  { return _state == empty_state; }
 474   bool is_mature() { return _state == mature_state; }
 475 
 476   int creation_mileage() { return _orig.creation_mileage(); }
 477   int current_mileage()  { return _current_mileage; }
 478 
 479   int invocation_count() { return _invocation_counter; }
 480   int backedge_count()   { return _backedge_counter;   }
 481 
 482 #if INCLUDE_RTM_OPT
 483   // return cached value
 484   int rtm_state() {
 485     if (is_empty()) {
 486       return NoRTM;
 487     } else {
 488       return get_MethodData()->rtm_state();
 489     }
 490   }
 491 #endif
 492 
 493   // Transfer information about the method to MethodData*.
 494   // would_profile means we would like to profile this method,
 495   // meaning it's not trivial.
 496   void set_would_profile(bool p);
 497   // Also set the numer of loops and blocks in the method.
 498   // Again, this is used to determine if a method is trivial.
 499   void set_compilation_stats(short loops, short blocks);
 500   // If the compiler finds a profiled type that is known statically
 501   // for sure, set it in the MethodData
 502   void set_argument_type(int bci, int i, ciKlass* k);
 503   void set_parameter_type(int i, ciKlass* k);
 504   void set_return_type(int bci, ciKlass* k);
 505 
 506   void load_data();
 507 
 508   // Convert a dp (data pointer) to a di (data index).
 509   int dp_to_di(address dp) {
 510     return dp - ((address)_data);
 511   }
 512 


src/share/vm/ci/ciMethodData.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File