707 // |
707 // |
708 // Generate pre-barrier for array stores |
708 // Generate pre-barrier for array stores |
709 // |
709 // |
710 // Input: |
710 // Input: |
711 // start - starting address |
711 // start - starting address |
712 // end - element count |
712 // count - element count |
713 void gen_write_ref_array_pre_barrier(Register start, Register count) { |
713 void gen_write_ref_array_pre_barrier(Register start, Register count) { |
714 assert_different_registers(start, count); |
714 assert_different_registers(start, count); |
715 BarrierSet* bs = Universe::heap()->barrier_set(); |
715 BarrierSet* bs = Universe::heap()->barrier_set(); |
716 switch (bs->kind()) { |
716 switch (bs->kind()) { |
717 case BarrierSet::G1SATBCT: |
717 case BarrierSet::G1SATBCT: |
755 __ push(count); |
755 __ push(count); |
756 __ push(start); |
756 __ push(start); |
757 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post))); |
757 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post))); |
758 __ addptr(rsp, 2*wordSize); |
758 __ addptr(rsp, 2*wordSize); |
759 __ popa(); |
759 __ popa(); |
760 |
|
761 } |
760 } |
762 break; |
761 break; |
763 |
762 |
764 case BarrierSet::CardTableModRef: |
763 case BarrierSet::CardTableModRef: |
765 case BarrierSet::CardTableExtension: |
764 case BarrierSet::CardTableExtension: |