RFR(M): 8227680: FastJNIAccessors: Check for JVMTI field access event requests at runtime

Boris Ulasevich boris.ulasevich at bell-sw.com
Fri Jul 26 10:49:56 UTC 2019

Hi Martin,

Your change works Ok on arm32 with the minor correction. See the patch 


On 16.07.2019 16:31, Doerr, Martin wrote:
> Hi,
> the current implementation of FastJNIAccessors ignores the flag -XX:+UseFastJNIAccessors when the JVMTI capability "can_post_field_access" is enabled.
> This is an unnecessary restriction which makes field accesses (Get<Type>Field) from native code slower when a JVMTI agent is attached which enables this capability.
> A better implementation would check at runtime if an agent actually wants to receive field access events.
> Note that the bytecode interpreter already uses this better implementation by checking if field access watch events were requested (JvmtiExport::_field_access_count != 0).
> I have implemented such a runtime check on all platforms which currently support FastJNIAccessors.
> My new jtreg test runtime/jni/FastGetField/FastGetField.java contains a micro benchmark:
> test-support/jtreg_test_hotspot_jtreg_runtime_jni_FastGetField/runtime/jni/FastGetField/FastGetField.jtr
> shows the duration of 10000 iterations with and without UseFastJNIAccessors (JVMTI agent gets attached in both runs).
> My Intel(R) Xeon(R) CPU E5-2660 v3 @ 2.60GHz needed 4.7ms with FastJNIAccessors and 11.2ms without it.
> Webrev:
> http://cr.openjdk.java.net/~mdoerr/8227680_FastJNIAccessors/webrev.00/
> We have run the test on 64 bit x86 platforms, SPARC and aarch64.
> (FastJNIAccessors are not yet available on PPC64 and s390. I'll contribute them later.)
> My webrev contains 32 bit implementations for x86 and arm, but completely untested. It'd be great if somebody could volunteer to review and test these platforms.
> Please review.
> Best regards,
> Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jniFastGetField_arm32.patch
Type: text/x-patch
Size: 1109 bytes
Desc: not available
URL: <https://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20190726/5184cecb/jniFastGetField_arm32.patch>

More information about the hotspot-runtime-dev mailing list