8176571: Fine bitmaps should be allocated as belonging to mtGC, not mtInternal
authorkbarrett
Sat, 22 Jul 2017 15:54:27 -0400
changeset 46745 f7b9bb98bb72
parent 46744 84acc04e14d2
child 46746 ea379ebb9447
8176571: Fine bitmaps should be allocated as belonging to mtGC, not mtInternal Summary: Specify map allocation mflags when constructing CHeapBitMap. Reviewed-by: tschatzl, kbarrett Contributed-by: milan.mimica@gmail.com
hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp
hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp
hotspot/src/share/vm/gc/g1/heapRegionManager.hpp
hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp
hotspot/src/share/vm/utilities/bitMap.cpp
hotspot/src/share/vm/utilities/bitMap.hpp
--- a/hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp	Sat Jul 22 15:54:27 2017 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,8 +34,8 @@
 #include "utilities/bitMap.inline.hpp"
 
 G1PageBasedVirtualSpace::G1PageBasedVirtualSpace(ReservedSpace rs, size_t used_size, size_t page_size) :
-  _low_boundary(NULL), _high_boundary(NULL), _committed(), _page_size(0), _special(false),
-  _dirty(), _executable(false) {
+  _low_boundary(NULL), _high_boundary(NULL), _committed(mtGC), _page_size(0), _special(false),
+  _dirty(mtGC), _executable(false) {
   initialize_with_page_size(rs, used_size, page_size);
 }
 
--- a/hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp	Sat Jul 22 15:54:27 2017 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,7 @@
   _storage(rs, used_size, page_size),
   _region_granularity(region_granularity),
   _listener(NULL),
-  _commit_map(rs.size() * commit_factor / region_granularity) {
+  _commit_map(rs.size() * commit_factor / region_granularity, mtGC) {
   guarantee(is_power_of_2(page_size), "must be");
   guarantee(is_power_of_2(region_granularity), "must be");
 
--- a/hotspot/src/share/vm/gc/g1/heapRegionManager.hpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/gc/g1/heapRegionManager.hpp	Sat Jul 22 15:54:27 2017 -0400
@@ -130,7 +130,7 @@
   // Empty constructor, we'll initialize it with the initialize() method.
   HeapRegionManager() : _regions(), _heap_mapper(NULL), _num_committed(0),
                     _next_bitmap_mapper(NULL), _prev_bitmap_mapper(NULL), _bot_mapper(NULL),
-                    _allocated_heapregions_length(0), _available_map(),
+                    _allocated_heapregions_length(0), _available_map(mtGC),
                     _free_list("Free list", new MasterFreeRegionListMtSafeChecker())
   { }
 
--- a/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp	Sat Jul 22 15:54:27 2017 -0400
@@ -71,7 +71,7 @@
   PerRegionTable(HeapRegion* hr) :
     _hr(hr),
     _occupied(0),
-    _bm(HeapRegion::CardsPerRegion),
+    _bm(HeapRegion::CardsPerRegion, mtGC),
     _collision_list_next(NULL), _next(NULL), _prev(NULL)
   {}
 
@@ -261,7 +261,7 @@
 OtherRegionsTable::OtherRegionsTable(HeapRegion* hr, Mutex* m) :
   _g1h(G1CollectedHeap::heap()),
   _hr(hr), _m(m),
-  _coarse_map(G1CollectedHeap::heap()->max_regions()),
+  _coarse_map(G1CollectedHeap::heap()->max_regions(), mtGC),
   _fine_grain_regions(NULL),
   _first_all_fine_prts(NULL), _last_all_fine_prts(NULL),
   _n_fine_entries(0), _n_coarse_entries(0),
--- a/hotspot/src/share/vm/utilities/bitMap.cpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/utilities/bitMap.cpp	Sat Jul 22 15:54:27 2017 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,9 +46,12 @@
 };
 
 class CHeapBitMapAllocator : StackObj {
+  MEMFLAGS _flags;
+
  public:
+  CHeapBitMapAllocator(MEMFLAGS flags) : _flags(flags) {}
   bm_word_t* allocate(size_t size_in_words) const {
-    return ArrayAllocator<bm_word_t>::allocate(size_in_words, mtInternal);
+    return ArrayAllocator<bm_word_t>::allocate(size_in_words, _flags);
   }
   void free(bm_word_t* map, idx_t size_in_words) const {
     ArrayAllocator<bm_word_t>::free(map, size_in_words);
@@ -148,24 +151,24 @@
     : BitMap(allocate(ArenaBitMapAllocator(arena), size_in_bits), size_in_bits) {
 }
 
-CHeapBitMap::CHeapBitMap(idx_t size_in_bits)
-    : BitMap(allocate(CHeapBitMapAllocator(), size_in_bits), size_in_bits) {
+CHeapBitMap::CHeapBitMap(idx_t size_in_bits, MEMFLAGS flags)
+    : BitMap(allocate(CHeapBitMapAllocator(flags), size_in_bits), size_in_bits), _flags(flags) {
 }
 
 CHeapBitMap::~CHeapBitMap() {
-  free(CHeapBitMapAllocator(), map(), size());
+  free(CHeapBitMapAllocator(_flags), map(), size());
 }
 
 void CHeapBitMap::resize(idx_t new_size_in_bits) {
-  BitMap::resize(CHeapBitMapAllocator(), new_size_in_bits);
+  BitMap::resize(CHeapBitMapAllocator(_flags), new_size_in_bits);
 }
 
 void CHeapBitMap::initialize(idx_t size_in_bits) {
-  BitMap::initialize(CHeapBitMapAllocator(), size_in_bits);
+  BitMap::initialize(CHeapBitMapAllocator(_flags), size_in_bits);
 }
 
 void CHeapBitMap::reinitialize(idx_t size_in_bits) {
-  BitMap::reinitialize(CHeapBitMapAllocator(), size_in_bits);
+  BitMap::reinitialize(CHeapBitMapAllocator(_flags), size_in_bits);
 }
 
 #ifdef ASSERT
--- a/hotspot/src/share/vm/utilities/bitMap.hpp	Wed Aug 02 15:59:33 2017 +0000
+++ b/hotspot/src/share/vm/utilities/bitMap.hpp	Sat Jul 22 15:54:27 2017 -0400
@@ -353,10 +353,13 @@
   CHeapBitMap(const CHeapBitMap&);
   CHeapBitMap& operator=(const CHeapBitMap&);
 
+  // NMT memory type
+  MEMFLAGS _flags;
+
  public:
-  CHeapBitMap() : BitMap(NULL, 0) {}
+  CHeapBitMap(MEMFLAGS flags = mtInternal) : BitMap(NULL, 0), _flags(flags) {}
   // Clears the bitmap memory.
-  CHeapBitMap(idx_t size_in_bits);
+  CHeapBitMap(idx_t size_in_bits, MEMFLAGS flags = mtInternal);
   ~CHeapBitMap();
 
   // Resize the backing bitmap memory.