# HG changeset patch # User egahlin # Date 1569551249 -28800 # Node ID 02a4c08a8777e87d5fbabae2e217908681374346 # Parent 3dd83d893bfc6a214048f39d794cda082db885d5 8216064: -XX:StartFlightRecording:settings= doesn't work properly Reviewed-by: mgronlun diff -r 3dd83d893bfc -r 02a4c08a8777 src/share/vm/jfr/dcmd/jfrDcmds.cpp --- 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) { diff -r 3dd83d893bfc -r 02a4c08a8777 src/share/vm/jfr/jni/jfrJavaCall.cpp --- 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); diff -r 3dd83d893bfc -r 02a4c08a8777 src/share/vm/jfr/jni/jfrJavaSupport.cpp --- 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);