< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

remove c1 runtime1 medium slowpath

*** 1856,1893 **** // in debug mode and the type isn't required when we know the exact type // also check that the type is an array type. if (op->expected_type() == NULL) { assert(src->is_nonvolatile() && src_pos->is_nonvolatile() && dst->is_nonvolatile() && dst_pos->is_nonvolatile() && length->is_nonvolatile(), "must preserve"); // 3 parms are int. Convert to long. __ mr(R3_ARG1, src); __ extsw(R4_ARG2, src_pos); __ mr(R5_ARG3, dst); __ extsw(R6_ARG4, dst_pos); __ extsw(R7_ARG5, length); - address copyfunc_addr = StubRoutines::generic_arraycopy(); - if (copyfunc_addr == NULL) { // Use C version if stub was not generated. - address entry = CAST_FROM_FN_PTR(address, Runtime1::arraycopy); - __ call_c_with_frame_resize(entry, frame_resize); - } else { #ifndef PRODUCT ! if (PrintC1Statistics) { ! address counter = (address)&Runtime1::_generic_arraycopystub_cnt; ! int simm16_offs = __ load_const_optimized(tmp, counter, tmp2, true); ! __ lwz(R11_scratch1, simm16_offs, tmp); ! __ addi(R11_scratch1, R11_scratch1, 1); ! __ stw(R11_scratch1, simm16_offs, tmp); ! } #endif ! __ call_c_with_frame_resize(copyfunc_addr, /*stub does not need resized frame*/ 0); ! __ nand(tmp, R3_RET, R3_RET); ! __ subf(length, tmp, length); ! __ add(src_pos, tmp, src_pos); ! __ add(dst_pos, tmp, dst_pos); ! } __ cmpwi(CCR0, R3_RET, 0); __ bc_far_optimized(Assembler::bcondCRbiIs1, __ bi0(CCR0, Assembler::less), *stub->entry()); __ bind(*stub->continuation()); return; --- 1856,1890 ---- // in debug mode and the type isn't required when we know the exact type // also check that the type is an array type. if (op->expected_type() == NULL) { assert(src->is_nonvolatile() && src_pos->is_nonvolatile() && dst->is_nonvolatile() && dst_pos->is_nonvolatile() && length->is_nonvolatile(), "must preserve"); + address copyfunc_addr = StubRoutines::generic_arraycopy(); + assert(copyfunc_addr != NULL, "generic arraycopy stub required"); + // 3 parms are int. Convert to long. __ mr(R3_ARG1, src); __ extsw(R4_ARG2, src_pos); __ mr(R5_ARG3, dst); __ extsw(R6_ARG4, dst_pos); __ extsw(R7_ARG5, length); #ifndef PRODUCT ! if (PrintC1Statistics) { ! address counter = (address)&Runtime1::_generic_arraycopystub_cnt; ! int simm16_offs = __ load_const_optimized(tmp, counter, tmp2, true); ! __ lwz(R11_scratch1, simm16_offs, tmp); ! __ addi(R11_scratch1, R11_scratch1, 1); ! __ stw(R11_scratch1, simm16_offs, tmp); ! } #endif ! __ call_c_with_frame_resize(copyfunc_addr, /*stub does not need resized frame*/ 0); ! __ nand(tmp, R3_RET, R3_RET); ! __ subf(length, tmp, length); ! __ add(src_pos, tmp, src_pos); ! __ add(dst_pos, tmp, dst_pos); __ cmpwi(CCR0, R3_RET, 0); __ bc_far_optimized(Assembler::bcondCRbiIs1, __ bi0(CCR0, Assembler::less), *stub->entry()); __ bind(*stub->continuation()); return;
< prev index next >