src/share/vm/code/nmethod.hpp

Print this page

        

*** 200,214 **** // event processing needs to be done. jint _lock_count; // not_entrant method removal. Each mark_sweep pass will update // this mark to current sweep invocation count if it is seen on the ! // stack. An not_entrant method can be removed when there is no // more activations, i.e., when the _stack_traversal_mark is less than // current sweep traversal index. long _stack_traversal_mark; ExceptionCache *_exception_cache; PcDescCache _pc_desc_cache; // These are used for compiled synchronized native methods to // locate the owner and stack slot for the BasicLock so that we can --- 200,221 ---- // event processing needs to be done. jint _lock_count; // not_entrant method removal. Each mark_sweep pass will update // this mark to current sweep invocation count if it is seen on the ! // stack. An not_entrant method can be removed when there are no // more activations, i.e., when the _stack_traversal_mark is less than // current sweep traversal index. long _stack_traversal_mark; + // The _hotness_counter indicates the hotness of a method. The higher + // the value the hotter the method. The hotness counter of a nmethod is + // set to [(ReservedCodeCacheSize / (1024 * 1024)) * 2] each time the method + // is active while stack scanning (mark_active_nmethods()). The hotness + // counter is decreased (by 1) while sweeping. + int _hotness_counter; + ExceptionCache *_exception_cache; PcDescCache _pc_desc_cache; // These are used for compiled synchronized native methods to // locate the owner and stack slot for the BasicLock so that we can
*** 380,389 **** --- 387,401 ---- int handler_table_size() const { return handler_table_end() - handler_table_begin(); } int nul_chk_table_size() const { return nul_chk_table_end() - nul_chk_table_begin(); } int total_size () const; + // Hotness counter accessor methods + void dec_hotness_counter(int val) { _hotness_counter-= val; } + void set_hotness_counter(int val) { _hotness_counter = val; } + int get_hotness_counter() const { return _hotness_counter; } + // Containment bool consts_contains (address addr) const { return consts_begin () <= addr && addr < consts_end (); } bool insts_contains (address addr) const { return insts_begin () <= addr && addr < insts_end (); } bool stub_contains (address addr) const { return stub_begin () <= addr && addr < stub_end (); } bool oops_contains (oop* addr) const { return oops_begin () <= addr && addr < oops_end (); }