91 void emit_writeable_uint64_t(const char* name, CommandLineFlagWriteable::WriteableType type) {
92 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
93 }
94 void emit_writeable_size_t(const char* name, CommandLineFlagWriteable::WriteableType type) {
95 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
96 }
97 void emit_writeable_double(const char* name, CommandLineFlagWriteable::WriteableType type) {
98 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
99 }
100
101 // Generate code to call emit_writeable_xxx function
102 #define EMIT_WRITEABLE_PRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
103 #define EMIT_WRITEABLE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
104 #define EMIT_WRITEABLE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
105 #define EMIT_WRITEABLE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
106 #define EMIT_WRITEABLE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
107 #define EMIT_WRITEABLE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
108 #define EMIT_WRITEABLE_PD_PRODUCT_FLAG(type, name, doc) ); emit_writeable_##type(#name
109 #define EMIT_WRITEABLE_DEVELOPER_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
110 #define EMIT_WRITEABLE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_writeable_##type(#name
111 #define EMIT_WRITEABLE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
112 #define EMIT_WRITEABLE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
113
114 // Generate type argument to pass into emit_writeable_xxx functions
115 #define EMIT_WRITEABLE(a) , CommandLineFlagWriteable::a
116
117 #define INITIAL_WRITEABLES_SIZE 2
118 GrowableArray<CommandLineFlagWriteable*>* CommandLineFlagWriteableList::_controls = NULL;
119
120 void CommandLineFlagWriteableList::init(void) {
121
122 _controls = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<CommandLineFlagWriteable*>(INITIAL_WRITEABLES_SIZE, true);
123
124 emit_writeable_no(NULL RUNTIME_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
125 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
126 EMIT_WRITEABLE_PRODUCT_FLAG,
127 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
128 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
129 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
130 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
131 EMIT_WRITEABLE_MANAGEABLE_FLAG,
132 EMIT_WRITEABLE_PRODUCT_RW_FLAG,
133 EMIT_WRITEABLE_LP64_PRODUCT_FLAG,
134 IGNORE_RANGE,
135 IGNORE_CONSTRAINT,
136 EMIT_WRITEABLE));
137
138 EMIT_WRITEABLES_FOR_GLOBALS_EXT
139
140 emit_writeable_no(NULL ARCH_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
141 EMIT_WRITEABLE_PRODUCT_FLAG,
142 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
143 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
144 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
145 IGNORE_RANGE,
146 IGNORE_CONSTRAINT,
147 EMIT_WRITEABLE));
148
149 #if INCLUDE_JVMCI
150 emit_writeable_no(NULL JVMCI_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
151 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
152 EMIT_WRITEABLE_PRODUCT_FLAG,
153 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
154 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
155 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
156 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
157 IGNORE_RANGE,
158 IGNORE_CONSTRAINT,
159 EMIT_WRITEABLE));
160 #endif // INCLUDE_JVMCI
161
162 #ifdef COMPILER1
163 emit_writeable_no(NULL C1_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
164 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
165 EMIT_WRITEABLE_PRODUCT_FLAG,
166 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
167 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
168 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
169 IGNORE_RANGE,
170 IGNORE_CONSTRAINT,
171 EMIT_WRITEABLE));
172 #endif // COMPILER1
173
174 #ifdef COMPILER2
175 emit_writeable_no(NULL C2_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
176 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
177 EMIT_WRITEABLE_PRODUCT_FLAG,
178 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
179 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
180 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
181 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
182 IGNORE_RANGE,
183 IGNORE_CONSTRAINT,
184 EMIT_WRITEABLE));
185 #endif // COMPILER2
186
187 #if INCLUDE_ALL_GCS
188 emit_writeable_no(NULL G1_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
189 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
190 EMIT_WRITEABLE_PRODUCT_FLAG,
191 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
192 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
193 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
194 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
195 EMIT_WRITEABLE_MANAGEABLE_FLAG,
196 EMIT_WRITEABLE_PRODUCT_RW_FLAG,
197 IGNORE_RANGE,
198 IGNORE_CONSTRAINT,
199 EMIT_WRITEABLE));
200 #endif // INCLUDE_ALL_GCS
201 }
202
203 CommandLineFlagWriteable* CommandLineFlagWriteableList::find(const char* name) {
204 CommandLineFlagWriteable* found = NULL;
205 for (int i=0; i<length(); i++) {
206 CommandLineFlagWriteable* writeable = at(i);
207 if (strcmp(writeable->name(), name) == 0) {
208 found = writeable;
209 break;
210 }
211 }
212 return found;
|
91 void emit_writeable_uint64_t(const char* name, CommandLineFlagWriteable::WriteableType type) {
92 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
93 }
94 void emit_writeable_size_t(const char* name, CommandLineFlagWriteable::WriteableType type) {
95 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
96 }
97 void emit_writeable_double(const char* name, CommandLineFlagWriteable::WriteableType type) {
98 CommandLineFlagWriteableList::add(new CommandLineFlagWriteable(name, type));
99 }
100
101 // Generate code to call emit_writeable_xxx function
102 #define EMIT_WRITEABLE_PRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
103 #define EMIT_WRITEABLE_COMMERCIAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
104 #define EMIT_WRITEABLE_DIAGNOSTIC_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
105 #define EMIT_WRITEABLE_EXPERIMENTAL_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
106 #define EMIT_WRITEABLE_MANAGEABLE_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
107 #define EMIT_WRITEABLE_PRODUCT_RW_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
108 #define EMIT_WRITEABLE_PD_PRODUCT_FLAG(type, name, doc) ); emit_writeable_##type(#name
109 #define EMIT_WRITEABLE_DEVELOPER_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
110 #define EMIT_WRITEABLE_PD_DEVELOPER_FLAG(type, name, doc) ); emit_writeable_##type(#name
111 #define EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG(type, name, doc) ); emit_writeable_##type(#name
112 #define EMIT_WRITEABLE_NOTPRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
113 #define EMIT_WRITEABLE_LP64_PRODUCT_FLAG(type, name, value, doc) ); emit_writeable_##type(#name
114
115 // Generate type argument to pass into emit_writeable_xxx functions
116 #define EMIT_WRITEABLE(a) , CommandLineFlagWriteable::a
117
118 #define INITIAL_WRITEABLES_SIZE 2
119 GrowableArray<CommandLineFlagWriteable*>* CommandLineFlagWriteableList::_controls = NULL;
120
121 void CommandLineFlagWriteableList::init(void) {
122
123 _controls = new (ResourceObj::C_HEAP, mtArguments) GrowableArray<CommandLineFlagWriteable*>(INITIAL_WRITEABLES_SIZE, true);
124
125 emit_writeable_no(NULL RUNTIME_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
126 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
127 EMIT_WRITEABLE_PRODUCT_FLAG,
128 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
129 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
130 EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG,
131 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
132 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
133 EMIT_WRITEABLE_MANAGEABLE_FLAG,
134 EMIT_WRITEABLE_PRODUCT_RW_FLAG,
135 EMIT_WRITEABLE_LP64_PRODUCT_FLAG,
136 IGNORE_RANGE,
137 IGNORE_CONSTRAINT,
138 EMIT_WRITEABLE));
139
140 EMIT_WRITEABLES_FOR_GLOBALS_EXT
141
142 emit_writeable_no(NULL ARCH_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
143 EMIT_WRITEABLE_PRODUCT_FLAG,
144 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
145 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
146 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
147 IGNORE_RANGE,
148 IGNORE_CONSTRAINT,
149 EMIT_WRITEABLE));
150
151 #if INCLUDE_JVMCI
152 emit_writeable_no(NULL JVMCI_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
153 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
154 EMIT_WRITEABLE_PRODUCT_FLAG,
155 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
156 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
157 EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG,
158 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
159 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
160 IGNORE_RANGE,
161 IGNORE_CONSTRAINT,
162 EMIT_WRITEABLE));
163 #endif // INCLUDE_JVMCI
164
165 #ifdef COMPILER1
166 emit_writeable_no(NULL C1_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
167 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
168 EMIT_WRITEABLE_PRODUCT_FLAG,
169 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
170 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
171 EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG,
172 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
173 IGNORE_RANGE,
174 IGNORE_CONSTRAINT,
175 EMIT_WRITEABLE));
176 #endif // COMPILER1
177
178 #ifdef COMPILER2
179 emit_writeable_no(NULL C2_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
180 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
181 EMIT_WRITEABLE_PRODUCT_FLAG,
182 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
183 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
184 EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG,
185 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
186 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
187 IGNORE_RANGE,
188 IGNORE_CONSTRAINT,
189 EMIT_WRITEABLE));
190 #endif // COMPILER2
191
192 #if INCLUDE_ALL_GCS
193 emit_writeable_no(NULL G1_FLAGS(EMIT_WRITEABLE_DEVELOPER_FLAG,
194 EMIT_WRITEABLE_PD_DEVELOPER_FLAG,
195 EMIT_WRITEABLE_PRODUCT_FLAG,
196 EMIT_WRITEABLE_PD_PRODUCT_FLAG,
197 EMIT_WRITEABLE_DIAGNOSTIC_FLAG,
198 EMIT_WRITEABLE_PD_DIAGNOSTIC_FLAG,
199 EMIT_WRITEABLE_EXPERIMENTAL_FLAG,
200 EMIT_WRITEABLE_NOTPRODUCT_FLAG,
201 EMIT_WRITEABLE_MANAGEABLE_FLAG,
202 EMIT_WRITEABLE_PRODUCT_RW_FLAG,
203 IGNORE_RANGE,
204 IGNORE_CONSTRAINT,
205 EMIT_WRITEABLE));
206 #endif // INCLUDE_ALL_GCS
207 }
208
209 CommandLineFlagWriteable* CommandLineFlagWriteableList::find(const char* name) {
210 CommandLineFlagWriteable* found = NULL;
211 for (int i=0; i<length(); i++) {
212 CommandLineFlagWriteable* writeable = at(i);
213 if (strcmp(writeable->name(), name) == 0) {
214 found = writeable;
215 break;
216 }
217 }
218 return found;
|