Loading... (original) (raw)
Instrumenting native methods with intrinsics breaks their intrinsification by JIT-compilers: Method::init_intrinsic_id() doesn't take JVMTI native method prefix into account and doesn't detect proper intrinsic id.
http://mail.openjdk.java.net/pipermail/hotspot-dev/2017-March/026232.html:
If you set a native prefix using SetNativeMethodPrefix, in order to wrap
native methods. If those methods are annotated with @HotSpotIntrinsicCandidate
you get a warning when running.
For instance for Thread::isInterrupted:
Compiler intrinsic is defined for method
[java.lang.Thread.isInterrupted(Z)Z], but the method is not annotated with
@HotSpotIntrinsicCandidate. Method will not be inlined.
Method [java.lang.Thread.$prefix$isInterrupted(Z)Z] is annotated with
@HotSpotIntrinsicCandidate, but no compiler intrinsic is defined for the
method.
Shouldn't the native prefix be taken into account for this?
Kind regards
Michael Rasmussen
JRebel, ZeroTurnaround