JDK-8200388 : AArch64: Critical native support not fully implemented
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 11
  • Priority: P4
  • Status: Closed
  • Resolution: Won't Fix
  • OS: generic
  • CPU: aarch64
  • Submitted: 2018-03-28
  • Updated: 2021-05-10
  • Resolved: 2021-05-10
Related Reports
Relates :  
Relates :  
Description
Missing implementation:

sharedRuntime_aarch64.cpp:
static void check_needs_gc_for_critical_native(MacroAssembler* masm,
                                               int stack_slots,
                                               int total_c_args,
                                               int total_in_args,
                                               int arg_save_area,
                                               OopMapSet* oop_maps,
                                               VMRegPair* in_regs,
                                               BasicType* in_sig_bt) { Unimplemented(); }
Comments
This shouldn't be fixed. The performance of native functions will be fixed in Project Panama https://openjdk.java.net/projects/panama/.
09-09-2020

For critical JNI natives, we generate native method wrapper code which is more or less different from the wrapper code for regular JNI calls. The code generation logic is shared with that for regular JNI at SharedRuntime::generate_native_wrapper(). This is a platform-dependent logic and the AArch64 code is at https://hg.openjdk.java.net/jdk/jdk/file/9b5bc216e922/src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp#l1250. In this function, we generate wrapper code for critical native if is_critical_native is true and the main logic is already implemented there. But we still have below subroutine code left unimplemented (as far as I have found) static void check_needs_gc_for_critical_native() static void unpack_array_argument() class ComputeMoveOrder: public StackObj {} Because of these unimplemented parts, CriticalJNINatives is marked as UNSUPPORTED_OPTION at the end of file vm_version_aarch64.cpp.
19-12-2019

See also "UNSUPPORTED_OPTION(CriticalJNINatives)" in vm_version_aarch64.cpp.
26-06-2019

JDK-8191129 disabled CriticalJNI support until it could be fully implemented...
26-06-2019