417 delay = JfrJavaSupport::new_java_lang_Long(_delay.value()._nanotime, CHECK);
418 }
419
420 jobject disk = NULL;
421 if (_disk.is_set()) {
422 disk = JfrJavaSupport::new_java_lang_Boolean(_disk.value(), CHECK);
423 }
424
425 jobject dump_on_exit = NULL;
426 if (_dump_on_exit.is_set()) {
427 dump_on_exit = JfrJavaSupport::new_java_lang_Boolean(_dump_on_exit.value(), CHECK);
428 }
429
430 jobject path_to_gc_roots = NULL;
431 if (_path_to_gc_roots.is_set()) {
432 path_to_gc_roots = JfrJavaSupport::new_java_lang_Boolean(_path_to_gc_roots.value(), CHECK);
433 }
434
435 jobjectArray settings = NULL;
436 if (_settings.is_set()) {
437 const int length = _settings.value()->array()->length();
438 settings = JfrJavaSupport::new_string_array(length, CHECK);
439 assert(settings != NULL, "invariant");
440 for (int i = 0; i < length; ++i) {
441 jobject element = JfrJavaSupport::new_string(_settings.value()->array()->at(i), CHECK);
442 assert(element != NULL, "invariant");
443 JfrJavaSupport::set_array_element(settings, element, i, CHECK);
444 }
445 }
446
447 static const char klass[] = "jdk/jfr/internal/dcmd/DCmdStart";
448 static const char method[] = "execute";
449 static const char signature[] = "(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Long;"
450 "Ljava/lang/Long;Ljava/lang/Boolean;Ljava/lang/String;"
451 "Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Boolean;Ljava/lang/Boolean;)Ljava/lang/String;";
452
453 JfrJavaArguments execute_args(&result, klass, method, signature, CHECK);
454 execute_args.set_receiver(h_dcmd_instance);
455
456 // arguments
457 execute_args.push_jobject(name);
|
417 delay = JfrJavaSupport::new_java_lang_Long(_delay.value()._nanotime, CHECK);
418 }
419
420 jobject disk = NULL;
421 if (_disk.is_set()) {
422 disk = JfrJavaSupport::new_java_lang_Boolean(_disk.value(), CHECK);
423 }
424
425 jobject dump_on_exit = NULL;
426 if (_dump_on_exit.is_set()) {
427 dump_on_exit = JfrJavaSupport::new_java_lang_Boolean(_dump_on_exit.value(), CHECK);
428 }
429
430 jobject path_to_gc_roots = NULL;
431 if (_path_to_gc_roots.is_set()) {
432 path_to_gc_roots = JfrJavaSupport::new_java_lang_Boolean(_path_to_gc_roots.value(), CHECK);
433 }
434
435 jobjectArray settings = NULL;
436 if (_settings.is_set()) {
437 int length = _settings.value()->array()->length();
438 if (length == 1) {
439 const char* c_str = _settings.value()->array()->at(0);
440 if (strcmp(c_str, "none") == 0) {
441 length = 0;
442 }
443 }
444 settings = JfrJavaSupport::new_string_array(length, CHECK);
445 assert(settings != NULL, "invariant");
446 for (int i = 0; i < length; ++i) {
447 jobject element = JfrJavaSupport::new_string(_settings.value()->array()->at(i), CHECK);
448 assert(element != NULL, "invariant");
449 JfrJavaSupport::set_array_element(settings, element, i, CHECK);
450 }
451 }
452
453 static const char klass[] = "jdk/jfr/internal/dcmd/DCmdStart";
454 static const char method[] = "execute";
455 static const char signature[] = "(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Long;"
456 "Ljava/lang/Long;Ljava/lang/Boolean;Ljava/lang/String;"
457 "Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Boolean;Ljava/lang/Boolean;)Ljava/lang/String;";
458
459 JfrJavaArguments execute_args(&result, klass, method, signature, CHECK);
460 execute_args.set_receiver(h_dcmd_instance);
461
462 // arguments
463 execute_args.push_jobject(name);
|