annotate src/share/vm/runtime/globals.cpp @ 13212:eb03a7335eb0

Use fixed instead of virtual register for target in far foreign call, since the register allocator does not support virtual registers to be used at call sites.
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 02 Dec 2013 14:20:32 -0800
parents 359f7e70ae7f
children 02f27ecb4f3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
8045
64d2a0a39954 8006430: TraceTypeProfile is a product flag while it should be a diagnostic flag
kmo
parents: 8001
diff changeset
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1150
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1150
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: 1150
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
25 #include "precompiled.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
26 #include "memory/allocation.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
27 #include "oops/oop.inline.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
28 #include "runtime/arguments.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
29 #include "runtime/globals.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
30 #include "runtime/globals_extension.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
31 #include "utilities/ostream.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6633
diff changeset
32 #include "utilities/macros.hpp"
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
33 #include "utilities/top.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6633
diff changeset
34 #if INCLUDE_ALL_GCS
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
35 #include "gc_implementation/g1/g1_globals.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6633
diff changeset
36 #endif // INCLUDE_ALL_GCS
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
37 #ifdef COMPILER1
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
38 #include "c1/c1_globals.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
39 #endif
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
40 #ifdef GRAAL
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
41 #include "graal/graalGlobals.hpp"
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
42 #endif
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
43 #ifdef COMPILER2
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
44 #include "opto/c2_globals.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
45 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
46 #ifdef SHARK
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
47 #include "shark/shark_globals.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1768
diff changeset
48 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 RUNTIME_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
a61af66fc99e Initial load
duke
parents:
diff changeset
51 MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, \
4088
358eca91be48 7116730: Revert 7116481: Commercial features in Hotspot must be gated by a switch
phh
parents: 4087
diff changeset
52 MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_EXPERIMENTAL_FLAG, \
358eca91be48 7116730: Revert 7116481: Commercial features in Hotspot must be gated by a switch
phh
parents: 4087
diff changeset
53 MATERIALIZE_NOTPRODUCT_FLAG, \
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
54 MATERIALIZE_MANAGEABLE_FLAG, MATERIALIZE_PRODUCT_RW_FLAG, \
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
55 MATERIALIZE_LP64_PRODUCT_FLAG)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 RUNTIME_OS_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, \
a61af66fc99e Initial load
duke
parents:
diff changeset
58 MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, \
a61af66fc99e Initial load
duke
parents:
diff changeset
59 MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_NOTPRODUCT_FLAG)
a61af66fc99e Initial load
duke
parents:
diff changeset
60
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
61 ARCH_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
62 MATERIALIZE_DIAGNOSTIC_FLAG, MATERIALIZE_EXPERIMENTAL_FLAG, \
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
63 MATERIALIZE_NOTPRODUCT_FLAG)
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
64
4107
cd00eaeebef6 7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents: 4088
diff changeset
65 MATERIALIZE_FLAGS_EXT
cd00eaeebef6 7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents: 4088
diff changeset
66
cd00eaeebef6 7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents: 4088
diff changeset
67
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
68 void Flag::check_writable() {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
69 if (is_constant_in_binary()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
70 fatal(err_msg("flag is constant: %s", _name));
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
71 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
72 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
73
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
74 bool Flag::is_bool() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
75 return strcmp(_type, "bool") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
76 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
77
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
78 bool Flag::get_bool() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
79 return *((bool*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
80 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
81
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
82 void Flag::set_bool(bool value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
83 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
84 *((bool*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
85 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
86
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
87 bool Flag::is_intx() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
88 return strcmp(_type, "intx") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
89 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
90
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
91 intx Flag::get_intx() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
92 return *((intx*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
93 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
94
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
95 void Flag::set_intx(intx value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
96 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
97 *((intx*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
98 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
99
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
100 bool Flag::is_uintx() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
101 return strcmp(_type, "uintx") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
102 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
103
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
104 uintx Flag::get_uintx() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
105 return *((uintx*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
106 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
107
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
108 void Flag::set_uintx(uintx value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
109 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
110 *((uintx*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
111 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
112
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
113 bool Flag::is_uint64_t() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
114 return strcmp(_type, "uint64_t") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
115 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
116
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
117 uint64_t Flag::get_uint64_t() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
118 return *((uint64_t*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
119 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
120
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
121 void Flag::set_uint64_t(uint64_t value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
122 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
123 *((uint64_t*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
124 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
125
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
126 bool Flag::is_double() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
127 return strcmp(_type, "double") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
128 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
129
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
130 double Flag::get_double() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
131 return *((double*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
132 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
133
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
134 void Flag::set_double(double value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
135 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
136 *((double*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
137 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
138
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
139 bool Flag::is_ccstr() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
140 return strcmp(_type, "ccstr") == 0 || strcmp(_type, "ccstrlist") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
141 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
142
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
143 bool Flag::ccstr_accumulates() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
144 return strcmp(_type, "ccstrlist") == 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
145 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
146
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
147 ccstr Flag::get_ccstr() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
148 return *((ccstr*) _addr);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
149 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
150
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
151 void Flag::set_ccstr(ccstr value) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
152 check_writable();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
153 *((ccstr*) _addr) = value;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
154 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
155
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
156
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
157 Flag::Flags Flag::get_origin() {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
158 return Flags(_flags & VALUE_ORIGIN_MASK);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
159 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
160
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
161 void Flag::set_origin(Flags origin) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
162 assert((origin & VALUE_ORIGIN_MASK) == origin, "sanity");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
163 _flags = Flags((_flags & ~VALUE_ORIGIN_MASK) | origin);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
164 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
165
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
166 bool Flag::is_default() {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
167 return (get_origin() == DEFAULT);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
168 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
169
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
170 bool Flag::is_ergonomic() {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
171 return (get_origin() == ERGONOMIC);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
172 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
173
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
174 bool Flag::is_command_line() {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
175 return (get_origin() == COMMAND_LINE);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
176 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
177
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
178 bool Flag::is_product() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
179 return (_flags & KIND_PRODUCT) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
180 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
181
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
182 bool Flag::is_manageable() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
183 return (_flags & KIND_MANAGEABLE) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
184 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
185
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
186 bool Flag::is_diagnostic() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
187 return (_flags & KIND_DIAGNOSTIC) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
188 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
189
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
190 bool Flag::is_experimental() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
191 return (_flags & KIND_EXPERIMENTAL) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
192 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
193
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
194 bool Flag::is_notproduct() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
195 return (_flags & KIND_NOT_PRODUCT) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
196 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
197
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
198 bool Flag::is_develop() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
199 return (_flags & KIND_DEVELOP) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
200 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
201
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
202 bool Flag::is_read_write() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
203 return (_flags & KIND_READ_WRITE) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
204 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
205
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
206 bool Flag::is_commercial() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
207 return (_flags & KIND_COMMERCIAL) != 0;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
208 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
209
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
210 /**
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
211 * Returns if this flag is a constant in the binary. Right now this is
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
212 * true for notproduct and develop flags in product builds.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
213 */
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
214 bool Flag::is_constant_in_binary() const {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
215 #ifdef PRODUCT
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
216 return is_notproduct() || is_develop();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
217 #else
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
218 return false;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
219 #endif
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
220 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
221
0
a61af66fc99e Initial load
duke
parents:
diff changeset
222 bool Flag::is_unlocker() const {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
223 return strcmp(_name, "UnlockDiagnosticVMOptions") == 0 ||
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
224 strcmp(_name, "UnlockExperimentalVMOptions") == 0 ||
4107
cd00eaeebef6 7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents: 4088
diff changeset
225 is_unlocker_ext();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
226 }
a61af66fc99e Initial load
duke
parents:
diff changeset
227
a61af66fc99e Initial load
duke
parents:
diff changeset
228 bool Flag::is_unlocked() const {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
229 if (is_diagnostic()) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
230 return UnlockDiagnosticVMOptions;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
231 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
232 if (is_experimental()) {
350
d28aa69f0959 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 342
diff changeset
233 return UnlockExperimentalVMOptions;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
234 }
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
235 return is_unlocked_ext();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
236 }
a61af66fc99e Initial load
duke
parents:
diff changeset
237
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
238 // Get custom message for this locked flag, or return NULL if
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
239 // none is available.
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
240 void Flag::get_locked_message(char* buf, int buflen) const {
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
241 get_locked_message_ext(buf, buflen);
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
242 }
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
243
0
a61af66fc99e Initial load
duke
parents:
diff changeset
244 bool Flag::is_writeable() const {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
245 return is_manageable() || (is_product() && is_read_write()) || is_writeable_ext();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
246 }
a61af66fc99e Initial load
duke
parents:
diff changeset
247
4715
6c995c08526c 7122880: Extend vendor-specific command interface to include manageable switches
phh
parents: 4107
diff changeset
248 // All flags except "manageable" are assumed to be internal flags.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
249 // Long term, we need to define a mechanism to specify which flags
a61af66fc99e Initial load
duke
parents:
diff changeset
250 // are external/stable and change this function accordingly.
a61af66fc99e Initial load
duke
parents:
diff changeset
251 bool Flag::is_external() const {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
252 return is_manageable() || is_external_ext();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
253 }
a61af66fc99e Initial load
duke
parents:
diff changeset
254
4715
6c995c08526c 7122880: Extend vendor-specific command interface to include manageable switches
phh
parents: 4107
diff changeset
255
0
a61af66fc99e Initial load
duke
parents:
diff changeset
256 // Length of format string (e.g. "%.1234s") for printing ccstr below
a61af66fc99e Initial load
duke
parents:
diff changeset
257 #define FORMAT_BUFFER_LEN 16
a61af66fc99e Initial load
duke
parents:
diff changeset
258
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
259 void Flag::print_on(outputStream* st, bool withComments) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
260 // Don't print notproduct and develop flags in a product build.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
261 if (is_constant_in_binary()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
262 return;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
263 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
264
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
265 st->print("%9s %-40s %c= ", _type, _name, (!is_default() ? ':' : ' '));
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
266
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
267 if (is_bool()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
268 st->print("%-16s", get_bool() ? "true" : "false");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
269 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
270 if (is_intx()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
271 st->print("%-16ld", get_intx());
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
272 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
273 if (is_uintx()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
274 st->print("%-16lu", get_uintx());
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
275 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
276 if (is_uint64_t()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
277 st->print("%-16lu", get_uint64_t());
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
278 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
279 if (is_double()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
280 st->print("%-16f", get_double());
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
281 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
282 if (is_ccstr()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
283 const char* cp = get_ccstr();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
284 if (cp != NULL) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
285 const char* eol;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
286 while ((eol = strchr(cp, '\n')) != NULL) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
287 char format_buffer[FORMAT_BUFFER_LEN];
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
288 size_t llen = pointer_delta(eol, cp, sizeof(char));
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
289 jio_snprintf(format_buffer, FORMAT_BUFFER_LEN,
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
290 "%%." SIZE_FORMAT "s", llen);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
291 st->print(format_buffer, cp);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
292 st->cr();
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
293 cp = eol+1;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
294 st->print("%5s %-35s += ", "", _name);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
295 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
296 st->print("%-16s", cp);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
297 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
298 else st->print("%-16s", "");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
299 }
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
300
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
301 st->print("%-20");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
302 print_kind(st);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
303
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
304 if (withComments) {
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
305 #ifndef PRODUCT
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
306 st->print("%s", _doc);
1768
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
307 #endif
6ee479178066 6979444: add command line option to print command line flags descriptions
ikrylov
parents: 1692
diff changeset
308 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
309 st->cr();
a61af66fc99e Initial load
duke
parents:
diff changeset
310 }
a61af66fc99e Initial load
duke
parents:
diff changeset
311
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
312 void Flag::print_kind(outputStream* st) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
313 struct Data {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
314 int flag;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
315 const char* name;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
316 };
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
317
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
318 Data data[] = {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
319 { KIND_C1, "C1" },
12355
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
320 { KIND_GRAAL, "Graal" },
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
321 { KIND_C2, "C2" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
322 { KIND_ARCH, "ARCH" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
323 { KIND_SHARK, "SHARK" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
324 { KIND_PLATFORM_DEPENDENT, "pd" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
325 { KIND_PRODUCT, "product" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
326 { KIND_MANAGEABLE, "manageable" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
327 { KIND_DIAGNOSTIC, "diagnostic" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
328 { KIND_NOT_PRODUCT, "notproduct" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
329 { KIND_DEVELOP, "develop" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
330 { KIND_LP64_PRODUCT, "lp64_product" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
331 { KIND_READ_WRITE, "rw" },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
332 { -1, "" }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
333 };
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
334
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
335 if ((_flags & KIND_MASK) != 0) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
336 st->print("{");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
337 bool is_first = true;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
338
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
339 for (int i = 0; data[i].flag != -1; i++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
340 Data d = data[i];
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
341 if ((_flags & d.flag) != 0) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
342 if (is_first) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
343 is_first = false;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
344 } else {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
345 st->print(" ");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
346 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
347 st->print(d.name);
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
348 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
349 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
350
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
351 st->print("}");
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
352 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
353 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
354
0
a61af66fc99e Initial load
duke
parents:
diff changeset
355 void Flag::print_as_flag(outputStream* st) {
a61af66fc99e Initial load
duke
parents:
diff changeset
356 if (is_bool()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
357 st->print("-XX:%s%s", get_bool() ? "+" : "-", _name);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
358 } else if (is_intx()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
359 st->print("-XX:%s=" INTX_FORMAT, _name, get_intx());
0
a61af66fc99e Initial load
duke
parents:
diff changeset
360 } else if (is_uintx()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
361 st->print("-XX:%s=" UINTX_FORMAT, _name, get_uintx());
1067
ba7ea42fc66e 6898160: Need serviceability support for new vm argument type 'uint64_t'
phh
parents: 1064
diff changeset
362 } else if (is_uint64_t()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
363 st->print("-XX:%s=" UINT64_FORMAT, _name, get_uint64_t());
6049
f47478089efc 7167069: 6 VM flags crash the VM when queried via jinfo
brutisso
parents: 5947
diff changeset
364 } else if (is_double()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
365 st->print("-XX:%s=%f", _name, get_double());
0
a61af66fc99e Initial load
duke
parents:
diff changeset
366 } else if (is_ccstr()) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
367 st->print("-XX:%s=", _name);
103
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
368 const char* cp = get_ccstr();
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
369 if (cp != NULL) {
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
370 // Need to turn embedded '\n's back into separate arguments
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
371 // Not so efficient to print one character at a time,
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
372 // but the choice is to do the transformation to a buffer
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
373 // and print that. And this need not be efficient.
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
374 for (; *cp != '\0'; cp += 1) {
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
375 switch (*cp) {
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
376 default:
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
377 st->print("%c", *cp);
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
378 break;
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
379 case '\n':
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
380 st->print(" -XX:%s=", _name);
103
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
381 break;
38a50dd839cf 6619271: The -Xprintflags causes the VM to segv
never
parents: 13
diff changeset
382 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
383 }
a61af66fc99e Initial load
duke
parents:
diff changeset
384 }
a61af66fc99e Initial load
duke
parents:
diff changeset
385 } else {
a61af66fc99e Initial load
duke
parents:
diff changeset
386 ShouldNotReachHere();
a61af66fc99e Initial load
duke
parents:
diff changeset
387 }
a61af66fc99e Initial load
duke
parents:
diff changeset
388 }
a61af66fc99e Initial load
duke
parents:
diff changeset
389
a61af66fc99e Initial load
duke
parents:
diff changeset
390 // 4991491 do not "optimize out" the was_set false values: omitting them
a61af66fc99e Initial load
duke
parents:
diff changeset
391 // tickles a Microsoft compiler bug causing flagTable to be malformed
a61af66fc99e Initial load
duke
parents:
diff changeset
392
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
393 #define NAME(name) NOT_PRODUCT(&name) PRODUCT_ONLY(&CONST_##name)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
394
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
395 #define RUNTIME_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_PRODUCT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
396 #define RUNTIME_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
397 #define RUNTIME_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_DIAGNOSTIC) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
398 #define RUNTIME_EXPERIMENTAL_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_EXPERIMENTAL) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
399 #define RUNTIME_MANAGEABLE_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_MANAGEABLE) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
400 #define RUNTIME_PRODUCT_RW_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_PRODUCT | Flag::KIND_READ_WRITE) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
401 #define RUNTIME_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_DEVELOP) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
402 #define RUNTIME_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
403 #define RUNTIME_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_NOT_PRODUCT) },
0
a61af66fc99e Initial load
duke
parents:
diff changeset
404
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
405 #ifdef _LP64
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
406 #define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_LP64_PRODUCT) },
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
407 #else
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
408 #define RUNTIME_LP64_PRODUCT_FLAG_STRUCT(type, name, value, doc) /* flag is constant */
113
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
409 #endif // _LP64
ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
coleenp
parents: 103
diff changeset
410
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
411 #define C1_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_PRODUCT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
412 #define C1_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
413 #define C1_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DIAGNOSTIC) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
414 #define C1_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
415 #define C1_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
416 #define C1_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C1 | Flag::KIND_NOT_PRODUCT) },
0
a61af66fc99e Initial load
duke
parents:
diff changeset
417
12355
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
418 #define GRAAL_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_GRAAL | Flag::KIND_PRODUCT) },
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
419 #define GRAAL_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_GRAAL | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
420 #define GRAAL_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_GRAAL | Flag::KIND_DEVELOP) },
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
421 #define GRAAL_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_GRAAL | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
cefad50507d8 Merge with hs25-b53
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 11173 12322
diff changeset
422 #define GRAAL_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_GRAAL | Flag::KIND_NOT_PRODUCT) },
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
423
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
424 #define C2_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
425 #define C2_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
426 #define C2_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DIAGNOSTIC) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
427 #define C2_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_EXPERIMENTAL) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
428 #define C2_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
429 #define C2_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
430 #define C2_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_C2 | Flag::KIND_NOT_PRODUCT) },
0
a61af66fc99e Initial load
duke
parents:
diff changeset
431
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
432 #define ARCH_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_PRODUCT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
433 #define ARCH_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DIAGNOSTIC) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
434 #define ARCH_EXPERIMENTAL_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_EXPERIMENTAL) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
435 #define ARCH_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_DEVELOP) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
436 #define ARCH_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_ARCH | Flag::KIND_NOT_PRODUCT) },
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
437
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
438 #define SHARK_PRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_PRODUCT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
439 #define SHARK_PD_PRODUCT_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_PRODUCT | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
440 #define SHARK_DIAGNOSTIC_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), &name, NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DIAGNOSTIC) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
441 #define SHARK_DEVELOP_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DEVELOP) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
442 #define SHARK_PD_DEVELOP_FLAG_STRUCT( type, name, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_DEVELOP | Flag::KIND_PLATFORM_DEPENDENT) },
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
443 #define SHARK_NOTPRODUCT_FLAG_STRUCT( type, name, value, doc) { #type, XSTR(name), NAME(name), NOT_PRODUCT_ARG(doc) Flag::Flags(Flag::DEFAULT | Flag::KIND_SHARK | Flag::KIND_NOT_PRODUCT) },
0
a61af66fc99e Initial load
duke
parents:
diff changeset
444
a61af66fc99e Initial load
duke
parents:
diff changeset
445 static Flag flagTable[] = {
4088
358eca91be48 7116730: Revert 7116481: Commercial features in Hotspot must be gated by a switch
phh
parents: 4087
diff changeset
446 RUNTIME_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_EXPERIMENTAL_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT, RUNTIME_LP64_PRODUCT_FLAG_STRUCT)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
447 RUNTIME_OS_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT)
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6633
diff changeset
448 #if INCLUDE_ALL_GCS
350
d28aa69f0959 6618726: Introduce -XX:+UnlockExperimentalVMOptions flag
ysr
parents: 342
diff changeset
449 G1_FLAGS(RUNTIME_DEVELOP_FLAG_STRUCT, RUNTIME_PD_DEVELOP_FLAG_STRUCT, RUNTIME_PRODUCT_FLAG_STRUCT, RUNTIME_PD_PRODUCT_FLAG_STRUCT, RUNTIME_DIAGNOSTIC_FLAG_STRUCT, RUNTIME_EXPERIMENTAL_FLAG_STRUCT, RUNTIME_NOTPRODUCT_FLAG_STRUCT, RUNTIME_MANAGEABLE_FLAG_STRUCT, RUNTIME_PRODUCT_RW_FLAG_STRUCT)
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6633
diff changeset
450 #endif // INCLUDE_ALL_GCS
0
a61af66fc99e Initial load
duke
parents:
diff changeset
451 #ifdef COMPILER1
12160
f98f5d48f511 7199175: JSR 292: C1 needs patching when invokedynamic/invokehandle call site is not linked
roland
parents: 11070
diff changeset
452 C1_FLAGS(C1_DEVELOP_FLAG_STRUCT, C1_PD_DEVELOP_FLAG_STRUCT, C1_PRODUCT_FLAG_STRUCT, C1_PD_PRODUCT_FLAG_STRUCT, C1_DIAGNOSTIC_FLAG_STRUCT, C1_NOTPRODUCT_FLAG_STRUCT)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
453 #endif
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
454 #ifdef GRAAL
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
455 GRAAL_FLAGS(GRAAL_DEVELOP_FLAG_STRUCT, GRAAL_PD_DEVELOP_FLAG_STRUCT, GRAAL_PRODUCT_FLAG_STRUCT, GRAAL_PD_PRODUCT_FLAG_STRUCT, GRAAL_NOTPRODUCT_FLAG_STRUCT)
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6633
diff changeset
456 #endif
0
a61af66fc99e Initial load
duke
parents:
diff changeset
457 #ifdef COMPILER2
1080
7c57aead6d3e 6892658: C2 should optimize some stringbuilder patterns
never
parents: 1067
diff changeset
458 C2_FLAGS(C2_DEVELOP_FLAG_STRUCT, C2_PD_DEVELOP_FLAG_STRUCT, C2_PRODUCT_FLAG_STRUCT, C2_PD_PRODUCT_FLAG_STRUCT, C2_DIAGNOSTIC_FLAG_STRUCT, C2_EXPERIMENTAL_FLAG_STRUCT, C2_NOTPRODUCT_FLAG_STRUCT)
0
a61af66fc99e Initial load
duke
parents:
diff changeset
459 #endif
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1552
diff changeset
460 #ifdef SHARK
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1552
diff changeset
461 SHARK_FLAGS(SHARK_DEVELOP_FLAG_STRUCT, SHARK_PD_DEVELOP_FLAG_STRUCT, SHARK_PRODUCT_FLAG_STRUCT, SHARK_PD_PRODUCT_FLAG_STRUCT, SHARK_DIAGNOSTIC_FLAG_STRUCT, SHARK_NOTPRODUCT_FLAG_STRUCT)
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents: 1552
diff changeset
462 #endif
6633
a5dd6e3ef9f3 6677625: Move platform specific flags from globals.hpp to globals_<arch>.hpp
twisti
parents: 6197
diff changeset
463 ARCH_FLAGS(ARCH_DEVELOP_FLAG_STRUCT, ARCH_PRODUCT_FLAG_STRUCT, ARCH_DIAGNOSTIC_FLAG_STRUCT, ARCH_EXPERIMENTAL_FLAG_STRUCT, ARCH_NOTPRODUCT_FLAG_STRUCT)
4107
cd00eaeebef6 7117389: Add a framework for vendor-specific command line switch extensions to Hotspot
phh
parents: 4088
diff changeset
464 FLAGTABLE_EXT
0
a61af66fc99e Initial load
duke
parents:
diff changeset
465 {0, NULL, NULL}
a61af66fc99e Initial load
duke
parents:
diff changeset
466 };
a61af66fc99e Initial load
duke
parents:
diff changeset
467
a61af66fc99e Initial load
duke
parents:
diff changeset
468 Flag* Flag::flags = flagTable;
a61af66fc99e Initial load
duke
parents:
diff changeset
469 size_t Flag::numFlags = (sizeof(flagTable) / sizeof(Flag));
a61af66fc99e Initial load
duke
parents:
diff changeset
470
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
471 inline bool str_equal(const char* s, const char* q, size_t len) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
472 // s is null terminated, q is not!
a61af66fc99e Initial load
duke
parents:
diff changeset
473 if (strlen(s) != (unsigned int) len) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
474 return strncmp(s, q, len) == 0;
a61af66fc99e Initial load
duke
parents:
diff changeset
475 }
a61af66fc99e Initial load
duke
parents:
diff changeset
476
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
477 // Search the flag table for a named flag
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
478 Flag* Flag::find_flag(const char* name, size_t length, bool allow_locked) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
479 for (Flag* current = &flagTable[0]; current->_name != NULL; current++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
480 if (str_equal(current->_name, name, length)) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
481 // Found a matching entry.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
482 // Don't report notproduct and develop flags in product builds.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
483 if (current->is_constant_in_binary()) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
484 return NULL;
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
485 }
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
486 // Report locked flags only if allowed.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
487 if (!(current->is_unlocked() || current->is_unlocker())) {
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
488 if (!allow_locked) {
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
489 // disable use of locked flags, e.g. diagnostic, experimental,
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
490 // commercial... until they are explicitly unlocked
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
491 return NULL;
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
492 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
493 }
a61af66fc99e Initial load
duke
parents:
diff changeset
494 return current;
a61af66fc99e Initial load
duke
parents:
diff changeset
495 }
a61af66fc99e Initial load
duke
parents:
diff changeset
496 }
5947
80fe40862b02 7144328: Improper commandlines for -XX:+-UnlockCommercialFeatures require proper warning/error messages
jmelvin
parents: 4773
diff changeset
497 // Flag name is not in the flag table
0
a61af66fc99e Initial load
duke
parents:
diff changeset
498 return NULL;
a61af66fc99e Initial load
duke
parents:
diff changeset
499 }
a61af66fc99e Initial load
duke
parents:
diff changeset
500
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
501 // Compute string similarity based on Dice's coefficient
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
502 static float str_similar(const char* str1, const char* str2, size_t len2) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
503 int len1 = (int) strlen(str1);
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
504 int total = len1 + (int) len2;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
505
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
506 int hit = 0;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
507
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
508 for (int i = 0; i < len1 -1; ++i) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
509 for (int j = 0; j < (int) len2 -1; ++j) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
510 if ((str1[i] == str2[j]) && (str1[i+1] == str2[j+1])) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
511 ++hit;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
512 break;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
513 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
514 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
515 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
516
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
517 return 2.0f * (float) hit / (float) total;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
518 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
519
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
520 Flag* Flag::fuzzy_match(const char* name, size_t length, bool allow_locked) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
521 float VMOptionsFuzzyMatchSimilarity = 0.7f;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
522 Flag* match = NULL;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
523 float score;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
524 float max_score = -1;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
525
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
526 for (Flag* current = &flagTable[0]; current->_name != NULL; current++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
527 score = str_similar(current->_name, name, length);
11070
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
528 if (score > max_score) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
529 max_score = score;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
530 match = current;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
531 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
532 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
533
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
534 if (!(match->is_unlocked() || match->is_unlocker())) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
535 if (!allow_locked) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
536 return NULL;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
537 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
538 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
539
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
540 if (max_score < VMOptionsFuzzyMatchSimilarity) {
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
541 return NULL;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
542 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
543
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
544 return match;
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
545 }
6e3634222155 8017611: Auto corrector for mistyped vm options
tamao
parents: 11028
diff changeset
546
0
a61af66fc99e Initial load
duke
parents:
diff changeset
547 // Returns the address of the index'th element
a61af66fc99e Initial load
duke
parents:
diff changeset
548 static Flag* address_of_flag(CommandLineFlagWithType flag) {
a61af66fc99e Initial load
duke
parents:
diff changeset
549 assert((size_t)flag < Flag::numFlags, "bad command line flag index");
a61af66fc99e Initial load
duke
parents:
diff changeset
550 return &Flag::flags[flag];
a61af66fc99e Initial load
duke
parents:
diff changeset
551 }
a61af66fc99e Initial load
duke
parents:
diff changeset
552
a61af66fc99e Initial load
duke
parents:
diff changeset
553 bool CommandLineFlagsEx::is_default(CommandLineFlag flag) {
a61af66fc99e Initial load
duke
parents:
diff changeset
554 assert((size_t)flag < Flag::numFlags, "bad command line flag index");
a61af66fc99e Initial load
duke
parents:
diff changeset
555 Flag* f = &Flag::flags[flag];
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
556 return f->is_default();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
557 }
a61af66fc99e Initial load
duke
parents:
diff changeset
558
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
559 bool CommandLineFlagsEx::is_ergo(CommandLineFlag flag) {
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
560 assert((size_t)flag < Flag::numFlags, "bad command line flag index");
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
561 Flag* f = &Flag::flags[flag];
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
562 return f->is_ergonomic();
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
563 }
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
564
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
565 bool CommandLineFlagsEx::is_cmdline(CommandLineFlag flag) {
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
566 assert((size_t)flag < Flag::numFlags, "bad command line flag index");
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
567 Flag* f = &Flag::flags[flag];
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
568 return f->is_command_line();
13
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
569 }
183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO
jmasa
parents: 0
diff changeset
570
0
a61af66fc99e Initial load
duke
parents:
diff changeset
571 bool CommandLineFlags::wasSetOnCmdline(const char* name, bool* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
572 Flag* result = Flag::find_flag((char*)name, strlen(name));
a61af66fc99e Initial load
duke
parents:
diff changeset
573 if (result == NULL) return false;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
574 *value = result->is_command_line();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
575 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
576 }
a61af66fc99e Initial load
duke
parents:
diff changeset
577
a61af66fc99e Initial load
duke
parents:
diff changeset
578 bool CommandLineFlags::boolAt(char* name, size_t len, bool* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
579 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
580 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
581 if (!result->is_bool()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
582 *value = result->get_bool();
a61af66fc99e Initial load
duke
parents:
diff changeset
583 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
584 }
a61af66fc99e Initial load
duke
parents:
diff changeset
585
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
586 bool CommandLineFlags::boolAtPut(char* name, size_t len, bool* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
587 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
588 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
589 if (!result->is_bool()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
590 bool old_value = result->get_bool();
a61af66fc99e Initial load
duke
parents:
diff changeset
591 result->set_bool(*value);
a61af66fc99e Initial load
duke
parents:
diff changeset
592 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
593 result->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
594 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
595 }
a61af66fc99e Initial load
duke
parents:
diff changeset
596
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
597 void CommandLineFlagsEx::boolAtPut(CommandLineFlagWithType flag, bool value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
598 Flag* faddr = address_of_flag(flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
599 guarantee(faddr != NULL && faddr->is_bool(), "wrong flag type");
a61af66fc99e Initial load
duke
parents:
diff changeset
600 faddr->set_bool(value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
601 faddr->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
602 }
a61af66fc99e Initial load
duke
parents:
diff changeset
603
a61af66fc99e Initial load
duke
parents:
diff changeset
604 bool CommandLineFlags::intxAt(char* name, size_t len, intx* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
605 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
606 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
607 if (!result->is_intx()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
608 *value = result->get_intx();
a61af66fc99e Initial load
duke
parents:
diff changeset
609 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
610 }
a61af66fc99e Initial load
duke
parents:
diff changeset
611
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
612 bool CommandLineFlags::intxAtPut(char* name, size_t len, intx* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
613 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
614 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
615 if (!result->is_intx()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
616 intx old_value = result->get_intx();
a61af66fc99e Initial load
duke
parents:
diff changeset
617 result->set_intx(*value);
a61af66fc99e Initial load
duke
parents:
diff changeset
618 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
619 result->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
620 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
621 }
a61af66fc99e Initial load
duke
parents:
diff changeset
622
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
623 void CommandLineFlagsEx::intxAtPut(CommandLineFlagWithType flag, intx value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
624 Flag* faddr = address_of_flag(flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
625 guarantee(faddr != NULL && faddr->is_intx(), "wrong flag type");
a61af66fc99e Initial load
duke
parents:
diff changeset
626 faddr->set_intx(value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
627 faddr->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
628 }
a61af66fc99e Initial load
duke
parents:
diff changeset
629
a61af66fc99e Initial load
duke
parents:
diff changeset
630 bool CommandLineFlags::uintxAt(char* name, size_t len, uintx* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
631 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
632 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
633 if (!result->is_uintx()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
634 *value = result->get_uintx();
a61af66fc99e Initial load
duke
parents:
diff changeset
635 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
636 }
a61af66fc99e Initial load
duke
parents:
diff changeset
637
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
638 bool CommandLineFlags::uintxAtPut(char* name, size_t len, uintx* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
639 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
640 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
641 if (!result->is_uintx()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
642 uintx old_value = result->get_uintx();
a61af66fc99e Initial load
duke
parents:
diff changeset
643 result->set_uintx(*value);
a61af66fc99e Initial load
duke
parents:
diff changeset
644 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
645 result->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
646 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
647 }
a61af66fc99e Initial load
duke
parents:
diff changeset
648
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
649 void CommandLineFlagsEx::uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
650 Flag* faddr = address_of_flag(flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
651 guarantee(faddr != NULL && faddr->is_uintx(), "wrong flag type");
a61af66fc99e Initial load
duke
parents:
diff changeset
652 faddr->set_uintx(value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
653 faddr->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
654 }
a61af66fc99e Initial load
duke
parents:
diff changeset
655
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
656 bool CommandLineFlags::uint64_tAt(char* name, size_t len, uint64_t* value) {
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
657 Flag* result = Flag::find_flag(name, len);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
658 if (result == NULL) return false;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
659 if (!result->is_uint64_t()) return false;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
660 *value = result->get_uint64_t();
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
661 return true;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
662 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
663
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
664 bool CommandLineFlags::uint64_tAtPut(char* name, size_t len, uint64_t* value, Flag::Flags origin) {
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
665 Flag* result = Flag::find_flag(name, len);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
666 if (result == NULL) return false;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
667 if (!result->is_uint64_t()) return false;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
668 uint64_t old_value = result->get_uint64_t();
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
669 result->set_uint64_t(*value);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
670 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
671 result->set_origin(origin);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
672 return true;
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
673 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
674
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
675 void CommandLineFlagsEx::uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin) {
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
676 Flag* faddr = address_of_flag(flag);
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
677 guarantee(faddr != NULL && faddr->is_uint64_t(), "wrong flag type");
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
678 faddr->set_uint64_t(value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
679 faddr->set_origin(origin);
1064
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
680 }
473cce303f13 6887571: Increase default heap config sizes
phh
parents: 372
diff changeset
681
0
a61af66fc99e Initial load
duke
parents:
diff changeset
682 bool CommandLineFlags::doubleAt(char* name, size_t len, double* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
683 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
684 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
685 if (!result->is_double()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
686 *value = result->get_double();
a61af66fc99e Initial load
duke
parents:
diff changeset
687 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
688 }
a61af66fc99e Initial load
duke
parents:
diff changeset
689
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
690 bool CommandLineFlags::doubleAtPut(char* name, size_t len, double* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
691 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
692 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
693 if (!result->is_double()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
694 double old_value = result->get_double();
a61af66fc99e Initial load
duke
parents:
diff changeset
695 result->set_double(*value);
a61af66fc99e Initial load
duke
parents:
diff changeset
696 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
697 result->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
698 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
699 }
a61af66fc99e Initial load
duke
parents:
diff changeset
700
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
701 void CommandLineFlagsEx::doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
702 Flag* faddr = address_of_flag(flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
703 guarantee(faddr != NULL && faddr->is_double(), "wrong flag type");
a61af66fc99e Initial load
duke
parents:
diff changeset
704 faddr->set_double(value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
705 faddr->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
706 }
a61af66fc99e Initial load
duke
parents:
diff changeset
707
a61af66fc99e Initial load
duke
parents:
diff changeset
708 bool CommandLineFlags::ccstrAt(char* name, size_t len, ccstr* value) {
a61af66fc99e Initial load
duke
parents:
diff changeset
709 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
710 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
711 if (!result->is_ccstr()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
712 *value = result->get_ccstr();
a61af66fc99e Initial load
duke
parents:
diff changeset
713 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
714 }
a61af66fc99e Initial load
duke
parents:
diff changeset
715
a61af66fc99e Initial load
duke
parents:
diff changeset
716 // Contract: Flag will make private copy of the incoming value.
a61af66fc99e Initial load
duke
parents:
diff changeset
717 // Outgoing value is always malloc-ed, and caller MUST call free.
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
718 bool CommandLineFlags::ccstrAtPut(char* name, size_t len, ccstr* value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
719 Flag* result = Flag::find_flag(name, len);
a61af66fc99e Initial load
duke
parents:
diff changeset
720 if (result == NULL) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
721 if (!result->is_ccstr()) return false;
a61af66fc99e Initial load
duke
parents:
diff changeset
722 ccstr old_value = result->get_ccstr();
370
885fe0f95828 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 196
diff changeset
723 char* new_value = NULL;
885fe0f95828 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 196
diff changeset
724 if (*value != NULL) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
725 new_value = NEW_C_HEAP_ARRAY(char, strlen(*value)+1, mtInternal);
370
885fe0f95828 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 196
diff changeset
726 strcpy(new_value, *value);
885fe0f95828 6744783: HotSpot segfaults if given -XX options with an empty string argument
never
parents: 196
diff changeset
727 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
728 result->set_ccstr(new_value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
729 if (result->is_default() && old_value != NULL) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
730 // Prior value is NOT heap allocated, but was a literal constant.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
731 char* old_value_to_free = NEW_C_HEAP_ARRAY(char, strlen(old_value)+1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
732 strcpy(old_value_to_free, old_value);
a61af66fc99e Initial load
duke
parents:
diff changeset
733 old_value = old_value_to_free;
a61af66fc99e Initial load
duke
parents:
diff changeset
734 }
a61af66fc99e Initial load
duke
parents:
diff changeset
735 *value = old_value;
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
736 result->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
737 return true;
a61af66fc99e Initial load
duke
parents:
diff changeset
738 }
a61af66fc99e Initial load
duke
parents:
diff changeset
739
a61af66fc99e Initial load
duke
parents:
diff changeset
740 // Contract: Flag will make private copy of the incoming value.
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
741 void CommandLineFlagsEx::ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
742 Flag* faddr = address_of_flag(flag);
a61af66fc99e Initial load
duke
parents:
diff changeset
743 guarantee(faddr != NULL && faddr->is_ccstr(), "wrong flag type");
a61af66fc99e Initial load
duke
parents:
diff changeset
744 ccstr old_value = faddr->get_ccstr();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
745 char* new_value = NEW_C_HEAP_ARRAY(char, strlen(value)+1, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
746 strcpy(new_value, value);
a61af66fc99e Initial load
duke
parents:
diff changeset
747 faddr->set_ccstr(new_value);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
748 if (!faddr->is_default() && old_value != NULL) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
749 // Prior value is heap allocated so free it.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
750 FREE_C_HEAP_ARRAY(char, old_value, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
751 }
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
752 faddr->set_origin(origin);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
753 }
a61af66fc99e Initial load
duke
parents:
diff changeset
754
a61af66fc99e Initial load
duke
parents:
diff changeset
755 extern "C" {
a61af66fc99e Initial load
duke
parents:
diff changeset
756 static int compare_flags(const void* void_a, const void* void_b) {
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
757 return strcmp((*((Flag**) void_a))->_name, (*((Flag**) void_b))->_name);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
758 }
a61af66fc99e Initial load
duke
parents:
diff changeset
759 }
a61af66fc99e Initial load
duke
parents:
diff changeset
760
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
761 void CommandLineFlags::printSetFlags(outputStream* out) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
762 // Print which flags were set on the command line
a61af66fc99e Initial load
duke
parents:
diff changeset
763 // note: this method is called before the thread structure is in place
a61af66fc99e Initial load
duke
parents:
diff changeset
764 // which means resource allocation cannot be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
765
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
766 // The last entry is the null entry.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
767 const size_t length = Flag::numFlags - 1;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
768
a61af66fc99e Initial load
duke
parents:
diff changeset
769 // Sort
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
770 Flag** array = NEW_C_HEAP_ARRAY(Flag*, length, mtInternal);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
771 for (size_t i = 0; i < length; i++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
772 array[i] = &flagTable[i];
0
a61af66fc99e Initial load
duke
parents:
diff changeset
773 }
a61af66fc99e Initial load
duke
parents:
diff changeset
774 qsort(array, length, sizeof(Flag*), compare_flags);
a61af66fc99e Initial load
duke
parents:
diff changeset
775
a61af66fc99e Initial load
duke
parents:
diff changeset
776 // Print
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
777 for (size_t i = 0; i < length; i++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
778 if (array[i]->get_origin() /* naked field! */) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
779 array[i]->print_as_flag(out);
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
780 out->print(" ");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
781 }
a61af66fc99e Initial load
duke
parents:
diff changeset
782 }
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
783 out->cr();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
784 FREE_C_HEAP_ARRAY(Flag*, array, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
785 }
a61af66fc99e Initial load
duke
parents:
diff changeset
786
a61af66fc99e Initial load
duke
parents:
diff changeset
787 #ifndef PRODUCT
a61af66fc99e Initial load
duke
parents:
diff changeset
788
a61af66fc99e Initial load
duke
parents:
diff changeset
789
a61af66fc99e Initial load
duke
parents:
diff changeset
790 void CommandLineFlags::verify() {
a61af66fc99e Initial load
duke
parents:
diff changeset
791 assert(Arguments::check_vm_args_consistency(), "Some flag settings conflict");
a61af66fc99e Initial load
duke
parents:
diff changeset
792 }
a61af66fc99e Initial load
duke
parents:
diff changeset
793
1150
f62a22282a47 6914622: Print values of all flags for product VM
kvn
parents: 1080
diff changeset
794 #endif // PRODUCT
f62a22282a47 6914622: Print values of all flags for product VM
kvn
parents: 1080
diff changeset
795
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
796 void CommandLineFlags::printFlags(outputStream* out, bool withComments) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
797 // Print the flags sorted by name
a61af66fc99e Initial load
duke
parents:
diff changeset
798 // note: this method is called before the thread structure is in place
a61af66fc99e Initial load
duke
parents:
diff changeset
799 // which means resource allocation cannot be used.
a61af66fc99e Initial load
duke
parents:
diff changeset
800
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
801 // The last entry is the null entry.
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
802 const size_t length = Flag::numFlags - 1;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
803
a61af66fc99e Initial load
duke
parents:
diff changeset
804 // Sort
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
805 Flag** array = NEW_C_HEAP_ARRAY(Flag*, length, mtInternal);
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
806 for (size_t i = 0; i < length; i++) {
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
807 array[i] = &flagTable[i];
0
a61af66fc99e Initial load
duke
parents:
diff changeset
808 }
a61af66fc99e Initial load
duke
parents:
diff changeset
809 qsort(array, length, sizeof(Flag*), compare_flags);
a61af66fc99e Initial load
duke
parents:
diff changeset
810
a61af66fc99e Initial load
duke
parents:
diff changeset
811 // Print
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
812 out->print_cr("[Global flags]");
12322
72b7e96c1922 8024545: make develop and notproduct flag values available in product builds
twisti
parents: 12160
diff changeset
813 for (size_t i = 0; i < length; i++) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
814 if (array[i]->is_unlocked()) {
4773
4f25538b54c9 7120511: Add diagnostic commands
fparain
parents: 4715
diff changeset
815 array[i]->print_on(out, withComments);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
816 }
a61af66fc99e Initial load
duke
parents:
diff changeset
817 }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents: 6049
diff changeset
818 FREE_C_HEAP_ARRAY(Flag*, array, mtInternal);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
819 }