src/share/vm/memory/cardTableModRefBS.hpp

changeset 9138
b56ab8e56604
parent 8856
ac27a9c85bea
child 9448
73d689add964
equal deleted inserted replaced
9137:dc1769738300 9138:b56ab8e56604
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 319 #ifdef MIPS
320 if (UseSyncLevel >= 2000) OrderAccess::fence(); 320 if (UseSyncLevel >= 2000) OrderAccess::fence();
321 #endif 321 #endif
322 } 322 }
323 protected: 323 protected:
324 void write_ref_array_work(MemRegion mr) { 324 void write_ref_array_work(MemRegion mr) {
331 } 331 }
332 332
333 // *** Card-table-barrier-specific things. 333 // *** Card-table-barrier-specific things.
334 334
335 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 336 #ifdef MIPS
337 if (UseSyncLevel >= 2000) OrderAccess::fence(); 337 if (UseSyncLevel >= 2000) OrderAccess::fence();
338 #endif 338 #endif
339 } 339 }
340 340
341 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) {
344 // Perform a releasing store if requested. 344 // Perform a releasing store if requested.
345 OrderAccess::release_store((volatile jbyte*) byte, dirty_card); 345 OrderAccess::release_store((volatile jbyte*) byte, dirty_card);
346 } else { 346 } else {
347 *byte = dirty_card; 347 *byte = dirty_card;
348 } 348 }
349 #ifdef MIPS64 349 #ifdef MIPS
350 if (UseSyncLevel >= 2000) OrderAccess::fence(); 350 if (UseSyncLevel >= 2000) OrderAccess::fence();
351 #endif 351 #endif
352 } 352 }
353 353
354 // 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

mercurial