--- old/src/java.desktop/share/native/libawt/java2d/Trace.h 2019-06-14 14:38:00.000000000 +0530 +++ new/src/java.desktop/share/native/libawt/java2d/Trace.h 2019-06-14 14:38:00.000000000 +0530 @@ -27,11 +27,14 @@ #define _Included_Trace #include +#include "jni_util.h" #include "debug_trace.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +extern JavaVM *jvm; +extern jint graphicsPrimitive_traceflags; /** * J2dTrace @@ -175,6 +178,59 @@ J2dTraceImpl(level, JNI_TRUE, string, arg1, arg2, arg3, arg4, arg5); \ } +#define J2dTracePrimitive(string) { \ + if (graphicsPrimitive_traceflags && jvm) { \ + JNIEnv *env; \ + jstring jstr; \ + (*jvm)->AttachCurrentThreadAsDaemon(jvm, &env, NULL); \ + jstr = (*env)->NewStringUTF(env, string); \ + JNU_CallStaticMethodByName(env, NULL, "sun/java2d/loops/GraphicsPrimitive", \ + "tracePrimitive", "(Ljava/lang/Object;)V", jstr); \ + (*env)->DeleteLocalRef(env, jstr); \ + } \ + } + +#define J2dTraceNotImplPrimitive(prim) { \ + if (graphicsPrimitive_traceflags && jvm) { \ + char cbuf[255]; \ + JNIEnv *env; \ + jstring jprim; \ + jstring jmsg; \ + snprintf(cbuf, 255, "[NOT IMPL] at %s:%d", __FILE__, __LINE__); \ + (*jvm)->AttachCurrentThreadAsDaemon(jvm, &env, NULL); \ + jprim = (*env)->NewStringUTF(env, prim); \ + jmsg = (*env)->NewStringUTF(env, cbuf); \ + JNU_CallStaticMethodByName(env, NULL, \ + "sun/java2d/loops/GraphicsPrimitive", \ + "traceImplPrimitive", \ + "(Ljava/lang/Object;Ljava/lang/Object;)V", \ + jprim, jmsg); \ + (*env)->DeleteLocalRef(env, jprim); \ + (*env)->DeleteLocalRef(env, jmsg); \ + } \ + } + +#define J2dTraceImplPrimitive(prim, msg) { \ + if (graphicsPrimitive_traceflags && jvm) { \ + char cbuf[255]; \ + JNIEnv *env; \ + jstring jprim; \ + jstring jmsg; \ + snprintf(cbuf, 255, "%s at %s:%d", msg, __FILE__, __LINE__); \ + (*jvm)->AttachCurrentThreadAsDaemon(jvm, &env, NULL); \ + jprim = (*env)->NewStringUTF(env, prim); \ + jmsg = (*env)->NewStringUTF(env, cbuf); \ + JNU_CallStaticMethodByName(env, NULL, \ + "sun/java2d/loops/GraphicsPrimitive", \ + "traceImplPrimitive", \ + "(Ljava/lang/Object;Ljava/lang/Object;)V", \ + jprim, jmsg); \ + (*env)->DeleteLocalRef(env, jprim); \ + (*env)->DeleteLocalRef(env, jmsg); \ + } \ + } + + #ifdef __cplusplus }; #endif /* __cplusplus */