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 "gc/serial/serial_globals.hpp" 29 #include "utilities/macros.hpp" 30 #if INCLUDE_ALL_GCS 31 #include "gc/cms/cms_globals.hpp" 32 #include "gc/g1/g1_globals.hpp" 33 #include "gc/parallel/parallel_globals.hpp" 34 #endif 35 36 #define GC_FLAGS(develop, \ 37 develop_pd, \ 38 product, \ 39 product_pd, \ 40 diagnostic, \ 41 diagnostic_pd, \ 42 experimental, \ 43 notproduct, \ 44 manageable, \ 45 product_rw, \ 46 lp64_product, \ 47 range, \ 48 constraint, \ 49 writeable) \ 50 \ 51 ALL_GCS_ONLY(GC_CMS_FLAGS( \ 52 develop, \ 53 develop_pd, \ 54 product, \ 55 product_pd, \ 56 diagnostic, \ 57 diagnostic_pd, \ 58 experimental, \ 59 notproduct, \ 60 manageable, \ 61 product_rw, \ 62 lp64_product, \ 63 range, \ 64 constraint, \ 65 writeable)) \ 66 \ 67 ALL_GCS_ONLY(GC_G1_FLAGS( \ 68 develop, \ 69 develop_pd, \ 70 product, \ 71 product_pd, \ 72 diagnostic, \ 73 diagnostic_pd, \ 74 experimental, \ 75 notproduct, \ 76 manageable, \ 77 product_rw, \ 78 lp64_product, \ 79 range, \ 80 constraint, \ 81 writeable)) \ 82 \ 83 ALL_GCS_ONLY(GC_PARALLEL_FLAGS( \ 84 develop, \ 85 develop_pd, \ 86 product, \ 111 range, \ 112 constraint, \ 113 writeable) \ 114 \ 115 /* gc */ \ 116 \ 117 product(bool, UseConcMarkSweepGC, false, \ 118 "Use Concurrent Mark-Sweep GC in the old generation") \ 119 \ 120 product(bool, UseSerialGC, false, \ 121 "Use the Serial garbage collector") \ 122 \ 123 product(bool, UseG1GC, false, \ 124 "Use the Garbage-First garbage collector") \ 125 \ 126 product(bool, UseParallelGC, false, \ 127 "Use the Parallel Scavenge garbage collector") \ 128 \ 129 product(bool, UseParallelOldGC, false, \ 130 "Use the Parallel Old garbage collector") \ 131 \ 132 product(uint, ParallelGCThreads, 0, \ 133 "Number of parallel threads parallel gc will use") \ 134 constraint(ParallelGCThreadsConstraintFunc,AfterErgo) \ 135 \ 136 diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true, \ 137 "Use semaphore synchronization for the GC Threads, " \ 138 "instead of synchronization based on mutexes") \ 139 \ 140 product(bool, UseDynamicNumberOfGCThreads, true, \ 141 "Dynamically choose the number of threads up to a maximum of " \ 142 "ParallelGCThreads parallel collectors will use for garbage " \ 143 "collection work") \ 144 \ 145 diagnostic(bool, InjectGCWorkerCreationFailure, false, \ 146 "Inject thread creation failures for " \ 147 "UseDynamicNumberOfGCThreads") \ 148 \ 149 diagnostic(bool, ForceDynamicNumberOfGCThreads, false, \ 150 "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 "gc/serial/serial_globals.hpp" 29 #include "utilities/macros.hpp" 30 #if INCLUDE_ALL_GCS 31 #include "gc/cms/cms_globals.hpp" 32 #include "gc/epsilon/epsilon_globals.hpp" 33 #include "gc/g1/g1_globals.hpp" 34 #include "gc/parallel/parallel_globals.hpp" 35 #endif 36 37 #define GC_FLAGS(develop, \ 38 develop_pd, \ 39 product, \ 40 product_pd, \ 41 diagnostic, \ 42 diagnostic_pd, \ 43 experimental, \ 44 notproduct, \ 45 manageable, \ 46 product_rw, \ 47 lp64_product, \ 48 range, \ 49 constraint, \ 50 writeable) \ 51 \ 52 ALL_GCS_ONLY(GC_CMS_FLAGS( \ 53 develop, \ 54 develop_pd, \ 55 product, \ 56 product_pd, \ 57 diagnostic, \ 58 diagnostic_pd, \ 59 experimental, \ 60 notproduct, \ 61 manageable, \ 62 product_rw, \ 63 lp64_product, \ 64 range, \ 65 constraint, \ 66 writeable)) \ 67 \ 68 ALL_GCS_ONLY(GC_EPSILON_FLAGS( \ 69 develop, \ 70 develop_pd, \ 71 product, \ 72 product_pd, \ 73 diagnostic, \ 74 diagnostic_pd, \ 75 experimental, \ 76 notproduct, \ 77 manageable, \ 78 product_rw, \ 79 lp64_product, \ 80 range, \ 81 constraint, \ 82 writeable)) \ 83 \ 84 ALL_GCS_ONLY(GC_G1_FLAGS( \ 85 develop, \ 86 develop_pd, \ 87 product, \ 88 product_pd, \ 89 diagnostic, \ 90 diagnostic_pd, \ 91 experimental, \ 92 notproduct, \ 93 manageable, \ 94 product_rw, \ 95 lp64_product, \ 96 range, \ 97 constraint, \ 98 writeable)) \ 99 \ 100 ALL_GCS_ONLY(GC_PARALLEL_FLAGS( \ 101 develop, \ 102 develop_pd, \ 103 product, \ 128 range, \ 129 constraint, \ 130 writeable) \ 131 \ 132 /* gc */ \ 133 \ 134 product(bool, UseConcMarkSweepGC, false, \ 135 "Use Concurrent Mark-Sweep GC in the old generation") \ 136 \ 137 product(bool, UseSerialGC, false, \ 138 "Use the Serial garbage collector") \ 139 \ 140 product(bool, UseG1GC, false, \ 141 "Use the Garbage-First garbage collector") \ 142 \ 143 product(bool, UseParallelGC, false, \ 144 "Use the Parallel Scavenge garbage collector") \ 145 \ 146 product(bool, UseParallelOldGC, false, \ 147 "Use the Parallel Old garbage collector") \ 148 \ 149 experimental(bool, UseEpsilonGC, false, \ 150 "Use the Epsilon (no-op) garbage collector") \ 151 \ 152 product(uint, ParallelGCThreads, 0, \ 153 "Number of parallel threads parallel gc will use") \ 154 constraint(ParallelGCThreadsConstraintFunc,AfterErgo) \ 155 \ 156 diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true, \ 157 "Use semaphore synchronization for the GC Threads, " \ 158 "instead of synchronization based on mutexes") \ 159 \ 160 product(bool, UseDynamicNumberOfGCThreads, true, \ 161 "Dynamically choose the number of threads up to a maximum of " \ 162 "ParallelGCThreads parallel collectors will use for garbage " \ 163 "collection work") \ 164 \ 165 diagnostic(bool, InjectGCWorkerCreationFailure, false, \ 166 "Inject thread creation failures for " \ 167 "UseDynamicNumberOfGCThreads") \ 168 \ 169 diagnostic(bool, ForceDynamicNumberOfGCThreads, false, \ 170 "Force dynamic selection of the number of " \ |