< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahNormalMode.cpp

Print this page
rev 58558 : 8241605: Shenandoah: More aggressive reference discovery


  27 #include "gc/shenandoah/shenandoahNormalMode.hpp"
  28 #include "gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp"
  29 #include "gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp"
  30 #include "gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp"
  31 #include "gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp"
  32 #include "logging/log.hpp"
  33 #include "logging/logTag.hpp"
  34 
  35 void ShenandoahNormalMode::initialize_flags() const {
  36   if (ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) {
  37     FLAG_SET_DEFAULT(ShenandoahSuspendibleWorkers, true);
  38     FLAG_SET_DEFAULT(VerifyBeforeExit, false);
  39   }
  40 
  41   SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
  42   SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
  43 
  44   // Final configuration checks
  45   SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);
  46   SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier);
  47   SHENANDOAH_CHECK_FLAG_SET(ShenandoahKeepAliveBarrier);
  48   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
  49   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
  50 }
  51 
  52 ShenandoahHeuristics* ShenandoahNormalMode::initialize_heuristics() const {
  53   if (ShenandoahGCHeuristics != NULL) {
  54     if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
  55       return new ShenandoahAggressiveHeuristics();
  56     } else if (strcmp(ShenandoahGCHeuristics, "static") == 0) {
  57       return new ShenandoahStaticHeuristics();
  58     } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
  59       return new ShenandoahAdaptiveHeuristics();
  60     } else if (strcmp(ShenandoahGCHeuristics, "compact") == 0) {
  61       return new ShenandoahCompactHeuristics();
  62     } else {
  63       vm_exit_during_initialization("Unknown -XX:ShenandoahGCHeuristics option");
  64     }
  65   }
  66   ShouldNotReachHere();
  67   return NULL;


  27 #include "gc/shenandoah/shenandoahNormalMode.hpp"
  28 #include "gc/shenandoah/heuristics/shenandoahAdaptiveHeuristics.hpp"
  29 #include "gc/shenandoah/heuristics/shenandoahAggressiveHeuristics.hpp"
  30 #include "gc/shenandoah/heuristics/shenandoahCompactHeuristics.hpp"
  31 #include "gc/shenandoah/heuristics/shenandoahStaticHeuristics.hpp"
  32 #include "logging/log.hpp"
  33 #include "logging/logTag.hpp"
  34 
  35 void ShenandoahNormalMode::initialize_flags() const {
  36   if (ShenandoahConcurrentRoots::can_do_concurrent_class_unloading()) {
  37     FLAG_SET_DEFAULT(ShenandoahSuspendibleWorkers, true);
  38     FLAG_SET_DEFAULT(VerifyBeforeExit, false);
  39   }
  40 
  41   SHENANDOAH_ERGO_ENABLE_FLAG(ExplicitGCInvokesConcurrent);
  42   SHENANDOAH_ERGO_ENABLE_FLAG(ShenandoahImplicitGCInvokesConcurrent);
  43 
  44   // Final configuration checks
  45   SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier);
  46   SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier);

  47   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier);
  48   SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier);
  49 }
  50 
  51 ShenandoahHeuristics* ShenandoahNormalMode::initialize_heuristics() const {
  52   if (ShenandoahGCHeuristics != NULL) {
  53     if (strcmp(ShenandoahGCHeuristics, "aggressive") == 0) {
  54       return new ShenandoahAggressiveHeuristics();
  55     } else if (strcmp(ShenandoahGCHeuristics, "static") == 0) {
  56       return new ShenandoahStaticHeuristics();
  57     } else if (strcmp(ShenandoahGCHeuristics, "adaptive") == 0) {
  58       return new ShenandoahAdaptiveHeuristics();
  59     } else if (strcmp(ShenandoahGCHeuristics, "compact") == 0) {
  60       return new ShenandoahCompactHeuristics();
  61     } else {
  62       vm_exit_during_initialization("Unknown -XX:ShenandoahGCHeuristics option");
  63     }
  64   }
  65   ShouldNotReachHere();
  66   return NULL;
< prev index next >