< prev index next >
src/share/vm/runtime/synchronizer.hpp
Print this page
rev 13054 : imported patch monitor_deflate_conc
@@ -143,23 +143,33 @@
static void sanity_checks(const bool verbose,
const unsigned int cache_line_size,
int *error_cnt_ptr, int *warning_cnt_ptr);
static int verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
+ static void deflate_idle_monitors_conc();
+ static bool should_deflate_idle_monitors_conc() { return _should_deflate_idle_monitors_conc; }
+ static void set_should_deflate_idle_monitors_conc() { _should_deflate_idle_monitors_conc = true; }
+ static void do_safepoint_work();
+
private:
+ static void append_to_freelist_for_after_safepoint(int nScavenged, ObjectMonitor* head, ObjectMonitor* tail);
+
enum { _BLOCKSIZE = 128 };
// global list of blocks of monitors
// gBlockList is really PaddedEnd<ObjectMonitor> *, but we don't
// want to expose the PaddedEnd template more than necessary.
static ObjectMonitor * volatile gBlockList;
// global monitor free list
static ObjectMonitor * volatile gFreeList;
+ static ObjectMonitor * gFreeListNextSafepoint;
+ static ObjectMonitor * gFreeListNextSafepointTail;
// global monitor in-use list, for moribund threads,
// monitors they inflated need to be scanned for deflation
static ObjectMonitor * volatile gOmInUseList;
// count of entries in gOmInUseList
static int gOmInUseCount;
+ static bool _should_deflate_idle_monitors_conc;
// Process oops in all monitors
static void global_oops_do(OopClosure* f);
// Process oops in all global used monitors (i.e. moribund thread's monitors)
static void global_used_oops_do(OopClosure* f);
< prev index next >