8199604_cardtablemodrefbs_rename
166 if (val == noreg) {
167 __ store_heap_oop_null(Address(r3, 0));
168 } else {
169 // G1 barrier needs uncompressed oop for region cross check.
170 Register new_val = val;
171 if (UseCompressedOops) {
172 new_val = rscratch2;
173 __ mov(new_val, val);
174 }
175 __ store_heap_oop(Address(r3, 0), val);
176 __ g1_write_barrier_post(r3 /* store_adr */,
177 new_val /* new_val */,
178 rthread /* thread */,
179 r10 /* tmp */,
180 r1 /* tmp2 */);
181 }
182
183 }
184 break;
185 #endif // INCLUDE_ALL_GCS
186 case BarrierSet::CardTableModRef:
187 {
188 if (val == noreg) {
189 __ store_heap_oop_null(obj);
190 } else {
191 __ store_heap_oop(obj, val);
192 // flatten object address if needed
193 if (!precise || (obj.index() == noreg && obj.offset() == 0)) {
194 __ store_check(obj.base());
195 } else {
196 __ lea(r3, obj);
197 __ store_check(r3);
198 }
199 }
200 }
201 break;
202 case BarrierSet::ModRef:
203 if (val == noreg) {
204 __ store_heap_oop_null(obj);
205 } else {
|
166 if (val == noreg) {
167 __ store_heap_oop_null(Address(r3, 0));
168 } else {
169 // G1 barrier needs uncompressed oop for region cross check.
170 Register new_val = val;
171 if (UseCompressedOops) {
172 new_val = rscratch2;
173 __ mov(new_val, val);
174 }
175 __ store_heap_oop(Address(r3, 0), val);
176 __ g1_write_barrier_post(r3 /* store_adr */,
177 new_val /* new_val */,
178 rthread /* thread */,
179 r10 /* tmp */,
180 r1 /* tmp2 */);
181 }
182
183 }
184 break;
185 #endif // INCLUDE_ALL_GCS
186 case BarrierSet::CardTableBarrierSet:
187 {
188 if (val == noreg) {
189 __ store_heap_oop_null(obj);
190 } else {
191 __ store_heap_oop(obj, val);
192 // flatten object address if needed
193 if (!precise || (obj.index() == noreg && obj.offset() == 0)) {
194 __ store_check(obj.base());
195 } else {
196 __ lea(r3, obj);
197 __ store_check(r3);
198 }
199 }
200 }
201 break;
202 case BarrierSet::ModRef:
203 if (val == noreg) {
204 __ store_heap_oop_null(obj);
205 } else {
|