Mercurial > hg > truffle
annotate src/share/vm/runtime/globals_extension.hpp @ 9126:bc26f978b0ce
HotSpotResolvedObjectType: implement hasFinalizeSubclass() correctly
don't use the (wrong) cached value, but ask the runtime on each request.
Fixes regression on xml.* benchmarks @ specjvm2008. The problem was:
After the constructor of Object was deoptimized due to an assumption violation,
it was recompiled again after some time. However, on recompilation, the value
of hasFinalizeSubclass for the class was not updated and it was compiled again
with a, now wrong, assumption, which then triggers deoptimization again.
This was repeated until it hit the recompilation limit (defined by
PerMethodRecompilationCutoff), and therefore only executed by the interpreter
from now on, causing the performance regression.
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Mon, 15 Apr 2013 19:54:58 +0200 |
parents | 5fc51c1ecdeb |
children | cefad50507d8 |
rev | line source |
---|---|
0 | 1 /* |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
2 * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. |
0 | 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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1080
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1080
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1080
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP |
26 #define SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP | |
27 | |
28 #include "runtime/globals.hpp" | |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6854
diff
changeset
|
29 #include "utilities/macros.hpp" |
1972 | 30 #include "utilities/top.hpp" |
31 | |
0 | 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), | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
40 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
0 | 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 #ifdef PRODUCT | |
44 #define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ | |
45 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) /* flag is constant */ | |
46 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) | |
47 #else | |
48 #define RUNTIME_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
49 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), | |
50 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
51 #endif | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
52 #ifdef _LP64 |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
53 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
54 #else |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
55 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
56 #endif // _LP64 |
0 | 57 |
58 #define C1_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
59 #define C1_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), | |
60 #ifdef PRODUCT | |
61 #define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ | |
62 #define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) /* flag is constant */ | |
63 #define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) | |
64 #else | |
65 #define C1_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
66 #define C1_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), | |
67 #define C1_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
68 #endif | |
69 | |
7125
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
70 #define GRAAL_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
71 #define GRAAL_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
72 #ifdef PRODUCT |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
73 #define GRAAL_DEVELOP_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
74 #define GRAAL_PD_DEVELOP_FLAG_MEMBER(type, name, doc) /* flag is constant */ |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
75 #define GRAAL_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
76 #else |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
77 #define GRAAL_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
78 #define GRAAL_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
79 #define GRAAL_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
80 #endif |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
81 |
0 | 82 #define C2_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
83 #define C2_PD_PRODUCT_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), | |
84 #define C2_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1064
diff
changeset
|
85 #define C2_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
0 | 86 #ifdef PRODUCT |
87 #define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ | |
88 #define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) /* flag is constant */ | |
89 #define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) | |
90 #else | |
91 #define C2_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
92 #define C2_PD_DEVELOP_FLAG_MEMBER(type, name, doc) FLAG_MEMBER(name), | |
93 #define C2_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), | |
94 #endif | |
95 | |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
96 #define ARCH_PRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
97 #define ARCH_DIAGNOSTIC_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
98 #define ARCH_EXPERIMENTAL_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
99 #ifdef PRODUCT |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
100 #define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) /* flag is constant */ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
101 #define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
102 #else |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
103 #define ARCH_DEVELOP_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
104 #define ARCH_NOTPRODUCT_FLAG_MEMBER(type, name, value, doc) FLAG_MEMBER(name), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
105 #endif |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
106 |
0 | 107 typedef enum { |
4088
358eca91be48
7116730: Revert 7116481: Commercial features in Hotspot must be gated by a switch
phh
parents:
4087
diff
changeset
|
108 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) |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
109 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) |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6854
diff
changeset
|
110 #if INCLUDE_ALL_GCS |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
111 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) |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6854
diff
changeset
|
112 #endif // INCLUDE_ALL_GCS |
0 | 113 #ifdef COMPILER1 |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
114 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER, C1_PD_DEVELOP_FLAG_MEMBER, C1_PRODUCT_FLAG_MEMBER, C1_PD_PRODUCT_FLAG_MEMBER, C1_NOTPRODUCT_FLAG_MEMBER) |
0 | 115 #endif |
7125
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
116 #ifdef GRAAL |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
117 GRAAL_FLAGS(GRAAL_DEVELOP_FLAG_MEMBER, GRAAL_PD_DEVELOP_FLAG_MEMBER, GRAAL_PRODUCT_FLAG_MEMBER, GRAAL_PD_PRODUCT_FLAG_MEMBER, GRAAL_NOTPRODUCT_FLAG_MEMBER) |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
118 #endif |
0 | 119 #ifdef COMPILER2 |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1064
diff
changeset
|
120 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) |
0 | 121 #endif |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
122 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER, ARCH_PRODUCT_FLAG_MEMBER, ARCH_DIAGNOSTIC_FLAG_MEMBER, ARCH_EXPERIMENTAL_FLAG_MEMBER, ARCH_NOTPRODUCT_FLAG_MEMBER) |
4107
cd00eaeebef6
7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents:
4088
diff
changeset
|
123 COMMANDLINEFLAG_EXT |
0 | 124 NUM_CommandLineFlag |
125 } CommandLineFlag; | |
126 | |
127 // Construct enum of Flag_<cmdline-arg>_<type> constants. | |
128 | |
129 #define FLAG_MEMBER_WITH_TYPE(flag,type) Flag_##flag##_##type | |
130 | |
131 #define RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
132 #define RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
133 #define RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
134 #define RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
0 | 135 #define RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
136 #define RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
137 #ifdef PRODUCT | |
138 #define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ | |
139 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) /* flag is constant */ | |
140 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) | |
141 #else | |
142 #define RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
143 #define RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
144 #define RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
145 #endif | |
146 | |
147 #define C1_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
148 #define C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
149 #ifdef PRODUCT | |
150 #define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ | |
151 #define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) /* flag is constant */ | |
152 #define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) | |
153 #else | |
154 #define C1_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
155 #define C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
156 #define C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
157 #endif | |
7125
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
158 #define GRAAL_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
159 #define GRAAL_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
160 #ifdef PRODUCT |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
161 #define GRAAL_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
162 #define GRAAL_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) /* flag is constant */ |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
163 #define GRAAL_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
164 #else |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
165 #define GRAAL_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
166 #define GRAAL_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
167 #define GRAAL_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
168 #endif |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
169 #ifdef _LP64 |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
170 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
171 #else |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
172 #define RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
173 #endif // _LP64 |
0 | 174 |
175 #define C2_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
176 #define C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
177 #define C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1064
diff
changeset
|
178 #define C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
0 | 179 #ifdef PRODUCT |
180 #define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ | |
181 #define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) /* flag is constant */ | |
182 #define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) | |
183 #else | |
184 #define C2_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
185 #define C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
186 #define C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), | |
187 #endif | |
188 | |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
189 #define ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
190 #define ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
191 #define ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
192 #ifdef PRODUCT |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
193 #define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) /* flag is constant */ |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
194 #define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
195 #else |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
196 #define ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
197 #define ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE(type, name, value, doc) FLAG_MEMBER_WITH_TYPE(name,type), |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
198 #endif |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
199 |
0 | 200 typedef enum { |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
201 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
202 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
203 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
204 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
0 | 205 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE, |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
206 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE, |
0 | 207 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE, |
208 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE, | |
113
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
209 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE, |
ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents:
13
diff
changeset
|
210 RUNTIME_LP64_PRODUCT_FLAG_MEMBER_WITH_TYPE) |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
211 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
212 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
213 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
214 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
215 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
216 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE) |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6854
diff
changeset
|
217 #if INCLUDE_ALL_GCS |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
218 G1_FLAGS(RUNTIME_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
219 RUNTIME_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
220 RUNTIME_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
221 RUNTIME_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
222 RUNTIME_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE, |
350
d28aa69f0959
6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents:
342
diff
changeset
|
223 RUNTIME_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE, |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
224 RUNTIME_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
225 RUNTIME_MANAGEABLE_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
226 RUNTIME_PRODUCT_RW_FLAG_MEMBER_WITH_TYPE) |
8001
db9981fd3124
8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents:
6854
diff
changeset
|
227 #endif // INCLUDE_ALL_GCS |
0 | 228 #ifdef COMPILER1 |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
229 C1_FLAGS(C1_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
230 C1_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
231 C1_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
232 C1_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
233 C1_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE) |
0 | 234 #endif |
7125
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
235 #ifdef GRAAL |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
236 GRAAL_FLAGS(GRAAL_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
237 GRAAL_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
238 GRAAL_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
239 GRAAL_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
240 GRAAL_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE) |
1baf7f1e3f23
decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents:
6854
diff
changeset
|
241 #endif |
0 | 242 #ifdef COMPILER2 |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
243 C2_FLAGS(C2_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
244 C2_PD_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
245 C2_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
246 C2_PD_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
247 C2_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE, |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1064
diff
changeset
|
248 C2_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE, |
342
37f87013dfd8
6711316: Open source the Garbage-First garbage collector
ysr
parents:
113
diff
changeset
|
249 C2_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE) |
0 | 250 #endif |
6633
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
251 ARCH_FLAGS(ARCH_DEVELOP_FLAG_MEMBER_WITH_TYPE, |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
252 ARCH_PRODUCT_FLAG_MEMBER_WITH_TYPE, |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
253 ARCH_DIAGNOSTIC_FLAG_MEMBER_WITH_TYPE, |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
254 ARCH_EXPERIMENTAL_FLAG_MEMBER_WITH_TYPE, |
a5dd6e3ef9f3
6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents:
4107
diff
changeset
|
255 ARCH_NOTPRODUCT_FLAG_MEMBER_WITH_TYPE) |
4107
cd00eaeebef6
7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents:
4088
diff
changeset
|
256 COMMANDLINEFLAGWITHTYPE_EXT |
0 | 257 NUM_CommandLineFlagWithType |
258 } CommandLineFlagWithType; | |
259 | |
260 #define FLAG_IS_DEFAULT(name) (CommandLineFlagsEx::is_default(FLAG_MEMBER(name))) | |
13
183f41cf8bfe
6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents:
0
diff
changeset
|
261 #define FLAG_IS_ERGO(name) (CommandLineFlagsEx::is_ergo(FLAG_MEMBER(name))) |
183f41cf8bfe
6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents:
0
diff
changeset
|
262 #define FLAG_IS_CMDLINE(name) (CommandLineFlagsEx::is_cmdline(FLAG_MEMBER(name))) |
0 | 263 |
264 #define FLAG_SET_DEFAULT(name, value) ((name) = (value)) | |
265 | |
266 #define FLAG_SET_CMDLINE(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), COMMAND_LINE)) | |
267 #define FLAG_SET_ERGO(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), ERGONOMIC)) | |
268 | |
269 // Can't put the following in CommandLineFlags because | |
270 // of a circular dependency on the enum definition. | |
271 class CommandLineFlagsEx : CommandLineFlags { | |
272 public: | |
273 static void boolAtPut(CommandLineFlagWithType flag, bool value, FlagValueOrigin origin); | |
274 static void intxAtPut(CommandLineFlagWithType flag, intx value, FlagValueOrigin origin); | |
275 static void uintxAtPut(CommandLineFlagWithType flag, uintx value, FlagValueOrigin origin); | |
1064 | 276 static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, FlagValueOrigin origin); |
0 | 277 static void doubleAtPut(CommandLineFlagWithType flag, double value, FlagValueOrigin origin); |
278 static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, FlagValueOrigin origin); | |
279 | |
280 static bool is_default(CommandLineFlag flag); | |
13
183f41cf8bfe
6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents:
0
diff
changeset
|
281 static bool is_ergo(CommandLineFlag flag); |
183f41cf8bfe
6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents:
0
diff
changeset
|
282 static bool is_cmdline(CommandLineFlag flag); |
0 | 283 }; |
1972 | 284 |
285 #endif // SHARE_VM_RUNTIME_GLOBALS_EXTENSION_HPP |