< prev index next >

src/share/vm/jfr/dcmd/jfrDcmds.cpp

Print this page
rev 9060 : 8216064: -XX:StartFlightRecording:settings= doesn't work properly
Reviewed-by: mgronlun


 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);


< prev index next >