1 /*
2 * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
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_CDS_CDS_GLOBALS_HPP
26 #define SHARE_CDS_CDS_GLOBALS_HPP
27
28 #include "runtime/globals_shared.hpp"
29
30 //
31 // Defines all globals flags used by CDS.
32 //
33
34 #define CDS_FLAGS(develop, \
35 develop_pd, \
36 product, \
37 product_pd, \
38 range, \
39 constraint) \
40 /* Shared spaces */ \
41 \
42 product(bool, VerifySharedSpaces, false, \
43 "Verify integrity of shared spaces") \
44 \
45 product(bool, RecordDynamicDumpInfo, false, \
46 "Record class info for jcmd VM.cds dynamic_dump") \
47 \
48 product(bool, AutoCreateSharedArchive, false, \
49 "Create shared archive at exit if cds mapping failed") \
50 \
51 product(bool, PrintSharedArchiveAndExit, false, \
52 "Print shared archive file contents") \
53 \
54 product(size_t, SharedBaseAddress, LP64_ONLY(32*G) \
55 NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \
56 "Address to allocate shared memory region for class data") \
57 range(0, SIZE_MAX) \
58 \
59 product(ccstr, SharedArchiveConfigFile, nullptr, \
60 "Data to add to the CDS archive file") \
61 \
62 product(uint, SharedSymbolTableBucketSize, 4, \
63 "Average number of symbols per bucket in shared table") \
64 range(2, 246) \
65 \
66 develop(ccstr, ArchiveHeapTestClass, nullptr, \
67 "For JVM internal testing only. The static field named " \
68 "\"archivedObjects\" of the specified class is stored in the " \
69 "CDS archive heap") \
70 \
71 develop(ccstr, AOTInitTestClass, nullptr, \
72 "For JVM internal testing only. The specified class is stored " \
73 "in the initialized state in the AOT cache ") \
74 \
75 product(ccstr, DumpLoadedClassList, nullptr, \
76 "Dump the names all loaded classes, that could be stored into " \
77 "the CDS archive, in the specified file") \
78 \
79 product(bool, AOTStreamableObjects, false, DIAGNOSTIC, \
80 "Archive the Java heap in a generic streamable object format") \
81 \
82 product(bool, AOTEagerlyLoadObjects, false, DIAGNOSTIC, \
83 "Load streamable objects synchronously without concurrency") \
84 \
85 product(ccstr, SharedClassListFile, nullptr, \
86 "Override the default CDS class list") \
87 \
88 product(ccstr, SharedArchiveFile, nullptr, \
89 "Override the default location of the CDS archive file") \
90 \
91 product(ccstr, ArchiveClassesAtExit, nullptr, \
92 "The path and name of the dynamic archive file") \
93 \
94 product(ccstr, ExtraSharedClassListFile, nullptr, \
95 "Extra classlist for building the CDS archive file") \
96 \
97 product(int, ArchiveRelocationMode, 1, DIAGNOSTIC, \
98 "(0) first map at preferred address, and if " \
99 "unsuccessful, map at alternative address; " \
100 "(1) always map at alternative address (default); " \
101 "(2) always map at preferred address, and if unsuccessful, " \
102 "do not map the archive") \
103 range(0, 2) \
104 \
105 /*========== New "AOT" flags =========================================*/ \
106 /* The following 3 flags are aliases of -Xshare:dump, */ \
107 /* -XX:SharedArchiveFile=..., etc. See CDSConfig::check_flag_aliases()*/ \
108 \
109 product(ccstr, AOTMode, nullptr, \
110 "Specifies how AOTCache should be created or used. Valid values " \
111 "are: off, record, create, auto, on; the default is auto") \
112 constraint(AOTModeConstraintFunc, AtParse) \
113 \
114 product(ccstr, AOTConfiguration, nullptr, \
115 "The configuration file written by -XX:AOTMode=record, and " \
116 "loaded by -XX:AOTMode=create. This file contains profiling data "\
117 "for deciding what contents should be added to AOTCache. ") \
118 constraint(AOTConfigurationConstraintFunc, AtParse) \
119 \
120 product(ccstr, AOTCache, nullptr, \
121 "Cache for improving start up and warm up") \
122 constraint(AOTCacheConstraintFunc, AtParse) \
123 \
124 product(ccstr, AOTCacheOutput, nullptr, \
125 "Specifies the file name for writing the AOT cache") \
126 constraint(AOTCacheOutputConstraintFunc, AtParse) \
127 \
128 product(bool, AOTInvokeDynamicLinking, false, DIAGNOSTIC, \
129 "AOT-link JVM_CONSTANT_InvokeDynamic entries in cached " \
130 "ConstantPools") \
131 \
132 product(bool, AOTClassLinking, false, \
133 "Load/link all archived classes for the boot/platform/app " \
134 "loaders before application main") \
135 \
136 product(bool, AOTCacheParallelRelocation, true, DIAGNOSTIC, \
137 "Use parallel relocation code to speed up startup.") \
138 \
139 /* flags to control training and deployment modes */ \
140 \
141 product(bool, AOTRecordTraining, false, DIAGNOSTIC, \
142 "Request output of training data for improved deployment.") \
143 \
144 product(bool, AOTReplayTraining, false, DIAGNOSTIC, \
145 "Read training data, if available, for use in this execution") \
146 \
147 product(bool, AOTPrintTrainingInfo, false, DIAGNOSTIC, \
148 "Print additional information about training") \
149 \
150 product(bool, AOTVerifyTrainingData, trueInDebug, DIAGNOSTIC, \
151 "Verify archived training data") \
152 \
153 product(bool, AOTCompileEagerly, false, EXPERIMENTAL, \
154 "Compile methods as soon as possible") \
155 \
156 /* AOT Code flags */ \
157 \
158 product(bool, AOTAdapterCaching, false, DIAGNOSTIC, \
159 "Enable saving and restoring i2c2i adapters in AOT cache") \
160 \
161 product(bool, AOTStubCaching, false, DIAGNOSTIC, \
162 "Enable saving and restoring stubs and code blobs in AOT cache") \
163 \
164 product(uint, AOTCodeMaxSize, 10*M, DIAGNOSTIC, \
165 "Buffer size in bytes for AOT code caching") \
166 range(1*M, max_jint) \
167 \
168 product(bool, AbortVMOnAOTCodeFailure, false, DIAGNOSTIC, \
169 "Abort VM on the first occurrence of AOT code load or store " \
170 "failure. By default VM will continue execute without AOT code.") \
171 \
172 develop(bool, TestAOTAdapterLinkFailure, false, \
173 "Test failure of adapter linking when loading from AOT cache.") \
174
175 // end of CDS_FLAGS
176
177 DECLARE_FLAGS(CDS_FLAGS)
178
179 #endif // SHARE_CDS_CDS_GLOBALS_HPP