On 06.07.2017 23:11, Philip Martin wrote:
> Philip Martin <phi...@codematters.co.uk> writes:
>
>> I've upgraded my JDK and it produced all these warnings.

Adding the exception checks is correct. Rewriting everything to use the
jniwrapper abstraction would be even better, but that's a huge-ish heap
of work.

> There is a second class of warnings of the form:
>
>   WARNING: JNI local refs: 57, exceeds capacity: 56
>
> These are generated in two places: JNIUtil::putErrorsInTrace() and
> Java_org_apache_subversion_javahl_util_PropLib_unparseExternals().
>
> I'm not sure how best to fix these so I have a local hack in
> JNIUtil::wrappedCreateClientException to remove most of them:
>
>    // Create a local frame for our references
> -  env->PushLocalFrame(LOCAL_FRAME_SIZE);
> +  env->PushLocalFrame(LOCAL_FRAME_SIZE + 100);

Mmph ... it kinda hurts to see how limited the JNI API is in this
respect. We could either increase the LOCAL_FRAME_SIZE variable, or
create a new frame within each iteration of the loop.

-- Brane

Reply via email to