< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page

        

*** 1605,1614 **** --- 1605,1619 ---- __ move(addr, tmp); __ unsigned_shift_right(tmp, CardTableModRefBS::card_shift, tmp); } else { __ unsigned_shift_right(addr, CardTableModRefBS::card_shift, tmp); } + + if (UseConcMarkSweepGC && CMSPrecleaningEnabled) { + __ membar_storestore(); + } + if (can_inline_as_constant(card_table_base)) { __ move(LIR_OprFact::intConst(0), new LIR_Address(tmp, card_table_base->as_jint(), T_BYTE)); } else { __ move(LIR_OprFact::intConst(0),
*** 2103,2113 **** if (index_op->is_constant()) { assert(log2_scale == 0, "must not have a scale"); assert(index_op->type() == T_INT, "only int constants supported"); addr = new LIR_Address(base_op, index_op->as_jint(), dst_type); } else { ! #ifdef X86 addr = new LIR_Address(base_op, index_op, LIR_Address::Scale(log2_scale), 0, dst_type); #elif defined(GENERATE_ADDRESS_IS_PREFERRED) addr = generate_address(base_op, index_op, log2_scale, 0, dst_type); #else if (index_op->is_illegal() || log2_scale == 0) { --- 2108,2118 ---- if (index_op->is_constant()) { assert(log2_scale == 0, "must not have a scale"); assert(index_op->type() == T_INT, "only int constants supported"); addr = new LIR_Address(base_op, index_op->as_jint(), dst_type); } else { ! #if defined(X86) || defined(AARCH64) addr = new LIR_Address(base_op, index_op, LIR_Address::Scale(log2_scale), 0, dst_type); #elif defined(GENERATE_ADDRESS_IS_PREFERRED) addr = generate_address(base_op, index_op, log2_scale, 0, dst_type); #else if (index_op->is_illegal() || log2_scale == 0) {
< prev index next >