12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_GC_SHARED_GC_GLOBALS_HPP 26 #define SHARE_GC_SHARED_GC_GLOBALS_HPP 27 28 #include "utilities/macros.hpp" 29 #if INCLUDE_CMSGC 30 #include "gc/cms/cms_globals.hpp" 31 #endif 32 #if INCLUDE_G1GC 33 #include "gc/g1/g1_globals.hpp" 34 #endif 35 #if INCLUDE_PARALLELGC 36 #include "gc/parallel/parallel_globals.hpp" 37 #endif 38 #if INCLUDE_SERIALGC 39 #include "gc/serial/serial_globals.hpp" 40 #endif 41 42 #define GC_FLAGS(develop, \ 43 develop_pd, \ 44 product, \ 45 product_pd, \ 46 diagnostic, \ 47 diagnostic_pd, \ 48 experimental, \ 49 notproduct, \ 50 manageable, \ 51 product_rw, \ 53 range, \ 54 constraint, \ 55 writeable) \ 56 \ 57 CMSGC_ONLY(GC_CMS_FLAGS( \ 58 develop, \ 59 develop_pd, \ 60 product, \ 61 product_pd, \ 62 diagnostic, \ 63 diagnostic_pd, \ 64 experimental, \ 65 notproduct, \ 66 manageable, \ 67 product_rw, \ 68 lp64_product, \ 69 range, \ 70 constraint, \ 71 writeable)) \ 72 \ 73 G1GC_ONLY(GC_G1_FLAGS( \ 74 develop, \ 75 develop_pd, \ 76 product, \ 77 product_pd, \ 78 diagnostic, \ 79 diagnostic_pd, \ 80 experimental, \ 81 notproduct, \ 82 manageable, \ 83 product_rw, \ 84 lp64_product, \ 85 range, \ 86 constraint, \ 87 writeable)) \ 88 \ 89 PARALLELGC_ONLY(GC_PARALLEL_FLAGS( \ 90 develop, \ 91 develop_pd, \ 92 product, \ 117 range, \ 118 constraint, \ 119 writeable)) \ 120 \ 121 /* gc */ \ 122 \ 123 product(bool, UseConcMarkSweepGC, false, \ 124 "Use Concurrent Mark-Sweep GC in the old generation") \ 125 \ 126 product(bool, UseSerialGC, false, \ 127 "Use the Serial garbage collector") \ 128 \ 129 product(bool, UseG1GC, false, \ 130 "Use the Garbage-First garbage collector") \ 131 \ 132 product(bool, UseParallelGC, false, \ 133 "Use the Parallel Scavenge garbage collector") \ 134 \ 135 product(bool, UseParallelOldGC, false, \ 136 "Use the Parallel Old garbage collector") \ 137 \ 138 product(uint, ParallelGCThreads, 0, \ 139 "Number of parallel threads parallel gc will use") \ 140 constraint(ParallelGCThreadsConstraintFunc,AfterErgo) \ 141 \ 142 diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true, \ 143 "Use semaphore synchronization for the GC Threads, " \ 144 "instead of synchronization based on mutexes") \ 145 \ 146 product(bool, UseDynamicNumberOfGCThreads, true, \ 147 "Dynamically choose the number of threads up to a maximum of " \ 148 "ParallelGCThreads parallel collectors will use for garbage " \ 149 "collection work") \ 150 \ 151 diagnostic(bool, InjectGCWorkerCreationFailure, false, \ 152 "Inject thread creation failures for " \ 153 "UseDynamicNumberOfGCThreads") \ 154 \ 155 diagnostic(bool, ForceDynamicNumberOfGCThreads, false, \ 156 "Force dynamic selection of the number of " \ | 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_GC_SHARED_GC_GLOBALS_HPP 26 #define SHARE_GC_SHARED_GC_GLOBALS_HPP 27 28 #include "utilities/macros.hpp" 29 #if INCLUDE_CMSGC 30 #include "gc/cms/cms_globals.hpp" 31 #endif 32 #if INCLUDE_EPSILONGC 33 #include "gc/epsilon/epsilon_globals.hpp" 34 #endif 35 #if INCLUDE_G1GC 36 #include "gc/g1/g1_globals.hpp" 37 #endif 38 #if INCLUDE_PARALLELGC 39 #include "gc/parallel/parallel_globals.hpp" 40 #endif 41 #if INCLUDE_SERIALGC 42 #include "gc/serial/serial_globals.hpp" 43 #endif 44 45 #define GC_FLAGS(develop, \ 46 develop_pd, \ 47 product, \ 48 product_pd, \ 49 diagnostic, \ 50 diagnostic_pd, \ 51 experimental, \ 52 notproduct, \ 53 manageable, \ 54 product_rw, \ 56 range, \ 57 constraint, \ 58 writeable) \ 59 \ 60 CMSGC_ONLY(GC_CMS_FLAGS( \ 61 develop, \ 62 develop_pd, \ 63 product, \ 64 product_pd, \ 65 diagnostic, \ 66 diagnostic_pd, \ 67 experimental, \ 68 notproduct, \ 69 manageable, \ 70 product_rw, \ 71 lp64_product, \ 72 range, \ 73 constraint, \ 74 writeable)) \ 75 \ 76 EPSILONGC_ONLY(GC_EPSILON_FLAGS( \ 77 develop, \ 78 develop_pd, \ 79 product, \ 80 product_pd, \ 81 diagnostic, \ 82 diagnostic_pd, \ 83 experimental, \ 84 notproduct, \ 85 manageable, \ 86 product_rw, \ 87 lp64_product, \ 88 range, \ 89 constraint, \ 90 writeable)) \ 91 \ 92 G1GC_ONLY(GC_G1_FLAGS( \ 93 develop, \ 94 develop_pd, \ 95 product, \ 96 product_pd, \ 97 diagnostic, \ 98 diagnostic_pd, \ 99 experimental, \ 100 notproduct, \ 101 manageable, \ 102 product_rw, \ 103 lp64_product, \ 104 range, \ 105 constraint, \ 106 writeable)) \ 107 \ 108 PARALLELGC_ONLY(GC_PARALLEL_FLAGS( \ 109 develop, \ 110 develop_pd, \ 111 product, \ 136 range, \ 137 constraint, \ 138 writeable)) \ 139 \ 140 /* gc */ \ 141 \ 142 product(bool, UseConcMarkSweepGC, false, \ 143 "Use Concurrent Mark-Sweep GC in the old generation") \ 144 \ 145 product(bool, UseSerialGC, false, \ 146 "Use the Serial garbage collector") \ 147 \ 148 product(bool, UseG1GC, false, \ 149 "Use the Garbage-First garbage collector") \ 150 \ 151 product(bool, UseParallelGC, false, \ 152 "Use the Parallel Scavenge garbage collector") \ 153 \ 154 product(bool, UseParallelOldGC, false, \ 155 "Use the Parallel Old garbage collector") \ 156 \ 157 experimental(bool, UseEpsilonGC, false, \ 158 "Use the Epsilon (no-op) garbage collector") \ 159 \ 160 product(uint, ParallelGCThreads, 0, \ 161 "Number of parallel threads parallel gc will use") \ 162 constraint(ParallelGCThreadsConstraintFunc,AfterErgo) \ 163 \ 164 diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true, \ 165 "Use semaphore synchronization for the GC Threads, " \ 166 "instead of synchronization based on mutexes") \ 167 \ 168 product(bool, UseDynamicNumberOfGCThreads, true, \ 169 "Dynamically choose the number of threads up to a maximum of " \ 170 "ParallelGCThreads parallel collectors will use for garbage " \ 171 "collection work") \ 172 \ 173 diagnostic(bool, InjectGCWorkerCreationFailure, false, \ 174 "Inject thread creation failures for " \ 175 "UseDynamicNumberOfGCThreads") \ 176 \ 177 diagnostic(bool, ForceDynamicNumberOfGCThreads, false, \ 178 "Force dynamic selection of the number of " \ |