RFR (S) 8043224: -Xcheck:jni improvements to exception checking and excessive local refs
harold seigel
harold.seigel at oracle.com
Tue Jun 3 19:51:26 UTC 2014
Hi David,
The changes look good. The copyright is old in jniHandles.hpp.
Also, would it be better to say "Method", instead of "MethodV", in calls
to set_pending_jni_exception_check() for methods without MethodV in
their names, like these:
865 JNI_ENTRY_CHECKED(ResultType, \
866 *checked_jni_Call##Result##Method*(JNIEnv *env, \
867 jobject obj, \
868 jmethodID methodID, \
869 ...)) \
870 functionEnter(thr); \
871 va_list args; \
872 IN_VM( \
873 jniCheck::validate_call_object(thr, obj, methodID); \
874 ) \
875 va_start(args,methodID); \
876 ResultType result =UNCHECKED()->Call##Result##MethodV(env,
obj, methodID, \
877 args); \
878 va_end(args); \
879
thr->set_pending_jni_exception_check("*Call"#Result"MethodV*"); \
880 functionExit(thr); \
881 return result; \
882 JNI_END \
1048 JNI_ENTRY_CHECKED(void,
1049 *checked_jni_CallNonvirtualVoidMethod*(JNIEnv *env,
1050 jobject obj,
1051 jclass clazz,
1052 jmethodID methodID,
1053 ...))
1054 functionEnter(thr);
1055 va_list args;
1056 IN_VM(
1057 jniCheck::validate_call_object(thr, obj, methodID);
1058 jniCheck::validate_call_class(thr, clazz, methodID);
1059 )
1060 va_start(args,methodID);
1061
UNCHECKED()->CallNonvirtualVoidMethodV(env,obj,clazz,methodID,args);
1062 va_end(args);
1063
thr->set_pending_jni_exception_check("*CallNonvirtualVoidMethodV*");
1064 functionExit(thr);
1065 JNI_END
This would differentiate the messages from the messages in their sister
methods that have MethodV in their names.
Thanks, Harold
On 5/28/2014 12:06 PM, Zhengyu Gu wrote:
> Looks good.
>
> -Zhengyu
>
> On 5/15/2014 7:55 AM, David Simms wrote:
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8043224
>>
>> Web review: http://cr.openjdk.java.net/~dsimms/8043224/
>>
>> Check JNI:
>>
>> 1) Functions that require exception checks now set a flag. JNI
>> exception checks clear said flag. Functions which do not allow
>> exceptions now check the flag and warn if the programmer has failed
>> to check for exceptions. Said flag is actually the name of the
>> function requiring an exception check.
>>
>> 2) JNI function exit now check and warn if the number of local
>> reference exceed the "planned number of references", i.e exceed
>> initial frame capacity, "pushlocalframe" capacity or
>> "ensurelocalcapacity".
>>
>> Testing:
>>
>> * jtreg, quick vm tests
>> * Hand rolled test run locally (no support of JNI in test libs...will
>> hold until there is support).
>>
>>
>> Cheers
>> /David Simms
>
More information about the hotspot-runtime-dev
mailing list