equal
deleted
inserted
replaced
2711 } |
2711 } |
2712 |
2712 |
2713 address c2i_entry = __ pc(); |
2713 address c2i_entry = __ pc(); |
2714 |
2714 |
2715 // Class initialization barrier for static methods |
2715 // Class initialization barrier for static methods |
|
2716 address c2i_no_clinit_check_entry = NULL; |
2716 if (VM_Version::supports_fast_class_init_checks()) { |
2717 if (VM_Version::supports_fast_class_init_checks()) { |
2717 Label L_skip_barrier; |
2718 Label L_skip_barrier; |
2718 |
2719 |
2719 { // Bypass the barrier for non-static methods |
2720 { // Bypass the barrier for non-static methods |
2720 __ testbit(Address(Z_method, Method::access_flags_offset()), JVM_ACC_STATIC_BIT); |
2721 __ testbit(Address(Z_method, Method::access_flags_offset()), JVM_ACC_STATIC_BIT); |
2727 |
2728 |
2728 __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub()); |
2729 __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub()); |
2729 __ z_br(klass); |
2730 __ z_br(klass); |
2730 |
2731 |
2731 __ bind(L_skip_barrier); |
2732 __ bind(L_skip_barrier); |
|
2733 c2i_no_clinit_check_entry = __ pc(); |
2732 } |
2734 } |
2733 |
2735 |
2734 gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup); |
2736 gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup); |
2735 |
2737 |
2736 return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry); |
2738 return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry, c2i_no_clinit_check_entry); |
2737 } |
2739 } |
2738 |
2740 |
2739 // This function returns the adjust size (in number of words) to a c2i adapter |
2741 // This function returns the adjust size (in number of words) to a c2i adapter |
2740 // activation for use during deoptimization. |
2742 // activation for use during deoptimization. |
2741 // |
2743 // |