< 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 >