< prev index next >
src/hotspot/share/runtime/synchronizer.hpp
Print this page
rev 60025 : 8246476: remove AsyncDeflateIdleMonitors option and the safepoint based deflation mechanism
*** 40,57 ****
#define OM_CACHE_LINE_SIZE DEFAULT_CACHE_LINE_SIZE
#endif
typedef PaddedEnd<ObjectMonitor, OM_CACHE_LINE_SIZE> PaddedObjectMonitor;
- struct DeflateMonitorCounters {
- volatile int n_in_use; // currently associated with objects
- volatile int n_in_circulation; // extant
- volatile int n_scavenged; // reclaimed (global and per-thread)
- volatile int per_thread_scavenged; // per-thread scavenge total
- double per_thread_times; // per-thread scavenge times
- };
-
class ObjectSynchronizer : AllStatic {
friend class VMStructs;
public:
typedef enum {
owner_self,
--- 40,49 ----
*** 129,167 ****
static void monitors_iterate(MonitorClosure* m);
// GC: we current use aggressive monitor deflation policy
// Basically we deflate all monitors that are not busy.
// An adaptive profile-based deflation policy could be used if needed
- static void deflate_idle_monitors(DeflateMonitorCounters* counters);
static void deflate_idle_monitors_using_JT();
static void deflate_global_idle_monitors_using_JT();
static void deflate_per_thread_idle_monitors_using_JT(JavaThread* target);
static void deflate_common_idle_monitors_using_JT(bool is_global, JavaThread* target);
- static void deflate_thread_local_monitors(Thread* thread, DeflateMonitorCounters* counters);
- static void prepare_deflate_idle_monitors(DeflateMonitorCounters* counters);
- static void finish_deflate_idle_monitors(DeflateMonitorCounters* counters);
- // For a given monitor list: global or per-thread, deflate idle monitors
- static int deflate_monitor_list(ObjectMonitor** list_p,
- int* count_p,
- ObjectMonitor** free_head_p,
- ObjectMonitor** free_tail_p);
// For a given in-use monitor list: global or per-thread, deflate idle
// monitors using a JavaThread.
static int deflate_monitor_list_using_JT(ObjectMonitor** list_p,
int* count_p,
ObjectMonitor** free_head_p,
ObjectMonitor** free_tail_p,
ObjectMonitor** saved_mid_in_use_p);
- static bool deflate_monitor(ObjectMonitor* mid, oop obj,
- ObjectMonitor** free_head_p,
- ObjectMonitor** free_tail_p);
static bool deflate_monitor_using_JT(ObjectMonitor* mid,
ObjectMonitor** free_head_p,
ObjectMonitor** free_tail_p);
static bool is_async_deflation_needed();
- static bool is_safepoint_deflation_needed();
static bool is_async_deflation_requested() { return _is_async_deflation_requested; }
static jlong last_async_deflation_time_ns() { return _last_async_deflation_time_ns; }
static bool request_deflate_idle_monitors(); // for whitebox test support and VM exit logging
static void set_is_async_deflation_requested(bool new_value) { _is_async_deflation_requested = new_value; }
static jlong time_since_last_async_deflation_ms();
--- 121,146 ----
*** 189,199 ****
int *error_cnt_p);
static void log_in_use_monitor_details(outputStream * out);
static int log_monitor_list_counts(outputStream * out);
static int verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
! static void do_safepoint_work(DeflateMonitorCounters* counters);
private:
friend class SynchronizerTest;
enum { _BLOCKSIZE = 128 };
--- 168,178 ----
int *error_cnt_p);
static void log_in_use_monitor_details(outputStream * out);
static int log_monitor_list_counts(outputStream * out);
static int verify_objmon_isinpool(ObjectMonitor *addr) PRODUCT_RETURN0;
! static void do_safepoint_work();
private:
friend class SynchronizerTest;
enum { _BLOCKSIZE = 128 };
< prev index next >