changeset 9168:02a4c08a8777

8216064: -XX:StartFlightRecording:settings= doesn't work properly Reviewed-by: mgronlun
author egahlin
date Fri, 27 Sep 2019 10:27:29 +0800
parents 3dd83d893bfc
children 1258121876f8
files src/share/vm/jfr/dcmd/jfrDcmds.cpp src/share/vm/jfr/jni/jfrJavaCall.cpp src/share/vm/jfr/jni/jfrJavaSupport.cpp
diffstat 3 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/jfr/dcmd/jfrDcmds.cpp	Fri Sep 27 10:09:50 2019 +0800
+++ b/src/share/vm/jfr/dcmd/jfrDcmds.cpp	Fri Sep 27 10:27:29 2019 +0800
@@ -434,7 +434,13 @@
 
   jobjectArray settings = NULL;
   if (_settings.is_set()) {
-    const int length = _settings.value()->array()->length();
+    int length = _settings.value()->array()->length();
+    if (length == 1) {
+      const char* c_str = _settings.value()->array()->at(0);
+      if (strcmp(c_str, "none") == 0) {
+        length = 0;
+      }
+    }
     settings = JfrJavaSupport::new_string_array(length, CHECK);
     assert(settings != NULL, "invariant");
     for (int i = 0; i < length; ++i) {
--- a/src/share/vm/jfr/jni/jfrJavaCall.cpp	Fri Sep 27 10:09:50 2019 +0800
+++ b/src/share/vm/jfr/jni/jfrJavaCall.cpp	Fri Sep 27 10:27:29 2019 +0800
@@ -184,7 +184,7 @@
   }
 }
 
-JfrJavaArguments::JfrJavaArguments(JavaValue* result) : _result(result), _klass(NULL), _name(NULL), _signature(NULL), _array_length(0) {
+JfrJavaArguments::JfrJavaArguments(JavaValue* result) : _result(result), _klass(NULL), _name(NULL), _signature(NULL), _array_length(-1) {
   assert(result != NULL, "invariant");
 }
 
@@ -193,7 +193,7 @@
   _klass(NULL),
   _name(NULL),
   _signature(NULL),
-  _array_length(0) {
+  _array_length(-1) {
   assert(result != NULL, "invariant");
   if (klass_name != NULL) {
     set_klass(klass_name, CHECK);
@@ -210,7 +210,7 @@
   _klass(NULL),
   _name(NULL),
   _signature(NULL),
-  _array_length(0) {
+  _array_length(-1) {
   assert(result != NULL, "invariant");
   if (klass != NULL) {
     set_klass(klass);
--- a/src/share/vm/jfr/jni/jfrJavaSupport.cpp	Fri Sep 27 10:09:50 2019 +0800
+++ b/src/share/vm/jfr/jni/jfrJavaSupport.cpp	Fri Sep 27 10:27:29 2019 +0800
@@ -166,7 +166,7 @@
 
   const int array_length = args->array_length();
 
-  if (array_length > 0) {
+  if (array_length >= 0) {
     array_construction(args, result, klass, array_length, CHECK);
   } else {
     object_construction(args, result, klass, THREAD);