equal
deleted
inserted
replaced
191 Address buffer(thread, in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset())); |
191 Address buffer(thread, in_bytes(G1ThreadLocalData::dirty_card_queue_buffer_offset())); |
192 |
192 |
193 BarrierSet* bs = BarrierSet::barrier_set(); |
193 BarrierSet* bs = BarrierSet::barrier_set(); |
194 CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs); |
194 CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs); |
195 CardTable* ct = ctbs->card_table(); |
195 CardTable* ct = ctbs->card_table(); |
196 assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code"); |
|
197 |
196 |
198 Label done; |
197 Label done; |
199 Label runtime; |
198 Label runtime; |
200 |
199 |
201 // Does store cross heap regions? |
200 // Does store cross heap regions? |
209 __ cbz(new_val, done); |
208 __ cbz(new_val, done); |
210 |
209 |
211 // storing region crossing non-NULL, is card already dirty? |
210 // storing region crossing non-NULL, is card already dirty? |
212 |
211 |
213 ExternalAddress cardtable((address) ct->byte_map_base()); |
212 ExternalAddress cardtable((address) ct->byte_map_base()); |
214 assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code"); |
|
215 const Register card_addr = tmp; |
213 const Register card_addr = tmp; |
216 |
214 |
217 __ lsr(card_addr, store_addr, CardTable::card_shift); |
215 __ lsr(card_addr, store_addr, CardTable::card_shift); |
218 |
216 |
219 // get the address of the card |
217 // get the address of the card |
415 Address store_addr(rfp, 2*BytesPerWord); |
413 Address store_addr(rfp, 2*BytesPerWord); |
416 |
414 |
417 BarrierSet* bs = BarrierSet::barrier_set(); |
415 BarrierSet* bs = BarrierSet::barrier_set(); |
418 CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs); |
416 CardTableBarrierSet* ctbs = barrier_set_cast<CardTableBarrierSet>(bs); |
419 CardTable* ct = ctbs->card_table(); |
417 CardTable* ct = ctbs->card_table(); |
420 assert(sizeof(*ct->byte_map_base()) == sizeof(jbyte), "adjust this code"); |
|
421 |
418 |
422 Label done; |
419 Label done; |
423 Label runtime; |
420 Label runtime; |
424 |
421 |
425 // At this point we know new_value is non-NULL and the new_value crosses regions. |
422 // At this point we know new_value is non-NULL and the new_value crosses regions. |