equal
deleted
inserted
replaced
137 } else { |
137 } else { |
138 __ leaq(rdx, obj); |
138 __ leaq(rdx, obj); |
139 } |
139 } |
140 __ g1_write_barrier_pre(rdx, r8, rbx, val != noreg); |
140 __ g1_write_barrier_pre(rdx, r8, rbx, val != noreg); |
141 if (val == noreg) { |
141 if (val == noreg) { |
142 __ store_heap_oop(Address(rdx, 0), NULL_WORD); |
142 __ store_heap_oop_null(Address(rdx, 0)); |
143 } else { |
143 } else { |
144 __ store_heap_oop(Address(rdx, 0), val); |
144 __ store_heap_oop(Address(rdx, 0), val); |
145 __ g1_write_barrier_post(rdx, val, r8, rbx); |
145 __ g1_write_barrier_post(rdx, val, r8, rbx); |
146 } |
146 } |
147 |
147 |
150 #endif // SERIALGC |
150 #endif // SERIALGC |
151 case BarrierSet::CardTableModRef: |
151 case BarrierSet::CardTableModRef: |
152 case BarrierSet::CardTableExtension: |
152 case BarrierSet::CardTableExtension: |
153 { |
153 { |
154 if (val == noreg) { |
154 if (val == noreg) { |
155 __ store_heap_oop(obj, NULL_WORD); |
155 __ store_heap_oop_null(obj); |
156 } else { |
156 } else { |
157 __ store_heap_oop(obj, val); |
157 __ store_heap_oop(obj, val); |
158 // flatten object address if needed |
158 // flatten object address if needed |
159 if (!precise || (obj.index() == noreg && obj.disp() == 0)) { |
159 if (!precise || (obj.index() == noreg && obj.disp() == 0)) { |
160 __ store_check(obj.base()); |
160 __ store_check(obj.base()); |
166 } |
166 } |
167 break; |
167 break; |
168 case BarrierSet::ModRef: |
168 case BarrierSet::ModRef: |
169 case BarrierSet::Other: |
169 case BarrierSet::Other: |
170 if (val == noreg) { |
170 if (val == noreg) { |
171 __ store_heap_oop(obj, NULL_WORD); |
171 __ store_heap_oop_null(obj); |
172 } else { |
172 } else { |
173 __ store_heap_oop(obj, val); |
173 __ store_heap_oop(obj, val); |
174 } |
174 } |
175 break; |
175 break; |
176 default : |
176 default : |