391 address oops_reloc_begin() const; 392 393 private: 394 bool static clean_ic_if_metadata_is_dead(CompiledIC *ic); 395 396 void clean_ic_stubs(); 397 398 public: 399 // GC unloading support 400 // Cleans unloaded klasses and unloaded nmethods in inline caches 401 402 virtual bool is_unloading() = 0; 403 404 bool unload_nmethod_caches(bool class_unloading_occurred); 405 virtual void do_unloading(bool unloading_occurred) = 0; 406 407 private: 408 PcDesc* find_pc_desc(address pc, bool approximate) { 409 return _pc_desc_container.find_pc_desc(pc, approximate, PcDescSearch(code_begin(), scopes_pcs_begin(), scopes_pcs_end())); 410 } 411 412 protected: 413 // Used by some GCs to chain nmethods. 414 nmethod* _scavenge_root_link; // from CodeCache::scavenge_root_nmethods 415 }; 416 417 #endif // SHARE_CODE_COMPILEDMETHOD_HPP | 391 address oops_reloc_begin() const; 392 393 private: 394 bool static clean_ic_if_metadata_is_dead(CompiledIC *ic); 395 396 void clean_ic_stubs(); 397 398 public: 399 // GC unloading support 400 // Cleans unloaded klasses and unloaded nmethods in inline caches 401 402 virtual bool is_unloading() = 0; 403 404 bool unload_nmethod_caches(bool class_unloading_occurred); 405 virtual void do_unloading(bool unloading_occurred) = 0; 406 407 private: 408 PcDesc* find_pc_desc(address pc, bool approximate) { 409 return _pc_desc_container.find_pc_desc(pc, approximate, PcDescSearch(code_begin(), scopes_pcs_begin(), scopes_pcs_end())); 410 } 411 }; 412 413 #endif // SHARE_CODE_COMPILEDMETHOD_HPP |