comparison src/share/vm/services/attachListener.cpp @ 1067:ba7ea42fc66e

6898160: Need serviceability support for new vm argument type 'uint64_t' Summary: Add serviceability support for uint64_t. Flags of unknown type assert in debug builds and are ignored in product builds. Reviewed-by: never, xlu, mchung, dcubed
author phh
date Wed, 04 Nov 2009 16:49:23 -0500
parents c6c601a0f2d6
children 4ce7240d622c
comparison
equal deleted inserted replaced
1065:c4ecde2f6b3c 1067:ba7ea42fc66e
205 const char* arg1; 205 const char* arg1;
206 if ((arg1 = op->arg(1)) != NULL) { 206 if ((arg1 = op->arg(1)) != NULL) {
207 int tmp; 207 int tmp;
208 int n = sscanf(arg1, "%d", &tmp); 208 int n = sscanf(arg1, "%d", &tmp);
209 if (n != 1) { 209 if (n != 1) {
210 out->print_cr("flag value has to be boolean (1 or 0)"); 210 out->print_cr("flag value must be a boolean (1 or 0)");
211 return JNI_ERR; 211 return JNI_ERR;
212 } 212 }
213 value = (tmp != 0); 213 value = (tmp != 0);
214 } 214 }
215 bool res = CommandLineFlags::boolAtPut((char*)name, &value, ATTACH_ON_DEMAND); 215 bool res = CommandLineFlags::boolAtPut((char*)name, &value, ATTACH_ON_DEMAND);
224 intx value; 224 intx value;
225 const char* arg1; 225 const char* arg1;
226 if ((arg1 = op->arg(1)) != NULL) { 226 if ((arg1 = op->arg(1)) != NULL) {
227 int n = sscanf(arg1, INTX_FORMAT, &value); 227 int n = sscanf(arg1, INTX_FORMAT, &value);
228 if (n != 1) { 228 if (n != 1) {
229 out->print_cr("flag value has to be integer"); 229 out->print_cr("flag value must be an integer");
230 return JNI_ERR; 230 return JNI_ERR;
231 } 231 }
232 } 232 }
233 bool res = CommandLineFlags::intxAtPut((char*)name, &value, ATTACH_ON_DEMAND); 233 bool res = CommandLineFlags::intxAtPut((char*)name, &value, ATTACH_ON_DEMAND);
234 if (! res) { 234 if (! res) {
235 out->print_cr("setting flag %s failed", name); 235 out->print_cr("setting flag %s failed", name);
236 } 236 }
237 237
238 return res? JNI_OK : JNI_ERR; 238 return res? JNI_OK : JNI_ERR;
243 uintx value; 243 uintx value;
244 const char* arg1; 244 const char* arg1;
245 if ((arg1 = op->arg(1)) != NULL) { 245 if ((arg1 = op->arg(1)) != NULL) {
246 int n = sscanf(arg1, UINTX_FORMAT, &value); 246 int n = sscanf(arg1, UINTX_FORMAT, &value);
247 if (n != 1) { 247 if (n != 1) {
248 out->print_cr("flag value has to be integer"); 248 out->print_cr("flag value must be an unsigned integer");
249 return JNI_ERR; 249 return JNI_ERR;
250 } 250 }
251 } 251 }
252 bool res = CommandLineFlags::uintxAtPut((char*)name, &value, ATTACH_ON_DEMAND); 252 bool res = CommandLineFlags::uintxAtPut((char*)name, &value, ATTACH_ON_DEMAND);
253 if (! res) {
254 out->print_cr("setting flag %s failed", name);
255 }
256
257 return res? JNI_OK : JNI_ERR;
258 }
259
260 // set a uint64_t global flag using value from AttachOperation
261 static jint set_uint64_t_flag(const char* name, AttachOperation* op, outputStream* out) {
262 uint64_t value;
263 const char* arg1;
264 if ((arg1 = op->arg(1)) != NULL) {
265 int n = sscanf(arg1, UINT64_FORMAT, &value);
266 if (n != 1) {
267 out->print_cr("flag value must be an unsigned 64-bit integer");
268 return JNI_ERR;
269 }
270 }
271 bool res = CommandLineFlags::uint64_tAtPut((char*)name, &value, ATTACH_ON_DEMAND);
253 if (! res) { 272 if (! res) {
254 out->print_cr("setting flag %s failed", name); 273 out->print_cr("setting flag %s failed", name);
255 } 274 }
256 275
257 return res? JNI_OK : JNI_ERR; 276 return res? JNI_OK : JNI_ERR;
259 278
260 // set a string global flag using value from AttachOperation 279 // set a string global flag using value from AttachOperation
261 static jint set_ccstr_flag(const char* name, AttachOperation* op, outputStream* out) { 280 static jint set_ccstr_flag(const char* name, AttachOperation* op, outputStream* out) {
262 const char* value; 281 const char* value;
263 if ((value = op->arg(1)) == NULL) { 282 if ((value = op->arg(1)) == NULL) {
264 out->print_cr("flag value has to be a string"); 283 out->print_cr("flag value must be a string");
265 return JNI_ERR; 284 return JNI_ERR;
266 } 285 }
267 bool res = CommandLineFlags::ccstrAtPut((char*)name, &value, ATTACH_ON_DEMAND); 286 bool res = CommandLineFlags::ccstrAtPut((char*)name, &value, ATTACH_ON_DEMAND);
268 if (res) { 287 if (res) {
269 FREE_C_HEAP_ARRAY(char, value); 288 FREE_C_HEAP_ARRAY(char, value);
270 } else { 289 } else {
271 out->print_cr("setting flag %s failed", name); 290 out->print_cr("setting flag %s failed", name);
272 } 291 }
289 return set_bool_flag(name, op, out); 308 return set_bool_flag(name, op, out);
290 } else if (f->is_intx()) { 309 } else if (f->is_intx()) {
291 return set_intx_flag(name, op, out); 310 return set_intx_flag(name, op, out);
292 } else if (f->is_uintx()) { 311 } else if (f->is_uintx()) {
293 return set_uintx_flag(name, op, out); 312 return set_uintx_flag(name, op, out);
313 } else if (f->is_uint64_t()) {
314 return set_uint64_t_flag(name, op, out);
294 } else if (f->is_ccstr()) { 315 } else if (f->is_ccstr()) {
295 return set_ccstr_flag(name, op, out); 316 return set_ccstr_flag(name, op, out);
296 } else { 317 } else {
297 ShouldNotReachHere(); 318 ShouldNotReachHere();
298 return JNI_ERR; 319 return JNI_ERR;