equal
deleted
inserted
replaced
834 // The input registers are overwritten. |
834 // The input registers are overwritten. |
835 // |
835 // |
836 void gen_write_ref_array_pre_barrier(Register addr, Register count, bool dest_uninitialized) { |
836 void gen_write_ref_array_pre_barrier(Register addr, Register count, bool dest_uninitialized) { |
837 BarrierSet* bs = Universe::heap()->barrier_set(); |
837 BarrierSet* bs = Universe::heap()->barrier_set(); |
838 switch (bs->kind()) { |
838 switch (bs->kind()) { |
839 case BarrierSet::G1SATBCTLogging: |
839 case BarrierSet::G1BarrierSet: |
840 // With G1, don't generate the call if we statically know that the target in uninitialized |
840 // With G1, don't generate the call if we statically know that the target in uninitialized |
841 if (!dest_uninitialized) { |
841 if (!dest_uninitialized) { |
842 Register tmp = O5; |
842 Register tmp = O5; |
843 assert_different_registers(addr, count, tmp); |
843 assert_different_registers(addr, count, tmp); |
844 Label filtered; |
844 Label filtered; |
896 void gen_write_ref_array_post_barrier(Register addr, Register count, |
896 void gen_write_ref_array_post_barrier(Register addr, Register count, |
897 Register tmp) { |
897 Register tmp) { |
898 BarrierSet* bs = Universe::heap()->barrier_set(); |
898 BarrierSet* bs = Universe::heap()->barrier_set(); |
899 |
899 |
900 switch (bs->kind()) { |
900 switch (bs->kind()) { |
901 case BarrierSet::G1SATBCTLogging: |
901 case BarrierSet::G1BarrierSet: |
902 { |
902 { |
903 // Get some new fresh output registers. |
903 // Get some new fresh output registers. |
904 __ save_frame(0); |
904 __ save_frame(0); |
905 __ mov(addr->after_save(), O0); |
905 __ mov(addr->after_save(), O0); |
906 __ call(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post)); |
906 __ call(CAST_FROM_FN_PTR(address, BarrierSet::static_write_ref_array_post)); |