777 __ leal(end, Address(start, count, Address::times_4, -4)); |
777 __ leal(end, Address(start, count, Address::times_4, -4)); |
778 __ shrl(start, CardTableModRefBS::card_shift); |
778 __ shrl(start, CardTableModRefBS::card_shift); |
779 __ shrl(end, CardTableModRefBS::card_shift); |
779 __ shrl(end, CardTableModRefBS::card_shift); |
780 __ subl(end, start); // end --> count |
780 __ subl(end, start); // end --> count |
781 __ BIND(L_loop); |
781 __ BIND(L_loop); |
782 ExternalAddress base((address)ct->byte_map_base); |
782 intptr_t disp = (intptr_t) ct->byte_map_base; |
783 Address index(start, count, Address::times_1, 0); |
783 Address cardtable(start, count, Address::times_1, disp); |
784 __ movbyte(ArrayAddress(base, index), 0); |
784 __ movb(cardtable, 0); |
785 __ decrement(count); |
785 __ decrement(count); |
786 __ jcc(Assembler::greaterEqual, L_loop); |
786 __ jcc(Assembler::greaterEqual, L_loop); |
787 } |
787 } |
788 break; |
788 break; |
789 case BarrierSet::ModRef: |
789 case BarrierSet::ModRef: |