< prev index next >

src/cpu/sparc/vm/macroAssembler_sparc.cpp

Print this page
rev 10742 : Make fields used in lock-free algorithms volatile

*** 753,763 **** if (emit_delay) { delayed()->nop(); } } ! void MacroAssembler::card_table_write(jbyte* byte_map_base, Register tmp, Register obj) { #ifdef _LP64 srlx(obj, CardTableModRefBS::card_shift, obj); #else srl(obj, CardTableModRefBS::card_shift, obj); --- 753,763 ---- if (emit_delay) { delayed()->nop(); } } ! void MacroAssembler::card_table_write(volatile jbyte* byte_map_base, Register tmp, Register obj) { #ifdef _LP64 srlx(obj, CardTableModRefBS::card_shift, obj); #else srl(obj, CardTableModRefBS::card_shift, obj);
*** 3808,3818 **** static address dirty_card_log_enqueue = 0; static u_char* dirty_card_log_enqueue_end = 0; // This gets to assume that o0 contains the object address. ! static void generate_dirty_card_log_enqueue(jbyte* byte_map_base) { BufferBlob* bb = BufferBlob::create("dirty_card_enqueue", EnqueueCodeSize*2); CodeBuffer buf(bb); MacroAssembler masm(&buf); #define __ masm. address start = __ pc(); --- 3808,3818 ---- static address dirty_card_log_enqueue = 0; static u_char* dirty_card_log_enqueue_end = 0; // This gets to assume that o0 contains the object address. ! static void generate_dirty_card_log_enqueue(volatile jbyte* byte_map_base) { BufferBlob* bb = BufferBlob::create("dirty_card_enqueue", EnqueueCodeSize*2); CodeBuffer buf(bb); MacroAssembler masm(&buf); #define __ masm. address start = __ pc();
*** 3822,3832 **** #ifdef _LP64 __ srlx(O0, CardTableModRefBS::card_shift, O0); #else __ srl(O0, CardTableModRefBS::card_shift, O0); #endif ! AddressLiteral addrlit(byte_map_base); __ set(addrlit, O1); // O1 := <card table base> __ ldub(O0, O1, O2); // O2 := [O0 + O1] __ cmp_and_br_short(O2, G1SATBCardTableModRefBS::g1_young_card_val(), Assembler::equal, Assembler::pt, young_card); --- 3822,3832 ---- #ifdef _LP64 __ srlx(O0, CardTableModRefBS::card_shift, O0); #else __ srl(O0, CardTableModRefBS::card_shift, O0); #endif ! AddressLiteral addrlit((address)byte_map_base); __ set(addrlit, O1); // O1 := <card table base> __ ldub(O0, O1, O2); // O2 := [O0 + O1] __ cmp_and_br_short(O2, G1SATBCardTableModRefBS::g1_young_card_val(), Assembler::equal, Assembler::pt, young_card);
*** 3903,3913 **** #undef __ } static inline void ! generate_dirty_card_log_enqueue_if_necessary(jbyte* byte_map_base) { if (dirty_card_log_enqueue == 0) { generate_dirty_card_log_enqueue(byte_map_base); assert(dirty_card_log_enqueue != 0, "postcondition."); } } --- 3903,3913 ---- #undef __ } static inline void ! generate_dirty_card_log_enqueue_if_necessary(volatile jbyte* byte_map_base) { if (dirty_card_log_enqueue == 0) { generate_dirty_card_log_enqueue(byte_map_base); assert(dirty_card_log_enqueue != 0, "postcondition."); } }
*** 5115,5120 **** nop(); cmp_and_br_short(len, 0, Assembler::greaterUnsigned, Assembler::pt, L_cleanup_loop); not1(crc); } - --- 5115,5119 ----
< prev index next >