631 // Clobbers: r0-r18, v0-v7, v16-v31, except saved_regs. |
631 // Clobbers: r0-r18, v0-v7, v16-v31, except saved_regs. |
632 // |
632 // |
633 void gen_write_ref_array_pre_barrier(Register addr, Register count, bool dest_uninitialized, RegSet saved_regs) { |
633 void gen_write_ref_array_pre_barrier(Register addr, Register count, bool dest_uninitialized, RegSet saved_regs) { |
634 BarrierSet* bs = Universe::heap()->barrier_set(); |
634 BarrierSet* bs = Universe::heap()->barrier_set(); |
635 switch (bs->kind()) { |
635 switch (bs->kind()) { |
636 case BarrierSet::G1SATBCTLogging: |
636 case BarrierSet::G1BarrierSet: |
637 // With G1, don't generate the call if we statically know that the target in uninitialized |
637 // With G1, don't generate the call if we statically know that the target in uninitialized |
638 if (!dest_uninitialized) { |
638 if (!dest_uninitialized) { |
639 __ push(saved_regs, sp); |
639 __ push(saved_regs, sp); |
640 if (count == c_rarg0) { |
640 if (count == c_rarg0) { |
641 if (addr == c_rarg1) { |
641 if (addr == c_rarg1) { |
678 // Clobbers: r0-r18, v0-v7, v16-v31, except saved_regs. |
678 // Clobbers: r0-r18, v0-v7, v16-v31, except saved_regs. |
679 void gen_write_ref_array_post_barrier(Register start, Register end, Register scratch, RegSet saved_regs) { |
679 void gen_write_ref_array_post_barrier(Register start, Register end, Register scratch, RegSet saved_regs) { |
680 assert_different_registers(start, end, scratch); |
680 assert_different_registers(start, end, scratch); |
681 BarrierSet* bs = Universe::heap()->barrier_set(); |
681 BarrierSet* bs = Universe::heap()->barrier_set(); |
682 switch (bs->kind()) { |
682 switch (bs->kind()) { |
683 case BarrierSet::G1SATBCTLogging: |
683 case BarrierSet::G1BarrierSet: |
684 |
684 |
685 { |
685 { |
686 __ push(saved_regs, sp); |
686 __ push(saved_regs, sp); |
687 // must compute element count unless barrier set interface is changed (other platforms supply count) |
687 // must compute element count unless barrier set interface is changed (other platforms supply count) |
688 assert_different_registers(start, end, scratch); |
688 assert_different_registers(start, end, scratch); |