diff -r df6f2350edfa -r 6530de931b8e src/hotspot/share/gc/g1/g1SurvivorRegions.cpp --- a/src/hotspot/share/gc/g1/g1SurvivorRegions.cpp Wed Nov 13 10:49:32 2019 -0800 +++ b/src/hotspot/share/gc/g1/g1SurvivorRegions.cpp Wed Nov 13 10:51:41 2019 -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) {