diff -r 7e8f6c56c285 -r 6a159c6c23cc src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp --- a/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp Wed Jul 24 10:09:30 2019 +0800 +++ b/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp Wed Jul 24 10:50:40 2019 +0300 @@ -971,10 +971,8 @@ address c2i_entry = __ pc(); - BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler(); - bs->c2i_entry_barrier(masm); - // Class initialization barrier for static methods + address c2i_no_clinit_check_entry = NULL; if (VM_Version::supports_fast_class_init_checks()) { Label L_skip_barrier; Register method = rbx; @@ -993,12 +991,16 @@ __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path __ bind(L_skip_barrier); + c2i_no_clinit_check_entry = __ pc(); } + BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler(); + bs->c2i_entry_barrier(masm); + gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup); __ flush(); - return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry); + return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, c2i_no_clinit_check_entry); } int SharedRuntime::c_calling_convention(const BasicType *sig_bt,