src/share/vm/memory/cardTableModRefBS.hpp

changeset 6876
710a3c8b516e
parent 6680
78bbf4d43a14
parent 121
fc16fcee952c
child 7535
7ae4e26cb1e0
     1.1 --- a/src/share/vm/memory/cardTableModRefBS.hpp	Mon Sep 08 12:35:01 2014 -0700
     1.2 +++ b/src/share/vm/memory/cardTableModRefBS.hpp	Tue Aug 08 15:57:29 2017 +0800
     1.3 @@ -309,6 +309,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 (Use3A2000) OrderAccess::fence();
     1.9 +#endif
    1.10    }
    1.11  protected:
    1.12    void write_ref_array_work(MemRegion mr) {
    1.13 @@ -322,7 +325,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 (Use3A2000) 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 @@ -332,6 +339,9 @@
    1.27      } else {
    1.28        *byte = dirty_card;
    1.29      }
    1.30 +#ifdef MIPS64
    1.31 +    if (Use3A2000) 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