< prev index next >

src/hotspot/cpu/ppc/sharedRuntime_ppc.cpp

Print this page

        

*** 1272,1305 **** // Branch to ic_miss_stub. __ b64_patchable((address)SharedRuntime::get_ic_miss_stub(), relocInfo::runtime_call_type); // entry: c2i ! c2i_entry = __ pc(); ! ! // Class initialization barrier for static methods ! if (VM_Version::supports_fast_class_init_checks()) { ! Label L_skip_barrier; ! ! { // Bypass the barrier for non-static methods ! __ lwz(R0, in_bytes(Method::access_flags_offset()), R19_method); ! __ andi_(R0, R0, JVM_ACC_STATIC); ! __ beq(CCR0, L_skip_barrier); // non-static ! } ! ! Register klass = R11_scratch1; ! __ load_method_holder(klass, R19_method); ! __ clinit_barrier(klass, R16_thread, &L_skip_barrier /*L_fast_path*/); ! ! __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub(), R0); ! __ mtctr(klass); ! __ bctr(); ! ! __ bind(L_skip_barrier); ! } ! ! gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, call_interpreter, ientry); return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry); } #ifdef COMPILER2 --- 1272,1282 ---- // Branch to ic_miss_stub. __ b64_patchable((address)SharedRuntime::get_ic_miss_stub(), relocInfo::runtime_call_type); // entry: c2i ! c2i_entry = gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, call_interpreter, ientry); return AdapterHandlerLibrary::new_entry(fingerprint, i2c_entry, c2i_entry, c2i_unverified_entry); } #ifdef COMPILER2
*** 2127,2151 **** // because critical section can be large and // abort anyway. Also nmethod can be deoptimized. __ tabort_(); } - if (VM_Version::supports_fast_class_init_checks() && method->needs_clinit_barrier()) { - Label L_skip_barrier; - Register klass = r_temp_1; - // Notify OOP recorder (don't need the relocation) - AddressLiteral md = __ constant_metadata_address(method->method_holder()); - __ load_const_optimized(klass, md.value(), R0); - __ clinit_barrier(klass, R16_thread, &L_skip_barrier /*L_fast_path*/); - - __ load_const_optimized(klass, SharedRuntime::get_handle_wrong_method_stub(), R0); - __ mtctr(klass); - __ bctr(); - - __ bind(L_skip_barrier); - } - __ save_LR_CR(r_temp_1); __ generate_stack_overflow_check(frame_size_in_bytes); // Check before creating frame. __ mr(r_callers_sp, R1_SP); // Remember frame pointer. __ push_frame(frame_size_in_bytes, r_temp_1); // Push the c2n adapter's frame. frame_done_pc = (intptr_t)__ pc(); --- 2104,2113 ----
< prev index next >