< prev index next >

src/hotspot/share/code/compiledMethod.hpp

Print this page
rev 54099 : 8219586: CodeHeap State Analytics processes dead nmethods
Reviewed-by: thartmann, eosterlund


 221   PcDesc* pc_desc_near(address pc) { return find_pc_desc(pc, true); }
 222 
 223   // ScopeDesc for an instruction
 224   ScopeDesc* scope_desc_at(address pc);
 225   ScopeDesc* scope_desc_near(address pc);
 226 
 227   bool is_at_poll_return(address pc);
 228   bool is_at_poll_or_poll_return(address pc);
 229 
 230   bool  is_marked_for_deoptimization() const      { return _mark_for_deoptimization_status != not_marked; }
 231   void  mark_for_deoptimization(bool inc_recompile_counts = true) {
 232     _mark_for_deoptimization_status = (inc_recompile_counts ? deoptimize : deoptimize_noupdate);
 233   }
 234   bool update_recompile_counts() const {
 235     // Update recompile counts when either the update is explicitly requested (deoptimize)
 236     // or the nmethod is not marked for deoptimization at all (not_marked).
 237     // The latter happens during uncommon traps when deoptimized nmethod is made not entrant.
 238     return _mark_for_deoptimization_status != deoptimize_noupdate;
 239   }
 240 
 241   static bool nmethod_access_is_safe(nmethod* nm);
 242 
 243   // tells whether frames described by this nmethod can be deoptimized
 244   // note: native wrappers cannot be deoptimized.
 245   bool can_be_deoptimized() const { return is_java_method(); }
 246 
 247   virtual oop oop_at(int index) const = 0;
 248   virtual Metadata* metadata_at(int index) const = 0;
 249 
 250   address scopes_data_begin() const { return _scopes_data_begin; }
 251   virtual address scopes_data_end() const = 0;
 252   int scopes_data_size() const { return scopes_data_end() - scopes_data_begin(); }
 253 
 254   virtual PcDesc* scopes_pcs_begin() const = 0;
 255   virtual PcDesc* scopes_pcs_end() const = 0;
 256   int scopes_pcs_size() const { return (intptr_t) scopes_pcs_end() - (intptr_t) scopes_pcs_begin(); }
 257 
 258   address insts_begin() const { return code_begin(); }
 259   address insts_end() const { return stub_begin(); }
 260   // Returns true if a given address is in the 'insts' section. The method
 261   // insts_contains_inclusive() is end-inclusive.
 262   bool insts_contains(address addr) const { return insts_begin() <= addr && addr < insts_end(); }




 221   PcDesc* pc_desc_near(address pc) { return find_pc_desc(pc, true); }
 222 
 223   // ScopeDesc for an instruction
 224   ScopeDesc* scope_desc_at(address pc);
 225   ScopeDesc* scope_desc_near(address pc);
 226 
 227   bool is_at_poll_return(address pc);
 228   bool is_at_poll_or_poll_return(address pc);
 229 
 230   bool  is_marked_for_deoptimization() const      { return _mark_for_deoptimization_status != not_marked; }
 231   void  mark_for_deoptimization(bool inc_recompile_counts = true) {
 232     _mark_for_deoptimization_status = (inc_recompile_counts ? deoptimize : deoptimize_noupdate);
 233   }
 234   bool update_recompile_counts() const {
 235     // Update recompile counts when either the update is explicitly requested (deoptimize)
 236     // or the nmethod is not marked for deoptimization at all (not_marked).
 237     // The latter happens during uncommon traps when deoptimized nmethod is made not entrant.
 238     return _mark_for_deoptimization_status != deoptimize_noupdate;
 239   }
 240 


 241   // tells whether frames described by this nmethod can be deoptimized
 242   // note: native wrappers cannot be deoptimized.
 243   bool can_be_deoptimized() const { return is_java_method(); }
 244 
 245   virtual oop oop_at(int index) const = 0;
 246   virtual Metadata* metadata_at(int index) const = 0;
 247 
 248   address scopes_data_begin() const { return _scopes_data_begin; }
 249   virtual address scopes_data_end() const = 0;
 250   int scopes_data_size() const { return scopes_data_end() - scopes_data_begin(); }
 251 
 252   virtual PcDesc* scopes_pcs_begin() const = 0;
 253   virtual PcDesc* scopes_pcs_end() const = 0;
 254   int scopes_pcs_size() const { return (intptr_t) scopes_pcs_end() - (intptr_t) scopes_pcs_begin(); }
 255 
 256   address insts_begin() const { return code_begin(); }
 257   address insts_end() const { return stub_begin(); }
 258   // Returns true if a given address is in the 'insts' section. The method
 259   // insts_contains_inclusive() is end-inclusive.
 260   bool insts_contains(address addr) const { return insts_begin() <= addr && addr < insts_end(); }


< prev index next >