src/share/vm/memory/cardTableModRefBS.hpp

changeset 8856
ac27a9c85bea
parent 8659
c70ebf41026a
parent 8019
3fb3ceb7398f
child 9138
b56ab8e56604
equal deleted inserted replaced
8855:98b4b0661837 8856:ac27a9c85bea
314 } 314 }
315 public: 315 public:
316 316
317 inline void inline_write_ref_array(MemRegion mr) { 317 inline void inline_write_ref_array(MemRegion mr) {
318 dirty_MemRegion(mr); 318 dirty_MemRegion(mr);
319 #ifdef MIPS64
320 if (UseSyncLevel >= 2000) OrderAccess::fence();
321 #endif
319 } 322 }
320 protected: 323 protected:
321 void write_ref_array_work(MemRegion mr) { 324 void write_ref_array_work(MemRegion mr) {
322 inline_write_ref_array(mr); 325 inline_write_ref_array(mr);
323 } 326 }
327 return is_card_aligned(addr); 330 return is_card_aligned(addr);
328 } 331 }
329 332
330 // *** Card-table-barrier-specific things. 333 // *** Card-table-barrier-specific things.
331 334
332 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {} 335 template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {
336 #ifdef MIPS64
337 if (UseSyncLevel >= 2000) OrderAccess::fence();
338 #endif
339 }
333 340
334 template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) { 341 template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) {
335 jbyte* byte = byte_for((void*)field); 342 jbyte* byte = byte_for((void*)field);
336 if (release) { 343 if (release) {
337 // Perform a releasing store if requested. 344 // Perform a releasing store if requested.
338 OrderAccess::release_store((volatile jbyte*) byte, dirty_card); 345 OrderAccess::release_store((volatile jbyte*) byte, dirty_card);
339 } else { 346 } else {
340 *byte = dirty_card; 347 *byte = dirty_card;
341 } 348 }
349 #ifdef MIPS64
350 if (UseSyncLevel >= 2000) OrderAccess::fence();
351 #endif
342 } 352 }
343 353
344 // These are used by G1, when it uses the card table as a temporary data 354 // These are used by G1, when it uses the card table as a temporary data
345 // structure for card claiming. 355 // structure for card claiming.
346 bool is_card_dirty(size_t card_index) { 356 bool is_card_dirty(size_t card_index) {

mercurial