Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/src/share/vm/runtime/globals_extension.hpp
32285 views
1
/*
2
* Copyright (c) 2003, 2013, 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_VM_RUNTIME_GLOBALS_EXTENSION_HPP
26
#define SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
27
28
#include "runtime/globals.hpp"
29
#include "utilities/macros.hpp"
30
#include "utilities/top.hpp"
31
32
// Construct enum of Flag_<cmdline-arg> constants.
33
34
// Parens left off in the following for the enum decl below.
35
#define FLAG_MEMBER(flag) Flag_##flag
36
37
#define RUNTIME_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
38
#define RUNTIME_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
39
#define RUNTIME_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
40
#define RUNTIME_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
41
#define RUNTIME_MANAGEABLE_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
42
#define RUNTIME_PRODUCT_RW_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
43
#define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
44
#define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
45
#define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
46
47
#ifdef _LP64
48
#define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
49
#else
50
#define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) /* flag is constant */
51
#endif // _LP64
52
53
#define C1_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
54
#define C1_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
55
#define C1_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
56
#define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
57
#define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
58
#define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
59
60
#define C2_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
61
#define C2_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
62
#define C2_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
63
#define C2_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
64
#define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
65
#define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name),
66
#define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
67
68
#define ARCH_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
69
#define ARCH_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
70
#define ARCH_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
71
#define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
72
#define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name),
73
74
typedef enum {
75
RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_EXPERIMENTAL_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER, RUNTIME_MANAGEABLE_FLAG_MEMBER, RUNTIME_PRODUCT_RW_FLAG_MEMBER, RUNTIME_LP64_PRODUCT_FLAG_MEMBER)
76
RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER)
77
#if INCLUDE_ALL_GCS
78
G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_EXPERIMENTAL_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER, RUNTIME_MANAGEABLE_FLAG_MEMBER, RUNTIME_PRODUCT_RW_FLAG_MEMBER)
79
SHENANDOAH_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER, RUNTIME_PD_DEVELOP_FLAG_MEMBER, RUNTIME_PRODUCT_FLAG_MEMBER, RUNTIME_PD_PRODUCT_FLAG_MEMBER, RUNTIME_DIAGNOSTIC_FLAG_MEMBER, RUNTIME_EXPERIMENTAL_FLAG_MEMBER, RUNTIME_NOTPRODUCT_FLAG_MEMBER, RUNTIME_MANAGEABLE_FLAG_MEMBER, RUNTIME_PRODUCT_RW_FLAG_MEMBER)
80
#endif // INCLUDE_ALL_GCS
81
#ifdef COMPILER1
82
C1_FLAGS(C1_DEVELOP_FLAG_MEMBER, C1_PD_DEVELOP_FLAG_MEMBER, C1_PRODUCT_FLAG_MEMBER, C1_PD_PRODUCT_FLAG_MEMBER, C1_DIAGNOSTIC_FLAG_MEMBER, C1_NOTPRODUCT_FLAG_MEMBER)
83
#endif
84
#ifdef COMPILER2
85
C2_FLAGS(C2_DEVELOP_FLAG_MEMBER, C2_PD_DEVELOP_FLAG_MEMBER, C2_PRODUCT_FLAG_MEMBER, C2_PD_PRODUCT_FLAG_MEMBER, C2_DIAGNOSTIC_FLAG_MEMBER, C2_EXPERIMENTAL_FLAG_MEMBER, C2_NOTPRODUCT_FLAG_MEMBER)
86
#endif
87
ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER, ARCH_PRODUCT_FLAG_MEMBER, ARCH_DIAGNOSTIC_FLAG_MEMBER, ARCH_EXPERIMENTAL_FLAG_MEMBER, ARCH_NOTPRODUCT_FLAG_MEMBER)
88
COMMANDLINEFLAG_EXT
89
NUM_CommandLineFlag
90
} CommandLineFlag;
91
92
// Construct enum of Flag_<cmdline-arg>_<type> constants.
93
94
#define FLAG_MEMBER_WITH_TYPE(flag,type) Flag_##flag##_##type
95
96
#define RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
97
#define RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
98
#define RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
99
#define RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
100
#define RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
101
#define RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
102
#define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
103
#define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
104
#define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
105
106
#define C1_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
107
#define C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
108
#define C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
109
#define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
110
#define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
111
#define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
112
113
#ifdef _LP64
114
#define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
115
#else
116
#define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */
117
#endif // _LP64
118
119
#define C2_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
120
#define C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
121
#define C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
122
#define C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
123
#define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
124
#define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type),
125
#define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
126
127
#define ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
128
#define ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
129
#define ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
130
#define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
131
#define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type),
132
133
typedef enum {
134
RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
135
RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
136
RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
137
RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
138
RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
139
RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
140
RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
141
RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
142
RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE,
143
RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE)
144
RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
145
RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
146
RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
147
RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
148
RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
149
RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
150
#if INCLUDE_ALL_GCS
151
G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
152
RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
153
RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
154
RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
155
RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
156
RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
157
RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
158
RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
159
RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE)
160
SHENANDOAH_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE,
161
RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
162
RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE,
163
RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
164
RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
165
RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
166
RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE,
167
RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE,
168
RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE)
169
#endif // INCLUDE_ALL_GCS
170
#ifdef COMPILER1
171
C1_FLAGS(C1_DEVELOP_FLAG_MEMBER_WITH_TYPE,
172
C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
173
C1_PRODUCT_FLAG_MEMBER_WITH_TYPE,
174
C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
175
C1_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
176
C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
177
#endif
178
#ifdef COMPILER2
179
C2_FLAGS(C2_DEVELOP_FLAG_MEMBER_WITH_TYPE,
180
C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE,
181
C2_PRODUCT_FLAG_MEMBER_WITH_TYPE,
182
C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE,
183
C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
184
C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
185
C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
186
#endif
187
ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE,
188
ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE,
189
ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE,
190
ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE,
191
ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE)
192
COMMANDLINEFLAGWITHTYPE_EXT
193
NUM_CommandLineFlagWithType
194
} CommandLineFlagWithType;
195
196
#define FLAG_IS_DEFAULT(name) (CommandLineFlagsEx::is_default(FLAG_MEMBER(name)))
197
#define FLAG_IS_ERGO(name) (CommandLineFlagsEx::is_ergo(FLAG_MEMBER(name)))
198
#define FLAG_IS_CMDLINE(name) (CommandLineFlagsEx::is_cmdline(FLAG_MEMBER(name)))
199
200
#define FLAG_SET_DEFAULT(name, value) ((name) = (value))
201
202
#define FLAG_SET_CMDLINE(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::COMMAND_LINE))
203
#define FLAG_SET_ERGO(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::ERGONOMIC))
204
#define FLAG_SET_MGMT(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name, type), (type)(value), Flag::MANAGEMENT))
205
206
// Can't put the following in CommandLineFlags because
207
// of a circular dependency on the enum definition.
208
class CommandLineFlagsEx : CommandLineFlags {
209
public:
210
static void boolAtPut(CommandLineFlagWithType flag, bool value, Flag::Flags origin);
211
static void intxAtPut(CommandLineFlagWithType flag, intx value, Flag::Flags origin);
212
static void uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin);
213
static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin);
214
static void doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin);
215
// Contract: Flag will make private copy of the incoming value
216
static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin);
217
218
static bool is_default(CommandLineFlag flag);
219
static bool is_ergo(CommandLineFlag flag);
220
static bool is_cmdline(CommandLineFlag flag);
221
};
222
223
#endif // SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP
224
225