< prev index next >

src/hotspot/share/gc/shared/markBitMap.cpp

Print this page
rev 50076 : Fold Partial GC into Traversal GC

@@ -77,5 +77,14 @@
   assert(!mr.is_empty(), "unexpected empty region");
   // convert address range into offset range
   _bm.clear_large_range(heapWordToOffset(mr.start()),
                         heapWordToOffset(mr.end()));
 }
+
+void MarkBitMap::copy_from(MarkBitMap* other, MemRegion mr) {
+  guarantee(startWord() == other->startWord(), "bitmaps must cover same region");
+  guarantee(endWord() == other->endWord(), "bitmaps must cover same region");
+  mr.intersection(MemRegion(_bmStartWord, _bmWordSize));
+  size_t start_offset = heapWordToOffset(mr.start());
+  size_t end_offset = heapWordToOffset(mr.end());
+  _bm.copy_from(other->_bm, start_offset, end_offset);
+}
< prev index next >