1775 BarrierSet* bs = Universe::heap()->barrier_set(); |
1775 BarrierSet* bs = Universe::heap()->barrier_set(); |
1776 assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind"); |
1776 assert(bs->kind() == BarrierSet::CardTableModRef, "Wrong barrier set kind"); |
1777 CardTableModRefBS* ct = (CardTableModRefBS*)bs; |
1777 CardTableModRefBS* ct = (CardTableModRefBS*)bs; |
1778 assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); |
1778 assert(sizeof(*ct->byte_map_base) == sizeof(jbyte), "adjust this code"); |
1779 |
1779 |
1780 li(AT, (long)ct->byte_map_base); |
1780 set64(AT, (long)ct->byte_map_base); |
1781 #ifdef _LP64 |
1781 #ifdef _LP64 |
1782 dadd(AT, AT, obj); |
1782 dadd(AT, AT, obj); |
1783 #else |
1783 #else |
1784 add(AT, AT, obj); |
1784 add(AT, AT, obj); |
1785 #endif |
1785 #endif |
|
1786 if (UseConcMarkSweepGC) sync(); |
1786 sb(R0, AT, 0); |
1787 sb(R0, AT, 0); |
1787 sync(); |
|
1788 } |
1788 } |
1789 |
1789 |
1790 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes. |
1790 // Defines obj, preserves var_size_in_bytes, okay for t2 == var_size_in_bytes. |
1791 void MacroAssembler::tlab_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, |
1791 void MacroAssembler::tlab_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, |
1792 Register t1, Register t2, Label& slow_case) { |
1792 Register t1, Register t2, Label& slow_case) { |