src/share/vm/memory/cardTableModRefBS.hpp

changeset 6876
710a3c8b516e
parent 6680
78bbf4d43a14
parent 121
fc16fcee952c
child 7535
7ae4e26cb1e0
equal deleted inserted replaced
6875:28b50d07f6f8 6876:710a3c8b516e
307 } 307 }
308 public: 308 public:
309 309
310 inline void inline_write_ref_array(MemRegion mr) { 310 inline void inline_write_ref_array(MemRegion mr) {
311 dirty_MemRegion(mr); 311 dirty_MemRegion(mr);
312 #ifdef MIPS64
313 if (Use3A2000) OrderAccess::fence();
314 #endif
312 } 315 }
313 protected: 316 protected:
314 void write_ref_array_work(MemRegion mr) { 317 void write_ref_array_work(MemRegion mr) {
315 inline_write_ref_array(mr); 318 inline_write_ref_array(mr);
316 } 319 }
320 return is_card_aligned(addr); 323 return is_card_aligned(addr);
321 } 324 }
322 325
323 // *** Card-table-barrier-specific things. 326 // *** Card-table-barrier-specific things.
324 327
325 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {} 328 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {
329 #ifdef MIPS64
330 if (Use3A2000) OrderAccess::fence();
331 #endif
332 }
326 333
327 template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) { 334 template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) {
328 jbyte* byte = byte_for((void*)field); 335 jbyte* byte = byte_for((void*)field);
329 if (release) { 336 if (release) {
330 // Perform a releasing store if requested. 337 // Perform a releasing store if requested.
331 OrderAccess::release_store((volatile jbyte*) byte, dirty_card); 338 OrderAccess::release_store((volatile jbyte*) byte, dirty_card);
332 } else { 339 } else {
333 *byte = dirty_card; 340 *byte = dirty_card;
334 } 341 }
342 #ifdef MIPS64
343 if (Use3A2000) OrderAccess::fence();
344 #endif
335 } 345 }
336 346
337 // These are used by G1, when it uses the card table as a temporary data 347 // These are used by G1, when it uses the card table as a temporary data
338 // structure for card claiming. 348 // structure for card claiming.
339 bool is_card_dirty(size_t card_index) { 349 bool is_card_dirty(size_t card_index) {

mercurial