JVMCI compilers must implement the same semantics for the CheckIntrinsics flag as currently implemented by C1 and C2 (i.e., an intrinsification is skipped if CheckIntrinsics is true and the method in question is missing the HotSpotIntrinsicCandidate[1] annotation). To support this, JVMCI must expose the Method::_intrinsic_candidate flag. It's a bug that this was overlooked in earlier JVMCI development.
On a related note, JVMCI compilers should provide the same set of intrinsics supported by the native compilers in HotSpot. Currently it is impossible to detect a missing JVMCI intrinsic implementation without regularly and manually inspecting vmSymbols.hpp. There needs to be a programmatic way to consult the set of intrinsics defined by the VM so that JVMCI tests can quickly detect when new intrinsics are added to HotSpot. Overlooking this in earlier JVMCI development was a bug.
[1] https://bugs.openjdk.java.net/browse/JDK-8076112
On a related note, JVMCI compilers should provide the same set of intrinsics supported by the native compilers in HotSpot. Currently it is impossible to detect a missing JVMCI intrinsic implementation without regularly and manually inspecting vmSymbols.hpp. There needs to be a programmatic way to consult the set of intrinsics defined by the VM so that JVMCI tests can quickly detect when new intrinsics are added to HotSpot. Overlooking this in earlier JVMCI development was a bug.
[1] https://bugs.openjdk.java.net/browse/JDK-8076112