src/share/vm/memory/cardTableModRefBS.hpp

changeset 8856
ac27a9c85bea
parent 8659
c70ebf41026a
parent 8019
3fb3ceb7398f
child 9138
b56ab8e56604
     1.1 --- a/src/share/vm/memory/cardTableModRefBS.hpp	Wed Sep 06 00:35:24 2017 -0700
     1.2 +++ b/src/share/vm/memory/cardTableModRefBS.hpp	Thu May 24 18:41:44 2018 +0800
     1.3 @@ -316,6 +316,9 @@
     1.4  
     1.5    inline void inline_write_ref_array(MemRegion mr) {
     1.6      dirty_MemRegion(mr);
     1.7 +#ifdef MIPS64
     1.8 +    if (UseSyncLevel >= 2000) OrderAccess::fence();
     1.9 +#endif
    1.10    }
    1.11  protected:
    1.12    void write_ref_array_work(MemRegion mr) {
    1.13 @@ -329,7 +332,11 @@
    1.14  
    1.15    // *** Card-table-barrier-specific things.
    1.16  
    1.17 -  template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {}
    1.18 +  template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {
    1.19 +#ifdef MIPS64
    1.20 +    if (UseSyncLevel >= 2000) OrderAccess::fence();
    1.21 +#endif
    1.22 +  }
    1.23  
    1.24    template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) {
    1.25      jbyte* byte = byte_for((void*)field);
    1.26 @@ -339,6 +346,9 @@
    1.27      } else {
    1.28        *byte = dirty_card;
    1.29      }
    1.30 +#ifdef MIPS64
    1.31 +    if (UseSyncLevel >= 2000) OrderAccess::fence();
    1.32 +#endif
    1.33    }
    1.34  
    1.35    // These are used by G1, when it uses the card table as a temporary data

mercurial