15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_SWEEPER_HPP 26 #define SHARE_VM_RUNTIME_SWEEPER_HPP 27 28 // An NmethodSweeper is an incremental cleaner for: 29 // - cleanup inline caches 30 // - reclamation of unreferences zombie nmethods 31 // 32 33 class NMethodSweeper : public AllStatic { 34 static long _traversals; // Stack traversal count 35 static nmethod* _current; // Current nmethod 36 static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache 37 38 static volatile int _invocations; // No. of invocations left until we are completed with this pass 39 static volatile int _sweep_started; // Flag to control conc sweeper 40 41 static bool _rescan; // Indicates that we should do a full rescan of the 42 // of the code cache looking for work to do. 43 static bool _do_sweep; // Flag to skip the conc sweep if no stack scan happened 44 static int _locked_seen; // Number of locked nmethods encountered during the scan 45 static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack 46 47 static bool _was_full; // remember if we did emergency unloading 48 static jint _advise_to_sweep; // flag to indicate code cache getting full 49 static jlong _last_was_full; // timestamp of last emergency unloading 50 static uint _highest_marked; // highest compile id dumped at last emergency unloading 51 static long _was_full_traversal; // trav number at last emergency unloading 52 53 static void process_nmethod(nmethod *nm); 54 55 static void log_sweep(const char* msg, const char* format = NULL, ...); 56 57 public: 58 static long traversal_count() { return _traversals; } 59 | 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_SWEEPER_HPP 26 #define SHARE_VM_RUNTIME_SWEEPER_HPP 27 28 // An NmethodSweeper is an incremental cleaner for: 29 // - cleanup inline caches 30 // - reclamation of unreferences zombie nmethods 31 // 32 33 class NMethodSweeper : public AllStatic { 34 static long _traversals; // Stack traversal count 35 static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache 36 static int _invocations; // No. of invocations of the sweeper 37 38 static volatile int _sweep_started; // Flag to control conc sweeper 39 static volatile nmethod* _current; // Current nmethod 40 41 static bool _rescan; // Indicates that we should do a full rescan of the 42 // of the code cache looking for work to do. 43 static bool _do_sweep; // Flag to skip the conc sweep if no stack scan happened 44 static int _locked_seen; // Number of locked nmethods encountered during the scan 45 static int _not_entrant_seen_on_stack; // Number of not entrant nmethod were are still on stack 46 47 static bool _was_full; // remember if we did emergency unloading 48 static jint _advise_to_sweep; // flag to indicate code cache getting full 49 static jlong _last_was_full; // timestamp of last emergency unloading 50 static uint _highest_marked; // highest compile id dumped at last emergency unloading 51 static long _was_full_traversal; // trav number at last emergency unloading 52 53 static void process_nmethod(nmethod *nm); 54 55 static void log_sweep(const char* msg, const char* format = NULL, ...); 56 57 public: 58 static long traversal_count() { return _traversals; } 59 |