< prev index next >

src/hotspot/share/gc/shenandoah/heuristics/shenandoahTraversalHeuristics.cpp

Print this page
rev 54386 : 8221766: Load-reference barriers for Shenandoah


  20  * questions.
  21  *
  22  */
  23 
  24 #include "precompiled.hpp"
  25 
  26 #include "gc/shenandoah/heuristics/shenandoahTraversalHeuristics.hpp"
  27 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
  28 #include "gc/shenandoah/shenandoahFreeSet.hpp"
  29 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
  30 #include "gc/shenandoah/shenandoahHeuristics.hpp"
  31 #include "gc/shenandoah/shenandoahTraversalGC.hpp"
  32 #include "logging/log.hpp"
  33 #include "logging/logTag.hpp"
  34 #include "utilities/quickSort.hpp"
  35 
  36 ShenandoahTraversalHeuristics::ShenandoahTraversalHeuristics() : ShenandoahHeuristics(),
  37   _last_cset_select(0)
  38  {
  39   FLAG_SET_DEFAULT(ShenandoahSATBBarrier,            false);
  40   FLAG_SET_DEFAULT(ShenandoahStoreValReadBarrier,    false);
  41   FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
  42   FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier,       false);
  43   FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs,       false);
  44 
  45   SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahRefProcFrequency, 1);
  46 
  47   // Adjust class unloading settings only if globally enabled.
  48   if (ClassUnloadingWithConcurrentMark) {
  49     SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahUnloadClassesFrequency, 1);
  50   }
  51 
  52   SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
  53   SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
  54 
  55   // Final configuration checks
  56   SHENANDOAH_CHECK_FLAG_SET(ShenandoahReadBarrier);
  57   SHENANDOAH_CHECK_FLAG_SET(ShenandoahWriteBarrier);
  58   SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier);
  59   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
  60   SHENANDOAH_CHECK_FLAG_SET(ShenandoahAcmpBarrier);
  61   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
  62 }
  63 
  64 bool ShenandoahTraversalHeuristics::should_start_normal_gc() const {
  65   return false;
  66 }
  67 
  68 bool ShenandoahTraversalHeuristics::is_experimental() {
  69   return true;
  70 }
  71 
  72 bool ShenandoahTraversalHeuristics::is_diagnostic() {
  73   return false;
  74 }
  75 
  76 bool ShenandoahTraversalHeuristics::can_do_traversal_gc() {
  77   return true;
  78 }
  79 
  80 const char* ShenandoahTraversalHeuristics::name() {




  20  * questions.
  21  *
  22  */
  23 
  24 #include "precompiled.hpp"
  25 
  26 #include "gc/shenandoah/heuristics/shenandoahTraversalHeuristics.hpp"
  27 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
  28 #include "gc/shenandoah/shenandoahFreeSet.hpp"
  29 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
  30 #include "gc/shenandoah/shenandoahHeuristics.hpp"
  31 #include "gc/shenandoah/shenandoahTraversalGC.hpp"
  32 #include "logging/log.hpp"
  33 #include "logging/logTag.hpp"
  34 #include "utilities/quickSort.hpp"
  35 
  36 ShenandoahTraversalHeuristics::ShenandoahTraversalHeuristics() : ShenandoahHeuristics(),
  37   _last_cset_select(0)
  38  {
  39   FLAG_SET_DEFAULT(ShenandoahSATBBarrier,            false);

  40   FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, true);
  41   FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier,       false);
  42   FLAG_SET_DEFAULT(ShenandoahAllowMixedAllocs,       false);
  43 
  44   SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahRefProcFrequency, 1);
  45 
  46   // Adjust class unloading settings only if globally enabled.
  47   if (ClassUnloadingWithConcurrentMark) {
  48     SHENANDOAH_ERGO_OVERRIDE_DEFAULT(ShenandoahUnloadClassesFrequency, 1);
  49   }
  50 
  51   SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
  52   SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
  53 
  54   // Final configuration checks
  55   SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);

  56   SHENANDOAH_CHECK_FLAG_SET(ShenandoahStoreValEnqueueBarrier);
  57   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);

  58   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
  59 }
  60 
  61 bool ShenandoahTraversalHeuristics::should_start_normal_gc() const {
  62   return false;
  63 }
  64 
  65 bool ShenandoahTraversalHeuristics::is_experimental() {
  66   return true;
  67 }
  68 
  69 bool ShenandoahTraversalHeuristics::is_diagnostic() {
  70   return false;
  71 }
  72 
  73 bool ShenandoahTraversalHeuristics::can_do_traversal_gc() {
  74   return true;
  75 }
  76 
  77 const char* ShenandoahTraversalHeuristics::name() {


< prev index next >