--- old/src/hotspot/share/gc/g1/g1SurvivorRegions.cpp 2019-11-06 13:48:42.597572589 -0800 +++ new/src/hotspot/share/gc/g1/g1SurvivorRegions.cpp 2019-11-06 13:48:42.205572577 -0800 @@ -30,17 +30,23 @@ G1SurvivorRegions::G1SurvivorRegions() : _regions(new (ResourceObj::C_HEAP, mtGC) GrowableArray(8, true, mtGC)), - _used_bytes(0) {} + _used_bytes(0), + _regions_on_node() {} -void G1SurvivorRegions::add(HeapRegion* hr) { +uint G1SurvivorRegions::add(HeapRegion* hr) { assert(hr->is_survivor(), "should be flagged as survivor region"); _regions->append(hr); + return _regions_on_node.add(hr); } uint G1SurvivorRegions::length() const { return (uint)_regions->length(); } +uint G1SurvivorRegions::regions_on_node(uint node_index) const { + return _regions_on_node.count(node_index); +} + void G1SurvivorRegions::convert_to_eden() { for (GrowableArrayIterator it = _regions->begin(); it != _regions->end(); @@ -54,6 +60,7 @@ void G1SurvivorRegions::clear() { _regions->clear(); _used_bytes = 0; + _regions_on_node.clear(); } void G1SurvivorRegions::add_used_bytes(size_t used_bytes) {