# HG changeset patch # User jbachorik # Date 1620401825 -7200 # Node ID 88e29f735f12b9fdee56596d19fe526bca3073b3 # Parent 362d99aef38e6e179061f221df20bbb9f65b8f89 8266723: JFR periodic events are causing extra allocations Reviewed-by: adinn diff -r 362d99aef38e -r 88e29f735f12 src/share/vm/jfr/jni/jfrJniMethod.cpp --- a/src/share/vm/jfr/jni/jfrJniMethod.cpp Wed May 12 11:32:26 2021 +0100 +++ b/src/share/vm/jfr/jni/jfrJniMethod.cpp Fri May 07 17:37:05 2021 +0200 @@ -238,6 +238,10 @@ JfrJavaLog::log(tag_set, level, message, thread); JVM_END +JVM_ENTRY_NO_ENV(jboolean, jfr_should_log(JNIEnv* env, jobject jvm, jint level)) + return JfrJavaLog::should_log(level, thread) ? JNI_TRUE : JNI_FALSE; +JVM_END + JVM_ENTRY_NO_ENV(void, jfr_subscribe_log_level(JNIEnv* env, jobject jvm, jobject log_tag, jint id)) JfrJavaLog::subscribe_log_level(log_tag, id, thread); JVM_END diff -r 362d99aef38e -r 88e29f735f12 src/share/vm/jfr/jni/jfrJniMethod.hpp --- a/src/share/vm/jfr/jni/jfrJniMethod.hpp Wed May 12 11:32:26 2021 +0100 +++ b/src/share/vm/jfr/jni/jfrJniMethod.hpp Fri May 07 17:37:05 2021 +0200 @@ -67,6 +67,8 @@ void JNICALL jfr_log(JNIEnv* env, jobject jvm, jint tag_set, jint level, jstring message); +jboolean JNICALL jfr_should_log(JNIEnv* env, jobject jvm, jint level); + void JNICALL jfr_retransform_classes(JNIEnv* env, jobject jvm, jobjectArray classes); void JNICALL jfr_set_enabled(JNIEnv* env, jobject jvm, jlong event_type_id, jboolean enabled); diff -r 362d99aef38e -r 88e29f735f12 src/share/vm/jfr/jni/jfrJniMethodRegistration.cpp --- a/src/share/vm/jfr/jni/jfrJniMethodRegistration.cpp Wed May 12 11:32:26 2021 +0100 +++ b/src/share/vm/jfr/jni/jfrJniMethodRegistration.cpp Fri May 07 17:37:05 2021 +0200 @@ -49,6 +49,7 @@ (char*)"getTicksFrequency", (char*)"()J", (void*)jfr_elapsed_frequency, (char*)"subscribeLogLevel", (char*)"(Ljdk/jfr/internal/LogTag;I)V", (void*)jfr_subscribe_log_level, (char*)"log", (char*)"(IILjava/lang/String;)V", (void*)jfr_log, + (char*)"shouldLog", (char*)"(I)Z", (void*)jfr_should_log, (char*)"retransformClasses", (char*)"([Ljava/lang/Class;)V", (void*)jfr_retransform_classes, (char*)"setEnabled", (char*)"(JZ)V", (void*)jfr_set_enabled, (char*)"setFileNotification", (char*)"(J)V", (void*)jfr_set_file_notification, diff -r 362d99aef38e -r 88e29f735f12 src/share/vm/jfr/utilities/jfrJavaLog.cpp --- a/src/share/vm/jfr/utilities/jfrJavaLog.cpp Wed May 12 11:32:26 2021 +0100 +++ b/src/share/vm/jfr/utilities/jfrJavaLog.cpp Fri May 07 17:37:05 2021 +0200 @@ -139,3 +139,7 @@ // log_tag_sets[tag_set].log_tag_set->log((LogLevelType)level, s); tty->print_cr("JFR: %s", s); } + +bool JfrJavaLog::should_log(jint level, TRAPS) { + return LogJFR; +} diff -r 362d99aef38e -r 88e29f735f12 src/share/vm/jfr/utilities/jfrJavaLog.hpp --- a/src/share/vm/jfr/utilities/jfrJavaLog.hpp Wed May 12 11:32:26 2021 +0100 +++ b/src/share/vm/jfr/utilities/jfrJavaLog.hpp Fri May 07 17:37:05 2021 +0200 @@ -43,6 +43,7 @@ public: static void subscribe_log_level(jobject log_tag, jint id, TRAPS); static void log(jint tag_set, jint level, jstring message, TRAPS); + static bool should_log(jint level, TRAPS); }; #endif // SHARE_VM_JFR_UTILITIES_JFRJAVALOG_HPP