8216064: -XX:StartFlightRecording:settings= doesn't work properly

Fri, 27 Sep 2019 10:27:29 +0800

author
egahlin
date
Fri, 27 Sep 2019 10:27:29 +0800
changeset 9883
02a4c08a8777
parent 9882
3dd83d893bfc
child 9884
1258121876f8

8216064: -XX:StartFlightRecording:settings= doesn't work properly
Reviewed-by: mgronlun

src/share/vm/jfr/dcmd/jfrDcmds.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/jni/jfrJavaCall.cpp file | annotate | diff | comparison | revisions
src/share/vm/jfr/jni/jfrJavaSupport.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/jfr/dcmd/jfrDcmds.cpp	Fri Sep 27 10:09:50 2019 +0800
     1.2 +++ b/src/share/vm/jfr/dcmd/jfrDcmds.cpp	Fri Sep 27 10:27:29 2019 +0800
     1.3 @@ -434,7 +434,13 @@
     1.4  
     1.5    jobjectArray settings = NULL;
     1.6    if (_settings.is_set()) {
     1.7 -    const int length = _settings.value()->array()->length();
     1.8 +    int length = _settings.value()->array()->length();
     1.9 +    if (length == 1) {
    1.10 +      const char* c_str = _settings.value()->array()->at(0);
    1.11 +      if (strcmp(c_str, "none") == 0) {
    1.12 +        length = 0;
    1.13 +      }
    1.14 +    }
    1.15      settings = JfrJavaSupport::new_string_array(length, CHECK);
    1.16      assert(settings != NULL, "invariant");
    1.17      for (int i = 0; i < length; ++i) {
     2.1 --- a/src/share/vm/jfr/jni/jfrJavaCall.cpp	Fri Sep 27 10:09:50 2019 +0800
     2.2 +++ b/src/share/vm/jfr/jni/jfrJavaCall.cpp	Fri Sep 27 10:27:29 2019 +0800
     2.3 @@ -184,7 +184,7 @@
     2.4    }
     2.5  }
     2.6  
     2.7 -JfrJavaArguments::JfrJavaArguments(JavaValue* result) : _result(result), _klass(NULL), _name(NULL), _signature(NULL), _array_length(0) {
     2.8 +JfrJavaArguments::JfrJavaArguments(JavaValue* result) : _result(result), _klass(NULL), _name(NULL), _signature(NULL), _array_length(-1) {
     2.9    assert(result != NULL, "invariant");
    2.10  }
    2.11  
    2.12 @@ -193,7 +193,7 @@
    2.13    _klass(NULL),
    2.14    _name(NULL),
    2.15    _signature(NULL),
    2.16 -  _array_length(0) {
    2.17 +  _array_length(-1) {
    2.18    assert(result != NULL, "invariant");
    2.19    if (klass_name != NULL) {
    2.20      set_klass(klass_name, CHECK);
    2.21 @@ -210,7 +210,7 @@
    2.22    _klass(NULL),
    2.23    _name(NULL),
    2.24    _signature(NULL),
    2.25 -  _array_length(0) {
    2.26 +  _array_length(-1) {
    2.27    assert(result != NULL, "invariant");
    2.28    if (klass != NULL) {
    2.29      set_klass(klass);
     3.1 --- a/src/share/vm/jfr/jni/jfrJavaSupport.cpp	Fri Sep 27 10:09:50 2019 +0800
     3.2 +++ b/src/share/vm/jfr/jni/jfrJavaSupport.cpp	Fri Sep 27 10:27:29 2019 +0800
     3.3 @@ -166,7 +166,7 @@
     3.4  
     3.5    const int array_length = args->array_length();
     3.6  
     3.7 -  if (array_length > 0) {
     3.8 +  if (array_length >= 0) {
     3.9      array_construction(args, result, klass, array_length, CHECK);
    3.10    } else {
    3.11      object_construction(args, result, klass, THREAD);

mercurial