The parallel GC mark-phase should be MT-safe for 3A2000.

Sat, 08 Oct 2016 09:31:28 -0400

author
fujie
date
Sat, 08 Oct 2016 09:31:28 -0400
changeset 124
9d7e35a93fad
parent 123
c7fdbe297c7c
child 125
14abbb45a7dd

The parallel GC mark-phase should be MT-safe for 3A2000.

src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp file | annotate | diff | comparison | revisions
src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp file | annotate | diff | comparison | revisions
src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp file | annotate | diff | comparison | revisions
src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Thu Sep 29 09:54:38 2016 +0800
     1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Sat Oct 08 09:31:28 2016 -0400
     1.3 @@ -105,6 +105,9 @@
     1.4      assert(end_bit_ok, "concurrency problem");
     1.5      DEBUG_ONLY(Atomic::inc_ptr(&mark_bitmap_count));
     1.6      DEBUG_ONLY(Atomic::add_ptr(size, &mark_bitmap_size));
     1.7 +#ifdef MIPS64
     1.8 +    if (Use3A2000) OrderAccess::fence();
     1.9 +#endif 
    1.10      return true;
    1.11    }
    1.12    return false;
     2.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp	Thu Sep 29 09:54:38 2016 +0800
     2.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.inline.hpp	Sat Oct 08 09:31:28 2016 -0400
     2.3 @@ -33,6 +33,9 @@
     2.4    ObjArrayTask task(obj, index);
     2.5    assert(task.is_valid(), "bad ObjArrayTask");
     2.6    _objarray_stack.push(task);
     2.7 +#ifdef MIPS64
     2.8 +  if (Use3A2000) OrderAccess::fence();
     2.9 +#endif
    2.10  }
    2.11  
    2.12  void ParCompactionManager::push_region(size_t index)
    2.13 @@ -44,6 +47,9 @@
    2.14    assert(region_ptr->_pushed++ == 0, "should only be pushed once");
    2.15  #endif
    2.16    region_stack()->push(index);
    2.17 +#ifdef MIPS64
    2.18 +  if (Use3A2000) OrderAccess::fence();
    2.19 +#endif
    2.20  }
    2.21  
    2.22  #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSCOMPACTIONMANAGER_INLINE_HPP
     3.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Thu Sep 29 09:54:38 2016 +0800
     3.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Sat Oct 08 09:31:28 2016 -0400
     3.3 @@ -496,6 +496,9 @@
     3.4    if (beg_region == end_region) {
     3.5      // All in one region.
     3.6      _region_data[beg_region].add_live_obj(len);
     3.7 +#ifdef MIPS64
     3.8 +    if (Use3A2000) OrderAccess::fence();
     3.9 +#endif
    3.10      return;
    3.11    }
    3.12  
    3.13 @@ -514,6 +517,9 @@
    3.14    const size_t end_ofs = region_offset(addr + len - 1);
    3.15    _region_data[end_region].set_partial_obj_size(end_ofs + 1);
    3.16    _region_data[end_region].set_partial_obj_addr(addr);
    3.17 +#ifdef MIPS64
    3.18 +    if (Use3A2000) OrderAccess::fence();
    3.19 +#endif
    3.20  }
    3.21  
    3.22  void
     4.1 --- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Thu Sep 29 09:54:38 2016 +0800
     4.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Sat Oct 08 09:31:28 2016 -0400
     4.3 @@ -1322,6 +1322,9 @@
     4.4    const int obj_size = obj->size();
     4.5    if (mark_bitmap()->mark_obj(obj, obj_size)) {
     4.6      _summary_data.add_obj(obj, obj_size);
     4.7 +#ifdef MIPS64
     4.8 +    if (Use3A2000) OrderAccess::fence();
     4.9 +#endif
    4.10      return true;
    4.11    } else {
    4.12      return false;
    4.13 @@ -1356,6 +1359,9 @@
    4.14      oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
    4.15      if (mark_bitmap()->is_unmarked(obj) && mark_obj(obj)) {
    4.16        cm->push(obj);
    4.17 +#ifdef MIPS64
    4.18 +      if (Use3A2000) OrderAccess::fence();
    4.19 +#endif
    4.20      }
    4.21    }
    4.22  }

mercurial